閱讀原文可以訪問我的個人博客
把NodeMCU連接到路由器網絡上
? NodeMCU可以被配置為Station模式和softAP模式或者Station + AP模式,當它被配置為Station模式時,就可以去連接Access Point(如路由器)。當它被配置為Soft Access Point模式時,其他的Station(如手機、電腦)就可以連接到它,并與它進行通信。當它被配置為Station + AP模式時,即可作為Station也可以作為Access Point。
?
圖3-1 模塊被配置為Station模式
?
圖3-2 模塊被配置為SoftAP模式
如下程序配置NodeMCU將其連接到路由器上:
1 /*-------------------------------------------------- 2 written by helio, 2019 3 ConnectToWifi.ino - 串口打印NodeMCU連接到路由器WiFi 4 名稱和密碼,并打印自身ip地址 5 --------------------------------------------------*/ 6 #include "ESP8266WiFi.h" 7 8 void setup() 9 { 10 Serial.begin(115200); 11 Serial.println(); 12 13 WiFi.begin("CEET305", "office305"); // 設置連接到的WiFi名稱和密碼 14 Serial.print("Connecting..."); 15 16 while (WiFi.status() != WL_CONNECTED) 17 { 18 delay(500); 19 Serial.print("."); 20 } 21 22 Serial.println(); 23 Serial.print("Connected Succeful to "); 24 Serial.println(WiFi.SSID()); // 打印連接到的WiFi名稱 25 Serial.print("The Password of this WiFi is:"); 26 Serial.println(WiFi.psk()); // 打印連接到的WiFi的密碼 27 Serial.print("IP-address is:"); 28 Serial.println(WiFi.localIP()); // 打印NodeMCU的IP地址 29 } 30 31 void loop() 32 { 33 34 }
ConnectToWifi.ino解析
通過函數 WiFi.begin()?設置即將連接的WiFi名稱和密碼并連接到給定的WiFi。隨后根據函數 WiFi.status() 的返回值判斷是否連接得到WiFi上,如果此函數的返回值WL_CONNECTED?則說明已經連接到給定WiFi上,否則沒有連接上,通過一個循環來等待NodeMCU連接到WiFi上。當連接成功后在串口中通過函數WiFi.SSID()打印連接到的WiFi的名稱,通過函數WiFi.psk()打印連接上的WiFi的密碼,同時通過函數WiFi.localIP()打印此時NodeMCU的IP地址。
程序燒錄到NodeMCU中后,打開串口監視器,可以看見NodeMCU成功連接到了設置的網絡中。
?
?
圖3-3 NodeMCU成功連接到路由器網絡
?
其他設備連接到NodeMCU上
將NodeCMCU設置為SoftAP模式時,其他設備就可以在網絡中發現它,并且可以連接到它上面。通過如下程序即可將NodeMCU設置為SoftAP模式:
?
1 /*------------------------------------------------- 2 written by helio, 2019 3 SoftAp.ino - 將NodeMCU設置為soft-AP模式(熱點模式) 4 其他設備可以連接到該熱點 5 -------------------------------------------------*/ 6 #include <ESP8266WiFi.h> 7 8 void setup() 9 { 10 Serial.begin(115200); 11 Serial.println(); 12 Serial.println("Setting soft_AP..."); 13 if (WiFI.softAP(“NodeMCU”, “Helioi1122”)) 14 Serial.println("Ready"); 15 else 16 Serial.println("Failed!"); 17 } 18 19 void loop() 20 { 21 Serial.printf("Stations connected = %d\n", WiFi.softAPgetStationNum()); 22 delay(3000); 23 }
SoftAP.ino解析
?通過函數WiFi.softAP()設置將要設置的熱點名稱和密碼,如果將函數的第二個參數值設置為 NULL?時,則其他設備不需要設置密碼即可連接該熱點,同時,根據函數的返回值判斷是否創建成功,同時在串口中打印反饋信息。設置成功后在,可以通過函數WiFI.softAPgetStarion() 獲知連接到其上的設備數。
打開電腦或者手機的WiFi管理界面即可發現它設置的網絡。
?
?
圖3-4 可以在電腦的WiFi管理中心中發現之前設置的網絡
?
打開串口監視器,可以在看到連接到NodeMCU上的設備數量。
?
圖3-5 串口監視器中可以查看NodeMCU設置的WiFi狀態