title: Raspberry Pi, Arduino, Node.js and serial port
body: <p>Im trying to talk to my arduino from a node.js server script.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>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);
      });
  });
  </code></pre>
  
  <p>Im pretty sure my device is on /dev/ttyACM0 because:</p>
  
  <pre><code>pi@raspberrypi ~/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
  pi@raspberrypi ~/Programming/node $
  </code></pre>
  
  <p>When i try and run my server script i get the error:</p>
  
  <pre><code>pi@raspberrypi ~/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.&lt;anonymous&gt; (/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)
  </code></pre>
  
  <p>Im sure im just missing something simple but i don't know enough about Linux or Node to know what it is. Do i need to install the arduino IDE for drivers?
  Is it because i am sshing into my raspberry pi, i know this uses the serial port but i want to communicate over USB. Is this possible or do i only have 1 serial port regardless of whether its USB or serial?</p>
  
  <p>EDIT
  I have installed the IDE and I can talk to the arduino through the IDE. So it's not drivers or lack of ports. </p>
  
  <p>Thanks for any help.</p>
  
  <p>Joe</p>