王亞林,王清勃,查文華
東華理工大學機械與電子工程學院,江西,南昌,330013
隨著國家經濟發展和百姓生活水平的提高,人們對家居環境的品質要求越來越高,家中空氣濕度、溫度和不健康氣體等逐漸被重視和關注起來。本文設計一種在線家居環境監測系統,以GEC-S5P6818為控制器,在其外圍加上溫度、光照等傳感器模塊,可以采集環境溫度、濕度、大氣壓強和光照強度等信息,并在LCD屏上顯示出來,同時也將數據通過MQTT實時上傳阿里云服務平臺,實現環境數據在線監控和顯示,達到了對監控環境的實時監測[1-2]。
使用的GEC-S5P6818開發平臺有豐富的外圍設備,支持以太網、USB接口和MIPI接口。在底板背部留有一個40PIN的LCD接口,通過軟排線將RGB相關信號連接到LCD控制板上[3],硬件結構總體框圖如圖1所示。

圖1 硬件結構總體框圖
利用了分辨率為800*480的LCD顯示屏。當顯示BGM圖片時,把顏色值填入幀緩沖設備中,底層驅動按照從左到右、從上到下的順序把屏幕每個像素點顯示成對應的顏色,在LCD屏上就能顯示出bmp圖片。當內存映射時,使用mmap函數把一個文件映射到內存,映射成功之后就可以像操作內存一樣操作這個文件,進而對文件進行一系列操作。
使用的GY-39是一款能實現氣壓、溫濕度、光照強度采集的傳感器模塊,工作電壓3~5V,當MCU收集傳感器數據后,通過用戶解析統一處理后,在終端顯示出計算后的結果。
使用的火焰傳感器連接在開發板的串口上,工作電壓3.3~5V;比較器輸出信號,波形良好,具有驅動能力,輸出電流達15mA以上。火焰傳感器可檢測波長范圍在760~1100nm內的火焰。在測試初期,一直使用打火機作火源,火焰距離80cm左右,火焰越大,測試距離越遠。檢測角度縱向約為60度,利用傳感器對火焰光譜的敏感性,在可調電位器調節下,可適當調節火焰傳感器的靈敏度。在檢測范圍內,當檢測到火苗或明顯的光照時,AD口采集到數據后會向核心板發送高電位“1”,串口RX收到該數據后,開始調用蜂鳴器函數并驅使蜂鳴器發聲,如果火焰不結束,蜂鳴器會一直鳴叫。
在嵌入式開發平臺創建好開發環境后進行配置、安裝,然后在主機上編輯和調試嵌入式程序,并將文件執行寫入目標機中。利用虛擬機系統、物理機系統和ARM開發板文件的共享功能,實現編譯程序代碼及跨平臺代碼的信息編輯[4-5]。
設計中利用source insight4.0進行代碼書寫、管理。其中,Ubuntu的代碼編譯使用arm-linuxgcc系列工具,在遇見錯誤和邏輯問題時,為穩定執行過程,做到及時修改程序,可使用gdb進行調試。在PC機上編譯完成后,利用rz工具進行燒寫,然后經過串口寫進S5P6818開發板上。接入網線到開發板中會出現以下情況。
(1)在SecureCRT終端可以打開以下信息:[4147.078000] PHY: stmmac-0:04 - Link is Up - 1000/Full,說明當前以太網口已經被激活可以使用。
(2)以太網口LED燈在閃爍,說明在測試Windows與開發板是不是連通;開發板ping百度時出現:
[root@GEC6818 /]#ping www.baidu.com
PING www.baidu.com: 56 data bytes
64 bytes from www.baidu.com: seq=0 ttl=64 time=1.888 ms
64 bytes from www.baidu.com: seq=1 ttl=64 time=0.648 ms
如果出現跳秒現象的話,說明開發板可與ping通PC機。
由于GY-39模塊采集到的數據,輸出格式固定,每幀數據均含十六進制的8~13個字節,各幀含義如下:
Byte0: 0x5A,幀頭標志;
Bytel:0x5A,幀頭標志;
Byte2:0x15,本幀數據類型;
Byte3:0x04,數據量;
Byte4:0x00~0xFF,數據前高8位;
Byte5:0x00~0xFF,數據前低8位;
Byte6:0x00~0xFF,數據后高8位;
Byte7:0x00~0xFF,數據后低8位;
Byte8:0x00~0xFF,校驗和。
(1)光照強度計算(當Byte2=0x15時,數據:Byte4~Byte7)。
Lux=(前高8位<<24)| (前低8位<<16)| (后高8位<<8)|后低8位單位lux;
Lux=(0x00<<24)|(0x00<<16) |(0xFE<<8)0x40;
Lux= Lux/100-650.88 (lux);
(2)溫度、氣壓、濕度、海拔,分別計算(當Byte2=0x45時)。
溫度:Byte4 Byte5;
T=(高8位<<8)| 低8位;
T= T/100單位C;
氣壓: Byte6-Byte9;
P= (前高8位<<24)| (前低8位<<16)| (后高8位<<8)| 后低8位;
P= P/100 單位pa;
濕度: Byte10-Byte11;
Hum= (高8位<<8) |低8位;
Hum= Hum/100 百分制;
海拔: Bytel2~Byte13;
H= (高8位<<8)| 低8位 單位m;
火焰傳感器采集到的數據為高低電平,通過串口將采集到的數據讀出來,高電平為1,低電平為0;將1和0作為字符串傳遞到應用的函數中即可,隨后將導出的串口恢復。實驗中,收集的部分數據見表1,系統采集數據與普通儀表采集數據對比如圖2所示。

