使用ESP8266-NodeMCU搭建網絡服務器

1. 爲ESP8266搭建Arduino IDE開發環境

方法一:通過開發板管理器安裝ESP8266 SDK,具體方法【點擊此處】
(此方法在雖然在網站上廣爲流傳,本人親測並不好用,容易受到網絡波動的影響)
在這裏插入圖片描述
方法二:針對方法一,下載ESP9266 SDK時容易受到網絡波動的影響,還有一種方法是刪除部分文件來解決,具體方法【點擊此處】
(此方法本人親測,還是不好用)

方法三:上述兩種方法可以作爲了解,真正實用的方法還是:下載插件,並運行該文件即可完成Arduino IDE配置。
(下方給出了插件的下載鏈接,文件大小約爲60MB)

鏈接:https://pan.baidu.com/s/18wVRN_9JbNi8CEf3XiAmiw
提取碼:sdom
在這裏插入圖片描述

2. 開啓NodeMCU的無線終端模式

下面將介紹如何讓NodeMCU通過WiFi連接無線路由器並訪問互聯網

(該算法能自動連接最強信號WiFi網絡)

#include <ESP8266WiFi.h>          // 本程序使用ESP8266WiFi庫
#include <ESP8266WiFiMulti.h>   // 本程序使用ESP8266WiFiMulti庫
 
ESP8266WiFiMulti wifiMulti;     // 建立ESP8266WiFiMulti對象,對象名稱是'wifiMulti'
 
void setup() {
  Serial.begin(9600);            // 啓動串口通訊
 
//通過addAp函數存儲  WiFi名稱       WiFi密碼
  wifiMulti.addAP("Ehang-maker1", "88888888");  // 這三條語句通過調用函數addAP來記錄3個不同的WiFi網絡信息。
  wifiMulti.addAP("Ehang-maker2", "88888888"); // 這3個WiFi網絡名稱分別是hang-maker1, Ehang-maker2, Ehang-maker3。
  wifiMulti.addAP("Ehang-maker3", "88888888"); // 這3個網絡的密碼分別是88888888,88888888,88888888。
                                                // 此處WiFi信息只是示例,請在使用時將需要連接的WiFi信息填入相應位置。
                                                // 另外這裏只存儲了3個WiFi信息,您可以存儲更多的WiFi信息在此處。
                                                
  Serial.println("Connecting ...");         // 通過串口監視器輸出信息告知用戶NodeMCU正在嘗試連接WiFi
  int i = 0;                                 
  while (wifiMulti.run() != WL_CONNECTED) {  // 此處的wifiMulti.run()是重點。通過wifiMulti.run(),NodeMCU將會在當前
    delay(1000);                             // 環境中搜索addAP函數所存儲的WiFi。如果搜到多個存儲的WiFi那麼NodeMCU
    Serial.print('.');                       // 將會連接信號最強的那一個WiFi信號。
  }                                           // 一旦連接WiFI成功,wifiMulti.run()將會返回“WL_CONNECTED”。這也是
                                              // 此處while循環判斷是否跳出循環的條件。
                                              
  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地址
}
 
void loop() 
{ 
  
}

爲了驗證NodeMCU的確已經聯網,我們可以在Windows操作系統的“命令提示符”中輸入對應的IP地址。
(IP地址可以從從串口監視器獲取)
在這裏插入圖片描述
從以上截屏可以看到,NodeMCU成功的對我們的ping指令做出應答。到這裏就可以確定當前NodeMCU已經成功連接WiFi了。

3.建立基本網絡服務器

下面介紹一種算法,可以讓ESP8266-NodeMCU實現最基本的網頁服務功能。

#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("Ehang-maker1", "88888888");  // 這三條語句通過調用函數addAP來記錄3個不同的WiFi網絡信息。
  wifiMulti.addAP("Ehang-maker2", "88888888"); // 這3個WiFi網絡名稱分別是Ehang-maker1, Ehang-maker2, Ehang-maker3。
  wifiMulti.addAP("Ehang-maker3", "88888888"); // 這3個網絡的密碼分別是88888888,88888888,88888888。
                                                // 此處WiFi信息只是示例,請在使用時將需要連接的WiFi信息填入相應位置。
                                                // 另外這裏只存儲了3個WiFi信息,您可以存儲更多的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地址
  
//--------"啓動網絡服務功能"程序部分開始-------- 
  esp8266_server.begin();                   
  esp8266_server.on("/", handleRoot);       
  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", "Hello from ESP8266");   // NodeMCU將調用此函數。
}
 
// 設置處理404情況的函數'handleNotFound'
void handleNotFound(){                                        // 當瀏覽器請求的網絡資源無法在服務器找到時,
  esp8266_server.send(404, "text/plain", "404: Not found");   // NodeMCU將調用此函數。
}

- 此時NodeMCU已建立了一個超級迷你的小網,。這個網站只有一個網頁。這個網頁只有一行文字“Hello from ESP8266”(如下圖所示)。

在這裏插入圖片描述
下一期將爲大家講解如何建立可以控制NodeMCU開發板的網頁,敬請期待!

詳情請關注億航創客官方抖音賬號:EhangGroup

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章