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
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.
Comments
Post a Comment