Comunicación serial entre processing/arduino y node.js
@NodeBotsMX
@_JuraseC
Julio César Rodríguez
Nodebots enthusiast
¿Qué es la comunicacíon serial?
Un bit de información a la vez.
IDE de arduino lo usa para cargar los sketches.
El puerto serial de Arduino ó UART (universal asynchronous receiver transmitter)
- Receptor RX => pin 0
- Transmisor TX => pin 1
- Los leds RX y TX, parpadean cuando el puerto serial esta siendo usado.
¿Cómo Enviar/recibir datos al puerto serial con el IDE de arduino?
¿Cómo enviar datos al puerto serial desde processing/arduino?
¿Cómo recibir datos al puerto serial desde processing/arduino?
Y ahora como lo integro con node.js .... ?
var serialport = require("serialport");
var SerialPort = serialport.SerialPort
var serialport = new SerialPort("/dev/tty.usbmodem1451",{
baudrate: 9600,
});
$ npm install serialport
- Necesitamos instalar serialport:
- Para usarlo, hacemos:
- Siempre debemos espera que este listo el puerto serial, para leer/escribir en el.
serialPort.on("open", function () {
console.log('open');
serialPort.on('data', function(data) {
console.log('data received: ' + data);
});
serialPort.write("ls\n", function(err, results) {
console.log('err ' + err);
console.log('results ' + results);
});
});
Ejemplos
- Desde processing a node
- Desde node a processing
- Matris de led RGB
- Arbol de navidad con strip led rgb
Ejemplo 1: Lectura de sensor de fuego
/**
* Este ejemplo muestra como leer datos del puerto serial,
* los cuales estan siendo enviados desde código de arduino
* nativo.
* @_JuraseC
*/
var serialport = require("serialport");
var SerialPort = serialport.SerialPort
var serialport = new SerialPort("/dev/tty.usbmodem1451",{
baudrate: 9600,
parser: serialport.parsers.readline("\n")
});
serialport.on('open', function(){
console.log('Serial port ready!!!');
var barra = "◼";
serialport.on('data', function(data){
// console.log(data);
barra = "◼";
for(i=0;i<=scale(0, 100, data);i++)
barra = barra + "◼";
console.log(barra);
});
});
function scale(newMinValue, newMaxValue, currentValue){
var oldMinValue = 0;
var oldMaxValue = 1023;
return parseInt((currentValue / ((oldMaxValue - oldMinValue) / (newMaxValue - newMinValue))) + newMinValue);
};
Ejemplo 2: Control de 6 leds
/**
* En este ejemplo se muestra como enviar datos a
* nuestro arduino el cual esta ejecutando código
* nativo, este sketch esta escuchando en el
* puerto Serial.begin(14400);
*/
var serialport = require("serialport");
var Repl = require("./repl");
var SerialPort = serialport.SerialPort
var serialport = new SerialPort("/dev/tty.usbmodem1451",{
baudrate: 14400,
parser: serialport.parsers.readline("\n")
});
// Se agrega el objeto serialport al contexto del Repl
this.repl = new Repl({sp: serialport});
function sendCommnad(){;
console.log("Enviando comando >>> ", (process.argv[2] || "t1"));
serialport.write( new Buffer( process.argv[2] || "t1") );
}
serialport.on('open', function(){
console.log('Serial Port Opened');
setTimeout( function(){ sendCommnad(); }, 2000);
});
Ejemplo 3 y 4: Control de matris RGB y Strip led RGB
/**
* Con este ejemplo, podemos manipular el texto mostrado en
* la matris rgb. Tambien nos servirá para contrlar la tira
* de led rgb.
*/
var serialport = require("serialport");
var Repl = require("./repl");
var SerialPort = serialport.SerialPort
var serialport = new SerialPort("/dev/tty.usbmodem1451",{
baudrate: 14400,
parser: serialport.parsers.readline("\n")
});
this.repl = new Repl({sp: serialport});
function sendCommnad(){;
console.log("Enviando comando >>> ", (process.argv[2] || "???"));
serialport.write( new Buffer( process.argv[2] || "???") );
}
serialport.on('open', function(){
console.log('Serial Port Opened');
setTimeout( function(){ sendCommnad(); }, 2000);
});
Recuerda que tu eres parte de la comunidad de @NodeBotsMX y también de @javascriptmx, suscrbete al boletín semanal!!!
javascriptmx.com
Happy hacking!
Gracias!
@_JuraseC
Processing_node_serialport
By Julio César
Processing_node_serialport
- 1,521