loading
Picture of Remote control via GPRS/GSM SMS(Arduino)
image2.jpg
images.jpg
Remote control, especially when this no ethernet or Wifi in the outdoor, has been a very profound things in the past. When I was a child, I always image that I have an equipment which can control all home appliances. Now, this becomes a reality,with Arduino and GPRS modules and some other related modules. And, it is also quite easy, even for the beginners. Here I will step by step to show you how to remote control your home appliances via the GPRS/GSM SMS and relays.

At first, let me give a brief introduction about relay to you.
Relays are used where it is necessary to control a circuit by a low-power signal (with complete electrical isolation between control and controlled circuits). It acts as a “low voltage controlled switch to control high voltage”, For example, if you want to control power of your washer or air conditioner, which is oftern110v or 220v,by microchip such as AVR or PIC, it is necessary and safe to make your microchip control the relay first, and then control the power supply of those device with the relay.

With the GSM SMS, it is possible to control the relay remotely. You can send a message via phone to control the relay on&off. With this, it will convenient to control any device wirelessly, especially helpfully on irrigation, smart home, outdoor remote control etc.
So, let’s make such a “SMS controlled Relay” with Arduino, GPRS/GSM and a Relay module.
 
Remove these adsRemove these ads by Signing Up

Step 1: Prepare your tools and parts.

Picture of Prepare your tools and parts.
Elecrow GPRS-RELAY application3.jpg

Select the module you need, a Xduino, a GPRS/GSM module and relay module is essential. The GPRS/GSM and relay in “Shield” would be more Convenient if works with Arduino:
The modules I used in this application are as below:
Crowduino
GPRS/GSM Shield
Relay Shield
Notice that the Rated Current of the relay Is important, make sure it meets your requirements. Otherwise it maybe dangerous. Here, I use a 2A rating current relay, which is enough for my application to control a lamp. Usually, home appliances consume currents as below
Device Max current(A)
Electric Fan 1
Lamp 2
TV 2
Refrigerator 2
Microwave Oven 8
Air Conditioner Depends on the power, usually <20
Of course, you will need some tools, such as the Insulating tape, Scissors...

Step 2: Insert a SIM card to the GPRS shield.

Picture of Insert a SIM card to the GPRS shield.
Elecrow GPRS-RELAY application9.jpg
The GPRS module needs a SIM card to work, just the same as a phone. Insert a SIM card to the SIM socket , make sure the SIM is unlocked(that is, it works in your phone). Record the number of SIM Card, it will be used in programming for Arduino.

Step 3: Communicate with Crowduino/Arduino by hardware serial.

Picture of Communicate with Crowduino/Arduino by hardware  serial.
There are two methods for GPRS/GSM Shield to communicate with the micro controler, one is through the software serial port, another is hardware serial port. I will show you the second method,:communicate with the Crowduino/ Arduino by hardware serial port.
There are three pins 2*3 pins in the GPRS shield. You can see the silk mark in both side of pins, one side is Xduino(this is connect to the hardware serial port), and the other side is SWserial(this side is used as software serial port).  Just as the picture, plug the jumper caps to the Xduino side.

Step 4: Upload the program.

Picture of Upload the program.
As the programming, you will need the Arduino IDE to compile and download the program to Arduino.
Download the code :

Using_SMS_to_Control_Relay_Hardware Serial.ino

Before the compiling, please Open the file: SoftwareSerial.h in arduino\libraries\SoftwareSerial, and modify the
#define _SS_MAX_RX_BUFF 64 // RX buffer size
To
#define _SS_MAX_RX_BUFF 128 // RX buffer size
With this modification, the Arduino would have more buffer for the received message to avoid any communication bugs.
If you have not got ready to comprehend the details, you can just copy the codes into your Arduino IDE and down it to Arduino to continue.

Then, open this file by Arduin IDE.  Upload the program to the Crowduino, please note that don't connect the GPRS shield to Crowduino when uploading program,  very important!!!!

Step 5: Plug Relay+GPRS Shields to the Crowduino

Picture of Plug Relay+GPRS Shields to the Crowduino
Plug your shields to the Crowduino, you can put the GPRS Shield in the top or put the Relay Shield in the top. In here, because we need operating the Relay Shield later, so I put the Relay Shield in the top.

Step 6: Have A Try:Control the Relay shield by manually.

Picture of Have A Try:Control the Relay shield by manually.
Now, the hardware has been connected, the program has been uploaded, we can have a try of the Relay Shield, This Relay Shield is very interesting! There are 4 Independent relays on the relay shield, each one can be controlled by the Arduino or manually. Also, there are 4 LEDs to show user the working state of relays.

