早就有搭建物联网应用的想法,不过一直盘旋在脑子里,形不成具体的东西,具体执行也得慢慢细化成形。于是我打算先发布个大概思路,供大家闲余饭后瞅瞅,可以给给建议,指点指点。以后我还会慢慢修正更新,期待完成,然后再尝试各种版本~
角色:
1、智能管家:负责管理环境监测中心和开关控制中心,设置环境终端与开关终端之间的点联动功能。包含语音服务、提醒服务、定时服务等其他个性服务;
2、环境监测中心:自行处理智能管家分派的任务,实时上传环境终端发来的测量数据,监管环境终端,把环境数据在本地分类存储,能与开关控制中心联动;
3、开关控制中心:自行处理智能管家分派的任务,监控开关终端的状态,能与环境监测中心联动;
4、流动显示屏:显示时间、实时信息;
5、特殊监测站:监测特定位置点的气压(P)、紫外线(U)、磁场强度(M)、CO2浓度(C)、PM2.5含量(G)、……,并直接与智能管家沟通,把数据在本地分类存储;
6、巡逻机器人:巡逻检查,报告或处理室内环境的异常情况;
7、环境终端:检测单点位置的单一或多种环境参量;
8、开关终端:控制单点位置的单个或多个开关节点,或者参量控制;
配置:
1、智能管家:1个,Gokit2开发板,STM32F103RE,72MHz,3.5寸480*320串口HMI,128*64点OLED屏,语音模块,WiFi模块ESP8266,占用智能管家NRF24L01通道0;
2、环境监测中心:1个,128*64单色LCD屏,STM32F103RC,72MHz,rt-thread,占用智能管家NRF24L01通道1,SD卡更新固件,无线更新固件;
3、开关控制中心:1个,128*64单色LCD屏,STM32F103RC,72MHz,rt-thread,占用智能管家NRF24L01通道2,SD卡更新固件,无线更新固件;
4、流动显示屏:N个,32*16点RGB点阵屏,新唐M0516lan,50MHz,rt-thread,光敏传感器,占用智能管家NRF24L01通道3;
5、特殊监测站:N个,128*64单色LCD屏,STM32L053R8,32MHz,两节18650;或2.8寸320x240触摸屏,STM32F103RC,72MHz,rt-thread,占用智能管家NRF24L01通道4;
6、巡逻机器人:N个,1.44寸TFT液晶屏,STM32F411RG,100MHz,rt-thread,摄像头,占用智能管家NRF24L01通道5;
7、环境终端:N个,STM8L051F3P6,无屏,或STM8L052C6T6,2MHz,4位笔段式LCD,2节AAA干电池,随机占用环境监测中心的通道1;
8、开关终端:N个,STM8S003F3P6,STM32F030F4P6,STM32F030C8T6,32MHz,现场取电,随机占用开关控制中心的通道1;
通信协议:
1、NRF24L01<==>NRF24L01,空中通信速率1Mbit/s,最大2Mbit/s。SPI通信速率几个Mbit/s,面对大数据并发应该没问题;
2、MCU<==>WiFi模组,标准串口通信,9600波特率,960字节/每秒,30个数据包(每包32字节)/每秒,确实有点低;
环境终端>--->环境监测中心:
1、一个数据包固定为28字节长,不允许超过,也不分包发送;
2、协议格式:
3、协议说明:
- 位置ID码:2字节,单点位置的唯一标识码。最多可安置65535个位置;
- 电池电压:2字节,采样计算得出的电压,单位mV;
- 参量个数:1字节,本终端上传几个环境参量,环境监测中心会据此以及类型码解析数据区域。0x03代表本终端上有3个传感器;
- 数据域:n字节,由【1字节类型码+n字节参量数值】、【类型码+参量数值】...组成。不同的环境参量,用不同的类型码区别,参量数值根据类型码由1字节或2字节表示:【1】温度(T)为0x01,单位0.1℃,0x0103代表当前温度为25.9℃。【2】湿度(H)为0x02,单位1%,0x28代表当前湿度为40%。【3】光照度(I)为0x03,单位1LUX,0x05B4代表当前照度为1460流明,等。数据域最大28-7=21字节,若是数据值都用2字节表示,最多容纳7个传感器数据;
- 剩余字节:n字节,用0x00填充;
- 重发次数:1字节,标明这个数据包被环境终端重发了几次,0x02代表这个数据包重发了2次;
- 校验字节:1字节,前面所有字节的累加和。0x1E代表当前数据包的校验字为0x1E,0xAA+0xAA+0x0C+0xCE+0x03+0x01+0x01+0x03+0x02+0x28+0x03+0x05+0xB4+0x02=0x1E;
环境监测中心<--->智能管家:
1、一个数据包固定为32字节长,不允许超过,也不分包发送;
2、协议格式:
3、协议说明:
- 身份ID码:1字节,身份识别的唯一标识。智能管家端显示为十进制代号,如“环境检测中心001”;
- 命令字:1字节,0x01上传环境终端数据包命令,0x02同步时间命令,0x03联动命令;
- 数据域:n字节,根据命令字不同,内容不同。【1】命令字为0x01,数据域即需要上传的数据包。【2】命令字为0x02,数据域即智能管家下发的时间。【3】如命令字为0x03,数据域即智能管家下发的联动命令。数据域最大32-4=28字节;
- 剩余字节:n字节,用0x00填充;
- 重发次数:1字节,标明这个数据包被环境监测中心重发了几次;
- 校验字节:1字节,前面所有字节的累加和;
后续还有,开关终端<---<开关控制中心、开关控制中心<--->智能管家的通信协议说明及其他角色有待添加~
具体参考:http://club.gizwits.com/thread-4521-1-1.html