2013-02-22 27 views
11

Bir node.js sunucu komut dosyasından arduino'yla konuşmaya çalışıyorum. İşte Raspberry Pi, Arduino, Node.js ve seri bağlantı noktası

benim kod: i denemek ve benim sunucu komut dosyası çalıştırdığınızda i hatayı alıyorum

[email protected] ~/Programming/node $ dmesg|tail 
[91569.773042] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device 
[91569.776338] usbcore: registered new interface driver cdc_acm 
[91569.776369] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters 
[92601.131298] usb 1-1.2: USB disconnect, device number 7 
[92609.044999] usb 1-1.2: new full-speed USB device number 8 using dwc_otg 
[92609.149759] usb 1-1.2: New USB device found, idVendor=2341, idProduct=0043 
[92609.149789] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=220 
[92609.149806] usb 1-1.2: Manufacturer: Arduino (www.arduino.cc) 
[92609.149820] usb 1-1.2: SerialNumber: 74132343430351705051 
[92609.156743] cdc_acm 1-1.2:1.0: ttyACM0: USB ACM device 
[email protected] ~/Programming/node $ 

:

var app = require('express')() 
, server = require('http').createServer(app) 
, io = require('socket.io').listen(server) 
, SerialPort = require('serialport').SerialPort; 

//SERIAL 
var portName = '/dev/ttyACM0'; 
var sp = new SerialPort(); // instantiate the serial port. 
sp.open(portName, { // portName is instatiated to be COM3, replace as necessary 
    baudRate: 115200, // this is synced to what was set for the Arduino Code 
    dataBits: 8, // this is the default for Arduino serial communication 
    parity: 'none', // this is the default for Arduino serial communication 
    stopBits: 1, // this is the default for Arduino serial communication 
    flowControl: false // this is the default for Arduino serial communication 
}); 

//SERVER 
server.listen(80, '127.0.0.5'); 

app.get('/', function (req, res){ 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function (socket){ 
    socket.emit('test', { test: 'Its Working' }); 
    socket.on('value', function (data){ 
    console.log(data); 
    }); 
}); 

Im oldukça emin cihazım/dev/ttyACM0 çünkü üzerindedir

[email protected] ~/Programming/node $ node server.js 
    info - socket.io started 

/home/pi/node_modules/serialport/serialport.js:72 
    throw new Error('Invalid port specified: ' + path); 
     ^
Error: Invalid port specified: undefined 
    at new SerialPort (/home/pi/node_modules/serialport/serialport.js:72:11) 
    at Object.<anonymous> (/home/pi/Programming/node/server.js:8:10) 
    at Module._compile (module.js:449:26) 
    at Object.Module._extensions..js (module.js:467:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.runMain (module.js:492:10) 
    at process.startup.processNextTick.process._tickCallback (node.js:244:9) 

Eminim ki sadece basit bir şeyi özlüyorum ama Linux ya da Düğüm hakkında ne olduğunu bilmiyorum. Sürücüler için arduino IDE'yi yüklemem gerekir mi? Bunun sebebi, ahududu pi'm için perişan olduğumdan, bunun seri bağlantı noktasını kullandığını biliyorum, ancak USB üzerinden iletişim kurmak istiyorum. Bu mümkün mü yoksa USB veya seriden bağımsız olarak sadece 1 seri port var mı?

EDIT IDE'yi kurdum ve IDE aracılığıyla arduino ile konuşabiliyorum. Yani sürücü veya liman eksikliği değil.

Yardımlarınız için teşekkür ederiz.

Joe

+0

** ** değil mi? – Neal

+0

Ne demek istiyorsun? –

cevap

8

ben öyle düşünüyorum boş sonradan SerialPort npm proje sayfa

var SerialPort = require("serialport").SerialPort 
var serialPort = new SerialPort("/dev/tty-usbserial1"); 

When opening a serial port, you can specify (in this order). 
1. Path to Serial Port - required. 
2. Options - optional and described below. 

itibaren açık

var sp = new SerialPort(); // instantiate the serial port. 
//then you open 
sp.open(portName, { // portName is instatiated to be COM3, replace as necessary 

belirttiğiniz SerialPort için argümanlar, Böylece tüm belirtmelidir çünkü SerialPort argümanları yerine

var portName = '/dev/ttyACM0'; 
var sp = new SerialPort(portName, { 
    baudRate: 115200, 
    dataBits: 8, 
    parity: 'none', 
    stopBits: 1, 
    flowControl: false 
}); 
+0

O kadardı, çok teşekkür ederim –

0

Çalışan bir düğüm var JS/arduino/Serialport robotu. Kullandığım

Eğer çıktıyı "tahliye" için Arduino için yazarken

var serialport = require("serialport"); 
    var SerialPort = serialport.SerialPort; // localize object constructor 

    var sp = new SerialPort(comPort, { 
    parser: serialport.parsers.readline("\r"), 
    baudrate: 9600 
    }); 

    sp.on("open", function() { 
    sp.write(0x80); 
    sp.write('123456\r'); 
    console.log ("comm port ready"); 
    }); 

hatırla (kendi için seri bağlantı noktasını değiştirmek gerekir). Robotuma belirli bir yönde gitmesini söylediğim çalışma kodum.

  robotData.setLastCommand(direction); 
    sp.write(direction , function(err, results) { 
     **sp.drain(function(err, result){** 
       //console.log ("drain"); 
        //console.log(err, result); 
     }); 
     //console.log ("results -> " + results); 
    });