天天看點

ESPDuino作為Web Server,實作遠端控制硬體前言一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip二、在浏覽器中填寫HTTP位址總結

文章目錄

  • 前言
  • 一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip
  • 二、在浏覽器中填寫HTTP位址
    • 1.源碼分析
  • 總結

前言

在超視距的環境下,人們總想對遠端的硬體進行控制并傳輸應用資料。将一個硬體設定為伺服器,通過浏覽器對遠端硬體的控制和資料推送。滿足需求的話設定URI協定進行辨別,将ESPDuino作為一個Web Server,來響應遠端的控制指令,推送資料。

一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip

ESPDuino作為Web Server,實作遠端控制硬體前言一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip二、在浏覽器中填寫HTTP位址總結
ESPDuino作為Web Server,實作遠端控制硬體前言一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip二、在浏覽器中填寫HTTP位址總結

二、在浏覽器中填寫HTTP位址

GPIO是嵌入式中最常用的資源,是各種控制指令/響應的硬體接口,通過高低電平實作具體控制。/如圖一/gpio/1表示把GPIO接口設定為高電平,這時将可以可以觀察到,led燈滅了

将GPIO接口設定為低電平此時led燈常亮

ESPDuino作為Web Server,實作遠端控制硬體前言一、開發闆加電,上傳固件代碼,序列槽監視顯示聯網成功,WEB伺服器啟動 在浏覽器中輸入ip二、在浏覽器中填寫HTTP位址總結

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");
  
  }

           

總結

通過浏覽器來實作對遠端硬體的控制和資料推送,作為連接配接人和硬體的橋梁,大大加深了更多遠端服務實作的可能性,也為遠端控制的人工智能實作了向前的一步。

繼續閱讀