
抗击疫情取得阶段性胜利,PCB板也做好了,今天就把这个项目贴出来吧。 . c' [+ z% v3 _5 w* r: m 整体概述, ^% |7 E l9 p! A 首先看看整体的,我们做了一个1+3的温湿度采集器,一个主模块(Zigbee的Coordinator)接在电脑上,另外3个独立的板子,采集了温湿度数据上报到主模块。 / v) n; X1 k8 T$ G% N0 L, Q9 w ![]() ![]() ![]() , }2 {( k- e0 B d$ j& d+ c& A 单片机板子上有一个拨码开关,其中1,2是有用的,组合可以设置成4种模式:" R& H: X4 u3 J' @ 1-OFF,2-OFF:将DRF1609H设置成Router,等待Modbus指令上报数据 1-ON,2-OFF:将将DRF1609H设置成End Device,等待Modbus指令上报数据 1-ON,2-OFF:将将DRF1609H设置成End Device,主动上报数据# A& c! d! L+ L* U+ Q( ` 1-ON,2-ON:将将DRF1609H设置成End Device,主动上报数据,低功耗模式 Modbus上报数据: 单片机板子上已经内置了Modbus协议,2条指令,分别是写地址、读数据。+ e- [2 v" s6 i5 J % D" Z: N# w' G- k 1,写地址指令:, R3 Y! v( R' L! y q& x FE:从机地址(0xFE为万能地址,对所有的板子有效) 06:写指令码 00 01:写数据的地址(本项目中,只有写从机地址这一个功能,只有0x0001有效): g, s: H2 E+ @) M9 g9 p 00 01:写入的从机地址1 Y; S( |% H: I3 } @2 x 0D C5:CRC-16校验码* M9 L" m8 q g" l1 B! U8 P/ @2 E 下面是从机1-10的写地址指令,可以直接取用。
写地址是通过主模块(串口调试助手),无线对单片机板子修改: ![]() ! X) J; |+ l4 x' F 2,读数据指令: 读数据可以使用标准的Modbus软件,如ModbusPoll,设置如下所示:) b% J- g* |# U0 C: [/ Q* w ![]() ![]() 3个板子一起读数据的截图:; {6 v4 T. A; @3 K$ l9 d2 k ' m8 f1 k5 @5 @% t; q @! A ![]() 低功耗上报数据: 在模式拨码开关设置成:1-ON,2-ON,单片机首先给DRF1609H模块设置成End Device,然后启动低功耗模式,低功耗模式下,10秒上报一次数据,2个5号电池,可以使用一年。 # ?5 w9 h$ b4 O3 S( K& J ![]() ![]() ) i& S# ? q5 }6 A& [9 z! J 测试Zigbee模块:# i v, ]* N6 d 这个项目的通讯采用的是Zigbee模块,主要考虑以下几点: 1,Zigbee不依赖于外部网络或设备,如WIFI或GPRS,不需要额外增加东西,同时安装也比较简单,至少不需要TCP/IP等网络知识;$ I2 l" N$ o; |2 U: T 2,相对于433M的模块,Zigbee通讯要快很多,如果采集的点比较多,这个优势就很明显了,昨天看一个资料,说LoRa,如果要容纳500点上报数据,则要求每个点至少间隔1小时上报一次,每次最多10个字节,而在我们这个项目中,如果是500个点,每个点的上报间隔只要100秒(即每个点预留200MS的时隙即可),每次10个字节。" v4 i! Y8 a+ P+ r. | 3,Zigbee的自动路由,在工业现场,有些采集点可能放在锅炉底下、铁柜子里面,等等,由于Zigbee的自动路由,可以在旁边再放一个Router模块,这样,数据就可以自动路由出来,这也是Zigbee的优势之一。 3 v* z6 B8 F* C V 厂家配套的软件,可以读取Zigbee的网络拓扑,还是很方便的:9 Z; C) r! C1 c. m/ N3 S5 W* T % K0 ~# D1 U$ O0 |% K% k2 } ![]() m9 ~0 ]3 Z0 i" W7 ^ b1 g ![]() & i& z( m- `. g+ \% l ; f; O! Z* x+ i3 L8 A! d# B) M- z |