Hi3861 實現手機APP配網功能

本節主要講如何去實現Hi3861 APP配網功能。須要說明的是,本人實現這個功能主要是用於學習,所涉及知識包括Hi3861的WiFi操做,AP模式、STA模式、按鍵功能、網絡編程、JSON數據格式、手機APP開發。編程

全部源碼,還有手機APP均提供下載,你們自領。json

也能夠直接觀看視頻:https://harmonyos.51cto.com/show/1159服務器

 

先上原理:網絡

目前主流的 WIFI 配置模式有如下 2 種:less

一、智能硬件處於 AP 模式(相似路由器,組成局域網),手機用於 STA 模式ide

手機鏈接處處於 AP 模式的智能硬件後組成局域網,手機發送須要鏈接路由的 SSID 及密碼至智能硬件,智能硬件主動去鏈接指定路由後,完成配網函數

二、一鍵配網(smartConfig)模式post

智能硬件處於混雜模式下,監聽網絡中的全部報文;手機 APP 將 SSID 和密碼編碼到 UDP 報文中,經過廣播包或組播報發送,智能硬件接收到 UDP 報文後解碼,獲得正確的 SSID 和密碼,而後主動鏈接指定 SSID 的路由完成鏈接。學習

 

本文主要講如何實現第一種AP方式。編碼

AP 是 (Wireless) Access Point 的縮寫,即 (無線) 訪問接入點。簡單來說就像是無線路由器同樣,設備打開後進入 AP 模式,在手機的網絡列表裏面,能夠搜索到相似 TPLINK_XXX 的名字(SSID)。

鏈接步驟:

一、Hi3861 上面有一個user按鍵,用戶能夠按下這個按鈕,Hi386會進入 AP 模式
二、手機掃描 WIFI 列表:掃描到Hi3861的SSID(目前是「Hispark-WiFi-IoT」)鏈接該智能硬件設備,經過手機APP發送咱們要鏈接的熱點的ssid和密碼
三、Hi3861經過 UDP 包獲取配置信息,切換網絡模式鏈接 WIFI 後配網完成

 

代碼實現

(1)代碼結構

代碼主要由3個文件組成

c213eb1148c329c7caa385e4e96606e6960912.jpg

ap_mode.c:主要實現AP模式,並實現一個簡單的UDP服務器,獲取手機APP傳輸過來的熱點帳號和密碼。

sta_mode.c:實現鏈接配網的功能。

wifi_config.c:入口函數,實現按下按鍵後開始配網的功能。

 

想了解更多內容,請訪問:

51CTO和華爲官方戰略合做共建的鴻蒙技術社區

https://harmonyos.51cto.com/?bkwz


(2)按鍵功能實現

經過查閱原理圖,咱們能夠看到Hi3861在type-C口附近有一個user按鈕,如圖,主要不要和復位按鈕搞錯了。user按鈕對應的是GPIO5引腳。

82c3d1879709ff069a12351df2e35037b23a7b.jpg

因而咱們能夠使用按鍵中斷編程的方式去實現,代碼以下:

83bd40623251d563e349155476c5d92fe5874f.jpg

其中須要主要的是須要使用 hi_io_set_func(HI_IO_NAME_GPIO_5, HI_IO_FUNC_GPIO_5_GPIO);  修改GPIO5爲普通引腳,不然GPIO5默認會被初始化爲 串口引腳,致使沒法使用。

 

GPIO5中斷回調函數以下:

89a7d4e53435e4199ab068b531d7751f16f684.jpg

其實很簡單,就是置某個變量爲1而已。

 

(3)接下來進入AP模式

代碼以下,一旦發現 start_wifi_config_flg 不爲0,也就是說發生了按鍵被按下的事件,那就會調用 wifi_start_softap 函數進入AP模式

1118bff45458b95fb7e820c42968de2ef28176.jpg

 

(4)AP模式

AP模式的代碼部分也很簡單,首先咱們要先設置好Hi3861 AP模式下的的SSID,而後開放網絡,不加密。對應的函數是 wifi_start_softap

 974a5730673986134d10246362d77f39173c88.jpg

接下來設置好 Hi3861 的網段、IP等,並開啓UDP服務:

d78478247f6767e17154779ba47c9e93707017.jpg

 

(5)UDP服務器

UDP服務器綁定的端口號是 50001,使用soocket通訊接口

 d4a79442332463783fb33569f0b417046cafaa.jpg

 

綁定完端口號後,進入接收數據

93962bb32f3fefcc935641c439a43dd89fba1b.jpg

數據這裏我使用json格式,因爲鴻蒙系統代碼中已經自帶cJSON庫,能夠直接使用,這一部分的代碼也比較簡單,你們能夠看看。

 

(6)開啓STA模式

啓動STA模式的代碼部分也比較簡單,我以前有一篇文章有講,具體代碼以下:

a7019a828e59f9051946379563e806ed7db45b.jpg

關鍵代碼已經作了註釋。

 

(7)鏈接熱點

鏈接熱點時,只須要傳入ssid、加密方式和密碼便可。

須要主要的地方是咱們一般的wifi加密都是 HI_WIFI_SECURITY_WPA2PSK


相關源碼和APK能夠前往原文下載

文章來源:https://harmonyos.51cto.com/posts/1157

做者: 連志安


想了解更多內容,請訪問:

51CTO和華爲官方戰略合做共建的鴻蒙技術社區

https://harmonyos.51cto.com/?bkwz

相關文章
相關標籤/搜索