本作品为第二届立创商城电子制作节30强入围作品,作者立创社区ID:求生之路;转载请注明出处,未经允许不得用作商业用途。作品原链接:http://club.szlcsc.com/article/details_6695_1.html。
一、作品简介
现在的物联网设备品种太多,如果要把各类的协议标准起来也不可能,例如MODBUS也只是标准了协议,并没标准协议内的有效数据。这样就会使各个厂家有各自的软件。如果自家用了5家的设备,那么最终你想控制这些设备要来回切换,不麻烦吗?同时也防止厂家间接“强奸”用户,例如:为了使用更加方便,买同一个牌子的设备,实际上有些我并不是很喜欢,只是能凑合罢了。
用这个网关就是集成各种厂家的数据,最终给用户的只是一个界面,这样用户体验更加清爽,舒适。同时还可以把古老的设备,没有接入互联网功能的设备让它联网!成为一个互联网设备。让数据集中管理,用户单一管理,效率更高更实用。
二、系统构架图
网关与服务器通信架构图:
网关与节点的通信架构图:
三、硬件部分的描述
网关PCB源文件下载:http://club.szlcsc.com/article/downFile_F36711403017984F.html
网关原理图:
(更多图片详见原帖)
网关PCB图片如下:
(更多图片详见原帖)
网关PCB实物图,手工焊接了2张,WIFI是预留了接口,ESP-08。
(更多高清图片详见原帖)
采用了很多钽电容,目前全部焊接,如果作为实际的产品而言,可以通过测压力,去掉一些钽电容,毕竟成本太高了。
选取的网关外壳,铝合金的,不过商家不给开孔,我得想办法了。
无线采集控制功能验证板
PC远程控制软件
四、材料清单
MCU:STM32F205;
存储:W25Q64 & TF;
无线通信:RA-01/02 & NRF24L01P & ESP8266(预留接口);
有线通信:RS232/485;
RTC:PCF8563T;
传感器:BH1750FVI,SHT211,DS18B20,MQ-135/MQ-2;
DCDC:MP2451;
LDO:ME6210。
所有元器件都是常用的,除了模块,其他的立创都有。(硬件详细介绍详见原帖)
五、软件部分的描述
网关功能介绍:
1. 远程升级
原理:通过以太网/RS232/R485/LORA 按照指定格式把升级Bin文件发送给网关,目前实现的是通过以太网网络发送,每次发送256byte字节。因为软件是等Bin文件接收完了之后,再跳转到Bootloader进行升级,所以在此是存储在SPI FLASH上的。该SPI FLASH 单次写入最大数据是256byte,所以这样规定的。其次是因为数据采用json协议,如果数据量过大,会导致解析json开销过大。
提示:发送bin文件,因为是16进制,所以我用了base64进行转码。
2. 数据缓存
软件内部会有一个RAM的缓存池,根据芯片的RAM来决定,目前我用的这款我采用了最大50KB来作为缓存池,以便于网络不稳定,数据不会丢失。如果数据存满了,网络依旧尚未畅通,则会按照指定格式存储在SPI FLASH 指定的区域,以便于网络通畅后把历史数据上传到服务器。
3. 无线通信
载无线通信模块:RA-01(LORA) + NRF24L01P+ESP8266,目前ESP8266预留接口,功能调试主要是针对于RA-01+NRF24L01P。由于硬件原因,LORA的单包最大数据为128Byte,NRF24L01P最大数据为32Byte,这对于传输json数据太痛苦,但是传输modbus这种协议很难解读。所以我采用的类似json的“序列化”+“反序列化”的方式进行编写,这样后期可无限制的添加协议,不会影响之前设备的协议。同时在LORA和NRF24L01P上做了简单的拆组包协议,以便于发送更长的数据包。目前支持最高512Byte。
4. 兼容协议
无论是通过RS232/485、LORA、NRF24L01、ETH,所有的数据协议会分为两种,第一种JSON,第二种自定义协议。然后把数据放入指定的TASK解析,例如要开个灯,从RS232发送,从ETH发送,从LROA发送都是一样的效果,而且执行的程序也是一样的,只是指令进出的管道不一样而已。这样方便于管理通信协议,不会造成混乱。
5. 电量检测
1秒一次检测DCDC输入电压值,并记录发送到服务器,方便于核实供电情况。
无线采集控制功能验证板介绍:
这只是为了验证功能,所以采用了N合一的设计,实际应用应该不会用到这么多。
多合一内容:SHT21 + DS18B20 + BH1750FVI + MQ-XXX + 2路继电器 + 1个UART扩展。
无线通信:LORA/NRF24L01P,二选一。演示采用LORA,这个相对复杂点,NRF24L01P相对简单一点,暂时不做演示。
模块采用MOS管控制电源,不用则关闭,以降低功耗,主控采用STM8L151K4,最终最低功耗做到了2.5ua睡眠电流,RTC唤醒,视频有介绍哈。
六、作品演示
七、总结
由于时间关系,只做了PC端演示程序,但是协议都是零活的,后续会完善B端展示。无论是http,ws,socket,有效数据里面的数据协议均是一样,
这样就让整套系统更加容易管理。
服务器用的linux + php + workerman + mosquito + mysql + nginx搭建。支持长连接,高并发!针对于嵌入式物联网设备。服务器目前完成了:用户登陆+数据解析+数据存储+远程升级 + 远程控制等,后续继续完善B端,这样就方便于手机操控,同时绑定在微信里面就更易用了。
提醒下:买物料一定要仔细!!!我这就买错了一个物料,继电器我设计的是5V供电,买成了12V,后面写程序的时候才发现,然后在一个开发板上卸了两个下来。上面的图片继电器是12V,那是焊接好拍摄的。视频里面是5V,那是后面写程序的时候修改过了。
CA-IS3740HW/数字隔离器 | 2.85 | |
CA-IS3742HW/数字隔离器 | 3.12 | |
CS48505S/RS-485/RS-422芯片 | 0.500355 | |
CA-IS3721HS/数字隔离器 | 0.8974 | |
CA-IS3720HS/数字隔离器 | 0.9234 | |
XL1509-5.0E1/DC-DC电源芯片 | 0.7999 | |
BSMD1812-200-30V/自恢复保险丝 | 0.38069 | |
FS55X106K101EGG/贴片电容(MLCC) | 1.28 | |
CA45-A016K106T/钽电容 | 0.224 | |
LKS665B/仿真器/烧录器 | 429.55 |
50万+现货SKU
品类不断扩充中
科技智能大仓储
最快4小时发货
正品有保障
物料可追溯
明码标价节省时间
一站式采购元器件