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.
Result
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