Step 7: Have a test for the manual control.

Picture of Have a test for the manual control.
Elecrow GPRS-RELAY application12.jpg
Elecrow GPRS-RELAY application15.jpg
Elecrow GPRS-RELAY application16.jpg
Before remote control the lamp, we can make a test. Here, we need a breadboard, a LED, two AA battery and some breadboard cables.

Plug the anode wire(the red one) of power supply to the anode of LED via the breadboard, using the same method, plug the breadboard jumper wire to the cathode of LED.

As we only need one relay here, we use the relay U3, which was controlled by the Arduino Pin5.
There are 3 terminals for U3 relay: COM3, NC3 and NO3. The COM3 is the common port, while the “NO” means “Normally Open” and NC means “Normally Connected”. That’s to say, the logic between these 3 terminals is:
When the relay is not active:
COM3 connected to NC3 and disconnected to NO3;
When the relay is active:
COM3 disconnected to NC3, and connected to NO3;

Insert the cathode wire(black one) of power supply to NO3, insert the cathode wire(orange) of LED to COM3 and tighten the terminal with a screwdriver.

Now, you can control the LED on or off via button 3, it is funny, hah...

Step 8: Control the LED via SMS.

Picture of Control the LED via SMS.
Elecrow GPRS-RELAY application14.jpg
Elecrow GPRS-RELAY application17.jpg
Elecrow GPRS-RELAY application19.jpg
Elecrow GPRS-RELAY application30.jpg
It is time to take out your mobile phone, (make sure your Gprs/Gsm shield is on) sent a text ”onb” to the number of the SIM card in GPRS module, the relay would be on, and the LED on!

It is necessary to explain the program, if you feel it is boring or it is too simple, just skip the following paragraph and remember there are 4 relays: U1, U2, U3, U4 each corresponding to d, c, b, a, if you want to control U1 on or off, you can send 'ond' or 'offd' to the number of the SIM card in GPRS module, the relay U1 would be on or off. If you want to control multiple relays in one SMS, just send the control commands in one SMS. For example, if I want to control U1, U2, U3 on and U4 off, sending 'ond onc onb offa' would reach this purpose. In here, I was using U3 to control the LED, so after I send 'onb', the relay U3 would be on , and the LED on!

There are some important functions you need to learn if you want to learn more on the gprs shied:

void ProcessGprsMsg()
Function: process the data Arduino get from the GPRS shield. If there is a string “+CMGR:” in the received data, theArduino will get to know: “I have received a short message, I need to analyze the message to know what to do next!”
Parameter: none
Return: none;

void ProcessSms( String sms )
Function: Arduinoanalyze the short message received. As received a string: ”ona”, it will pull up the related pin to active the relay, making the terminal COM4 connected NO4; while received a string “offa”, it will pull down the pin to make the COM4 and NO4 disconnected.
Parameter: the received message;
Return : none
In this program, once the Arduino receive the command ”offa”, which means “off the a” it will pull download the Arduno pin4, which change the relay U4 from inactive to active state. You will hear some noise like “bang..bang”, and also the LED would blinks.

Step 9: Connect the lamp to the Relay shield.

Picture of Connect the lamp to the Relay shield.
Elecrow GPRS-RELAY application21.jpg
Elecrow GPRS-RELAY application22.jpg
Elecrow GPRS-RELAY application23.jpg
Elecrow GPRS-RELAY application24.jpg
Elecrow GPRS-RELAY application25.jpg
Finally to the another leading role  to play, do you still remember the lamp at the begining?  This step I will show you how to 'destroy' this nice and cute lamp.

Cut off the power supply wire of the lamp(as the picture), and insert one end to COM3,tighten the terminal with a screwdriver, and the other end to NO3 with the same method.

Make sure the Crowduino and Shields are connected to the power and the program was run normally.

Give the power to the lamp, push the switch of lamp to on, and stay away from it...

Step 10: Control the lamp via SMS.

Picture of Control the lamp via SMS.
Elecrow GPRS-RELAY application27.jpg
Elecrow GPRS-RELAY application28.jpg
Everything is ok, but the SMS. Take out your phone again, sent a text ”onb” to the number of the SIM card in GPRS module. The lamp was finally lit...

You can control all the device you want via this method. and, you can even control 4 relays simultaneously to control 4 device by modifying the program in Arduino. But again, Notice the Potential danger especially for the high voltage and big current decice. Good luck…
1-40 of 68Next »
Tuli_929 days ago

