
抗击疫情取得阶段性胜利,PCB板也做好了,今天就把这个项目贴出来吧。 整体概述! _! @; j8 D" w" v 首先看看整体的,我们做了一个1+3的温湿度采集器,一个主模块(Zigbee的Coordinator)接在电脑上,另外3个独立的板子,采集了温湿度数据上报到主模块。 ! ~' H. E0 B& o% b ![]() ( [) D& d: H8 z) B( r( H ![]() - w. [& q) X* a4 U$ q) @) t9 @ ![]() ; w/ h$ @9 ^; O2 ]0 y 单片机板子上有一个拨码开关,其中1,2是有用的,组合可以设置成4种模式: 1-OFF,2-OFF:将DRF1609H设置成Router,等待Modbus指令上报数据 1-ON,2-OFF:将将DRF1609H设置成End Device,等待Modbus指令上报数据 1-ON,2-OFF:将将DRF1609H设置成End Device,主动上报数据/ i/ f7 t" a3 I. Y9 j, }" \) g& Z 1-ON,2-ON:将将DRF1609H设置成End Device,主动上报数据,低功耗模式( H/ w, p) L4 S' G 8 M' _# B0 \* G0 [- U, D2 i Modbus上报数据:) j+ r- K M& d' s+ x" | 单片机板子上已经内置了Modbus协议,2条指令,分别是写地址、读数据。 1,写地址指令: FE:从机地址(0xFE为万能地址,对所有的板子有效)3 Y3 c3 ~ b# ]7 U1 s 06:写指令码 00 01:写数据的地址(本项目中,只有写从机地址这一个功能,只有0x0001有效)! x/ j- B$ h$ q7 B: o/ f 00 01:写入的从机地址' S6 h5 \* E& Q/ s9 @: b N& L" j 0D C5:CRC-16校验码0 F$ s) T; m5 p$ ^ 下面是从机1-10的写地址指令,可以直接取用。
写地址是通过主模块(串口调试助手),无线对单片机板子修改:8 l: t; W Q; ?2 V3 W& N ![]() + c5 d3 T: H4 q" y) w5 o 2,读数据指令:! W* k5 o6 {3 }, O 读数据可以使用标准的Modbus软件,如ModbusPoll,设置如下所示: ![]() ![]() 3个板子一起读数据的截图: ![]() 4 ^- E" _& }5 x 低功耗上报数据:$ K4 I& y4 \4 ~% t+ N' w3 w 在模式拨码开关设置成:1-ON,2-ON,单片机首先给DRF1609H模块设置成End Device,然后启动低功耗模式,低功耗模式下,10秒上报一次数据,2个5号电池,可以使用一年。' Y! Q. n3 j6 u1 `, o( M# p7 g ![]() ![]() 测试Zigbee模块:2 ?8 E1 r. U2 i& v ?* Q# H 这个项目的通讯采用的是Zigbee模块,主要考虑以下几点:5 V) g) M) }7 n" s! J 1,Zigbee不依赖于外部网络或设备,如WIFI或GPRS,不需要额外增加东西,同时安装也比较简单,至少不需要TCP/IP等网络知识; 2,相对于433M的模块,Zigbee通讯要快很多,如果采集的点比较多,这个优势就很明显了,昨天看一个资料,说LoRa,如果要容纳500点上报数据,则要求每个点至少间隔1小时上报一次,每次最多10个字节,而在我们这个项目中,如果是500个点,每个点的上报间隔只要100秒(即每个点预留200MS的时隙即可),每次10个字节。' w( Q, y$ q/ ^7 y7 i: Y- N 3,Zigbee的自动路由,在工业现场,有些采集点可能放在锅炉底下、铁柜子里面,等等,由于Zigbee的自动路由,可以在旁边再放一个Router模块,这样,数据就可以自动路由出来,这也是Zigbee的优势之一。; D, M9 u* K+ ?; o5 X8 q8 G- G 厂家配套的软件,可以读取Zigbee的网络拓扑,还是很方便的: ![]() ![]() ( w9 p6 d# y8 Y1 r. x( ^) i 2 u! j" e+ d( [5 y: E0 W) r( q! f9 q4 L 9 H ?& g8 ]! M6 e/ K6 Q/ g |