Monday, March 10, 2014

Communication between Raspberry Pi and Arduino, using Node.js

The 'serialport ' module for Node.js provide basic building block to make Node.js communication with serial port. Here is a simple example to send data between Raspberry Pi and Arduino Esplora board via USB, using Node.js.

Cross-post with Arduino-er: Arduino + Raspberry Pi + Node.js



node_arduino.js, Node.js script run on Raspberry Pi side.
//To install 'serialport' locally, enter the command:
//$ npm install serialport
//Otherwise, Error: Cannot find module 'serialport' will reported
var SerialPort = require("serialport").SerialPort
var serialPort = new SerialPort('/dev/ttyACM0', 
 { baudrate: 9600,
 dataBits: 8,
 parity: 'none',
 stopBits: 1,
 flowControl: false
 });
serialPort.on("open", function () {
 console.log('open');
 serialPort.on('data', function(data) {
 console.log('data received: ' + data);
 });
 serialPort.write("Hello from Raspberry Pi\n", function(err, results) {
 console.log('err ' + err);
 console.log('results ' + results);
 });
});

The code in Arduino Esplora board.
#include <Esplora.h>
#include <TFT.h>
#include <SPI.h>
 
int prevSw1 = HIGH;
int incomingByte = 0;
String charsIn = "";
char printout[20]; //max char to print: 20
 
void setup() {
 
 EsploraTFT.begin(); 
 EsploraTFT.background(0,0,0);
 EsploraTFT.stroke(255,255,255); //preset stroke color
 
 //Setup Serial Port with baud rate of 9600
 Serial.begin(9600);
 
 //indicate start
 Esplora.writeRGB(255, 255, 255);
 delay(250);
 Esplora.writeRGB(0, 0, 0);
 
}
 
void loop() {
 int sw1 = Esplora.readButton(SWITCH_1);
 if(sw1 != prevSw1){
 if(sw1 == LOW){
 Serial.println("Hello from Arduino Esplora");
 }
 prevSw1 = sw1;
 }
 
 while (Serial.available()) {
 char charRead = Serial.read();
 charsIn.concat(charRead);
 }
 if(charsIn != ""){
 Serial.println("How are you, " + charsIn);
 charsIn.toCharArray(printout, 21);
 EsploraTFT.background(0,0,0);
 EsploraTFT.text(printout, 0, 10);
 charsIn = "";
 }
}

No comments:

Post a Comment

Subscribe to: Post Comments (Atom)

AltStyle によって変換されたページ (->オリジナル) /