hello. does this use the hardware serial?

Tuli_9210 days ago

can i have the code please?

miola001@gmail.com

marsekal1 month ago

good job mr

MaheshG32 months ago

#include "SIM900.h"
#include <SoftwareSerial.h>

#include<string.h>

#include<stdlib.h>

//If you want to use the Arduino functions to manage SMS, uncomment the lines below.
#include "sms.h"
SMSGSM sms;
char num[20],tex[160];
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];

char number[20];
char sende[20]="+919032987470"; // Athenticator mob
char message[180];

char pos;
char a[10];
int i=0,m,p;

void clockwise()

{

;

}


void anticlockwise()

{

;

}


void stop()

{

;

}

int count=0;

void setup()
{
//Serial connection.
Serial.begin(9600);
Serial.println("GSM Based Stepper motor Controling\n");
//Start configuration of shield with baudrate.
//For http uses is raccomanded to use 4800 or slower.
if (gsm.begin(2400)){
Serial.println("\nstatus=READY");
started=true;
}
else Serial.println("\nstatus=IDLE");

/**** stepper motor pins activating ****/
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(pin4,OUTPUT);

};//setup()

void clearbuf(char *b)// clearing the buffer
{
while(*b)
*b++='\0';
}


void loop()
{
int r;

pos=sms.IsSMSPresent(SMS_UNREAD);// we can check msg recvd or not

delay(1000);

if((int)pos>=0&&(int)pos<=20){

Serial.print("POS=");

Serial.println((int)pos);

message[0]='\0';

sms.GetSMS((int)pos,number,message,180);// getting the num&mesg
delay(500);
//Serial.println(number);
//Serial.println(message);
delay(3000);

if(number[0])// if number recived or not checking
{
p=strcmp(number,sende); //checking the number

if(!p)// if known number
{
Serial.println("Authorised Person\n");
Serial.print("Mobile Number: ");
Serial.println(number);
Serial.println(" ");
Serial.print("Message: ");
Serial.println(message);
Serial.println(" ");

m=atoi(message);// converting string/char to integer
r=m*510;
// Serial.print("Rotations: ");
// Serial.println(r);
if(m>=0)// checking Clockwise
{
Serial.println("clock wise");
Serial.println(" ");
clockwise(r);
stop1();
Serial.print("rotations:" );
Serial.println(m);
Serial.println(" ");
}
else// checking AntiClockwise checking
{
Serial.println("Anticlock wise");
Serial.println(" ");
anticlockwise(r);
stop1();
Serial.print("rotations:" );
Serial.println(m);
Serial.println(" ");
}
}//if(!p)
else//if unknown number recived
{
Serial.println("Un Authorised Person\n");
Serial.print("Mobile Number: ");
Serial.println(number);
Serial.println(" ");
Serial.print("Message: ");
Serial.println(message);
Serial.println(" ");
Serial.println("Operation not Alloted\n");
}
}//if(number[0])
}//if(pos)
/* else // if messages more than 20 then deleted
{
for(pos=0;pos<20;pos++)
{
sms.DeleteSMS((int)pos);
Serial.println("All Messages Deleting......");
Serial.println(" ");
}
pos=0;
}*/

delay(1000);
/*** clearing all variables***/
sms.DeleteSMS((int)pos);
Serial.println("Message Deleted\n");
clearbuf(message);
clearbuf(number);
p='\0';
m='\0';
r='\0';
delay(2000);
}//loop()

MaheshG32 months ago

hai friends iam ganesh. plz help for my project . any one for write the program for control one relay using GSM module (sim900). progarm form msg is given to some text is diplay.

Fateen745 months ago

Can I use Arduino Uno?

logan.smr5 months ago

Please upload the code of entire project please!! i am doing the same experiment

My email id: lokeshrrs@gmail.com

i would be obliged if i have been helped!!

Thank u!!

Hi Team,

What i have to do to register a particular mobile number otherwise anybody can hack the device na...?

danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
danrose6 months ago
Please give me the code . Iam also doing this project.i collected the componen.please give the code
225 awesome56 months ago

same here

225 awesome56 months ago

I have used ardiuno uno R3 but when I send ona or onb ect. nothing happens please help

SirA16 months ago

hi .. i want to know , i wanna make a project to turn on the lamp in the house while im not at the house .. but , if i wanna make sure the light is turn on , can i receive sms from the device to my phone to prove the light is turn on ..

