ESP8266WiFi-begin调用储存在ESP8266的闪存系统中的WiFi设置
生活随笔
收集整理的這篇文章主要介紹了
ESP8266WiFi-begin调用储存在ESP8266的闪存系统中的WiFi设置
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
ESP8266WiFi
有開發(fā)經(jīng)驗(yàn)的同學(xué),一定了解esp8266的WiFi的連接。
一般情況下,我們通過ESP8266WiFi庫-begin()函數(shù),配置wifi名稱和wifi密碼例如下程序片段
缺點(diǎn)
每次將wifif配置在程序中,增加代碼會(huì)使代碼冗余,繁雜。
改進(jìn)
通過使用 begin()函數(shù)無參的方法,可調(diào)用儲(chǔ)存在esp8266的閃存系統(tǒng)中的WiFi設(shè)置。
原理
在啟動(dòng)并連接WiFi時(shí),ESP8266可以嘗試使用閃存系統(tǒng)中儲(chǔ)存的信息來進(jìn)行WiFi連接。
流程圖
相關(guān)語法
語法
- WiFi.persistent();
是否在flash中保存WiFi配置-可選
參數(shù)(true or false)
語法
- WiFi.begin();
在不使用任何參數(shù)的情況下調(diào)用此函數(shù),ESP8266模塊將啟用無線終端模式,并根據(jù)以前保存在閃存中的wifi配置連接到最近一次使用的接入點(diǎn)。
語法
- WiFi.begin(ssid, password, channel, bssid, connect);
我們也可以再調(diào)用begin函數(shù)的時(shí)候,為函數(shù)提供參數(shù)。這些參數(shù)的具體功能請(qǐng)見下面的“參數(shù)”部分介紹。
參數(shù)
參數(shù)
- ssid – 要連接的wifi接入點(diǎn)的名字,最多可以包含32個(gè)字符。(類型:char*)
- password – 要連接的 wifi接入點(diǎn)密碼,長度至少應(yīng)為8個(gè)字符且不超過64個(gè)字符。(類型:char*)
- channel – 要連接的wifi接入點(diǎn)信道。(類型:int32_t)
- bssid – 要連接的wifi接入點(diǎn)的mac地址。(類型:const uint8_t*)
- connect – 連接狀態(tài)參數(shù)。如果connect參數(shù)為true,ESP8266開發(fā)板會(huì)使用閃存中儲(chǔ)存的信息嘗試連接WiFi。如果connect參數(shù)為false,ESP8266開發(fā)板不會(huì)嘗試連接WiFi,而只會(huì)將WiFi連接信息保存在閃存中。(類型:bool)
返回值
返回值
- 返回值數(shù)據(jù)類型為布爾型。如果ESP8266開發(fā)板成功啟動(dòng)無線終端模式,則返回true,否則返回false。
示例程序
首次執(zhí)行
#include <ESP8266WiFi.h> // 使用ESP8266WiFi庫const char* ssid = "xxxxxx"; // 連接WiFi名// 請(qǐng)將您需要連接的WiFi名填入引號(hào)中 const char* password = "xxxxxx"; // 連接WiFi密碼// 請(qǐng)將您需要連接的WiFi密碼填入引號(hào)中void setup() {Serial.begin(9600); // 啟動(dòng)串口通訊WiFi.persistent(true);//首次在flash中保存WiFi配置-可選WiFi.begin(ssid, password); // 啟動(dòng)網(wǎng)絡(luò)連接Serial.print("Connecting to "); // 串口監(jiān)視器輸出網(wǎng)絡(luò)連接信息Serial.print(ssid); Serial.println(" ..."); // 告知用戶esp8266正在嘗試WiFi連接int i = 0; // 這一段程序語句用于檢查WiFi是否連接成功while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函數(shù)的返回值是由esp8266的WiFi連接狀態(tài)所決定的。 delay(1000); // 如果WiFi連接成功則返回值為WL_CONNECTED Serial.print(i++); Serial.print(' '); // 此處通過While循環(huán)讓esp8266每隔一秒鐘檢查一次WiFi.status()函數(shù)返回值} // 同時(shí)esp8266將通過串口監(jiān)視器輸出連接時(shí)長讀秒。// 這個(gè)讀秒是通過變量i每隔一秒自加1來實(shí)現(xiàn)的。Serial.println(""); // WiFi連接成功后Serial.println("Connection established!"); // NodeMCU將通過串口監(jiān)視器輸出"連接成功"信息。Serial.print("IP address: "); // 同時(shí)還將輸出esp8266的IP地址。這一功能是通過調(diào)用Serial.println(WiFi.localIP()); // WiFi.localIP()函數(shù)來實(shí)現(xiàn)的。該函數(shù)的返回值即NodeMCU的IP地址。 }void loop() { }后續(xù)調(diào)用(再次燒錄新代碼)
#include <ESP8266WiFi.h> // 使用ESP8266WiFi庫const char* ssid = "xxxxxx"; // 連接WiFi名// 請(qǐng)將您需要連接的WiFi名填入引號(hào)中 const char* password = "xxxxxx"; // 連接WiFi密碼// 請(qǐng)將您需要連接的WiFi密碼填入引號(hào)中void setup() {Serial.begin(9600); // 啟動(dòng)串口通訊WiFi.begin(); // 啟動(dòng)網(wǎng)絡(luò)連接Serial.print("Connecting to "); // 串口監(jiān)視器輸出網(wǎng)絡(luò)連接信息Serial.print(ssid); Serial.println(" ..."); // 告知用戶esp8266正在嘗試WiFi連接int i = 0; // 這一段程序語句用于檢查WiFi是否連接成功while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函數(shù)的返回值是由esp8266的WiFi連接狀態(tài)所決定的。 delay(1000); // 如果WiFi連接成功則返回值為WL_CONNECTED Serial.print(i++); Serial.print(' '); // 此處通過While循環(huán)讓esp8266每隔一秒鐘檢查一次WiFi.status()函數(shù)返回值} // 同時(shí)esp8266將通過串口監(jiān)視器輸出連接時(shí)長讀秒。// 這個(gè)讀秒是通過變量i每隔一秒自加1來實(shí)現(xiàn)的。Serial.println(""); // WiFi連接成功后Serial.println("Connection established!"); // NodeMCU將通過串口監(jiān)視器輸出"連接成功"信息。Serial.print("IP address: "); // 同時(shí)還將輸出esp8266的IP地址。這一功能是通過調(diào)用Serial.println(WiFi.localIP()); // WiFi.localIP()函數(shù)來實(shí)現(xiàn)的。該函數(shù)的返回值即NodeMCU的IP地址。 }void loop() { }擦除flash中的Wifi配置
#include <ESP8266WiFi.h> // 使用ESP8266WiFi庫const char* ssid = "xxxxxx"; // 連接WiFi名// 請(qǐng)將您需要連接的WiFi名填入引號(hào)中 const char* password = "xxxxxx"; // 連接WiFi密碼// 請(qǐng)將您需要連接的WiFi密碼填入引號(hào)中void setup() {Serial.begin(9600); // 啟動(dòng)串口通訊WiFi.persistent(false);WiFi.begin(); // 啟動(dòng)網(wǎng)絡(luò)連接Serial.print("Connecting to "); // 串口監(jiān)視器輸出網(wǎng)絡(luò)連接信息Serial.print(ssid); Serial.println(" ..."); // 告知用戶esp8266正在嘗試WiFi連接int i = 0; // 這一段程序語句用于檢查WiFi是否連接成功while (WiFi.status() != WL_CONNECTED) { // WiFi.status()函數(shù)的返回值是由esp8266的WiFi連接狀態(tài)所決定的。 delay(1000); // 如果WiFi連接成功則返回值為WL_CONNECTED Serial.print(i++); Serial.print(' '); // 此處通過While循環(huán)讓esp8266每隔一秒鐘檢查一次WiFi.status()函數(shù)返回值} // 同時(shí)esp8266將通過串口監(jiān)視器輸出連接時(shí)長讀秒。// 這個(gè)讀秒是通過變量i每隔一秒自加1來實(shí)現(xiàn)的。Serial.println(""); // WiFi連接成功后Serial.println("Connection established!"); // NodeMCU將通過串口監(jiān)視器輸出"連接成功"信息。Serial.print("IP address: "); // 同時(shí)還將輸出esp8266的IP地址。這一功能是通過調(diào)用Serial.println(WiFi.localIP()); // WiFi.localIP()函數(shù)來實(shí)現(xiàn)的。該函數(shù)的返回值即NodeMCU的IP地址。WiFi.disconnect(true); //擦除flash中的Wifi配置 }void loop() { }借鑒網(wǎng)站:
- 太極創(chuàng)客
- Github Arduino/libraries/ESP8266WiFi/
附ESP8266 Arduino開發(fā)文檔
- ESP8266 Arduino Core’s documentation
- 太極創(chuàng)客物聯(lián)網(wǎng)開發(fā)文檔
總結(jié)
- 物聯(lián)網(wǎng)開發(fā)盡可能閱讀項(xiàng)目原文檔及源代碼
2022/1/4 天氣晴
總結(jié)
以上是生活随笔為你收集整理的ESP8266WiFi-begin调用储存在ESP8266的闪存系统中的WiFi设置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年必刷前端高频面试题
- 下一篇: ubuntu系统下C语言编写简单程序