STMCU小助手
发布时间:2021-11-13 23:00
|
抗击疫情取得阶段性胜利,PCB板也做好了,今天就把这个项目贴出来吧。$ G; H. [8 w6 _7 y% N g0 A 1 Q6 k6 p5 `9 [5 N 整体概述7 H0 H/ q- t x( R. F, w9 q7 m 首先看看整体的,我们做了一个1+3的温湿度采集器,一个主模块(Zigbee的Coordinator)接在电脑上,另外3个独立的板子,采集了温湿度数据上报到主模块。4 C0 j$ b6 r9 l3 w" E* _ 1 Y; U5 i! d0 e. b
# V/ P7 y+ u% V$ p9 y6 Q) B/ P/ }+ o+ n
- g/ T" `+ i7 ~" V; ~ 单片机板子上有一个拨码开关,其中1,2是有用的,组合可以设置成4种模式: 1-OFF,2-OFF:将DRF1609H设置成Router,等待Modbus指令上报数据) n! w9 H6 b( w+ _# e, T& _ 1-ON,2-OFF:将将DRF1609H设置成End Device,等待Modbus指令上报数据 ]7 ~/ e& \6 s 1-ON,2-OFF:将将DRF1609H设置成End Device,主动上报数据; H& X+ \% ? F5 w! n" q/ v! H' b% g7 I 1-ON,2-ON:将将DRF1609H设置成End Device,主动上报数据,低功耗模式 9 Z$ T- e" i* W Modbus上报数据: 单片机板子上已经内置了Modbus协议,2条指令,分别是写地址、读数据。 ! Z2 ~8 M) M' e; F% D 1,写地址指令:# r: ? }2 d! O% O+ Y i FE:从机地址(0xFE为万能地址,对所有的板子有效) 06:写指令码7 |0 P9 n. O9 p; u% u# k 00 01:写数据的地址(本项目中,只有写从机地址这一个功能,只有0x0001有效)7 I( E' w* w+ N8 f 00 01:写入的从机地址+ w5 Q8 q7 w& |! Y f+ a$ ~ 0D C5:CRC-16校验码 下面是从机1-10的写地址指令,可以直接取用。
写地址是通过主模块(串口调试助手),无线对单片机板子修改:6 w6 C `3 ^( J8 B0 E$ v
* g5 ~2 |, l; p; V% L; t 2,读数据指令:! S8 ?7 T$ {* S 读数据可以使用标准的Modbus软件,如ModbusPoll,设置如下所示:& p6 @% g, x6 e# i( J7 x: t
! ?6 y+ ~& M, o3 {/ O! ?( _! C+ `5 G 3个板子一起读数据的截图:
低功耗上报数据:- Y D" A& b, U 在模式拨码开关设置成:1-ON,2-ON,单片机首先给DRF1609H模块设置成End Device,然后启动低功耗模式,低功耗模式下,10秒上报一次数据,2个5号电池,可以使用一年。0 }8 `' _4 B8 J$ i6 ?8 ~ q; x
/ F3 m& \' t( M* S
测试Zigbee模块: D; c: E4 ^2 i5 e 这个项目的通讯采用的是Zigbee模块,主要考虑以下几点:0 A% L' k- {* u0 M 1,Zigbee不依赖于外部网络或设备,如WIFI或GPRS,不需要额外增加东西,同时安装也比较简单,至少不需要TCP/IP等网络知识; 2,相对于433M的模块,Zigbee通讯要快很多,如果采集的点比较多,这个优势就很明显了,昨天看一个资料,说LoRa,如果要容纳500点上报数据,则要求每个点至少间隔1小时上报一次,每次最多10个字节,而在我们这个项目中,如果是500个点,每个点的上报间隔只要100秒(即每个点预留200MS的时隙即可),每次10个字节。 3,Zigbee的自动路由,在工业现场,有些采集点可能放在锅炉底下、铁柜子里面,等等,由于Zigbee的自动路由,可以在旁边再放一个Router模块,这样,数据就可以自动路由出来,这也是Zigbee的优势之一。 7 c; ^6 J. F% m: e 厂家配套的软件,可以读取Zigbee的网络拓扑,还是很方便的:) ~6 @# z) ]1 I7 Z) X( q
|
微信公众号
手机版