首先,為什么要將ZigBee的感測(cè)內(nèi)容通過WiFi界面來傳輸?
第一,ZigBee協(xié)議是出了名的節(jié)能,睡眠和自喚醒模式省下了不少能耗,這也是IOT協(xié)議的發(fā)展很注重的一點(diǎn)。
第二,WiFi組網(wǎng)復(fù)雜,ZigBee自組網(wǎng)和分配地址有較大可容性。
第三,web端的顯示控制,解決了跨平臺(tái)的問題,不必為ZigBee的協(xié)調(diào)器組建類如樹莓派或者其他多余的控制終端,節(jié)省成本。因此可以低成本分別組建分離控制網(wǎng)絡(luò)和感測(cè)網(wǎng)絡(luò),減少代碼bug,易于管理和維護(hù)。
缺點(diǎn)就是協(xié)議棧非常復(fù)雜,OSAL(Operating System Abstraction Layer 操作系統(tǒng)抽象層),個(gè)人認(rèn)為是ZigBee是IOT通信介面的過渡協(xié)議,會(huì)有更加低成本和簡(jiǎn)單的IOT通信協(xié)議出現(xiàn)。
直接按上面優(yōu)點(diǎn)分三部分
1.系統(tǒng)睡眠喚醒--定時(shí)器喚醒
2.多終端控制協(xié)調(diào)器--組播
3.WEB端-Apache+MySQL+PHP
CC2530+ESP8266 07

左上角為cc2530的ZigBee主板,左下角是ESP8266-07,來自于實(shí)驗(yàn)室,07有個(gè)優(yōu)點(diǎn)就是可以外接天線,擴(kuò)大感測(cè)發(fā)送的距離,減少丟包。請(qǐng)自動(dòng)忽略電源部分,為了圖好看點(diǎn),換了個(gè)插線板的電源放了上去,關(guān)鍵是能用!電源部分后面會(huì)有太陽(yáng)能板供電的實(shí)現(xiàn)。
成套價(jià)格約為60RMB,包含DC電源,可謂“實(shí)在便宜”。
CC2530 —→ ESP8266
P0_2,P0_4 —→ TX
P0_5,P0_6 —→ RX
以上是接線的方法,即串口輸出,此接法的好處是同時(shí)可在ESP上連接串口通信模塊,檢測(cè)ESP接收和發(fā)送的數(shù)據(jù),以及CC2530發(fā)送給ESP的數(shù)據(jù)。ESP8266可通過“AT+”的指令發(fā)送和接收數(shù)據(jù),此處我選擇使用NodeMCU的界面,Lua語(yǔ)言開發(fā),可簡(jiǎn)化程式,并減少字符串判斷中易出現(xiàn)的串口數(shù)據(jù)發(fā)送錯(cuò)誤。
ESP07 外接天線

這就是天線的部分,我沒有用天線是因?yàn)闆]有大型農(nóng)場(chǎng)可以測(cè)試,但實(shí)測(cè)距離,在空曠地帶,板載超過200米,外接天線可以達(dá)到300米左右,可能有其他因素影響信號(hào),有丟包現(xiàn)象。

上面就是ZigBee的網(wǎng)絡(luò)節(jié)點(diǎn)的Zigbee Topologies 拓?fù)浣Y(jié)構(gòu),這里協(xié)調(diào)器就是紅點(diǎn)。
1.系統(tǒng)睡眠喚醒--定時(shí)器喚醒
ZigBee的特點(diǎn)就是遠(yuǎn)距離低功耗的無線傳輸設(shè)備,節(jié)點(diǎn)的模塊可以進(jìn)入睡眠模式,在需要傳輸?shù)臅r(shí)候進(jìn)行喚醒,節(jié)省電量。
我這里選擇的是PM2,即低頻的晶振(32.768K RCOSC/XOSC)工作,數(shù)字核心模塊關(guān)閉,系統(tǒng)可以通過reset或者外部中斷或者睡眠計(jì)數(shù)器移除喚醒。
相關(guān)的寄存器PCON, SLEEPCMD, ST0, ST1, ST2
sleepTimer |= ST0 ;
sleepTimer |= (ulong)ST1 << 8 ;
sleepTimer |= (ulong)ST2 << 16;
sleepTimer += ((ulong)sec * (ulong)32768) :
ST2 = (uchar)(sleepTimer >> 16) ;
ST1 = (uchar)(sleepTimer >> 8) ;
ST0 = (uchar) sleepTimer ;
晶體頻率太高比較耗電,32.768原來主要是用在時(shí)鐘上,比較方便產(chǎn)生1秒的時(shí)鐘。32768=2的15次方,即 (1/32.768kHz)*32768=1s
2.多終控制協(xié)調(diào)器--組播
以上圖來源網(wǎng)絡(luò)。上圖逐一步驟的顯示,關(guān)鍵是要對(duì)每個(gè)內(nèi)建函數(shù)的理解。還有其他的點(diǎn)對(duì)點(diǎn)的點(diǎn)播方式,點(diǎn)的廣播,這些不想講,關(guān)鍵還是看協(xié)議棧。
3.WEB端-Apache+MySQL+PHP
下面是截圖,感測(cè)的數(shù)據(jù)中,有出現(xiàn)錯(cuò)誤。難免。
數(shù)據(jù)傳輸用的是php UDP介面,當(dāng)然這一版本還是直接用HTTP GET的方法,圖表用的是EChart,配置簡(jiǎn)單,圖表功能樣式也很多,易于操作。


未完待續(xù)...會(huì)有數(shù)據(jù)統(tǒng)計(jì)和實(shí)際運(yùn)行效果。




