抗击疫情取得阶段性胜利,PCB板也做好了,今天就把这个项目贴出来吧。
# y& q2 m) o1 Q# r4 h* s: J, f8 z- r# u q# y) d
整体概述
+ z" d) E- u% k8 j+ w首先看看整体的,我们做了一个1+3的温湿度采集器,一个主模块(Zigbee的Coordinator)接在电脑上,另外3个独立的板子,采集了温湿度数据上报到主模块。7 J. F5 H3 G8 t S7 C
9 b/ H" X$ g O& G! \2 q
7 Z# s0 O3 n4 f1 D1 b0 j- ?* O2 U8 p& }) F, s( O9 l! N6 w
3 q% y9 L0 @% Q' M# j2 _, Z8 P! c
" A7 l3 a: Z3 P( H- f5 j8 U1 k$ g# L+ n) k- N3 W1 z& _" i2 C
0 }: n6 w1 \) j9 `4 S, I( f* W
单片机板子上有一个拨码开关,其中1,2是有用的,组合可以设置成4种模式:5 o5 \" Q {$ L) N
1-OFF,2-OFF:将DRF1609H设置成Router,等待Modbus指令上报数据
4 `8 e1 I% W8 F' R% ~+ P) u1-ON,2-OFF:将将DRF1609H设置成End Device,等待Modbus指令上报数据
: B `, x. r: E" x/ ~& b' @ z1-ON,2-OFF:将将DRF1609H设置成End Device,主动上报数据9 |& b2 ]$ s. Q. q! L( k- r% v, F& y
1-ON,2-ON:将将DRF1609H设置成End Device,主动上报数据,低功耗模式
0 Z6 V) U- ]1 i- V( G* v9 W7 N2 l
. J4 _3 J( i, O1 I) TModbus上报数据:
, u; r1 e1 e+ o& D5 |5 K- z( F单片机板子上已经内置了Modbus协议,2条指令,分别是写地址、读数据。
. U4 U5 q5 v- X8 z
2 H0 [+ a* B3 q6 }1,写地址指令:
% y) L& Z' G2 C* y' rFE:从机地址(0xFE为万能地址,对所有的板子有效)
3 C8 \+ K5 u7 m0 l06:写指令码
5 h( B2 s& s; L- p& N" p00 01:写数据的地址(本项目中,只有写从机地址这一个功能,只有0x0001有效)
0 y* c5 {7 W4 o+ ^00 01:写入的从机地址2 p2 C" k# u) s
0D C5:CRC-16校验码
' V- E5 g6 ~! u0 ] ~( R) X( X' M$ P9 R
下面是从机1-10的写地址指令,可以直接取用。4 r6 u) m- _% {( p/ X6 Z, i
- FE 06 00 01 00 01 0D C5
9 C2 W% `, g9 ^& O! E% y' P) B - FE 06 00 01 00 02 4D C4
7 K4 x0 n# ~4 o. p! ~0 g# P2 @ - FE 06 00 01 00 03 8C 04
, }/ r" o/ V' r. c. m- R - FE 06 00 01 00 04 CD C6
2 O: F( M( b' v4 f( `, S% A - FE 06 00 01 00 05 0C 068 v$ K5 x( N! S6 ]4 n- u" ?
- FE 06 00 01 00 06 4C 07
0 A( n g% T" H ]8 t- O9 r - FE 06 00 01 00 07 8D C7
3 E# f. K0 @' k. t! Z0 C' V - FE 06 00 01 00 08 CD C31 J' y' R w: o0 H3 X
- FE 06 00 01 00 09 0C 03, d7 V& T f( P ^* v: @
- FE 06 00 01 00 0A 4C 02
复制代码 5 L* |) I9 u( L+ V# p9 X
写地址是通过主模块(串口调试助手),无线对单片机板子修改:
& j) ~' e0 s; ]9 b" R8 T- d- Y: `
% ^' n* w: N& w2 U: @/ \- F5 x% H; v% l9 I4 S1 ]2 V* d
2,读数据指令:
2 n3 `' R! s4 s读数据可以使用标准的Modbus软件,如ModbusPoll,设置如下所示:
) w4 N$ r) v: n7 F
6 T3 G& x) n e+ W' s0 o! v5 Z9 o& Q
3 k" f- A1 Y) ]9 R: i* G
0 h* S$ G2 c* L, Z
( V& d3 x4 K! p3 a3 p2 @0 o o3个板子一起读数据的截图:
& h% n E$ x6 e. Q, I; \' T
0 Q G2 Z$ ^" J F
3 X3 s# D) @; S" |$ ]& U! g1 N& V
+ c9 l; c# J* _- g7 ^低功耗上报数据:
5 E6 d- T+ @4 r I) T% b# V在模式拨码开关设置成:1-ON,2-ON,单片机首先给DRF1609H模块设置成End Device,然后启动低功耗模式,低功耗模式下,10秒上报一次数据,2个5号电池,可以使用一年。
, E" k! q4 [* g$ g) R
7 c# {- D3 e+ w$ I0 {, T$ l. L
( s- X& p- E6 I6 i% A% C
) O2 Z$ j, z* t, e$ ]! |7 I3 m
# V2 K$ a* V0 W- [# {3 I- c2 l% z: d. I! P+ U4 j
测试Zigbee模块:
- C! B- E# g; {这个项目的通讯采用的是Zigbee模块,主要考虑以下几点:, h2 L U$ ~) \. y8 V& A; e
1,Zigbee不依赖于外部网络或设备,如WIFI或GPRS,不需要额外增加东西,同时安装也比较简单,至少不需要TCP/IP等网络知识;* Z- H1 F. s. I2 B+ M& {0 @( ?- ^0 S* @) @
2,相对于433M的模块,Zigbee通讯要快很多,如果采集的点比较多,这个优势就很明显了,昨天看一个资料,说LoRa,如果要容纳500点上报数据,则要求每个点至少间隔1小时上报一次,每次最多10个字节,而在我们这个项目中,如果是500个点,每个点的上报间隔只要100秒(即每个点预留200MS的时隙即可),每次10个字节。, K* n }) y/ u7 r9 j
3,Zigbee的自动路由,在工业现场,有些采集点可能放在锅炉底下、铁柜子里面,等等,由于Zigbee的自动路由,可以在旁边再放一个Router模块,这样,数据就可以自动路由出来,这也是Zigbee的优势之一。1 M+ A& L# ?: u# Z) J' }
1 L9 V! d& r3 A u! g6 t厂家配套的软件,可以读取Zigbee的网络拓扑,还是很方便的:
4 F& u( q' {5 h7 y
1 \$ h# X: J- k6 E2 l. j0 y9 F0 j: N3 H" c
- J0 g" |& l4 P# ^4 s: o! i( m5 `- l* ?: l1 L4 f: e
& G5 H% Z" n2 @1 T5 o& @* b9 @
3 C) h+ H* E L$ J! g' O
; _2 c! s. g4 C9 ^# C: t4 e" ~ |