HOME_AUTOMATIO_OVER _WIFI(using esp-01 module)||Part 1

 

Hey everyone,

My name is Amey and I am back with another project this time I am making series of this project so make sure you subscribe to my channel. I wanted a simple system that can control my room appliances by my mobile (like a home automation system).

I wanted is so simple, like it should work only over my WIFI network but not through internet. First thing first I do some research and found out that esp32 is best option but I am not having it, then I switch over the world-famous microcontroller board “Arduino Uno” and for Wifi I am using esp-01 module which is cheap and easily configure with the Arduino uno.

I gather all the component and start making it.

This is frist part in which I am controlling the led connected to arduino and arduino is coonected to wifi via esp-01 module.


So, let’s make it!!!!


Component 

Arduino Uno X 1

Esp8266 X 1

Led x 1

Resistor x 1

Some jumper wires and breadboard


Working

As I am using IP-address for communication it makes things simple and easy you have to put IP address of your ESP01 module which is connected to your home network in my case its 192.168.0.106.

The communication between the Arduino and mobile phone is based on http protocol means you can control the led from the web browse just by this typing in your address bar  ”http://you_device_ip_addres/H “ (make sure your ESP-module and mobile phone is connected on same network)

In above case “H” cane replace by the other word for controlling different led in my case I took H and L for first led, A and B for second led (just for testing)

But it is bit tricky to every to open web browser and type your ip and command so in next part I am making an app using Mit app inventor which is helpful for small project like this. make sure you subscribe to my youtube channel 

Below is imageof the web page that load in web browser after adding ip address of esp moadule


Above figure shows the communication diagram 





Circuit Diagram




Code:-


#include "WiFiEsp.h"

 

// Emulate Serial1 on pins 6/7 if not present

#ifndef HAVE_HWSERIAL1

#include "SoftwareSerial.h"

SoftwareSerial Serial1(6, 7); // RX, TX

#endif

 

char ssid[] = "Twim";            // your network SSID (name)

char pass[] = "12345678";        // your network password

int status = WL_IDLE_STATUS;

 

int ledStatus = LOW; 

WiFiEspServer server(80);

 // use a ring buffer to increase speed and reduce memory allocation

RingBuffer buf(8);

 

void setup()

{

  pinMode(LED_BUILTIN, OUTPUT);          // initialize digital pin LED_BUILTIN as an output.

  Serial.begin(115200);   // initialize serial for debugging

  Serial1.begin(9600);    // initialize serial for ESP module

  WiFi.init(&Serial1);    // initialize ESP module

 

  // check for the presence of the shield

  if (WiFi.status() == WL_NO_SHIELD) {

    Serial.println("WiFi shield not present");

    // don't continue

    while (true);

  }

 

  // attempt to connect to WiFi network

  while (status != WL_CONNECTED) {

    Serial.print("Attempting to connect to WPA SSID: ");

    Serial.println(ssid);

    // Connect to WPA/WPA2 network

    status = WiFi.begin(ssid, pass);

  }

 

  Serial.println("You're connected to the network");

  printWifiStatus();

 

  // start the web server on port 80

  server.begin();

}

 

 

void loop()

{

  WiFiEspClient client = server.available();  // listen for incoming clients

 

  if (client) {                               // if you get a client,

    Serial.println("New client");             // print a message out the serial port

    buf.init();                               // initialize the circular buffer

    while (client.connected()) {              // loop while the client's connected

      if (client.available()) {               // if there's bytes to read from the client,

        char c = client.read();               // read a byte, then

        buf.push(c);                          // push it to the ring buffer

 

        // printing the stream to the serial monitor will slow down

        // the receiving of data from the ESP filling the serial buffer

        //Serial.write(c);

       

        // you got two newline characters in a row

        // that's the end of the HTTP request, so send a response

        if (buf.endsWith("\r\n\r\n")) {

          sendHttpResponse(client);

          break;

        }

 

        // Check to see if the client request was "GET /H" or "GET /L":

        if (buf.endsWith("GET /H")) {

          Serial.println("Turn led ON");

          ledStatus = HIGH;

          digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)

        }

        else if (buf.endsWith("GET /L")) {

          Serial.println("Turn led OFF");

          ledStatus = LOW;

          digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW

        }

      }

    }

   

    // close the connection

    client.stop();

    Serial.println("Client disconnected");

  }

}

 

 

void sendHttpResponse(WiFiEspClient client)

{

  // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)

  // and a content-type so the client knows what's coming, then a blank line:

  client.println("HTTP/1.1 200 OK");

  client.println("Content-type:text/html");

  client.println();

 

  // the content of the HTTP response follows the header:

  client.print("The LED is ");

  client.print(ledStatus);

  client.println("<br>");

  client.println("<br>");

 

  client.println("Click <a href=\"/H\">here</a> turn the LED on<br>");

  client.println("Click <a href=\"/L\">here</a> turn the LED off<br>");

 

  // The HTTP response ends with another blank line:

  client.println();

}

 

void printWifiStatus()

{

  // print the SSID of the network you're attached to

  Serial.print("SSID: ");

  Serial.println(WiFi.SSID());

 

  // print your WiFi shield's IP address

  IPAddress ip = WiFi.localIP();

  Serial.print("IP Address: ");

  Serial.println(ip);

 

  // print where to go in the browser

  Serial.println();

  Serial.print("To see this page in action, open a browser to http://");

  Serial.println(ip);

  Serial.println();

}


Libraries required for this project :-  

                        1)wifiesp

                        2)esp8266

Both Libraries are availabel in arduino ide.



Video:-
   working Video for this project  click here    

Check my youtube channel for more project www.youtube.com/Abuilds      






Comments