






摘要:智能家居系統使用STM32單片機對SHT20溫濕度模塊和光敏模塊協議的數據進行采集、存儲,同時將采集的數據通過MQTT傳輸至服務器[1]。使用QT設計的PC端上位機通過MQTT訪問服務器,讀取環境的溫濕度、亮度數據并顯示。上位機也能控制終端的RGB燈、風扇等設備。
關鍵詞:智能家居;MQTT;數據采集;STM32
doi:10.3969/J.ISSN.1672-7274.2023.07.015
中圖分類號:TP 309.7,TU 855 " " " " " 文獻標志碼:A " " " " " " 文章編碼:1672-7274(2023)07-00-03
Intelligent Home Data Transmission System Based on MQTT
CHEN Luyao1, LIN Feng1, GUO Qingfeng2
(1. School of Optoelectronics and Communication Engineering, Xiamen Institute of Technology, Xiamen 361000, China; 2. Hennessen (Xiamen) Data Co., Ltd., Xiamen 361000, China)
Abstract: The smart home system uses an STM32 microcontroller to collect and store data from the SHT20 temperature and humidity module and the photosensitive module, while transmitting the collected data to the server through MQTT. The PC terminal host computer designed using QT accesses the server through MQTT, reads and displays ambient temperature, humidity, and brightness data. The upper computer can also control the RGB lights, fans, and other devices of the terminal.
Key words: smart home; MQTT; data collection; STM32
1 " 研究背景及意義
自智能家居問世以來,人們對于家居環境提出了越來越高的要求。智能家居通過物聯網技術將家中的各種設備連接到一起,能夠自動控制和管理家電設備,對家庭環境的安全進行監控報警,并且能夠為用戶提供安全舒適、高效便利的學習、生活、工作環境。MQTT協議的設計思想是輕量、簡單、開放和易于實現的,適合在低帶寬、不穩定網絡和計算能力受限的環境中工作。基于這種特點MQTT協議非常適合在智能家居、智慧醫療、智慧出行以及智慧農業等領域中使用。
1.1 MQTT通信技術
在智能家居的應用中,MQTT(消息隊列遙測傳輸)協議是非常流行的,它是為大量計算能力有限,且工作在低帶寬、不可靠網絡環境中遠程傳感器和控制設備通信而設計的協議。它具有以下特點[3]:
(1)對負載內容屏蔽的消息傳輸。
(2)使用 TCP/IP 提供網絡連接。
(3)使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合。
(4)使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制。
(5)小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量。
MQTT客戶端可以通過發布/訂閱這兩種方式與服務器進行數據的上傳/下載,傳輸的消息分為Topic與Payload兩個部分[4]。MQTT服務器可以接受來自客戶的網絡連接、接受客戶發布的應用信息、滿足來自客戶的訂閱與退訂需求和向訂閱的客戶轉發應用程序消息。
1.2 系統框架
智能家居系統包含采集環境數據的智能家居端、部署了MQTT服務的服務器和實時查看數據與控制負載的上位機三個部分[5]。圖1為系統框圖,在智能家居端和上位機聯網后,通過MQTT協議與服務器通信,實現智能家居與上位機的數據傳輸[6]。
為了驗證MQTT協議能夠正確傳輸數據,本文設定的智能家居系統是以嵌入式系統[1]為核心的,傳輸的數據是環境信息和控制信息。環境信息包括溫濕度和光照亮度,由智能家居端向上位機傳輸。控制數據是對LED和風扇的控制命令,傳輸方向則相反。
1.3 方案論證
系統結構如圖2所示。STM32通過IIC協議獲取SHT20溫濕度傳感器的數據[2],光敏傳感器使用ADC數據采集方式獲取數據。完成數據采集之后,主控芯片通過ESP8266模塊將采集到的數據通過MQTT協議方式發布到服務器上,上位機從服務器獲取環境的溫濕度、亮度等信息[7]。上位機還可以通過服務器下發指令給嵌入式系統使其控制LED燈、風扇等設備。
2 " 模塊設計
2.1 微控制器模塊設計
本系統的微控制器采用STM32F103C8T6芯片[8],該芯片的封裝為LQFP48。圖3所示的為STM單片機的外部電路,模擬輸入電路的VDDA是模擬電源,當使用到模擬信號的時候,比如AD(模數)或者DA(數模)的時候,系統會使用VDDA的電壓作為參考電壓。復位電路是通過按鍵來給NRST引腳一個低電平讓系統完成復位。測試燈用來檢測整個系統程序是否正常運行。當正常工作時測試燈應為呼吸燈效果。STM32F103C8T6芯片在使用8 MHz晶振作為外部高速時鐘源的情況下,系統的主頻經過倍頻后高達72 MHz,該芯片還帶有3個USART模塊、2個12位高精度ADC模塊、3個通用定時器與1個高級定時器等豐富的外設[6]。這些外設為系統的數據傳輸、傳感器數據采集與負載模塊控制等功能提供了必要的硬件基礎。
2.2 傳感器模塊設計
2.2.1 溫濕度傳感器
溫濕度傳感器使用的是SHT20溫濕度傳感芯片,它可以實現系統中的溫濕度檢測功能。SHT20傳感芯片嵌入了適于回流焊的雙列扁平無引腳的DFN封裝具有體積小便于安裝布置的特點。此芯片內置了濕度和溫度傳感器元件、模擬數字轉換器、信號處理、校準數據和IIC主機接口[7]具有信號兼容性強高以及數據準確的優點。使用低介電常數聚合物電介質進行濕度傳感的技術創造出低功耗高效率的運行環境、單片CMOS傳感器模塊便于快速且低耗的傳輸信號,通過IIC協議輸出經過標定的數字信號,具有測量精度高、分辨率高與信號傳輸穩定等優點[8]。圖4為SHT20傳感器電路,IIC接口設計了外部上拉電阻來保證有正常的高電平輸出。
2.2.2 受控負載模塊設計
本系統的受控負載模塊包含RGB LED與風扇兩部分,其中RGB LED在電路上采用“共陽”接法,“共陽”接法相比于“共陰”接法所需的驅動電流小、對控制器的驅動能力要求小。R、G、B三通道分別連接STM32控制器的PB6、PB7、PB8引腳,通過PWM的方式控制R、G、B三個通道的亮度以實現改變顏色的目的。圖5為風扇驅動電路,驅動電路通過三極管開關電路與MOS開關電路來驅動12 V供電的風扇。將控制引腳PWM_F連接到STM32的PB9引腳[1],通過PWM控制技術控制SS8050三極管的通斷來實現對風扇轉速的控制。
2.2.3 光敏傳感器
本系統的環境亮度檢測功能通過靈敏型光敏電阻傳感器實現。圖6為光敏傳感器電路,它由精密可調電位器RP1構成的分壓電路為LM393寬電壓比較器電路提供閾值設定。因此此模塊有兩種輸出模式。一種模式是通過調節電位器來設定閾值使DO端輸出數字信號,當模塊在環境光線亮度達不到設定閾值時,DO端輸出高電平;當外界環境光線亮度超過設定閾值時,DO端輸出低電平。另一種模式是通過AO引腳輸出模擬信號可使系統實現多閾值設定。在本系統中使用光敏傳感器AO引腳輸出的模擬信號,將LI_AO引腳連接到STM32F103C8T6芯片的PA3引腳,把PA3引腳配置為ADC功能復用引腳,可得到相應的數字信號,即獲得當前環境光線亮度的反饋值。
3 " 智能家居端軟件設計
3.1 智能家居端軟件整體流程
對設計好的采集器進行軟件設計。合理的程序設計才能使整個系統正常運行。信號采集器的軟件設計主要由數據傳感器采集、負載控制數據與MQTT通信等部分組成。圖7為信號采集器系統流程圖,采集器開始工作之后進行系統初始化,檢測到已經聯網后進行傳感器數據采集以及推送數據,當串口收到數據時進行解析并應用負載控制數據進行負載控制。
3.2 系統測試
傳感器采集的數據經MQTT網絡通信推送至上位機之后,智能家居端與上位機實現聯網工作。經測試,當改變環境中的溫度、濕度或光照強度時,上位機對應的數據顯示也相應改變并能夠和智能家居端上顯示的數據一一對應。即操作上位機增大風扇速度時智能家居端的風扇轉速也相應加快;當點擊上位機中的RGB燈顏色板時智能家居端的RGB燈會亮起與之相同的顏色。以上的現象可證明該系統能夠正常運行。
4 " 結束語
本文介紹了基于MQTT協議的智能家居系統數據傳輸系統的設計。該系統設計結合基于單片機與各種傳感器制作的智能家居端、基于Ubuntu 16的阿里云MQTT服務器搭建以及通過Qt開發的PC上位機,構成了智能家居系統的簡單模型[7]。通過一定的嵌入式與上位機的開發,本系統能夠實現用戶在上位機界面中查看傳感器實時數據與修改負載控制參數來進行對外部硬件的控制等功能。
參考文獻
[4] 吳俊輝,吳桂初,陳沖,等.基于MQTT協議的物聯網網關設計[J].溫州大學學報(自然科學版),2019(4):54-61.
[2] 徐建光.物聯網背景下智能家居的發展途徑探究[J].科技經濟導刊,2019(22):13-14.
[6] 王曉東.基于STM32和ZigBee的智能家居下位機系統的研究與設計[D].曲阜:曲阜師范大學,2015.
[3] 呂志.基于ARM的嵌入式智能家居系統[D].合肥:中國科學技術大學,2019.
[5] 侯敏,劉倩,楊華勇,等.基于MQTT協議的海洋觀測數據推送系統[J].計算機工程與應用,2019(20):227-231.
[1] 楊振國,喬海強.基于STM32和MQTT的智能家居運程控制系統[J].電子世界,2019(21):186-187.
[8] 唐梁堯,劉琦鋒.基于Raspberry Pi與MQTT協議的智能家居管理系統的研究[J].信息與電腦(理論版),2019(15):64-66.
[7] 王怡,鄂旭.基于物聯網無線傳感的智能家居研究[J].計算機技術與發展,2015(2):234-237.