一.前言
在前面的帖子给大家展示了添加一张无线网卡并成功驱动,这时有一个问题出现了:众所周知,wifi配网是需要手动写入wifi密码的,如果像上次一样直接用命令行的方式写入wifi名称和密码,显然不太合适,因为假如是作为一个产品往外售卖的话,还要用户接串口输入wifi的密码吗.
熟悉我的朋友可能知道,我在n年前发过一篇文章:放大招啦,卸载你的配网app,wifiiot弹出式配网了解一下,这篇帖子介绍了常见的配网方式以及弹出式配网的操作,那么对于我们手上的星光2,我们还有什么办法呢,那当然就是蓝牙配网咯
二.蓝牙BLE配网的原理
对于一个产品而言,具备蓝牙配网可以提高产品的易用性,这对于用户也是非常重要的,常见的蓝牙配网简单流程如下:
当然,强调这是最简单的流程,对于某些产品需要加强安全方面的要求可以在其中某些流程中假如自己的逻辑进行安全管控,那么针对以上流程,如何使用我们的星光派进行操作呢?
三.首先制作板级程序,开启蓝牙BLE,并发出服务
玩过蓝牙的都知道,蓝牙有服务端和客户端,服务端又叫外围设备,主要是提供各式各样的服务的,所以第一步,就是把蓝牙打造成一个服务端,这里使用的是bluez库,由于我们采用的是Debian系统,所以我们只需要在系统上安装好bluez就行,经过实验,下载并安装5.66版本就行(安装的过程会缺很多包,慢慢下吧,不行就百度哈哈):
然后是将开发板上的bluez和bluetooth相关的库拷贝到我们的编译环境内,然后编写我们自己的蓝牙程序:
为了方便,制作了一个简单的Makefile:
然后就是编写main文件和wifi文件了,此处多言,直接上图,main文件代码较多,此处截几张就行,主要内容就是启动ble,添加广播,等待连接,接受输入,返回notify结果等:
此处就不展示过多了
四.使用HarmonyOS制作HAP应用
其实蓝牙配网使用安卓,ios或者微信小程序等方式都可以,但是为了国产化的酷炫噱头,研究了好久,终于把鸿蒙版的ble配网应用做成功了,使用的是我自己的手机荣耀30,系统是HarmonyOS3.0,API8,不得不多,鸿蒙手机还有挺长的路要有,玩个ble到处是坑啊,比如连回调函数的原型都能有错了,针对此问题也只能在网上到处找了:
好在是经过两天的奋战终于是完整实现了.
五.联合测试
以下是进行联调的一些截图,给本篇帖子做一个小节吧:
六.总结
因为时间比较仓促,手机的界面做得非常丑陋,有些逻辑也没有进行很好的边界处理,但是总算是把逻辑跑同了,下一篇准备玩一玩界面了,毕竟,我连转接板都准备好了,嘿嘿!