如何讓ESP8266板子像APP開發一樣方便

beiqiaosu發表於2023-05-16

眾所周知,在APP開發中,C/S是基本的開發結構。客戶端負責應用的展示,互動與網路請求,服務端負責資料的傳輸,處理,儲存,輸出等等。而物聯網除了之前介紹的MQTT實現H5實時控制舵機旋轉角度來完成開關外,同樣也可以透過HTTP的請求方式來和任何一門語言的服務端進行互動。

        所以,在這裡ESP8266可以理解為客戶端了。當然,ESP8266請求介面既可以可以用來輸出到外接的oLED或音響等裝置,也可以透過感測器收集的資料透過介面的方式傳到服務端進行儲存,服務端再清洗過濾,計算分析,可以玩的東西就更多一些了。以下只是好早以前用PHP測試寫的介面,ESP8266就請求列印一下的簡單例子。

如何讓ESP8266板子像APP開發一樣方便

 

環境:

     Arduino

    ArduinoJson庫

    HTTPClient庫

 

安裝:

       在推薦使用以上兩個庫外,我之前使用的ESP8266WiFi,請求成功後,透過JON庫怎麼也解析不成功,在經過一些踩坑和折騰後換成HTTPClient就可以了。以上兩個庫分別用來作為請求和JSON解析,在網上自行搜尋哦,如果實在找不到可以在小編公眾號留言,免費提供下載,安裝方式是:將下載好的包複製到Arduino的libraries目錄中即可。

如何讓ESP8266板子像APP開發一樣方便

程式碼演示:

#include <HTTPClient.h>#include <ArduinoJson.h>#include <ESP8266WiFi.h>#include <ESP8266WiFiMulti.h>
 ESP8266WiFiMulti wifiMulti;           // 建立ESP8266WiFiMulti物件void setup() {
  
  Serial.begin(9600);          
  Serial.println("");  
  // 設定開發板LED引腳
  pinMode(LED_BUILTIN, OUTPUT);  digitalWrite(LED_BUILTIN, HIGH);
 
  wifiMulti.addAP("TP-LINK_D12E", "ZFC3598300"); // 將需要連線的一系列WiFi ID和密碼輸入這裡
  wifiMulti.addAP("ssid_from_AP_2", "your_password_for_AP_2"); // ESP8266-NodeMCU再啟動後會掃描當前網路
  wifiMulti.addAP("ssid_from_AP_3", "your_password_for_AP_3"); // 環境查詢是否有這裡列出的WiFi ID。如果有
  Serial.println("Connecting ..."); 
 
  int i = 0;  
  while (wifiMulti.run() != WL_CONNECTED) { // 嘗試進行wifi連線。
    delay(1000);
    Serial.print(i++); Serial.print(' ');
  }  
  // WiFi連線成功後將透過串列埠監視器輸出連線成功資訊 
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(WiFi.SSID());              // WiFi名稱
  Serial.print("IP address:\t");
  Serial.println(WiFi.localIP());           // IP}void loop() {  if (WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin(");    int httpCode = http.GET();    if (httpCode > 0) {
      String Request_result = http.getString();      //Serial.println(Request_result);
      
      DynamicJsonBuffer jsonBuffer;
      JsonObject& root = jsonBuffer.parseObject(Request_result);
      String json1 = root["results"][0];
      Serial.println(json1);
      
      DynamicJsonBuffer jsonBuffer1;
      JsonObject& root1 = jsonBuffer1.parseObject(json1);
      String json2 = root1["location"];
      Serial.println(json2);
      DynamicJsonBuffer jsonBuffer2;
      JsonObject& root2 = jsonBuffer2.parseObject(json2);
      String json3 = root2["id"];
      Serial.println(json3);
      Serial.println("");
    }    else {
      Serial.println("Invalid response!");
    }
    http.end();
  }  delay(5000);
}

列印效果:

如何讓ESP8266板子像APP開發一樣方便

 

交流學習:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70029959/viewspace-2952297/,如需轉載,請註明出處,否則將追究法律責任。

相關文章