实现原理
通过串口连接ESP8266设备,使用RT-Thread 网络组件AT命令控制
判断周围Wifi SSID,提取特征进行自组网
应用背景
理论上可平替Zigbee模块,达到与之相同的功能,但有其无法实现的远距离通讯
家庭环境下物联网设备组网、联网
整体系统框架
1.初始化篇章
![](https://oss-club.rt-thread.org/uploads/20220731/b2a2f300174ea35141f113dbf1321831.jpg.webp)
2.配网/自组网篇章
![](https://oss-club.rt-thread.org/uploads/20220731/bb003440a122af9cd132dbf4cfa24620.jpg.webp)
3.结构图
说明: 当Group相同,由于模块限制最多可挂载4个设备,age不同的会单独成为一个父节点。若有超过4各设备挂在在同一个父节点上,则子节点会自动变更age。每个节点可单独连接外网,且只要一个节点连接外网,各个节点均可连接外网。
![](//file.elecfans.com/web2/M00/58/EE/poYBAGLngOSAMYb7AABBODBzywk369.jpg)
4.网络拓补图
![](https://oss-club.rt-thread.org/uploads/20220731/23b1927c9ab556affd8fd85786143745.jpg.webp)
使用说明
克隆项目到本地,ESP8266 TX-P410 RX-411 (默认使用Uart0)
上电默认进行初始化,待提示: 当前个体: 等待御坂网络连接指引 时,可在Wifi列表中找到 misaka 开头的WiFi名称,密码为后4位数重复两遍,该数字为节点Name
连接上述Wifi启动网络调试工具,UDP客户端,发送 SET+-1+后四位数字+-1=<此处为组别>+<此处为age> 到 255.255.255.255 后,返回 OK,完成配网
此时提示 当前个体: 已经 <此处为age> 岁啦,将加入 <此处为组别> 组,同时可在Wifi列表中找到 network 开头的可组网网络
当前问题
未完全开发完…
创建SSID时,SSID名称过长,后期考虑使用采用16位二进制作为载体(使用时转为16进制)
ESP8266只能连接WPS,后期考虑自组网时,根据Wifi信号强弱判断是否为需要组网的设备 (避免组网到别人的网络中去)
是否可以使用AT-Socket简化开发,以及使用SAL
项目APP
![](https://oss-club.rt-thread.org/uploads/20220731/2f06e791df83c4368d50bba360e3d2c8.jpg.webp)
写在后面
是本人个人原因,理解错了,收到板子的时候一直在用E2 Studio开发,那个时候天真的以为E2 Studio中所附带的RTOS中的Azure RTOS ThreadX (最早用的是FreeRTOS)就是RT-Thread,结果断断续续开发了将近一个月,把AT命令快要搞定了之后 (遗留部分BUG,例如处理部分超过长度的内容时,例如获取周围Wifi,容易出现爆内存情况,但是对于项目来说,又不得不将所有Wifi SSID都获取到。后续解决后开源),已经快要结束了(剩下5天),结果才发现,他俩压根不是一个东西好伐,又重新下载RT-Thread Studio开整Uart。好在RT-Thread自带AT命令,救我狗命磕磕绊绊实现了一个配网功能。关于,AT命令,后期考虑出一个思路整理笔记,细数踩过的坑。
原作者:zhouxuan77
|