漆晶 蔣成星 程慧超 孫童童
摘要:周末經濟的發展,旅游景區的人流量越來越大,有些景區已經超負荷,環境污染問題凸顯,同時也沒有合適的景區環境質量監測平臺。針對這些問題,設計了一種基于Cortex-M3內核的STM32低功耗控制器和無線射頻傳輸網絡的自供能多節點環境監測系統;以傳感器、無線射頻芯片、自供能模塊和STM32控制器組成從機節點,完成環境參數采集和發送;主機端完成參數的接收與處理,并發送給PC端上位機;采用C#語言開發上位機軟件,動態顯示環境參數變化情況;實驗系統測試結果表明本系統達到了預期的目的。
關鍵詞:STM32 環境監測 無線傳輸 自供能
中圖分類號:TP368.2 文獻標識碼:A 文章編號:1007-9416(2016)08-0194-02
隨著社會經濟的快速發展,社會環境質量卻普遍下降,但人們的環保意識越來越強,越來越關心自己所居住地區的環境質量。學校校園及城市小區等地居住人口多,旅游景區人口流量大,以這些地區的環境參數實時監測需求為出發點,本文選擇CO2濃度、PM2.5濃度、溫濕度、光照強度及紫外線強度環境參數,開發了以PC端軟件為上位機[1],傳感器數據采集節點為下位機的環境參數監測傳輸系統,通過利爾達公司最新生產的高性能物聯網無線收發器可方便地實現多節點多參數的實時傳輸。結合景區的擁擠現狀和人給環境帶去的二次污染問題及監測發布平臺,提出研究背景。
1 環境監測系統總方案設計
環境監測系統主要分為3大部分:PC端上位機、主機端和傳感器數據采集節點。環境監測系統的結構。數據采集節點作為下位機,主要功能是環境質量參數的采集和數據的初步處理及發送。主機端完成數據的接收及處理并通過USART接口發送給PC端上位機。PC端上位機完成USART接口數據的接收與處理,動態顯示各個節點各種環境參數的變化情況,同時也完成下配控制命令的發送。3個部分協同工作,實現對環境質量的多節點多參數的監測傳輸任務。當環境質量有關指標超出設定的閾值時,能夠在PC端正確顯示報警信息,包括監測時間、監測節點和報警內容,同時,主機端也會通過蜂鳴器進行報警。相關管理人員只需在監測系統前就能方便地對方圓幾百米區域的環境質量進行集中監測。
2 環境監測系統硬件設計
2.1 主控單元
主機端和下位機端主控單元均選擇STM32F103C8T6,它是一款32位的基于Cortex-M3內核的ARM微控制器,集成了128kB的FLASH和20kB的RAM,工作頻率可達72MHz,含有豐富的USART、SPI及12位ADC等片上資源,完全可以滿足本系統的硬件需求。主控單元電路由復位電路、外部晶振電路、RTC時鐘電路、BOOT電路(選擇啟動方式)和SWD電路(下載程序)組成[2]。
2.2 傳感器模塊
PM2.5傳感器選擇夏普公司生產的GP2Y1010AU0F,測量范圍0-500ug/m3,5V供電,濃度大小以模擬電壓的形式線性輸出,范圍為0.5V-3.7V。由于STM32內置ADC采樣電壓不能超過3.3V,所以在PM2.5傳感器的模擬電壓輸出引腳串聯兩個10K的電阻分壓之后再進行測量。CO2濃度傳感器選擇英國GSS生產的COZIR-A,3.3V供電,串口驅動,量程為0-99999PPM。紫外線強度傳感器選擇UVM-30,線性電壓信號輸出0-1V(對應UV 指數0-10),直接用單片機內置ADC采樣。溫濕度DHT11模塊使用單總線[3]驅動,需接一個4.7k的上拉電阻。光照強度傳感器選擇ROHM公司的BH1750FVI,它是一款數字光照強度傳感IC,測量范圍1-65536LX,I2C總線接口,時鐘線和數據線引腳均需接一個4.7k的上拉電阻。
2.3 無線射頻通信模塊
本系統所用的無線射頻通信模塊是利爾達科技公司最新生產的LSD4RF-2X717N10無線模塊,是一款高性能的物聯網無線收發器,基于Semtech公司的射頻集成芯片SX1208[4]設計而成。SX1208芯片使用SPI通信接口(FSCK最大10MHz),本系統采用STM32硬件SPI驅動,SCK頻率設定為9MHz,DIO0輸出電平上升沿觸發STM32進入中斷,表示無線模塊接收到數據。NSS為片選,NRST為復位引腳(高電平有效),均通過I/O口控制。RF為模塊天線接口,與用戶底板上的天線接口間需要加入π型匹配電路。
2.4 帶自供能的電源模塊
本系統室內、室外節點都使用鋰電池升壓至5V供電,室內節點可用手機電源線進行充電,室外節點利用太陽能板進行充電,實現自供能。充電電路選用TP4056作為電源管理芯片,充電限制電壓4.2V,而充電電流可通過一個電阻進行外部設置。當充電電流在達到最終浮充電壓之后降至設定值1/10時,TP4056 將自動終止充電循環。
3 環境監測系統軟件設計
3.1 主機端軟件設計
主機端程序開始之后先進行系統初始化配置,包括系統定時器時鐘配置,硬件SPI配置,外部中斷配置,串口初始化配置及RF模塊初始化配置等。RF模塊初始化完成之后,切換到接收模式,接收模式會打開外部中斷。最后進入主循環,判斷是否接收到PC端上位機發來的串口指令,如果接收到正確的命令,則會執行命令解析,執行相應的操作。RF模塊在主機端的控制下在接收模式和發送模式之間切換,主機是通過進入外部中斷來讀取RF模塊接收到的數據,這樣可以提高程序的執行效率。在解析命令的過程中,主機往往是先進入發送模式向下位機發送一包命令數據,然后又切換回接收模式,準備接收下位機的返回數據。主機端程序流程圖如圖1所示。
3.2 下位機端軟件設計
下位機端程序執行開始之后,同樣先進行系統初始化配置,包括硬件SPI、串口、內置ADC及RF模塊初始化等等,初始化完成之后切換RF模塊進入接收模式,以便接收主機端發送來的指令。然后配置RTC實時時鐘[5],因為我們需要知道節點環境參數采集的具體時間。然后再判斷此節點是上電復位還是從睡眠模式喚醒而復位,若是喚醒復位,則向主機端發送喚醒提示信息。最后,進入主循環,判斷此節點是否接收到“進入待機模式”命令,若接收到,則進入待機模式,等待主機喚醒,否則循環判斷。STM32使用WFI命令進入停機模式后,程序停止執行,外部中斷喚醒之后,程序從上次停止處繼續執行,不用重新配置系統時鐘。下位機端同樣通過外部中斷讀取RF模塊接收到的數據。下位機端程序流程圖如圖2所示。
3.3 PC端上位機軟件設計
上位機軟件通過串口向主機發送控制命令并獲取主機返回的數據。上位機用C#語言在.NET環境下開發,軟件通過串口連接主機。根據二者之間制定的協議進行數據發送與接收。向下發送控制命令時,在一定時間內應該接收到主機的反饋。如果未收到反饋,則會重新發送。多次發送失敗則提示通信故障。一旦接收的環境參數數據超過設定的閾值,上位機會出現報警提示[6]。使用者可以通過上位機軟件實時有效地監測各傳感器節點的狀況。
4 系統測試
系統軟硬件設計完成之后,對整個系統進行測試,將主機通過USB轉串口線連至筆記本電腦,打開上位機軟件,控制主機與各個節點進行通信,確定其是否達到設計最初的目的和功能。以節點2為例,測試結果如圖3所示。
上位機界面中,軟件上邊可以選擇節點,左邊是各種控制命令的發送按鈕及參數配置,右邊以柱狀圖動態顯示參數值相對大小,下方有具體的數值(參數單位前文有敘述)以及采集時間。節點2無CO2傳感器,所以其值為0。其它節點顯示界面一樣,均能正確監測傳輸環境參數。
5 結語
本系統設計完成后,功能全面,界面友好,控制簡單,傳輸距離較遠,功耗較低,無線射頻通信芯片以及傳感器選擇恰當,能很好地滿足系統需求。鋰電池充電電路設計合理,所需元器件少,成本低,充電穩定。但是,本系統還有待繼續優化改進。一方面射頻芯片天線匹配設計需要改善來提高數據傳輸距離,另一方面鋰電池升壓板需要選擇功耗較低的設計方案。本系統設計成產品時,應選擇功耗更低的單片機來作為系統主控,從而整體降低系統功耗。
參考文獻
[1]張衛星,張桂香,譚成午.基于STM32的環境多點監測系統設計[J].計算機測量與控制,2014,22(10):3141-3143.
[2]劉火良,楊森.STM32庫開發實戰指南[M].北京:機械工業出版社,2013.
[3]黎冠,馬婕,卜祥麗.STM32單片機在室內環境監測系統中的應用[J].自動化儀表,2014,35(7):29-31.
[4]張祥,蔡景,林海彬,刁海飛.基于STM32的溫濕度監測系統設計[J].中國儀器儀表,2013,(7):62-65.
[5]陳曉宇.基于 Cortex-M3的 多點溫度監測系統設計[J].電子世界,2013,(12):75.