這一節(jié),說(shuō)一下一鍵配網(wǎng)的用法。首先說(shuō)為什么需要一鍵配網(wǎng)?
原因很簡(jiǎn)單,因?yàn)樵O(shè)備要上網(wǎng)。那,給那些設(shè)備配一個(gè)屏幕和一個(gè)輸入設(shè)備行不行?
不是不可以,對(duì)那些成本沒(méi)要求的設(shè)備是沒(méi)問(wèn)題的。但物聯(lián)網(wǎng)設(shè)備大部分都是一些簡(jiǎn)單的監(jiān)測(cè)、通信設(shè)備,需要的數(shù)量又很多,基本配置好以后放在那里就沒(méi)人動(dòng)了。所以給這樣的設(shè)備添加屏幕和輸入設(shè)備,在資源上是很大的浪費(fèi)。
舉個(gè)例子,我之前買過(guò)一個(gè)小度音箱(低配版,非廣告~),使用時(shí),先用藍(lán)牙去連接這個(gè)設(shè)備,然后把wifi的賬號(hào)、密碼發(fā)給它。再然后,它會(huì)連接當(dāng)前wifi。
從此以后,你再讓它干什么,只要說(shuō)話就行了,根本用不到屏幕或按鍵。
那么,說(shuō)到一鍵配網(wǎng),你的第一反應(yīng)想到什么?
smartconfig還是airkiss?
先說(shuō)smartconfig,具體是哪個(gè)廠家提出的我沒(méi)查到,不過(guò)當(dāng)前支持的廠家還是很多的,如下圖所示:
注意:每家的smartconfig技術(shù)可能會(huì)有些細(xì)微的差別。
以樂(lè)鑫支持的smartconfig技術(shù)為例,首先需要手機(jī)通過(guò)UDP的方式把wifi的賬號(hào)、密碼通過(guò)廣播的方式發(fā)送出去;然后需要ESP8266進(jìn)入混雜模式,掃描當(dāng)前環(huán)境下有哪些AP;第三步,進(jìn)入該AP的channel接收UDP數(shù)據(jù)包,如果有,進(jìn)行解析,如果沒(méi)有,進(jìn)入下一個(gè)channel。
再說(shuō)airkiss,這個(gè)用的也比較多。因?yàn)槭撬球v訊家提出的概念,懶得寫(xiě)了,直接放個(gè)官網(wǎng)截圖:
具體就不說(shuō)了,感興趣的可以自行搜索一下。
這一節(jié)的內(nèi)容已smart-config為主,會(huì)了一個(gè),另一個(gè)就so easy了!
跟MQTT的調(diào)試一樣,打開(kāi)官方的SDK,因?yàn)楣俜揭呀?jīng)幫我們寫(xiě)好了,我們只要會(huì)調(diào)用即可。在SDK的examples文件夾下面,文件夾名字為smart_config,如下圖所示:
打開(kāi)該文件夾下的user目錄下的user_main.c文件,可以看到相關(guān)源碼:
不光有smartconfig,還有airkiss:
所以,做個(gè)簡(jiǎn)單的演示程序,以之前GPIO控制LED的工程為模版,添加smartconfig的代碼,使其在配網(wǎng)成功后,控制LED閃爍。
由于整體功能比較簡(jiǎn)單,這里只看一下主函數(shù)內(nèi)的代碼:
void ICACHE_FLASH_ATTR user_init(void){ partition_item_t partition_item; uart_init(BIT_RATE_115200, BIT_RATE_115200); os_printf("SDK version:%s ", system_get_sdk_version());//打印輸出SDK版本 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12); //設(shè)置相關(guān)引腳為GPIO模式 PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U,FUNC_GPIO13); PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U,FUNC_GPIO15); gpio_output_set(0, BIT15, BIT15, 0); //設(shè)置GPIO15為低電平 smartconfig_set_type(SC_TYPE_ESPTOUCH); //SC_TYPE_ESPTOUCH,SC_TYPE_AIRKISS,SC_TYPE_ESPTOUCH_AIRKISS wifi_set_opmode(STATION_MODE); smartconfig_start(smartconfig_done);}
前面是串口初始化,并打印SDK版本。然后是GPIO初始化,并設(shè)置初始狀態(tài)(根據(jù)你們的LED電路來(lái)設(shè)置初始狀態(tài))。
下面這行比較關(guān)鍵:
smartconfig_set_type(SC_TYPE_ESPTOUCH);
用來(lái)選擇你要配網(wǎng)的方法:ESPTOUCH,還是AIRKISS,還是兩者皆可。
ESPTOUCH是樂(lè)鑫提供的一鍵配網(wǎng)的APP,這里代表的是smartconfig模式,文章結(jié)尾會(huì)提供APP下載鏈接。
后面兩行代碼,一行用來(lái)設(shè)置ESP8266的工作模式,另一行啟動(dòng)配網(wǎng),并設(shè)置相關(guān)的回調(diào)函數(shù)。
控制LED的函數(shù),我放在了配網(wǎng)完成的代碼里。
程序修改完成,保存、清理、編譯、下載一條龍,然后重新上電。這里借助串口助手來(lái)查看效果。設(shè)備上電之后,效果如下所示:
先輸出上面紅框里的信息,此時(shí),打開(kāi)ESPTOUCH 這個(gè)APP,注意,前提是要確保你的手機(jī)連接在當(dāng)前的wifi環(huán)境下。
如圖,SSID是wifi名稱,自動(dòng)顯示出來(lái)。我們要做的就是輸入密碼,然后點(diǎn)擊下面的 Confirm。此時(shí),APP頁(yè)面變成下面的樣子:
同時(shí),ESP8266收到相關(guān)信息后,開(kāi)始解析,并打印工作狀態(tài):
如圖所示,8266獲取到了相關(guān)的SSID和密碼,連接成功,并打印出了自身、網(wǎng)關(guān)、手機(jī)的IP。此時(shí),手機(jī)APP顯示內(nèi)容如下:
連接成功~~~
至此,基于ESP8266的smartconfig方式下一鍵配網(wǎng)聊完了,感興趣的可以下載源碼試一下。
鏈接:
https://pan.baidu.com/s/1O1V8mAI7Nr-TXqSjSg6gAQ
提取碼:gpa6
-
配網(wǎng)
+關(guān)注
關(guān)注
0文章
155瀏覽量
9099 -
物聯(lián)網(wǎng)設(shè)備
+關(guān)注
關(guān)注
1文章
235瀏覽量
19797
原文標(biāo)題:ESP8266_21基于ESP8266的一鍵配網(wǎng)
文章出處:【微信號(hào):gh_dae0718828df,微信公眾號(hào):gh_dae0718828df】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論