Professional Documents
Culture Documents
important, to make them Fit in the World of Internet of Things. HTTP protocol and
HTML language have made it possible to transfer the Data anywhere in the world,
over the web. We have already covered some projects which use Wi-Fi with
Arduino, have a look at them to Getting started :
Now in this tutorial, we are building a program to Send Data to Web using Arduino and Wi-Fi
module. For this we first need an IP address of either Global or Local server, here for the ease
and demonstration purpose, we are using Local Server.
Components Required:
Arduino UNO
USB Cable
Connecting wires
Laptop
Power supply
Circuit Diagram for Post Data from Arduino to Web is given below. We mainly need
a Arduino and ESP8266 Wi-Fi module. ESP8266s Vcc and GND pins are directly connected
to 3.3V and GND of Arduino and CH_PD is also connected with 3.3V. Tx and Rx pins of
ESP8266 are directly connected to pin 2 and 3 of Arduino. Software Serial Library is used to
allow serial communication on pin 2 and 3 of Arduino. We have already covered the Interfacing
of ESP8266 Wi-Fi module to Arduino in detail.
By using Software Serial Library here, we have allowed serial communication on pin 2 and 3,
and made them Rx and Tx respectively. By default Pin 0 and 1 of Arduino are used for serial
communication but by using SoftwareSerial library, we can allow serial communication on other
digital pins of the Arduino.
Note: To watch the response of ESP8266 on serial monitor, please open Serial Monitor of
Arduino IDE.
Working Explanation:
First of all we need to connect our Wi-Fi module to Wi-Fi router for network connectivity. Then
we will Configure the local server, Send the data to Web and finally Close the connection. This
process and commands have been explained in below steps:
1. First we need to test the Wi-Fi module by sending AT command, it will revert back a response
containing OK.
2. After this, we need to select mode using command AT+CWMODE=mode_id , we have used
Mode id =3. Mode ids:
1 = Station mode (client)
2 = AP mode (host)
3 = AP + Station mode (Yes, ESP8266 has a dual mode!)
3. Now we need to disconnect our Wi-Fi module from the previously connected Wi-Fi network,
by using the command AT+CWQAP, as ESP8266 is default auto connected with any previously
available Wi-Fi network
4. After that, user can Reset the module with AT+RST command. This step is optional.
AT+CWJAP=wifi_username,wifi_password
AT+CIFSR
7. Now enable the multiplex mode by using AT+CIPMUX=1 (1 for multiple connection and 0
for single connection)
9. Now by using given command user can send data to local created server:
10. After sending ID and Length to the server, we need to send data like :
Serial.println(circuitdigest@gmail.com);
11. After sending data we need close the connection by given command:
AT+CIPCLOSE=0
1. Include SoftwareSerial Library for allow serial communication on PIN 2 & 3 and declare
some variables and strings.
#include<SoftwareSerial.h>
SoftwareSerial client(2,3); //RX, TX
String webpage="";
int i=0,k=0;
String readString;
int x=0;
boolean No_IP=false;
String IP="";
char temp1='0';
2. After this, we have to define some functions for performing our desired tasks.
void setup()
{
Serial.begin(9600);
client.begin(9600);
wifi_init();
Serial.println("System Ready..");
}
3. In wifi_init() function, we initialize the wifi module by sending some commands like reset, set
mode, connect to router, configure connection etc. These commands have also been explained
above in description part.
void wifi_init()
{
connect_wifi("AT",100);
connect_wifi("AT+CWMODE=3",100);
connect_wifi("AT+CWQAP",100);
connect_wifi("AT+RST",5000);
...... .....
..... .....
4. In connect_wifi() function, we send commands data to ESP8266 and then read response from
ESP8266 Wi-Fi module.
6. void send() function is used for sending data strings to sendwebdata() function. That will be
further sent to webpage.
void Send()
{
webpage = "<h1>Welcome to Circuit Digest</h1><body bgcolor=f0f0f0>";
sendwebdata(webpage);
webpage=name;
webpage+=dat;
...... .....
..... .....
void loop()
{
k=0;
Serial.println("Please Refresh your Page");
while(k<1000)
.... .....
.... .....
We can display any data from Arduino to Webpage using this process, like Room Temperature &
Humidity, Clock time, GPS coordinates, Heart beat Rate etc.
Code:
#include<SoftwareSerial.h>
SoftwareSerial client(2,3); //RX, TX
String webpage="";
int i=0,k=0;
String readString;
int x=0;
boolean No_IP=false;
String IP="";
char temp1='0';
void get_ip()
{
IP="";
char ch=0;
while(1)
{
client.println("AT+CIFSR");
while(client.available()>0)
{
if(client.find("STAIP,"))
{
delay(1000);
Serial.print("IP Address:");
while(client.available()>0)
{
ch=client.read();
if(ch=='+')
break;
IP+=ch;
}
}
if(ch=='+')
break;
}
if(ch=='+')
break;
delay(1000);
}
Serial.print(IP);
Serial.print("Port:");
Serial.println(80);
}
void wifi_init()
{
connect_wifi("AT",100);
connect_wifi("AT+CWMODE=3",100);
connect_wifi("AT+CWQAP",100);
connect_wifi("AT+RST",5000);
check4IP(5000);
if(!No_IP)
{
Serial.println("Connecting Wifi....");
connect_wifi("AT+CWJAP=\"1st floor\",\"muda1884\"",7000); //provide your WiFi
username and password here
// connect_wifi("AT+CWJAP=\"vpn address\",\"wireless network\"",7000);
}
else
{
}
Serial.println("Wifi Connected");
get_ip();
connect_wifi("AT+CIPMUX=1",100);
connect_wifi("AT+CIPSERVER=1,80",100);
}
void sendwebdata(String webPage)
{
int ii=0;
while(1)
{
unsigned int l=webPage.length();
Serial.print("AT+CIPSEND=0,");
client.print("AT+CIPSEND=0,");
Serial.println(l+2);
client.println(l+2);
delay(100);
Serial.println(webPage);
client.println(webPage);
while(client.available())
{
//Serial.print(Serial.read());
if(client.find("OK"))
{
ii=11;
break;
}
}
if(ii==11)
break;
delay(100);
}
}
void setup()
{
Serial.begin(9600);
client.begin(115200);// nte
wifi_init();
Serial.println("System Ready..");
}
void loop()
{
k=0;
Serial.println("Please Refresh your Page");
while(k<1000)
{
k++;
while(client.available())
{
if(client.find("0,CONNECT"))
{
Serial.println("Start Printing");
Send();
Serial.println("Done Printing");
delay(1000);
}
}
delay(1);
}
}
void Send()
{
webpage = "<h1>Welcome to Circuit Digest</h1><body bgcolor=f0f0f0>";
sendwebdata(webpage);
webpage=name;
webpage+=dat;
sendwebdata(webpage);
delay(1000);
webpage = "<a href="http://circuitdigest.com/";
webpage+="\">Click Here for More projects</a>";
sendwebdata(webpage);
client.println("AT+CIPCLOSE=0");
}
anther website
1. #include <SoftwareSerial.h>
2.
4.
5. SoftwareSerial esp8266(2,3); // make RX Arduino line is pin 2, make TX
Arduino line is pin 3.
8. void setup()
9. {
10. Serial.begin(9600);
12.
13.
14.
20. }
21.
23. {
25. {
26. /*
27. while(esp8266.available())
28. {
29. // The esp has data so display its output to the serial window
31. Serial.write(c);
32. } */
33.
34. if(esp8266.find("+IPD,"))
35. {
36. delay(1000);
37.
40.
42.
48.
49. sendData(cipsend,1000,DEBUG);
50. sendData(webpage,1000,DEBUG);
51.
52. webpage="<button>LED2</button>";
53.
59.
60. sendData(cipsend,1000,DEBUG);
61. sendData(webpage,1000,DEBUG);
62.
65. closeCommand+="\r\n";
66.
67. sendData(closeCommand,3000,DEBUG);
68. }
69. }
70. }
71.
72.
74. {
76.
80.
82. {
83. while(esp8266.available())
84. {
85.
86. // The esp has data so display its output to the serial window
88. response+=c;
89. }
90. }
91.
92. if(debug)
93. {
94. Serial.print(response);
95. }
96.
98. }
99.