宋瑞博, 張 妍, 連夢慧
(大連海洋大學 信息工程學院, 遼寧 大連 116023)
家居環境是我們室內活動的重要場所,一個好的家居環境,能夠讓人感到有很高的舒適度,同時能保持很好的情緒,所以人們越來越重視家居環境的改善。隨著物質生活水平的提高,人們消費理念也在發生改變,追求更加個性、舒適、環保的產品,也更易接受酷炫和富有科技感的智能產品。對家居環境造成影響的因素:一個是隨著當今社會的經濟發展,地球環境污染日益嚴重,導致空氣質量急劇下降;二是家里裝修,由于選用的裝修材料不夠環保,也會造成室內空氣污染;三是天然氣泄漏、室內溫濕度不適應人體的需要等因素。針對以上原因,本文設計一款以物聯網為基礎的智能家居系統。本系統利用STM32 單片機來做主控芯片,利用各種傳感器監測室內環境參數的狀況,通過控制電路控制家電動作,同時通過通信模塊實現遠程控制,從而為人們營造出更美好的生活環境。
系統的主控制板和各外圍芯片進行防水封裝后可以放置于一個帶兩個輪子的載體中。載體高度不宜太高,有利于保持穩定度、方便通過較為低矮的空間,減少轉向。該系統主要利用微處理器(STM32 單片機)和機器視覺模塊(OpenMV)模塊在室內自動巡航,并利用各種傳感器對各類環境參數進行檢測,并定時將各種傳感器數據傳入巴法云服務器以及在終端可視化展示,動態觀測各種環境參數變化、接收報警、打開特定電器或手動改變載體方向。主控制器選用STM32單片機,其內核是Cortex-M3,是由ST(意法半導體)公司推出的一種ARM芯片。該芯片具有價格低、外設多、實時性能優異、低功耗控制以及低開發成本等優點[1]。系統總體結構圖見圖1。

圖1 系統總體結構
考慮到環保節能的問題,本次設計采取太陽能板與鋰電池協同供電。在鋰電池電量不足時,利用太陽能板或市電為鋰電池充電;當太陽能所供的電壓不足時,鋰電池利用電阻降壓為其他模塊供電。
太陽能方案是利用太陽能板和CN3816 太陽能控制芯片,該芯片具有自動跟蹤太陽能板的最大功率點的功能,可以最大限度地利用太陽能板的輸出功率。市電方案是利用變壓器進行降壓,利用場效應三極管整流,減少了對二極管的功耗,能夠更加高效地利用電能,設計如圖2 所示。

圖2 市電為鋰電池充電電路
監控模塊主要是通過選取不同類型的傳感器來監測各種環境參數。傳感器又叫電五官,是獲取環境信息的主要途徑和手段,其具有高精度、穩定性好、處理方便等特點,本系統主要由主控芯片STM32 控制不同的傳感器,機器視覺模塊配合這些傳感器獲得不同房間的環境參數。傳感器主要包括:
1)溫濕度傳感器DHT11,該傳感器可實現對信號自動校準,具有較高的測試準確性[2],它的2 腳與STM32PB7 相連。
2)甲烷傳感器MQ-4,它是一種SnO2 半導體氣體傳感器,能較好地完成對煤氣泄漏的監測。
3)空氣質量傳感器MQ-315,它可以測量空氣污染的主要成分,如二氧化碳,氮氧化物,氨氣,酒精,苯類等。MQ-4 和MQ-315 這兩個傳感器是將成分含量轉換成不同的電壓值,利用與STM32 的PA4、PA5 相連并利用其封裝的AD 模塊檢測電壓,在STM32 將數據進行轉換,利用通信模塊,實現STM32 與云服務器相連,實現遠程檢測與控制。
為了實現更加智能的家居系統,本系統中還載有紅外發射接收模塊,將此模塊的輸出引腳與STM32的PA1 相連,若將遙控器對準紅外接收管,紅外接收管將紅外信號轉換成不同高低電平時長的信號,使用STM32 定時器TIM2 捕獲功能,獲得高低電平的時長,即是紅外編碼,并將該編碼存儲到內存中。利用STM32 定時器TIM3,實現定時監測環境數據,然后根據其手冊計算出環境參數與電壓值的關系,根據經驗設定閾值,并將接收到的數據與閾值比較,如果超過則控制STM32 的定時器TIM2 在PA1 引腳輸出對應編碼(高低電平時長),使紅外發射管控制家電開關,同時檢測到煤氣泄漏、火災等報警利用通信模塊遠程通知業主。這樣可以充分利用STM32 的控制存儲優勢,并利用云平臺儲存數據,在手機終端進行接收。
本系統選擇12864LCD 作為顯示屏。12864LCD是一種圖形點陣液晶顯示器,它主要由行驅動器、列驅動器及128×64 全點陣液晶顯示器組成。12864LCD顯示屏利用I2C 協議與STM32 通信,數據時鐘引腳分別與PB8、PB9 相連,并實時顯示傳感器的值,同時利用8266Wi-Fi 模塊獲得時間與日期,天氣等與空氣情況一起顯示。同時系統調節閾值的過程中也可以通過12864LCD 顯示閾值,方便觀察調節的進度。閾值硬件調節是通過對普通的矩陣鍵盤稍作修改,拓展4×4 矩陣鍵盤,利用二極管的單向導電性,構造一個如圖3 的矩陣鍵盤,節約了4 個I/O 口,對于保留的4個I/O 口分別與STM32 的PB10-PB13 相連,對于第五列的按鈕單獨查詢,再對左邊3×4 的按鈕通過拉高其中三個引腳,置零另外一個引腳,依次識別得到按鈕坐標。相關代碼如下:

