Hi3861 实现手机APP配网功能
头像 Tiechui.Wang 2020-10-05 10:00:00    发布
2917 浏览 16 点赞 20 收藏

先上原理:

目前主流的 WIFI 配置模式有以下 2 种:

1、智能硬件处于 AP 模式(类似路由器,组成局域网),手机用于 STA 模式

手机连接到处于 AP 模式的智能硬件后组成局域网,手机发送需要连接路由的 SSID 及密码至智能硬件,智能硬件主动去连接指定路由后,完成配网

2、一键配网(smartConfig)模式

智能硬件处于混杂模式下,监听网络中的所有报文;手机 APP 将 SSID 和密码编码到 UDP 报文中,通过广播包或组播报发送,智能硬件接收到 UDP 报文后解码,得到正确的 SSID 和密码,然后主动连接指定 SSID 的路由完成连接。

本文主要讲如何实现第一种AP方式。

AP 是 (Wireless) Access Point 的缩写,即 (无线) 访问接入点。简单来讲就像是无线路由器一样,设备打开后进入 AP 模式,在手机的网络列表里面,可以搜索到类似 TPLINK_XXX 的名字(SSID)。

连接步骤:

1、Hi3861 上面有一个user按键,用户可以按下这个按钮,Hi386会进入 AP 模式
2、手机扫描 WIFI 列表:扫描到Hi3861的SSID(目前是“Hispark-WiFi-IoT”)连接该智能硬件设备,通过手机APP发送我们要连接的热点的ssid和密码
3、Hi3861通过 UDP 包获取配置信息,切换网络模式连接 WIFI 后配网完成

代码实现

(1)代码结构

代码主要由3个文件组成

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

ap_mode.c:主要实现AP模式,并实现一个简单的UDP服务器,获取手机APP传输过来的热点账号和密码。

sta_mode.c:实现连接配网的功能。

wifi_config.c:入口函数,实现按下按键后开始配网的功能。

(2)按键功能实现

通过查阅原理图,我们可以看到Hi3861在type-C口附近有一个user按钮,如图,主要不要和复位按钮搞错了。user按钮对应的是GPIO5引脚。

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

于是我们可以使用按键中断编程的方式去实现,代码如下:

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

其中需要主要的是需要使用 hi_io_set_func(HI_IO_NAME_GPIO_5, HI_IO_FUNC_GPIO_5_GPIO);  修改GPIO5为普通引脚,否则GPIO5默认会被初始化为 串口引脚,导致无法使用。

GPIO5中断回调函数如下:

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

其实很简单,就是置某个变量为1而已。

(3)接下来进入AP模式

代码如下,一旦发现 start_wifi_config_flg 不为0,也就是说发生了按键被按下的事件,那就会调用 wifi_start_softap 函数进入AP模式

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

(4)AP模式

AP模式的代码部分也很简单,首先我们要先设置好Hi3861 AP模式下的的SSID,然后开放网络,不加密。对应的函数是 wifi_start_softap

 Hi3861 实现手机APP配网功能-鸿蒙开发者社区

接下来设置好 Hi3861 的网段、IP等,并开启UDP服务:

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

(5)UDP服务器

UDP服务器绑定的端口号是 50001,使用soocket通信接口

 Hi3861 实现手机APP配网功能-鸿蒙开发者社区

绑定完端口号后,进入接收数据

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

数据这里我使用json格式,由于鸿蒙系统代码中已经自带cJSON库,可以直接使用,这一部分的代码也比较简单,大家可以看看。

(6)开启STA模式

启动STA模式的代码部分也比较简单,我之前有一篇文章有讲,具体代码如下:

Hi3861 实现手机APP配网功能-鸿蒙开发者社区

关键代码已经做了注释。

(7)连接热点

连接热点时,只需要传入ssid、加密方式和密码即可。

需要主要的地方是我们通常的wifi加密都是 HI_WIFI_SECURITY_WPA2PSK

©本站发布的所有内容,包括但不限于文字、图片、音频、视频、图表、标志、标识、广告、商标、商号、域名、软件、程序等,除特别标明外,均来源于网络或用户投稿,版权归原作者或原出处所有。我们致力于保护原作者版权,若涉及版权问题,请及时联系我们进行处理。
分类
其它

暂无评论数据

发布

地址:北京市朝阳区北三环东路三元桥曙光西里甲1号第三置业A座1508室 商务内容合作QQ:2291221 电话:13391790444或(010)62178877
版权所有:电脑商情信息服务集团 北京赢邦策略咨询有限责任公司
声明:本媒体部分图片、文章来源于网络,版权归原作者所有,我司致力于保护作者版权,如有侵权,请与我司联系删除
京ICP备:2022009079号-2
京公网安备:11010502051901号
ICP证:京B2-20230255