最近參與規劃的乙個專案,需要大量的zigbee(約5000個)進行資料採集。由於是大面積布點,採用的是mesh網路架構,所以很多節點都是所謂的路由節點,這就引發乙個問題,路由節點一般情況下需要持續供電,由於現場條件只能採用電池供電,這和電池使用1到2年的要求產生了很大的衝突,所以需要zigbee支援一種同步休眠的技術。
最初的方案考慮zigbee晶元+stm8l晶元,通過在單片中程式設計,用程式邏輯實現同步休眠,思路相對簡單,就是主節點廣播乙個休眠指令,微控制器收到後,控制zigbee進入休眠狀態,同時自己也進入休眠中,經過預設的一段時間後,由時鐘喚醒晶元,然後晶元再喚醒zigbee,進行相關資料傳送。由於stm8l是低功耗晶元,其採集感測器資料比zigbee模組直接採集感測器資料功耗會低很多,並且只是傳送資料的時候才開啟zigbee,整體功耗會更低,但是電路的複雜性和成本會增加不少。
赫立訊公司的乙個繼承者在赫立訊zigbee晶元技術的架構上實現了一種所謂的同步休眠的技術,在zigbee模組中實現了上述的休眠邏輯,由於是在zigbee模組中直接實現,執行效率會更一些,外圍電路也會更簡單,不過其實現的可靠性和穩定性,還有外部開發和配置的能力需要進一步考驗。
在研究周立功zigbee晶元的時候,發現周立功的zigbee晶元支援一種snap的技術,其最大的特色就是支援使用者二次開發,這也是我第一次發現支援使用者二次開發的zigbee模組。該技術在zigbee模組中實現了乙個python虛擬機器,使用者通過編寫python指令碼程式進行二次開發(這算是第二次研究python相關語言了,第一次是多年前實現led大屏顯示特效的時候用過python指令碼,請參見相關博文《ironpython指令碼應用之led影像系統》)。
snap是synapse公司開發的無線mesh網路協議,提供指令碼開發工具和相關韌體,其使用是需要授權費用的(可以免費使用6個,乙個授權大概30元左右)。snap網路簡介如下:
直接從周立功公司購買的zigbee套件,預設部署的是點對點的韌體,通過zigbeecfg工具可以公升級該韌體,或更換為對等網韌體。如果需要部署支援snap的韌體需要用synapse公司公司的portal軟體進行部署(如下圖)。
警告:做這一步需要慎重考慮,因為部署後,周立功公司提供的zigbeecfg的工具上的snap選項也無法訪問該模組,這個時候如果恢復為原先的韌體需要返廠處理。
snap當前最新版本的python指令碼支援72個系統函式,可以操作ad、gpio、串列埠、spi、i2c等相關介面,也可以執行休眠,重啟等相關指令。
下面**是乙個控制led燈閃爍的指令碼示例,內容如下:
"""部署執行後,你會發現rxd/txd和err燈會依次閃爍。cycle the leds on the zic2410 eval board
"""led =0
defstart():
#initialize led pins as outputs
setpindir(0, true) writepin(0, false) setpindir(1, true) writepin(1, false) setpindir(2, true) writepin(2, false) setpindir(3, true) writepin(3, false)
deftimer100msevent(currentms):
"""on the 100ms tick, increment led count and pulse next led
"""global
led led = (led + 1) % 4pulsepin(led, 75, true)
defremotelq():
"""as an added bonus, respond to link quality ranger requests too
"""rpc(rpcsourceaddr(),
'remotelq
')
#here's where we specify any "event handlers" we need.
不過由於該韌體為國外公司所開發,如要求底層進行定製開發,比如支援單匯流排的溫濕度採集,就很難實現了。想到這裡,倒是有乙個建議,國內如用stm32w zigbee晶元做zigbee模組的公司,可以考慮整合乙個簡單的.net mf框架,這樣使用者就可以用c#或vb.net進行zigbee二次開發了,感覺要比python編寫容易,且功能也強大的多。
塗鴉模組二次開發Zigbee 模組燒錄
完成模組 sdk 韌體開發後,您需要對模組進行燒錄授權以實現連線塗鴉雲端的能力。根據不同場景的需求,塗鴉提供了多種燒錄授權的方式。本文從以下兩點為您介紹。上述兩種授權方案主要區別為 第一種適用於發布階段,第二種適用於開發階段。該方案適用於發布階段,由於塗鴉模組必要進行授權才能連線塗鴉平台,所以授權步...
postek二次開發 POSTEK二次開發介面
例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...
mcms二次開發 YzmCMS二次開發手冊
摘要 yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有一.yzmcms是採用mvc設計模式開發,基於模組和操作的方式進行訪問,採用單一入口模式進行專案部署和訪問,無論訪問任何乙個模組或者功能,只有乙個統一的入口...