圖3 鍵控電路
實現硬件對閾值的調整。
當某一參數超過閾值,控制STM32 的PA6 引腳進而控制蜂鳴器報警煤氣泄漏、火災報警,以及識別成功地提醒。即利用TIM4 功能輸出不同頻率的PWM波控制三極管的開閉,高電平導通,低電平閉合,進而使無源蜂鳴器接收到不同頻率的PWM 波,進而生成不同的聲音如警告聲和提示音。設計電路見圖4。

圖4 報警電路

圖5 小程序截圖
隨著測量值和閾值差距的增大,STM32 輸出越高頻率的PWM波,得到越尖銳的報警聲。
在避障模塊主要依靠機器視覺模塊(OpenMV)。機器視覺系統是指通過機器視覺產品(即圖像攝取裝置,分CMOS 和CCD 兩種)將被攝取目標轉換成圖像信號,傳送給專用的圖像處理系統,根據像素分布和亮度、顏色等信息,轉變成數字化信號;圖像系統對這些信號進行各種運算來抽取目標的特征,進而根據判別的結果來控制現場的設備動作[3]。OpenMV 是集成了攝像頭模塊的STM32 單片機,控制電機驅動板L298N,IN1-IN4 分別與OpenMV P0-P3 相連,ENA、ENB 引腳與P7、P8(PWM 輸出引腳) 相連,根據IN1-IN4 的電平高低情況控制兩個輪子轉動方向,帶動載體運動,它可以利用PWM脈沖調制的方法,即改變P7、P8 引腳PWM占空比,改變兩個輪子轉速,進而實現改變運動方向;通過攝像頭接收的圖像,利用測距和識別算法,識別出障礙物,改變兩個舵機的轉速,實現避障、自動巡航。當然我們同樣可以通過機器視覺模塊對一些其他方面的監測,如入侵監測、家庭錄像、輔助拍照等。
信號傳輸是物聯網的核心,云服務器是整個系統數據的處理及存儲站,是整個物聯網系統的重要組成部分[4],我們選擇巴法云服務器,成本低且能完成系統要求。為了實現實時監控,我們選用ESP8266WIFI模塊, 作為連接云服務器與傳感器的橋梁,利用STM32 的USART2 引腳(PA2、PA3)與8266 的TX、RX相連實現串行通信,同時利用PB0、PB1 控制8266 使能,將感知層的數據傳送到巴法云服務器。
終端利用微信開發者工具開發微信小程序。微信開發者工具能幫助微信后臺頁面的開發者更便捷安全地調試微信內的網頁,而無須去借助一些模擬類軟件。微信開發者工具開發原理是集成了Chrome DevTools 和基本的移動調試模塊,可進行微信內網頁調試與微信小程序調試,開發的小程序具有獨有的優勢,優勢如下[5]:小程序相對于APP 開發維護成本低,可以降低項目運營成本;小程序依附于微信中,不用下載其他APP,小程序更適合為大眾使用;微信小程序與云端用MQTT 為通信協議與巴法云服務器端通信,得到每個房間的環境狀況,方便終端對其觀測、了解環境狀況。MQTT 相關js 代碼如下:

小程序部分包括兩部分環境監測部分與個人中心,環境監測部分接收各個傳感器的值,包括所處的位置,天氣,空氣質量等參數,通過鏈接可以進行全局報警設置,個人中心部分包括項目介紹,系統設置等信息。
根據硬件設計以及功能需要,設計電路并編寫單片機程序,利用KEIL 軟件和ST-Link 調試器,在線對單片機進行仿真,再將程序燒錄到單片機內。調試過程是按照設計的電路圖在面包板上連接測試,上電之后觀察電路各模塊參數是否正常。如環境參數測量能否顯示,數據是否傳入微信小程序,最后利用嘉立創制PBC 板,焊接電路,測試圖和實物見圖6、圖7。

圖6 測試圖

圖7 實物圖
本系統利用KEIL 等軟件進行硬件編程,微信開發者工具設計微信小程序,最后制PBC 板組成實物,通過測試可以較好地實現預期的功能。本系統實現穩定性高,電路結構簡單,性價比高,使用元器件通用性高等特點,更能很好地滿足人們的需求。但一些模塊的智能化還有待改善,離真正的智能家居,有一定的距離。本系統很好地將物聯網技術與傳感器技術結合,實現了家庭中的電器設備與互聯網、物聯網技術進行互聯互通,體現了物聯網技術在人們生活中的應用,具有一定的現實意義。