Author Topic: Arduino and logging over network with Node.js  (Read 3651 times)

0 Members and 1 Guest are viewing this topic.

Offline frenkyTopic starter

  • Supporter
  • ****
  • Posts: 1003
  • Country: si
    • Frenki.net
Arduino and logging over network with Node.js
« on: October 06, 2012, 11:13:52 am »
Hi guys.

I've made a tutorial on how to use arduino with ethernet shield and Node.js server to make remote logging.

On Arduino I have a sketch which reads from analog port and sends udp packets to desired ip and port.
Code: [Select]
#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>
 
byte arduinoMac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress arduinoIP(192, 168, 1, 177); // desired IP for Arduino
unsigned int arduinoPort = 8888;      // port of Arduino
 
IPAddress receiverIP(192, 168, 1, 135); // IP of udp packets receiver
unsigned int receiverPort = 6000;      // port to listen on my PC
 
EthernetUDP Udp;
 
int sensorPin = A0; //define sensor pin
int sensorValue;
 
void setup() {
  Ethernet.begin(arduinoMac,arduinoIP);
  Udp.begin(arduinoPort);
}
 
void loop() {
  sensorValue = analogRead(sensorPin);//read sensor value from 0 to 1023
  byte valueInBytes[2] = {lowByte(sensorValue), highByte(sensorValue)}; //convert it to byte array
   
  Udp.beginPacket(receiverIP, receiverPort); //start udp packet
  Udp.write(valueInBytes, 2); //write sensor data to udp packet
  Udp.endPacket(); // end packet
 
  delay(1000);
}

On the other side I have a computer with Node.js and udp server to listen to udp traffic.
Code: [Select]
var dgram = require("dgram");
var server = dgram.createSocket("udp4");
var fs = require('fs');
 
var crlf = new Buffer(2);
crlf[0] = 0xD; //CR - Carriage return character
crlf[1] = 0xA; //LF - Line feed character
 
server.on("message", function (msg, rinfo) { //every time new data arrives do this:
  console.log("server got: " + msg.readUInt16LE(0) + " from " + rinfo.address + ":" + rinfo.port); // you can comment this line out
  fs.appendFile('mydata.txt', msg.readUInt16LE(0) + crlf, encoding='utf8');//write the value to file and add CRLF for line break
});
 
server.on("listening", function () {
  var address = server.address();
  console.log("server listening " + address.address + ":" + address.port);
});
 
server.bind(6000); //listen to udp traffic on port 6000

Node.js running:


Detailed tutorial is here: http://frenki.net/2012/10/remote-logging-with-arduino-and-node-js/

Have fun ;)
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf