首先,因项目需要WIFI联网,然后选定了ESP8266模块
在使用ESP8266的过程中,发现使用默认的SmartConfig配网有两个问题
1,设备是否连接成功,未给出提示
2,手机微信端局域网未发现设备,无法进行设备绑定
因此,我进行基于安信可提供的SDK进行二次开发
开发工具为安信可提供的IDE
安装好之后,首先打开给的官方SDK,我下载的版本为1.5.4
其中呢提供了几个例子
首先根据AT指令例程进行参考移植,编译通过后下载到ESP8266中,测试AT指令无误,接着加入airkiss静态库
这个静态库在什么地方呢?在微信硬件里
因为目前AirKiss3.0仅支持Android及Linux系统,因此选择了AirKiss2.0。里面有详细的开发说明和示例代码
在那里可以下载到支持的芯片及AIRKISS静态库
然后将下载的静态库加入到之前的AT例程里
然后手机微信扫码
手机上按照提示进行填写密码,然后等待配网完成,完成后会提示已连接,并显示出相应的设备,并可以进行绑定。(ps:由于我是用的测试号,无法显示设备MAC和图标,正式号可以正常使用。)至此,微信AIRKISS配网和局域网发现已实现。
对于上面所提到的
这个是微信公众号里分配的设备TYPE和设备ID
微信公众号里配置也比较繁琐,首先需要开通正式号或者测试号,然后获取正式号或者测试号的access_token
然后进正式号或者测试号创建产品
获取到产品编号(58116)和access_token后,就可以获取设备TYPE和设备ID了。(并且型号二维码就是上文提到的配网二维码),
获取到device_id后还需要一步,那就是和ESP8266模块绑定,官方建议是用ESP8266的MCA来进行区分。(当然了,如果只有一个设备,或者不需要区分哪个具体设备,这里可以随意填写12位数据即可。)
获取到 "device_id", "device_type"写入到上面SDK工程中,重新编译下载,测试AT指令也木有问题,大公告成。
下面呢,提一下这个SDK程序
首先呢是在AT例程里加入airkiss静态库,达到微信配网的目的,进入airkiss配网模式我采用增加一条AT指令和引脚按键触发两种方式来完成,
进入配网模式则用LED指示灯快闪指示。为了更好的兼容esp8266产品,因为esp01引出可用的引脚只有IO2,并且IO2还是LED的控制引脚,
使用长按IO2(也就是拉低IO2引脚3s以上)来进入配网模式。
然后增加AT指令则为,进入配网无动作60s后退出配网
启动配网 AT+STARTAIRKISS
停止配网 AT+STOPAIRKISS
总结一下,代码逻辑或许没有太多,如果只是单纯的AIRKISS配网的话,直接使用SDK工程加已有的二维码即可
如果需要局域网发现,就是涉及的东西比较多,尤其是微信公众平台的设置。
相关文件下载 https://download.csdn.net/download/qq_22848695/13104739(ps:基本实现功能的工程,大家可以自行修改)
后续:
后面因需要量产又进一步优化了一下,而不必每次创建设备都需要重新编译下载(使用统一固件,只需要按各自DEVICE配置的重新设置一下即可)
具体实现方法
1.初始化完成后要把MAC输出显示,方便更新绑定DEVICE_ID。
2.把DEVICE_TYPE和DEVICE_ID分别用保存到SPI flash
然后通过AT指令进行更新
AT+DEVICE_TYPE=gh_1a43e75a8d76
AT+DEVICE_ID=gh_1a43e75a8d76_07517a6c94ec9c4d