張艮娟,倪敏珈
(東南大學成賢學院 電子與計算機工程學院,江蘇南京,210000)
近年來,隨著社會經濟的不斷發展,人們對生活舒適度提出了更高的要求,對家居智能化的需求也越來越大。智能家居是近來的熱門,它作為一個能夠滿足人類美好生活的產業,從而進入大家的視野中,目前智能家居該項目使用的微信小程序自上線以來,已經收獲了大批的喜愛者,更加方便了人們的生活。在這個家居智能時代,很多用戶在挑選家居用品時會優先選擇物美價廉并且具有一定智能化且方便使用的家居,而且微信小程序廣受用戶的好評,它毫無疑問是一個方便快捷的終端應用,在實現比較人性化的控制的同時能夠節省用戶的空間內存。因此研究如何更好地實現微信小程序與智能家居相連,具有很重要的現實意義。
Arduino是一款具有方便靈活、容易上手等特點的開源電子原型平臺。它具有使用類似Java、C語言的Processing/Wiring的開發環境,并且構建于開放原始碼simple I/O介面版。主要包含兩個部分:其中一個是硬件部分,它用來做電路連接的Arduino電路板;另外一個則是Arduino IDE(計算機中的程序開發環境)。只要在IDE中編寫程序代碼,將程序上傳到Arduino電路板后,程序便會告訴Arduino電路板要做些什么了,它能通過各種各樣的傳感器來感知環境,通過控制燈光和其他的裝置來反饋、影響環境。
MQTT協議是一種消息列隊傳輸協議,它采用訂閱、發布機制,且訂閱者只能接收自己已經訂閱的數據,其他數據則不接收。要確保必要的數據的交換,而不對非必要的數據進行儲存與處理。因此在工業物聯網中得到廣泛的應用。MQTT使用的發布/訂閱消息模式,它提供了一對多的消息分發機制,從而實現與應用程序的解耦。這是一種消息傳遞模式,消息不是直接從發送器發送到接收器(即點對點),而是由MQTT server(或稱為 MQTT Broker)分發的。
出于小程序操作簡單方便,容易上手,且不需要開發獨立app而選擇它來設計主要功能頁面,并能對頁面中相關功能進行打開或關閉,頁面主要包括溫濕度的顯示,燈和空調的開關以及自動報警器,本系統主要分為如下幾個方面:
2.1.1 遠程電燈的開關
當用戶因為出門著急而無法確定燈是否開關即可通過小程序查看等的開關狀態,來選擇操作,另外,用戶不需要起身去墻壁上按動開關按鈕,只需躺在床上,打開小程序界面進行開關,方便快捷。
2.1.2 窗簾的開關
可根據日照程度,用戶在家休息時,可根據微信小程序中光照度的顯示,當日光達到一定亮度時,可操作窗簾可以自動打開,到晚上時窗簾外部的傳感器感受不到日光,即可關閉,用戶也可遠程控制窗簾的開關,在不需要打開時選擇關閉。
2.1.3 溫濕度檢測的報警
室內濕氣太重將會影響人的健康,所以小程序可以實時監控室內的溫度和濕度,將溫濕度過高即會發出報警信號,用戶可以參照不同時段的氣候,給溫濕度報警器設置限定值,同時可以在微信小程序主界面上查看當前的溫濕度。
2.1.4 煙霧報警器
用戶可以在離家之后,通過小程序提前打開煙霧報警器,煙霧濃度過高,LED燈將變紅,同時給周圍鄰居警醒的信號,用戶在微信小程序上就能查看煙霧濃度,實現不在家也能實時監控家居狀態。
利用微信小程序工具開發界面,首先進行功能的劃分,主要功能包括溫濕度顯示與報警設置,空調、燈、窗簾的開關等,以及用戶登錄注冊頁面,再將模擬房間及溫濕度傳感器、燈、窗簾等狀態信息傳輸至Arduino,通過爬取數據,再利用MQTT協議進行軟硬件的通信,將數據傳至主界面,主界面使用javascript技術實現基本控制和動態交互,最后確保每個功能都能實現后,進行測試,達到預期效果。

