文章目錄
- 前言
- 一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip
- 二、在浏覽器中填寫HTTP位址
-
- 1.源碼分析
- 總結
前言
在超視距的環境下,人們總想對遠端的硬體進行控制并傳輸應用資料。将一個硬體設定為伺服器,通過浏覽器對遠端硬體的控制和資料推送。滿足需求的話設定URI協定進行辨別,将ESPDuino作為一個Web Server,來響應遠端的控制指令,推送資料。
一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip
二、在浏覽器中填寫HTTP位址
GPIO是嵌入式中最常用的資源,是各種控制指令/響應的硬體接口,通過高低電平實作具體控制。/如圖一/gpio/1表示把GPIO接口設定為高電平,這時将可以可以觀察到,led燈滅了
将GPIO接口設定為低電平此時led燈常亮
1.源碼分析
代碼如下:
#define PIN_LED 16
#define KEY_FLASH 0
#include<ESP8266WiFi.h>
const char*ssid ="nfc";
const char*password="123456789";
WiFiServer server(80);
void setup(){
Serial.begin(115200);
delay(10);
pinMode(PIN_LED,OUTPUT);
digitalWrite(PIN_LED,LOW);
Serial.println();
Serial.println();
Serial.print("Connecting to");
Serial.println(ssid);
WiFi.begin(ssid,password);
while(WiFi.status()!=WL_CONNECTED){
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
//Start the server
server.begin();
Serial.println("Serial started");
//print the address
Serial.println(WiFi.localIP());
}
void loop(){
WiFiClient client=server.available();
if(!client){
return;
}
Serial.println("new client");
while(!client.available()){
delay(1);
}
String req=client.readStringUntil('\r');
Serial.println(req);
client.flush();
int val;
if(req.indexOf("/gpio/0")!=-1)
val=1;
else if(req.indexOf("/gpio/1")!=1)
val=1;
else{
Serial.println("invalid requst");
client.stop();
return;
}
digitalWrite(PIN_LED,val);
client.flush();
String s="HTTP/1.1 200 OK\r\n Content-Type:text/html\r\n\r\n<! DOCTYPE HTML>\r\n<html>\r\n CPIO is now";
s +=(val)? "high":"low";
s +="</html>\n";
client.print(s);
delay(1);
Serial.println("Client disconnected");
}
總結
通過浏覽器來實作對遠端硬體的控制和資料推送,作為連接配接人和硬體的橋梁,大大加深了更多遠端服務實作的可能性,也為遠端控制的人工智能實作了向前的一步。