GSM Based Home Automation
How to control Home Appliances with mobile phone by SMS
Components and supplies
1
SIM800l
1
Relay Module
1
Wire
1
3.7 volt battery
1
Jumper wire
1
Arduino Nano R3
Project description
Code
Code
arduino
1 2#include<SoftwareSerial.h> 3SoftwareSerial mySerial(10,11); // (Rx,Tx > Tx,Rx) 4 5char incomingByte; 6String inputString; 7int relay1 = 2; // Output for Relay Control 8int relay2 = 3; // Output for Relay Control 9 10void setup() 11{ 12 pinMode(relay1, OUTPUT); 13 pinMode(relay2, OUTPUT); 14 digitalWrite(relay1, LOW); // Initial state of the relay 15 digitalWrite(relay2, LOW); // Initial state of the relay 16 Serial.begin(9600); 17 mySerial.begin(9600); 18 19 while(!mySerial.available()){ 20 mySerial.println("AT"); 21 delay(1000); 22 Serial.println("Connecting..."); 23 } 24 Serial.println("Connected!"); 25 mySerial.println("AT+CMGF=1"); //Set SMS to Text Mode 26 delay(1000); 27 mySerial.println("AT+CNMI=1,2,0,0,0"); //Procedure to handle newly arrived messages(command name in text: new message indications to TE) 28 delay(1000); 29 mySerial.println("AT+CMGL=\\"REC UNREAD\\""); // Read Unread Messages 30 } 31 32void loop() 33{ 34 if(mySerial.available()){ 35 delay(100); 36 37 // Serial Buffer 38 while(mySerial.available()){ 39 incomingByte = mySerial.read(); 40 inputString += incomingByte; 41 } 42 43 delay(10); 44 45 Serial.println(inputString); 46 inputString.toUpperCase(); // Uppercase the Received Message 47 48 //turn RELAY ON or OFF 49 if (inputString.indexOf("LIGHT ON") > -1){ 50 digitalWrite(relay1, HIGH); 51 } 52 if (inputString.indexOf("LIGHT OFF") > -1){ 53 digitalWrite(relay1, LOW); 54 } 55 if (inputString.indexOf("FAN ON") > -1){ 56 digitalWrite(relay2, HIGH); 57 } 58 if (inputString.indexOf("FAN OFF") > -1){ 59 digitalWrite(relay2, LOW); 60 } 61 if (inputString.indexOf("ALL ON") > -1){ 62 digitalWrite(relay1, HIGH); 63 digitalWrite(relay2, HIGH); 64 } 65 if (inputString.indexOf("ALL OFF") > -1){ 66 digitalWrite(relay1, LOW); 67 digitalWrite(relay2, LOW); 68 } 69 70 delay(50); 71 72 //Delete Messages & Save Memory 73 if (inputString.indexOf("OK") == -1){ 74 mySerial.println("AT+CMGDA=\\"DEL ALL\\""); 75 76 delay(1000);} 77 78 inputString = ""; 79 } 80} 81
Code
arduino
1 2#include<SoftwareSerial.h> 3SoftwareSerial mySerial(10,11); // 4 (Rx,Tx > Tx,Rx) 5 6char incomingByte; 7String inputString; 8int relay1 9 = 2; // Output for Relay Control 10int relay2 = 3; // Output for Relay Control 11 12void 13 setup() 14{ 15 pinMode(relay1, OUTPUT); 16 pinMode(relay2, OUTPUT); 17 18 digitalWrite(relay1, LOW); // Initial state of the relay 19 digitalWrite(relay2, 20 LOW); // Initial state of the relay 21 Serial.begin(9600); 22 mySerial.begin(9600); 23 24 25 while(!mySerial.available()){ 26 mySerial.println("AT"); 27 28 delay(1000); 29 Serial.println("Connecting..."); 30 } 31 32 Serial.println("Connected!"); 33 mySerial.println("AT+CMGF=1"); 34 //Set SMS to Text Mode 35 delay(1000); 36 mySerial.println("AT+CNMI=1,2,0,0,0"); 37 //Procedure to handle newly arrived messages(command name in text: new message 38 indications to TE) 39 delay(1000); 40 mySerial.println("AT+CMGL=\\"REC 41 UNREAD\\""); // Read Unread Messages 42 } 43 44void loop() 45{ 46 if(mySerial.available()){ 47 48 delay(100); 49 50 // Serial Buffer 51 while(mySerial.available()){ 52 53 incomingByte = mySerial.read(); 54 inputString += incomingByte; 55 56 } 57 58 delay(10); 59 60 Serial.println(inputString); 61 62 inputString.toUpperCase(); // Uppercase the Received Message 63 64 //turn 65 RELAY ON or OFF 66 if (inputString.indexOf("LIGHT ON") > -1){ 67 digitalWrite(relay1, 68 HIGH); 69 } 70 if (inputString.indexOf("LIGHT OFF") > -1){ 71 72 digitalWrite(relay1, LOW); 73 } 74 if (inputString.indexOf("FAN 75 ON") > -1){ 76 digitalWrite(relay2, HIGH); 77 } 78 if 79 (inputString.indexOf("FAN OFF") > -1){ 80 digitalWrite(relay2, LOW); 81 82 } 83 if (inputString.indexOf("ALL ON") > -1){ 84 digitalWrite(relay1, 85 HIGH); 86 digitalWrite(relay2, HIGH); 87 } 88 if (inputString.indexOf("ALL 89 OFF") > -1){ 90 digitalWrite(relay1, LOW); 91 digitalWrite(relay2, 92 LOW); 93 } 94 95 delay(50); 96 97 //Delete Messages 98 & Save Memory 99 if (inputString.indexOf("OK") == -1){ 100 mySerial.println("AT+CMGDA=\\"DEL 101 ALL\\""); 102 103 delay(1000);} 104 105 inputString = ""; 106 107 } 108} 109
Downloadable files
Diagram
Diagram

Comments
Only logged in users can leave comments