Muhammad_Munir
Published © GPL3+

GSM Based Home Automation

How to control Home Appliances with mobile phone by SMS

BeginnerFull instructions provided1,700
GSM Based Home Automation

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
×1
SIM800l
×1
Jumper wire
×1
Relay Module
×1
Wire
×1
3.7 volt battery
×1

Story

Read more

Schematics

Diagram

Code

Code

Arduino
#include<SoftwareSerial.h> 
SoftwareSerial mySerial(10,11);  // (Rx,Tx  > Tx,Rx) 

char incomingByte; 
String inputString;
int relay1 = 2; // Output for Relay Control
int relay2 = 3; // Output for Relay Control

void setup() 
{
      pinMode(relay1, OUTPUT);
        pinMode(relay2, OUTPUT);
      digitalWrite(relay1, LOW); // Initial state of the relay
       digitalWrite(relay2, LOW); // Initial state of the relay
      Serial.begin(9600);
      mySerial.begin(9600); 

     while(!mySerial.available()){
        mySerial.println("AT");
        delay(1000); 
        Serial.println("Connecting...");
        }
      Serial.println("Connected!");  
      mySerial.println("AT+CMGF=1");  //Set SMS to Text Mode 
      delay(1000);  
      mySerial.println("AT+CNMI=1,2,0,0,0");  //Procedure to handle newly arrived messages(command name in text: new message indications to TE) 
      delay(1000);
      mySerial.println("AT+CMGL=\"REC UNREAD\""); // Read Unread Messages
     }

void loop()
{  
  if(mySerial.available()){
      delay(100);

      // Serial Buffer
      while(mySerial.available()){
        incomingByte = mySerial.read();
        inputString += incomingByte; 
        }

        delay(10);      

        Serial.println(inputString);
        inputString.toUpperCase(); // Uppercase the Received Message

        //turn RELAY ON or OFF
        if (inputString.indexOf("LIGHT ON") > -1){
          digitalWrite(relay1, HIGH);
          }
         if (inputString.indexOf("LIGHT OFF") > -1){
          digitalWrite(relay1, LOW);
          }   
           if (inputString.indexOf("FAN ON") > -1){
          digitalWrite(relay2, HIGH);
          }
         if (inputString.indexOf("FAN OFF") > -1){
          digitalWrite(relay2, LOW);
          }     
            if (inputString.indexOf("ALL ON") > -1){
          digitalWrite(relay1, HIGH);
           digitalWrite(relay2, HIGH);
          }
         if (inputString.indexOf("ALL OFF") > -1){
          digitalWrite(relay1, LOW);
          digitalWrite(relay2, LOW);
          }    

        delay(50);

        //Delete Messages & Save Memory
        if (inputString.indexOf("OK") == -1){
        mySerial.println("AT+CMGDA=\"DEL ALL\"");

        delay(1000);}

        inputString = "";
  }
}

Credits

Muhammad_Munir
79 projects • 52 followers
I am Arduino programmer, also expertise in ESP32 and 8266 wifi modules.
Contact

Comments

Please log in or sign up to comment.