表1 實驗采集數據

圖2 系統采集數據與普通儀表采集數據對比
系統是基于Aliyun mqtt的數據上傳的代理協議,提供一對多分發消息,發布者可以匹配多個訂閱者,當發布者更改時,可以通知所有訂閱者,這種模式提供多個基于網絡拓撲結構的擴展功能。在物聯網平臺上自定義Topic類后,設備將消息發送到自定義Topic中,服務端通過 SDK獲取設備上報消息,服務端通過調用云端API Pub向設備發布指令,實現智能家居在線監控。來自IOT平臺相應設備的數據顯示在對象模型的選項卡上,數據驗證通過后,它將與設備數據表單中的設備詳細信息頁面一起顯示在IOT控制臺平臺上對應選項卡,服務器可以通過基本引擎獲取響應結果,設備事件屬性,數據,設備設置和屬性,服務調用命令,預訂服務,產品流云。通過定義物模型并設置實時刷新來實時查看采集到的數據,并且可以選擇圖表和表格的形式,使得數據更加的直觀。
Connect:當一個TCP/IP套接字在服務器端和客戶端連接建立時需使用的命令。
publish:是由客戶端向服務端發送,告訴服務器端自己感興趣的Topic。
disconnect:斷開這個TCP/IP協議。
采集到的一系列數據經過處理后,需要通過設備發送上報到云平臺,即可實現智能家居系統的在線查看功能,利用打火機進行實驗監測時,電腦監控界面出現異常報警信號,如圖3所示。

圖3 打火機測試報警信號
本文利用嵌入式技術、物聯網技術進行了家居環境的實驗研究,實時監測出了家居環境的溫度、濕度、光照強度等。但所設計系統也有不完美之處,偶爾出現數據的精度不夠問題,且由于預算經費的限制,限制使用功能選用更好的模塊,后續在功能擴展、精度條件和算法等方面還有深度研究的價值。理想型智能家居傳感器終端應具有自適應判斷環境、自我診斷和自我修復的能力,可以有效地改善智能家居應用的動態智能協作感知。此外,隨著中國三大電信運營商對5G網絡和應用的快速發展,依靠最新的5G網絡優勢,結合智能家居應用的特點,5G手機被用于實現可視對講等服務。另外,在保證安全的基礎上,通過終端模塊加載和自動發現協議,使一些設備能通過大數據獲取人們的日常活動,對家庭網絡的訪問將更加自動化,實現即插即用。