童耀南, 王 欣, 曹鸝晨, 李金桂
(湖南理工學(xué)院 信息科學(xué)與工程學(xué)院, 湖南 岳陽 414006)
伴隨著我國信息技術(shù)的發(fā)展和物聯(lián)網(wǎng)行業(yè)的成長, 家居環(huán)境正進(jìn)行著改頭換面的變化, 人們在提高生活質(zhì)量的同時更加向往健康的生活, 對環(huán)境安全亦愈加重視.因此室內(nèi)的各項(xiàng)環(huán)境數(shù)據(jù)在線監(jiān)測就變得尤為重要.加之新興材料五花八門, 室內(nèi)裝修材料紛繁復(fù)雜, 使得室內(nèi)的環(huán)境污染越來越多[1], 室內(nèi)有毒氣體監(jiān)測變得刻不容緩.傳統(tǒng)的技術(shù)與手段是基于儀器監(jiān)測和環(huán)境算法, 這需要大量的人力成本, 無法適應(yīng)設(shè)備輕小型化的發(fā)展趨勢, 也無法適宜巨大的社會變化帶來的室內(nèi)環(huán)境變化, 實(shí)時、集成、高效的監(jiān)測技術(shù)成為了研究重點(diǎn).基于物聯(lián)網(wǎng)的室內(nèi)環(huán)境在線監(jiān)測系統(tǒng)給環(huán)境監(jiān)測所帶來的智能化、集成化、大數(shù)據(jù)來源、云平臺的大數(shù)據(jù)分享, 可以為環(huán)境監(jiān)測提供更深入、更詳盡、更真實(shí)且具有客觀性的數(shù)據(jù)[2,3].
本文根據(jù)室內(nèi)環(huán)境實(shí)時監(jiān)測的需求, 基于Wi-Fi 和STM32 設(shè)計(jì)和實(shí)現(xiàn)了一套室內(nèi)環(huán)境在線監(jiān)測系統(tǒng), 能快速直觀地顯示環(huán)境數(shù)據(jù), 實(shí)現(xiàn)監(jiān)測和預(yù)防.
本文設(shè)計(jì)的室內(nèi)環(huán)境在線監(jiān)測系統(tǒng)架構(gòu)如圖1所示.按照物聯(lián)網(wǎng)三層架構(gòu)分為感知層、網(wǎng)絡(luò)層、應(yīng)用層.
圖1 系統(tǒng)框架圖
具體的實(shí)現(xiàn)方式是通過傳感器所在的硬件感知層將感知到的四項(xiàng)環(huán)境數(shù)據(jù)通過串口通信傳輸給測控芯片STM32, STM32 對數(shù)據(jù)進(jìn)行處理后驅(qū)動ESP8266Wi-Fi 模塊進(jìn)行網(wǎng)絡(luò)傳輸, 通過網(wǎng)絡(luò)層的HTTP 協(xié)議將環(huán)境數(shù)據(jù)傳輸?shù)皆贫朔?wù)器.最后云主機(jī)將環(huán)境數(shù)據(jù)進(jìn)行數(shù)據(jù)庫存儲, 并搭建起Web 服務(wù)器, 允許Web應(yīng)用進(jìn)行遠(yuǎn)程的數(shù)據(jù)請求.通過上述方式, 可以使得環(huán)境數(shù)據(jù)的獲取變得高效, 環(huán)境數(shù)據(jù)的實(shí)時顯示變得方便, 相較其他傳統(tǒng)的非物聯(lián)網(wǎng)的環(huán)境監(jiān)測有著明顯的優(yōu)勢.
系統(tǒng)的硬件設(shè)計(jì)由兩大部分組成[4,5].一是以STM32 為控制核心加上光敏電阻傳感器、MQ-2 煙霧氣敏傳感器、DHT11 溫濕度傳感器三個傳感器模塊構(gòu)成的數(shù)據(jù)測控模塊, 對與室內(nèi)環(huán)境緊密相關(guān)的溫濕度、煙霧或有毒氣體、光照強(qiáng)度進(jìn)行動態(tài)數(shù)據(jù)獲取.二是ESP8266Wi-Fi 模塊為主的數(shù)據(jù)發(fā)送模塊, 負(fù)責(zé)將采集到的數(shù)據(jù)發(fā)送給云服務(wù)器.硬件整體設(shè)計(jì)如圖2所示.
圖2 硬件整體設(shè)計(jì)圖
數(shù)據(jù)測控模塊以STM32F103 單片機(jī)為核心, 這是一款增強(qiáng)型MCU, 擁有64 個引腳和256K 字節(jié)的閃存, 具有低功耗特性, 豐富的快速I/O 端口, 成本低卻擁有較高的性能.測控模塊硬件構(gòu)成如圖3所示.
控制器模塊的主要作用就是將 32 位單片機(jī)STM32F103 作為測控節(jié)點(diǎn)的控制芯片, 控制溫濕度傳感器采集溫濕度數(shù)據(jù), 光敏電阻傳感器采集光照強(qiáng)度, 煙霧傳感器采集煙霧濃度, 并將采集到的數(shù)據(jù)在LCD屏上顯示.
圖3 數(shù)據(jù)測控模塊
本系統(tǒng)采用由ALENTEK 推出的一款高性能串口無線模塊, 內(nèi)置TCP/IP 協(xié)議棧可以輕松實(shí)現(xiàn)串口與Wi-Fi 之間的轉(zhuǎn)換.兼容3.3V 和5V 單片機(jī)系統(tǒng), 可以與測控板進(jìn)行連接.支持串口轉(zhuǎn)無線站點(diǎn)、串口轉(zhuǎn)熱點(diǎn)和無線站點(diǎn)加無線熱點(diǎn)的三種模式, 從而快速地構(gòu)建串口Wi-Fi 數(shù)據(jù)傳輸方案, 方便測控板與互聯(lián)網(wǎng)進(jìn)行數(shù)據(jù)傳輸.無線通信模塊硬件如圖4所示.
圖4 Wi-Fi 通信模塊
軟件設(shè)計(jì)思路著眼于實(shí)現(xiàn)數(shù)據(jù)的獲取、封裝、發(fā)送、顯示等功能, 從以下幾個方面進(jìn)行設(shè)計(jì).
(1) 第一部分: 對傳感器進(jìn)行初始化之前, 使能復(fù)用對應(yīng)的GPIO 口, 并打開模數(shù)轉(zhuǎn)換器, 同時短暫等待20 秒, 讓MQ-2 煙霧傳感器預(yù)熱, 使得其測量數(shù)據(jù)真實(shí)準(zhǔn)確, 這樣便為接下來的傳感器獲取數(shù)據(jù)做好準(zhǔn)備.
(2) 第二部分: 進(jìn)行數(shù)據(jù)的獲取.初始化時對四項(xiàng)參數(shù)進(jìn)行了置零處理, 用以表示初始化完成.每隔5 秒獲取一次傳感器獲得的數(shù)據(jù)并顯示在LCD 屏幕上, 做到本地環(huán)境數(shù)據(jù)的實(shí)時顯示.驅(qū)動Wi-Fi模塊對遠(yuǎn)端服務(wù)器進(jìn)行連接, 若未能成功連接, 則在0.5 秒后繼續(xù)請求連接直至成功.
圖5 軟件設(shè)計(jì)流程圖
(3) 第三部分: 將獲取到的環(huán)境數(shù)據(jù), 封裝成HTTP 請求, 以GET 的形式提交給云端Web 服務(wù)器, 而服務(wù)器會將提交的數(shù)據(jù)存在MySQL 數(shù)據(jù)庫中, 方便對環(huán)境數(shù)據(jù)訪問, 但程序并未走完, 系統(tǒng)的設(shè)計(jì)功能是能實(shí)時不斷地進(jìn)行數(shù)據(jù)獲取和遠(yuǎn)程訪問, 所以每隔5 秒后又重復(fù)第二部分和第三部分的程序流程, 直到手動終止程序進(jìn)程.軟件設(shè)計(jì)流程圖如圖5所示.
通過在阿里云租賃的云主機(jī)進(jìn)行應(yīng)用層的服務(wù)器搭建, Web 服務(wù)器的軟件設(shè)計(jì)分成三步, 按照Django的MVT 框架進(jìn)行代碼編寫.第一步是在線監(jiān)測系統(tǒng)前端界面的編寫; 第二步是利用基于Python 的Django框架搭建出一個簡單的Web 服務(wù)器, 為了提高Web 服務(wù)器的穩(wěn)定性, 采用uWSGI 代理web 服務(wù), 從而提高服務(wù)器的響應(yīng)能力和抗壓能力; 第三步是在云主機(jī)上安裝MySQL 數(shù)據(jù)庫, 由數(shù)據(jù)庫來接收從傳輸層發(fā)來的環(huán)境數(shù)據(jù).應(yīng)用層設(shè)計(jì)結(jié)構(gòu)圖如圖6所示.
測試用到了三種傳感器模塊、LCD 屏和測控板, 主要目的是為了驗(yàn)證是否能獲得準(zhǔn)確的環(huán)境數(shù)值以及能否在LCD 屏幕上正確顯示.初始化溫濕度傳感器等待3 秒左右, 但MQ-2 煙霧傳感器模塊由于需要預(yù)熱才能測量精準(zhǔn)所以需要等待20 秒, 此后LCD 屏幕上開始刷新傳感器采集到的實(shí)時環(huán)境數(shù)據(jù), 環(huán)境的參數(shù)每隔5 秒刷新一次, 新獲得的數(shù)據(jù)會更新在LCD 屏上.測試效果圖如圖7所示.
圖6 應(yīng)用層設(shè)計(jì)結(jié)構(gòu)圖
圖7 測試效果圖
測試用到了Wi-Fi 模塊、溫濕度傳感器、測控板和手機(jī), 目的在于驗(yàn)證傳輸層的Wi-Fi 模塊能否有效開啟兩種模式并成功傳輸數(shù)據(jù).分別測試Wi-Fi 模塊的AP 模式和STA 模式.首先將Wi-Fi 模塊作為熱點(diǎn), 熱點(diǎn)名稱為ATK-ESP8266.讓手機(jī)直接連接Wi-Fi 模塊, 以此來直接獲取Wi-Fi 模塊傳出的數(shù)據(jù).調(diào)試實(shí)際效果如圖8所示.
圖8 AP 模式測試圖
接著進(jìn)行STA模式的測試.在連接到路由器后, 程序會執(zhí)行對云服務(wù)器的連接, 只有與服務(wù)器連接成功后, 程序才會繼續(xù)往下執(zhí)行.這樣設(shè)計(jì)的目的是為了讓每一次從傳感器處獲取的數(shù)據(jù)都能發(fā)送給遠(yuǎn)程的服務(wù)器, 確保數(shù)據(jù)不丟包, 從而保證本系統(tǒng)的數(shù)據(jù)真實(shí)性.將ESP8266模塊作為STA接入路由器測試的實(shí)際效果圖如圖9所示.
測試用到了云主機(jī)服務(wù)器、測控板、三種傳感器模塊和Wi-Fi 模塊, 目的是為了驗(yàn)證感知層獲取的數(shù)據(jù)能否有效地通過網(wǎng)絡(luò)層上傳到應(yīng)用層服務(wù)器, 并且能通過Web 應(yīng)用訪問到相應(yīng)數(shù)據(jù).數(shù)據(jù)在感知層獲取后不斷地通過HTTP 請求將環(huán)境參數(shù)發(fā)送給遠(yuǎn)程服務(wù)器.在測控板上獲取到環(huán)境數(shù)據(jù)并發(fā)送給服務(wù)器的界面截圖如圖10所示.
圖9 STA 模式測試圖
圖10 獲取發(fā)送數(shù)據(jù)測試圖
在手機(jī)終端或電腦瀏覽器上訪問云服務(wù)器主機(jī)地址, 網(wǎng)頁應(yīng)用會每5 秒刷新一次環(huán)境數(shù)據(jù).服務(wù)器運(yùn)行結(jié)果見表1.感知層的傳感器通過Wi-Fi 模塊為主的網(wǎng)絡(luò)層, 將數(shù)據(jù)傳輸?shù)椒?wù)器并保存在MySQL數(shù)據(jù)庫, 就能實(shí)現(xiàn)在任何地方進(jìn)行室內(nèi)環(huán)境數(shù)據(jù)的實(shí)時監(jiān)測.
表1 服務(wù)器獲取數(shù)據(jù)測試
針對室內(nèi)環(huán)境監(jiān)測的實(shí)時高效需求, 研究和設(shè)計(jì)了基于物聯(lián)網(wǎng)技術(shù)的室內(nèi)環(huán)境監(jiān)測系統(tǒng), 實(shí)現(xiàn)了室內(nèi)環(huán)境數(shù)據(jù)的自動采集和上傳等功能.該系統(tǒng)包括感知層、網(wǎng)絡(luò)層、應(yīng)用層三部分, 感知層由傳感器和STM32 測控主板構(gòu)成, 網(wǎng)絡(luò)層由Wi-Fi 通信模塊構(gòu)成, 應(yīng)用層由云服務(wù)器和Web 應(yīng)用構(gòu)成.實(shí)驗(yàn)結(jié)果驗(yàn)證了系統(tǒng)的有效性.