Hello,

This tutorial is very very useful. I am trying to demonstrate this project on my own. I am using SIM300 gsm module because I don't have a gsm shield for arduino. However, the relay control part is working fine BUT the problem is that SIM300 has only 25 sms memory. I want to delete the sms memory after every "reset" or after executing ona, onb, onc, ond etc.

So, I added the code in Void Setup()
but it is not working.
Serial.write("AT+CMGDA=");
Serial.write(34); //ASCII of “
Serial.write("DEL ALL");
Serial.write(34);
Serial.write(13);
Serial.write(10);
delay(10000);

I have written the details & result of my experiment in this post.

http://arduino.cc/forum/index.php/topic,155448.msg1165394.html#msg1165394

Any help shall be highly appreciated.
Thanks

hey can you send me the whole sketch ? i am doing the same project with sim900

Elecrow (author)  nightcrawler2182 years ago
Nice job!
Iqrar AliS6 months ago

its not receiving the sms . what should i do?

landsail7 months ago

Thanks, for the instructions. I got it to work with a little trouble due to this being my first Arduino project.

Note to others - you MUST download the software .ino file as an .ino file by right clicking and saving the file. If you cut and past the text you will be up a creek. It will not compile properly!

I used and uno and the relay and gprs shields from seeed studios and a cell phone card from T Mobile which is unlocked. The shields were available at my local Radio Shack.

Last if you are going to use it for something that has substantial power, use the relays on the board to power heftier relays that can handle the power load. Relays are cheap and burning out your boards isn't.

pelegren8 months ago

hi, please share the schematic diagram how the boards are connected and which pins are actually in use. I can understand the program without knowing which pins are used and not used. thanks.

Hello,

I have bought the items linked on this thread. I uploaded the sketch successfully using Arduino IDE. I followed all the steps but the module does not receive the SMS. When I put the SIM into a phone, the phone does receive the text. Can you please help?

Glenn.

Since my last post I have gotten the GSM module to receive SMS.

It tried the sketch again but the relay does not turn on.

Can you help with this please?

eddevine1 year ago
What SIM card are you using? The ones I've seen require an expensive plan with a provider
Elecrow (author)  eddevine1 year ago
Hello eddevine,

We are using a very common SIM card which used in my phone, the GPRS shield is support 2G sim card, but I not sure whether it support 3G Sim card. if you have any tech question, please feel free to contact with techsupport@elecrow.com.

Best Regards
I do everything I follow the instruction but still not able to turn on the led. I can manually turn on the led but by sms onb nothing happens
please help

Hey ,
did u do this project using sms?

stanpilip9 months ago

hey, where did you download the command prompt for the gsm/gprs sheild to connect with the arduino? the one on wikihow comes up as an empty folder.

also what sim provider did you use? I am having trouble with the telefonica card that comes with the arduino

KariyappaK10 months ago

Hi

this kariyappa

I need help regarding bellow

i am working on arduino uno with Sim900 module to send an sms. my sample code is as follows

i am not able to receive reply from sim900,and able send sms.

#include<SoftwareSerial.h>

SoftwareSerial mySerial(3, 2); // RX, TX pins

int led= 13;
//String str;
char str;


// serial communication settings

void setup()
{

Serial.begin(9600);
mySerial.begin(9600); // setting the buad rate as 9600
pinMode(led,OUTPUT); // initialize the digital pin as an output.
Serial.println("GSM communication initialization");
mySerial.println("AT"); // activating the gsm module.
delay(500);

mySerial.println("AT+CMGF=1"); // setting the gsm module to sms mode.
delay(500);
Serial.println("serial communication begins");

}

void loop()
{

while(mySerial.available() > 0)
{
str = mySerial.read();
Serial.print(str);
int data=str.indexOf("hello");
/Serial.println(str);


if(data!=-1)
{
mySerial.println("AT+CMGS=\"9902062107\""); // mobile number
delay(500);
mySerial.println("hello"); // Message contents
delay(500);
mySerial.write(byte(26)); // (signals end of message)
delay(500);
}
}
}

ckrmustafa1 year ago

Hi friend,

Congratulations. The project is fantastic. I am newbie on ARDUINO. I read your instructions step by step but there is some problem. When I send SMS via my phone there is no action on relay board. Could you tell me what is wrong on my job? Thanks.

YOUR CODE DOES NOTHING. SOFTWARESERIAL LIBRARY ISN'T EVEN USED ON THIS SKETCH.

1-40 of 68Next »