廣西民族大學(xué) 龍凱思 黃開連 韋世勇
?
基于ZIGBEE和STM32的農(nóng)村水柜無線監(jiān)控系統(tǒng)設(shè)計(jì)
廣西民族大學(xué) 龍凱思 黃開連 韋世勇
【摘要】水柜是解決農(nóng)村用水問題的一大保證,為了解決更多農(nóng)村的用水問題,提高用水的便捷性,保證家家戶戶都能解決用水難的苦惱,研究水柜的監(jiān)控系統(tǒng)是非常有意義的。本文主要通過研究以ZIGBEE為無線傳輸核心、STM32為控制核心以及WINFORM為上位機(jī)監(jiān)控中心的水柜無線監(jiān)控系統(tǒng),通過ZIGBEE節(jié)點(diǎn)采集水位信息,無線傳輸至ZIGBEE協(xié)調(diào)器,協(xié)調(diào)器通過串口傳送至STM32,STM32處理信息后顯示以及傳輸至上位機(jī)。用戶可以實(shí)時(shí)監(jiān)控各個(gè)水柜節(jié)點(diǎn)的水位、溫度信息,也可以通過上位機(jī)或者STM32控制節(jié)點(diǎn)抽水機(jī)進(jìn)行抽水,可以方便快捷地管理每一個(gè)節(jié)點(diǎn)的水柜。
【關(guān)鍵詞】ZIGBEE;STM32;水柜監(jiān)控
近年來,隨著科技的發(fā)展,電子技術(shù)行業(yè)的日益發(fā)達(dá),如何將科技帶入農(nóng)村地區(qū)的供水問題值得我們思考。為了解決農(nóng)村用水問題的困難,方便村民取水、用水以及節(jié)約水資源,利用電子信息及無線通信技術(shù)管理以及監(jiān)控水柜,通過科技的力量取代原先的人工操作,減輕人工取水等繁重的工作,提高工作效率,改善生活質(zhì)量,從而達(dá)到節(jié)約資源和減輕工作負(fù)擔(dān)的雙贏。
本文主要研究以ZIGBEE為無線傳輸核心的多節(jié)點(diǎn)水柜無線監(jiān)控系統(tǒng),STM32和上位機(jī)組成的人機(jī)交互系統(tǒng)。期間解決ZIGBEE無線數(shù)據(jù)的發(fā)送與接收問題,ZIGBEE與STM32的串口傳輸問題,STM32與上位機(jī)的串口傳輸問題。實(shí)現(xiàn)上位機(jī)、STM32遠(yuǎn)程控制水柜節(jié)點(diǎn)。
整個(gè)系統(tǒng)包括水柜節(jié)點(diǎn)、主控模塊以及上位機(jī)監(jiān)控中心三個(gè)部分。
水柜節(jié)點(diǎn)主要包括ZIGBEE節(jié)點(diǎn)、壓力傳感器、溫度傳感器以及電源和抽水機(jī)。每個(gè)節(jié)點(diǎn)周期性地采集數(shù)據(jù)并且發(fā)送所采集到的數(shù)據(jù)至協(xié)調(diào)器,實(shí)現(xiàn)水位的實(shí)時(shí)監(jiān)控,并且能夠在最短的時(shí)間內(nèi)響應(yīng)協(xié)調(diào)器發(fā)送的指令,實(shí)現(xiàn)抽水機(jī)的運(yùn)行與停止。
主控模塊部分由ZIGBEE協(xié)調(diào)器和STM32構(gòu)成。協(xié)調(diào)器主要工作是創(chuàng)建一個(gè)ZIGBEE網(wǎng)絡(luò),允許節(jié)點(diǎn)入網(wǎng),接收各個(gè)節(jié)點(diǎn)發(fā)送來的信息以及發(fā)送指令控制節(jié)點(diǎn)。STM32單片機(jī)主要由按鍵和顯示屏構(gòu)成,單片機(jī)通過串口接收到協(xié)調(diào)器發(fā)送來的節(jié)點(diǎn)信息,經(jīng)過數(shù)據(jù)處理后顯示在液晶屏上,并且通過串口發(fā)送給上位機(jī)。用戶可以通過STM32上的按鍵控制每一個(gè)節(jié)點(diǎn)抽水機(jī)的工作。
上位機(jī)監(jiān)控中心主要通過電腦的串口接收到單片機(jī)發(fā)送來的節(jié)點(diǎn)數(shù)據(jù),經(jīng)過數(shù)據(jù)分析與處理后,動(dòng)態(tài)顯示水位高度在軟件界面上。用戶可以很直觀的觀測(cè)各個(gè)節(jié)點(diǎn)的水位信息、溫度信息,并且在電腦上控制每個(gè)節(jié)點(diǎn)抽水機(jī)的工作,還可以設(shè)置相應(yīng)的預(yù)警水位。
系統(tǒng)硬件設(shè)計(jì)包括LCD12864液晶顯示屏模塊、STM32主控模塊和ZIGBEE無線傳輸模塊三個(gè)部分。
2.1 LCD12864液晶顯示屏
在系統(tǒng)STM32主控的顯示方面,我們采用了LCD12864液晶顯示屏。它是一款利用點(diǎn)陣圖形顯示的液晶模塊,該模塊具有128*64的顯示分辨率,可以顯示32個(gè)16*16點(diǎn)陣大小的字體。使用簡(jiǎn)單,成本較低。
2.2 STM32主控單片機(jī)
系統(tǒng)采用采用F103系列的RCT6作為微型處理芯片。它采用ARM32位的Cortex-M3CPU,最高工作頻率可達(dá)72MHz,具有20K字節(jié)的SRAM。由此可見STM32的功能非常強(qiáng)大,足夠滿足設(shè)計(jì)的要求。
2.3 Zigbee無線傳輸模塊
系統(tǒng)的ZIGBEE模塊采用的是CC2530芯片,CC2530使用的是8051CPU,它是一個(gè)單周期的兼容性內(nèi)核。其具有128KB字節(jié)的系統(tǒng)內(nèi)可編程內(nèi)存、極其高的接受靈敏度和抗干擾能力,具備IEEE802.15.4兼容無線收發(fā)器,芯片內(nèi)置RF內(nèi)核控制無線模塊,此外它還提供一組連接外部設(shè)備的端口,從而可以發(fā)出命令和讀取狀態(tài),控制各執(zhí)行電路的事件執(zhí)行順序。
系統(tǒng)軟件設(shè)計(jì)包括上位機(jī)軟件設(shè)計(jì)、STM32單片機(jī)軟件設(shè)計(jì)和ZIGBEE無線模塊軟件設(shè)計(jì)三個(gè)部分。
3.1 上位機(jī)軟件設(shè)計(jì)
上位機(jī)設(shè)計(jì)使用了.NET開發(fā)平臺(tái)下的WINFORM,操作簡(jiǎn)單,界面功能豐富,可以形象生動(dòng)地顯示出水柜蓄水量。因?yàn)橛腥齻€(gè)水柜節(jié)點(diǎn),所以首先根據(jù)串口接收到的數(shù)據(jù)進(jìn)行分析,接收到的一串?dāng)?shù)據(jù)幀中,以字符“$”作為幀頭,緊接著是地址符,“A”、“B”、“C”依次代表一到三號(hào)水柜。確定了此數(shù)據(jù)幀是哪個(gè)水柜的信息后,緊接著把數(shù)據(jù)信息接收處理,最后接收到了結(jié)束符“#”后,說明數(shù)據(jù)幀接收完畢。數(shù)據(jù)接收完成后進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換,將每個(gè)節(jié)點(diǎn)信息顯示到軟件界面。用戶也可以根據(jù)需要設(shè)定水位的上限值和下限值,低過下限值或者高過上限值都會(huì)發(fā)出警報(bào)。用戶還可以手動(dòng)控制節(jié)點(diǎn)抽水機(jī)的工作,增加蓄水量。
3.2 ZIGBEE軟件設(shè)計(jì)
協(xié)調(diào)器作為ZIGBEE網(wǎng)絡(luò)的創(chuàng)建者,首先需要配置好信道號(hào)和PANID號(hào),節(jié)點(diǎn)ZIGBEE只有設(shè)置與協(xié)調(diào)器相同的信道和PANID號(hào)才可以加入到ZIGBEE網(wǎng)絡(luò)中。為了防止協(xié)調(diào)器掉電后重新上電節(jié)點(diǎn)不能加入的問題,筆者在宏定義中加入了NV_RESTORE=1的預(yù)編譯選項(xiàng)。除此之外,協(xié)調(diào)器還需要根據(jù)簇ID判斷是哪個(gè)節(jié)點(diǎn)發(fā)送上來的數(shù)據(jù),通過串口發(fā)送給STM32,也通過串口接收STM32的指令后發(fā)送數(shù)據(jù)包給相應(yīng)的節(jié)點(diǎn)控制抽水機(jī)工作。節(jié)點(diǎn)主要是采集傳感器的數(shù)據(jù),封裝成幀后通過發(fā)送數(shù)據(jù)包的方式把信息發(fā)送給協(xié)調(diào)器,或者在接收到協(xié)調(diào)器的指令后通過控制繼電器通斷打開抽水機(jī)。路由器的作用是將數(shù)據(jù)路由轉(zhuǎn)發(fā),即當(dāng)終端節(jié)點(diǎn)聯(lián)系不上協(xié)調(diào)器或者與協(xié)調(diào)器連接信號(hào)較弱時(shí),會(huì)優(yōu)先把數(shù)據(jù)轉(zhuǎn)發(fā)給附近的路由器,再
由路由器轉(zhuǎn)發(fā)給協(xié)調(diào)器。
3.3 STM32軟件設(shè)計(jì)
STM32的串口收發(fā)是根據(jù)一定的幀格式完成的,幀格式例如:$**,dddd,dddd,…,(CR)(LF),$作為幀頭,**代表的是某號(hào)水柜,dddd為數(shù)據(jù)域,最后接收到回車換行(CR)(LF)后代表幀結(jié)束。為了保證數(shù)據(jù)幀傳輸?shù)姆€(wěn)定,解決數(shù)據(jù)丟失的問題,在每接收完一個(gè)數(shù)據(jù)幀,都會(huì)對(duì)數(shù)據(jù)域進(jìn)行字符統(tǒng)計(jì),看有沒有缺少或者多出,若與設(shè)置的數(shù)值不等則丟棄此幀,重新接收。最后將接收到的數(shù)據(jù)顯示在液晶屏上。
本系統(tǒng)以ZIGBEE作為無線網(wǎng)絡(luò)傳輸模塊,充分利用了ZIGBEE多節(jié)點(diǎn)、自組網(wǎng)、低功耗的特點(diǎn),對(duì)多個(gè)水柜水位、溫度進(jìn)行實(shí)時(shí)監(jiān)控。合理放置路由器可實(shí)現(xiàn)更遠(yuǎn)距離監(jiān)控,加上STM32和上位機(jī)等人機(jī)交互界面,具有功能豐富、操作簡(jiǎn)單、數(shù)據(jù)傳輸安全穩(wěn)定、功耗低等優(yōu)點(diǎn)。本系統(tǒng)還可以運(yùn)用于其它多節(jié)點(diǎn)遠(yuǎn)程監(jiān)控的場(chǎng)合里。
參考文獻(xiàn)
[1]廖義奎.Cortex-M3之STM32嵌入式系統(tǒng)設(shè)計(jì)[M].北京﹕中國(guó)電力出版社,2012.
[2]周立功等.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京﹕北京航空航天大學(xué)出版社,2005.1.
[3]王小強(qiáng).ZigBee無線傳感器網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)[M].北京﹕化學(xué)工業(yè)出版社,2012.6.
[4]林小茶.C語言程序設(shè)計(jì)(第三版)[M].北京﹕中國(guó)鐵道出版社,2010,12.
[5]劉軍,張洋,嚴(yán)漢宇.原子教你玩STM32(寄存器版)[M].北京﹕北京航空航天大學(xué)出版社,2012.
作者簡(jiǎn)介:
龍凱思(1994-),男,壯族,廣西寧明人,大學(xué)本科,現(xiàn)就讀于廣西民族大學(xué)。