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

相关文章
相关标签/搜索