圖1 總體設計模式示意圖

圖2 系統硬件實現框圖
溫濕度傳感器主要使用的是DHT11模塊,該模塊是一款具有已校準數字信號輸出的溫濕度傳感器,它與一個高性能8位單片機相連接,包括一個電阻式感濕元件和一個NTC測溫元件。其中溫度測量是將內部的NTC測溫元件的阻值轉化成溫度,而濕度測量則是利用感濕元件,讓其阻值與濕度在一定的范圍內呈現出良好的線性關系,從而反應相關數據。它們能將溫濕度進行精準測量,其溫度精度在-5℃~+5℃之間,濕度精度也在-5RH~+5RH之間。因此該產品具有較強的抗干擾能力、性價比高、品質優秀、反應速度快等優點。每個DHT11傳感器一般都在極為精確的濕度校驗室中進行校準。校準系數以程序的形式儲存在OTP內存中,傳感器內部在檢測信號的處理過程中要調用這些校準系數。單線制串行接口,使系統集成變得簡易快捷。小體積、低功耗,信號傳輸通過傳感技術將當前空氣中的溫度及濕度顯示在數字模塊中,當空氣中的溫濕度超過設置閾值會發出警報聲。
電燈作為家庭常用家居產品,且是一個消耗品,我們本系統采用的是LED燈管,它運用了二極管發光原理,比普通的節能燈效果更好,其壽命也是十分之久。我們所采用的發光模塊基于高節能、壽命長、多變幻、利環保、高新尖的特點,燈采用的是LED發光模塊。至于有引線的板子上,本系統采用紅色LED發光模塊和黃色LED發光模塊,黃色LED模塊主要用于實現正常的照明的遠程控制,我們可以通過微信小程序來控制家庭燈的開關,并可以實時查看到電燈的狀態;而紅色的LED模塊主要用于煙霧傳感器的報警。
窗簾作為一種日常家居,大多數需要我們手動控制。市面上已有的電動窗簾價格比較昂貴,結構復雜,可靠性低,不能夠讓所有用戶都能很好享用。本系統窗簾的遠程控制主要使用STC89C51,這是一種8位的高性能工具。在窗簾的制動中充分發揮重要作用,且其具有簡單小巧,性價比高,可持續性長等優點。同時可根據光敏電阻,判斷窗簾移動的距離,確定窗簾的開關狀態,即當光照變強,電阻變高,窗簾自動打開。本系統采用了微信小程序控制,實現遠程操作,改變布線復雜的不足,提高窗簾控制的智能化,讓用戶能夠更好地控制窗簾移動。
煙霧傳感器本系統使用MQ-2煙霧傳感器,該傳感器對于煙霧具有良好的靈敏感,可以實時檢測到煤氣等多種有毒可燃氣體,并立刻發出警報,其氣體探測的范圍也相對較高較為精準。其原理是與煙霧接觸時,如果晶粒間界處的勢壘收到煙霧的調至而變化,就會引起表面導電率的變化。通過這一點獲得煙霧存在信息,初始化單片機后包括初始化變量參數,當煙霧濃度變大時,模擬信號越大,單片機對信號進行處理,啟動報警電路,紅色LED燈開始閃爍。
本設計采用的是Arduino的硬件開發板,版本是Duemilanove,是目前使用人數最多,且最穩定的版本,它具有開元、開放、簡單、跨平臺等特點,且在自動化、物聯網領域內都廣泛應用,本設計以Arduino為核心,能夠更快的完成項目開發,減少開發時間的消耗和學習的成本,我們可以從硬件檢測裝置中采集數據,即通過連接到Arduino開發板上的傳感器來收集溫濕度、燈光、窗簾、煙霧報警器等信息。
該頁面為主頁面,其中包括溫濕度、光照度、煙霧的顯示,報警器、客廳燈的開關。
本程序通過檢測當前串口的初始化狀態,來檢測LED燈的初始化狀態,用戶通過微信小程序界面的虛擬按鈕來控制LED等的開關。
先在控制臺創建名稱如客廳燈,在控制LED的引腳,初始化LED燈的狀態默認為關的狀態,再將燈的狀態傳至MQTT協議中,MQTT協議可使用簡單的0/1交互,0為關的狀態,1為開的狀態,再將數據傳至微信小程序,最終由微信小程序界面中的按鈕來控制燈的狀態,當用戶將等的狀態撥到開的狀態,將判斷是否連接MQTT協議,至LED傳感器的狀態上傳后,即刻執行打開電燈的相關函數,開燈;關閉燈泡時,將改變MQTT字符為0,執行關燈函數,滅燈。

