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