ESP8266+搭建迷你小網站

搭建網絡服務器

  • ESP866-NodeMCU雖然也能實現網絡服務器的一些功能,但是畢竟它的運算能力是無法與那些昂貴的服務器電腦相媲美的,因此ESP8266-NodeMCU只能實現一些基本的網絡服務功能!

  • 在這裏我們以太極創客網站來做例子,要想訪問太極創客網站就要在瀏覽器地址欄輸入太極創客的網站地址: www.taichi-maker.com。當您輸入完地址並按下回車以後,瀏覽器會通過DNS服務查到太極創客網站服務器的IP地址。假設我們太極創客服務器地址爲12.34.56.78。接下來瀏覽器就會向IP地址12.34.56.78的服務器發送http請求。當網站服務器收到了請求後,會把被請求的網頁信息傳輸給瀏覽器,然後瀏覽器就會把收到的網頁信息轉換成網頁顯示在瀏覽器中。

在這裏,我們即將要實現的功能是啓動NodeMCU並且確保它已經成功連接WiFi。接下來請打開瀏覽器,並且在地址欄中輸入NodeMCU的IP地址並按下回車。假如將在瀏覽器中看到“Everyone who works hard has something to gain”(如下所示),那麼恭喜您已經成功的讓NodeMCU實現了網絡服務功能,因爲您所看到的這條文字信息正是來自於NodeMCU。換句話說,NodeMCU爲您建立了一個超級迷你的小網站。這個網站只有一個網頁。這個網頁只有一行文字“Everyone who works hard has something to gain”。
在這裏插入圖片描述

ESP8266程序

#include <ESP8266WiFi.h>        // 本程序使用 ESP8266WiFi庫
#include <ESP8266WiFiMulti.h>   //  ESP8266WiFiMulti庫
#include <ESP8266WebServer.h>   //  ESP8266WebServer庫
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti對象,對象名稱是'wifiMulti'
 
ESP8266WebServer esp8266_server(80);// 建立ESP8266WebServer對象,對象名稱爲esp8266_server
                                    // 括號中的數字是網路服務器響應http請求的端口號
                                    // 網絡服務器標準http端口號爲80,因此這裏使用80爲端口號
 
void setup(void){
  Serial.begin(9600);          // 啓動串口通訊
 
  //通過addAp函數存儲  WiFi名稱       WiFi密碼
  wifiMulti.addAP("MEIZU", "11111111");  // 這三條語句通過調用函數addAP來記錄3個不同的WiFi網絡信息.
  wifiMulti.addAP("CMCCjjj", "uipfbvcb"); 
  wifiMulti.addAP("SDFFFF", "13572468"); 
                                                // 此處WiFi信息只是示例,請在使用時將需要連接的WiFi信息填入相應位置。
                                                // 另外這裏只存儲了3個WiFi信息,您可以存儲更多的WiFi信息在此處。
  Serial.println("正在連接Wifi,請稍等:");  
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此處的wifiMulti.run()是重點。通過wifiMulti.run(),NodeMCU將會在當前
    delay(1000);                             // 環境中搜索addAP函數所存儲的WiFi。如果搜到多個存儲的WiFi那麼NodeMCU
    Serial.print(i++); Serial.print(' ');    // 將會連接信號最強的那一個WiFi信號。
  }                                          // 一旦連接WiFI成功,wifiMulti.run()將會返回“WL_CONNECTED”。這也是
                                             // 此處while循環判斷是否跳出循環的條件。
 
  // WiFi連接成功後將通過串口監視器輸出連接成功信息 
  Serial.println('\n');                     // WiFi連接成功後
  Serial.print("Connected to ");            // NodeMCU將通過串口監視器輸出。
  Serial.println(WiFi.SSID());              // 連接的WiFI名稱
  Serial.print("IP address:\t");            // 以及
  Serial.println(WiFi.localIP());           // NodeMCU的IP地址
  
//--------"啓動網絡服務功能"程序部分開始-------- //  此部分爲程序爲本示例程序重點1
  esp8266_server.begin();                   //  詳細講解請參見太極創客網站《零基礎入門學用物聯網》
  esp8266_server.on("/", handleRoot);       //  第3章-第2節 ESP8266-NodeMCU網絡服務器-1
  esp8266_server.onNotFound(handleNotFound);        
//--------"啓動網絡服務功能"程序部分結束--------
  Serial.println("HTTP esp8266_server started");//  告知用戶ESP8266網絡服務功能已經啓動
}
 
void loop(void){
  esp8266_server.handleClient();     // 處理http服務器訪問
}
                                                                          
void handleRoot() {   //處理網站根目錄“/”的訪問請求 
  esp8266_server.send(200, "text/plain", "Everyone who works hard has something to gain");   // NodeMCU將調用此函數。
}
 
// 設置處理404情況的函數'handleNotFound'
void handleNotFound(){                                        // 當瀏覽器請求的網絡資源無法在服務器找到時,
  esp8266_server.send(404, "text/plain", "404: Not found");   // NodeMCU將調用此函數。
}

將上述程序燒錄進去,在串口的地方打印出來ESP8266的IP地址。
在這裏插入圖片描述

  • 此時將打印出的IP地址放在瀏覽器中打開,此時,一個簡單的網頁就搭建出來,下一章將演示用搭建出來的網頁去控制ESP8266開發板上的LED燈的亮滅,一起來學習呀。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章