圖3 主頁面布局圖

圖4 LED燈的遠程控制功能流程示意圖

圖5 窗簾的遠程控制的功能流程示意圖
本程序通過微信小程序按下界面上的按鈕控制窗簾的打開狀態,當為打開狀態時,將為用戶自動打開窗簾,當到根據窗簾寬度所設置的打開限位的閾值點時,打開窗簾的動作將會自動停止,若當前按下控制窗簾的關閉鍵時,將為用戶自動關閉窗簾,當到根據窗簾寬度所設置的關閉限位的閾值點時,關閉窗簾的動作將會自動停止。

圖6 溫濕度的數據顯示及報警流程示意圖

圖7 煙霧報警流程示意圖
先判斷窗簾的初始化狀態及是否與MQTT協議連接后,對于窗簾的打開和關閉狀態,也是一個0/1交互的過程,設計主要程序語句,使用if和while等循環語句目的是為了對整個窗簾的程序進行判斷,當用戶在界面上按了打開或關閉按鈕時,會對于窗簾的位狀態行判斷,當執行完語句操作時,同樣會對于程序的運行進行終止。
DHT11溫濕度傳感器將溫濕度上傳到MQTT服務器上,MQTT服務器實現與微信小程序的交互,將數據上傳至微信小程序中顯示。在程序編寫上,tempChange函數,當打開微信小程序時,立即發送信息數據wx sendMessage,如果連接成功即刻返回調用成功信息,如果連接失敗,則函數e調用失敗,返回服務器異常信息。定義DHT11的引腳,上傳默認傳感器時間為2s,判斷連接成功后,即刻獲取當前時間戳,當時間達到默認時間后,將當前濕度上傳。
MQ2煙霧傳感器首先給傳感器預熱,再進入監控狀態連接微信小程序,先初始化串口信息Senor_AO和引腳信息Senor_DO,使煙霧的初始數據為0,采集煙霧濃度值,再上傳數據,當煙霧大于預先設定的閾值、微信小程序發送預警通知,同時LED亮紅燈,先設定LED的狀態LEDstatus=”LEDoff”,設定時間上傳時間為3秒intervial=3,執行if語句,報警及立即執行digtalWrite(A_LED,HiGH)。
本項目在Arduino開發板上連接LED燈、窗簾、DHT11溫濕度傳感器、MQ-2煙霧傳感器,在開發板上連接WiFi模塊,再通過物聯網MQTT協議來與微信小程序進行通信,完成一個智能家居控制系統。為用戶提供生活上的便利,實現智能化生活。該項目有多種功能供用戶選擇,用戶可以實時監控家居的狀態,可以在微信小程序界面查看當前溫濕度、光照度、可選擇開關燈和窗簾,當溫濕度超過設定值時會立即發出警報聲,當煙霧濃度超過限定值時,報警燈會一直發出紅光,提醒用戶氣體異常。通過這樣一套系統,給用戶便捷的智能家居享受。