Arduino Esp8266 post-data till hemsida (5 / 6 steg)
Steg 5: Skicka data
Först måste du förstå grunderna i en HTTP. Hypertext Transfer Protocol (HTTP) är utformad så att kommunikation mellan klienter och servrar.
HTTP fungerar som en begäran-svar-protokoll mellan en klient och server. En webbläsare kan vara klienten, och ett program på en dator som är värd för en webbplats kan vara servern. Exempel: En klient (webbläsare) skickar en HTTP-begäran till servern. servern returnerar sedan ett svar till klienten. Svaret innehåller statusinformation om begäran och kan även innehålla det begärda innehållet. På vårt exempel är esp8266 klienten och servern som är värd för vår webbplats är servern.
Så utför en HTTP Post-begäran måste vara under en viss form:
POST /esppost.php HTTP/1.0
Värd: serverconnect.site88.net
Accepterar: * / *
Content-Length: "namn1 = värde1 & name2 = värde2". Längd
Content-Type: application/x-www-formuläret-urlencoded
namn1 = värde1 & name2 = värde2
Du kan hitta mer explaination och informationer i Arduino skiss nedan. Efter uppladdning skissen, vänta några sekunder och sedan uppdaterar du webbsida.
#include "SoftwareSerial.h"
Sträng ssid = "yourSSID";
Sträng lösenord = "yourPassword";
SoftwareSerial esp (6, 7); / / RX, TX
Strängdata;
Sträng server = "dinserver"; // www.example.com
Sträng uri = "yourURI"; / / vårt exempel är /esppost.php
int DHpin = 8; //sensor stift
byte dat [5].
Sträng temp, hum;
void setup() {
pinMode (DHpin, OUTPUT);
ESP.BEGIN(9600);
Serial.BEGIN(9600);
Reset();
connectWifi();
}
återställa modulen esp8266
void reset() {
ESP.println("at+rst");
Delay(1000);
IF(ESP.find("OK")) Serial.println ("modul Reset");
}
ansluta till ditt wifi-nätverk
void connectWifi() {
Sträng cmd = "AT + CWJAP = \" "+ ssid +"\", \" "+ lösenord +"\"";
ESP.println(CMD);
Delay(4000);
IF(ESP.find("OK")) {
Serial.println("Connected!");
}
annat {
connectWifi();
Serial.println ("kan inte ansluta till wifi"); }
}
byte read_data () {
byte data.
för (int jag = 0; jag < 8; i ++) {
om (digitalRead (DHpin) == låg) {
medan (digitalRead (DHpin) == låg); / / vänta på 50us
delayMicroseconds (30); / / fastställa varaktigheten av den höga uppgifter som är "0"eller "1"
om (digitalRead (DHpin) == hög)
data | = (1 << (7-i)); / / hög front och låg i inlägget
medan (digitalRead (DHpin) == hög);
data '1', vänta på nästa mottagaren
}
} returnera data; }
void start_test () {
digitalWrite (DHpin, låg); / / buss ner, skicka start signal
fördröjning (30); / / fördröjning större än 18ms, så DHT11 start signal kan upptäckas
digitalWrite (DHpin, hög);
delayMicroseconds (40); / / Vänta på DHT11 svar
pinMode (DHpin, indata);
medan (digitalRead (DHpin) == hög);
delayMicroseconds (80).
DHT11 svar, drog buss 80us
om (digitalRead (DHpin) == låg);
delayMicroseconds (80).
DHT11 80us efter bussen drog till börja skicka data
för (int jag = 0; jag < 4; i ++)
ta emot temperatur och luftfuktighetsdata, paritetsbiten anses inte
dat [i] = read_data ();
pinMode (DHpin, OUTPUT);
digitalWrite (DHpin, hög);
Skicka data en gång efter att bussen, vänta på att värden ska öppna nästa Start signal
}
Ogiltig loop () {
start_test ();
konvertera bitarsdata till sträng form
hum = String(dat[0]);
Temp = String(dat[2]);
data = "temperatur =" + temp + "& luftfuktighet =" + hum; / / data som skickas måste vara under denna form //name1=value1 & name2 = värde2.
httppost();
Delay(1000);
}
void httppost () {
ESP.println ("AT + CIPSTART = \"TCP\", \" "+ server +"\",80"); //start en TCP-anslutning.
om (esp.find("OK")) {
Serial.println ("TCP connection redo");
} delay(1000);
String postRequest =
"POST" + uri + "HTTP/1.0\r\n" +
"Värd:" + server + "\r\n" +
"Acceptera: *" + "/" + "* \r\n" +
"Content-Length:" + data.length() + "\r\n" +
"Content-Type: application/x-www-formuläret-urlencoded \r\n" +
"\r\n" + data;
String sendCmd = "AT + CIPSEND ="; //determine antalet caracters skickas.
ESP.Print(sendCmd);
ESP.println(postRequest.length());
Delay(500);
om (esp.find(">")) {Serial.println("Sending.."); esp.print(postRequest);
om (esp.find ("Skicka OK")) {Serial.println ("paket som skickas");
samtidigt (esp.available()) {
String tmpResp = esp.readString();
Serial.println(tmpResp);
}
stänga anslutningen
ESP.println("at+CIPCLOSE");
}
}}
Om allt gick bra du bör se ett resultat som liknar bilden ovan om inte koppla ur sedan sätta tillbaka din Arduino och vänta några sekunder.