Introduction
This article is about the
modem GPRS with Arduino and NodeJS, everything connected with a socket.
I am going to show how can you create your little client on Arduino that is connected with a NodeJS server.
Create Arduino client
Arduino has a great
GPRS Shield that is a little bit expensive but I found it very powerful, although a few months ago Cooking Hacks has released an awesome
GPRS Shield with a Camera, SD, etc..
The shield communicate via Serial port and you have to use AT Commands to setup a internet connection, no worries I have done all the hardest job for you and these are commands:
//Basic setup
AT+CFUN=1
AT+CMGF=1
AT+CREG=1
AT+COPS=0
//Remove comment if you have SIM CARD Pin
//AT+CPIN=xxxx
//Setup APN T-mobile UK
AT+CGDCONT=1,"IP","general.t-mobile.uk"
AT+CGACT=1,1
//Get GPRS status, when is 1 means you have internet connection
AT+CGATT?
//Connect to your server on the port 66
AT+SDATACONF=1,"TCP","IP",66
//Start connection
AT+SDATASTART=1,1
//Read message from socket
AT+SDATATREAD=1
//Send message to socket
AT+SSTRSEND=1,"test"
I have made a simple script that is not stable 100% but you can try it and connect to your server.
Download script
Please note that after you have started the socket, the modem is taking a few seconds to establish a connection.
Create NodeJS server
The server is a simple script that is receiving only information through a socket, you can also send information but that is up to you.
My example is only to check that everything is working and you can make a communication even if you don't have a Ethernet cable or a wifi connection.
var net = require('net');
var netServer = net.createServer(function (stream) {
stream.setTimeout(0);
stream.setEncoding("utf8");
//Arduino is connected
stream.addListener("connect", function () {
console.log("Arduino connected");
});
//Arduino has sent an information
stream.addListener("data", function (data) {
console.log("Get data: "+data);
});
//Arduino has terminated connection
stream.addListener("end", function() {
console.log("Arduino disconnected");
stream.end();
});
});
netServer.listen(66);
Result
- Upload and run the client
- Wait from the green signal by serial port
- Check on your server that Arduino is connected and sending messages