对于做iot物联网产品来说,联网是必须的。
联网方式可以选wifi(esp8266和esp32),网口,4G等。
如果采用网口,4G方式,设备初始化后,即插即用(网线插路由器或4G插上sim卡就会自动获取和分配ip了);但对于wifi方式就要考虑如何将要配置的wifi ap和wifi password传递给设备,让设备联网。
wifi类物联文章,大多数都是将wifi信息直接在设备中写死,只讲解mqtt控制,很少有涉及到配网这个层面的。所以也萌生了我计划写这类文章的想法。
下边简要提下wifi(esp8266和esp32)配网有哪些,后期会陆续详细介绍各种方式和具体实现(可能也会涉及部分代码)。
1. SmartConfig配网(仅支持2.4G)
-
wifi设备初始化进入smartConfig模式
-
用户通过乐鑫提供的EspTouch工具,发送ssid和密码给设备进行配网。
-
设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
-
用户端,等待配网完成(验证设备是否上线)
2. web方式配网
-
wifi设备初始化进入AP模式,热点ap信息我这设置的是ip:192.168.4.1;ssid:qytech;password:12345678,注ssid和password可以随意。启动http服务器,监听get和post请求;
-
用户连接上边的qytech后,在浏览器端输入192.168.4.1,然后在返回的页面中输入wifi名称,密码点击提交
-
设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
-
用户端,等待配网完成(验证设备是否上线)
3. 一键配网(BLE、传统蓝牙和wifi)
主要思路是:借助BT或者wifi自身将要配置的wifi ap和wifi password传递给设备,设备返回设备ID给用户程序;
这里涉及的工作主要有两点:
一是设备端要编写配网程序,主要启动BT或wifi ap,收发配网数据;
二是用户程序编写,主要自动搜索BT或wifi热点,自动连接,传递wifi信息给设备和接收返回的设备ID;
具体的实现这里不做描述。以下界面是我这边已经实现的配网控制android app,这里简称为配网app,以便下文引用;
3.1.BLE方式
这种方式与传统蓝牙方式,设备端程序和用户端程序都是有差异的。
以esp32c3的芯片为例,该芯片BT+WIFI双模,仅支持BLE方式
- wifi设备初始化,启动BLE,名字:qytBLE,等待支持ble设备连接;
- 用户打开配网app,填写wifi信息,选择BLE,点击添加后,设备进入配网中(自动搜索BT,自动连接,传递wifi信息给设备和接收返回的设备ID)
- 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
- 用户端,等待配网完成(验证设备是否上线)
3.2.传统蓝牙方式
这种方式与BLE方式,设备端程序和用户端程序都是有差异的。
以esp32 wroom为例,该芯片BT+WIFI双模,支持传统蓝牙和BLE方式。这里选择传统蓝牙配网
- wifi设备初始化,启动BT,名字:qytBT,等待支持BT设备连接;
- 用户打开配网app,填写wifi信息,选择传统蓝牙,点击添加后,设备进入配网中(自动搜索BT,自动连接,传递wifi信息给设备和接收返回的设备ID)
- 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
- 用户端,等待配网完成(验证设备是否上线)
3.3.wifi方式
这种方式与web方式类似,指示减少用户交互,增加用户体验,看似一键配网。
以esp8266为例,该芯片仅支持wifi;
- wifi设备初始化进入AP模式,热点ap信息我这设置的是ip:192.168.4.1;ssid:qytech;password:12345678,注ssid和password可以随意。启动http服务器,监听get和post请求;
- 用户打开配网app,填写wifi信息,选择wifi,点击添加后,设备进入配网中(自动搜索wifi热点,自动连接,传递wifi信息给设备和接收返回的设备ID)
- 设备接收到配网数据,立刻回复设备ID,然后连接网络,连接mqtt,发布和订阅主题;
- 用户端,等待配网完成(验证设备是否上线)
3.4. 4G、网口或其他直连设备
用户端只需要输入产品包装上的设备ID,等待配网完成(验证设备是否上线)即可。
3.5. 其他配网方式
增加额外硬件,来传输配网或其他信息,如nfc,蓝牙,声波等通信模块。需要注意的是,这种方式会增加额外的硬件成本。
4. 总结
配网是wifi类物联产品不可或缺的一环,好的配网方式,能有效的提高用户体验,增加用户粘性。