李翠梅 譚一柳
(1.江西科技師范大學,江西 南昌 330013;2.江西省水務集團有限公司,江西 南昌 330072)
將用于采集溫濕度數據的APP下載到手機、平板電腦等便攜式終端設備上,可充分發揮移動終端快捷便利的特點,它可隨時隨地實時檢測某一環境溫濕度情況,做到了生活上的便捷化、高效化。因此可憑借單片機、服務器與移動終端這三者之間的相互通信,設計出一種基于手機APP實現無線遠程智能檢測特定環境下的溫濕度系統,以滿足人們追求更為舒適的生活環境的美好愿望。
該系統整體方案可分為硬件部分和軟件部分,涉及控制層、通訊層和應用層等。系統硬件部分主要是由單片機和溫濕度采集數據模塊、聯網模塊和外圍設備組成。軟件部分主要分為單片機控制溫濕度采集系統、液晶屏顯示,并通過WIFI模塊將溫濕度數據發送至服務端,服務端將收到的溫濕度數據保存,手機安卓等移動端可從服務端下載數據并將獲取到的數據顯示出來。整個硬件設計框架如圖1所示,采用STM32單片機芯片、溫度檢測模塊DS18B20、濕度檢測模塊HR202,WIFI模塊ESP8266、2.8寸TFT LCD顯示屏等。
其主要設計原理是:STM32單片機采集溫度傳感器和濕度傳感器的數據,將數據進行處理后,通過WIFI模塊將數據上傳。因此,整個系統可劃分為三大部分:溫濕度采集模塊,數據上傳模塊和顯示 模塊。
1)溫濕度采集模塊:由DS18B20、HR202和STM32單片機組成,可以實時采集此環境下溫濕度信號的變化。
2)顯示模塊:通過單片機IO口驅動液晶顯示屏,實現實時同頻顯示單片機采集到的溫濕度數據。
3)服務器上傳模塊:通過STM32的UART引腳與WIFI模塊通信,發送數據至云服務器。

圖1 系統硬件整體框架圖

圖2 系統程序設計流程圖
溫濕度信號采集流程圖如圖2所示。其中,采樣周期(1s)由定時器Timer以中斷形式進行控制,即當中斷次數累加到一定數值后,STM32即通過向溫度模塊發出測量溫度命令,溫度模塊在接收到測量溫度命令后,開始進行相應測量,并在延遲85ms后將測量結果回傳至STM32,同時STM32控制濕度模塊進行濕度檢測,讀取到濕度值。當所有數據檢測完成時,打開ESP8266通過TCP/IP協議向服務器發送檢測到的數據。
2.2.1 MQTT協議介紹
MQTT即消息隊列遙測傳輸協議(后來改名為EMQ),此協議基于發布/訂閱(publish/subscribe)模式,是一種“輕量級”的通訊協議,該協議發布于1999年,是在TCP/IP協議基礎上構建得來。MQTT代碼極少和帶寬有限的特點,可為遠程設備的連接提供可靠的服務。MQTT低開銷、低帶寬占用、即時通訊等優點,使其較廣泛地應用在物聯網、移動通信等方面。同時MQTT為了支持ESP8266,為此專門推出獨有固件,只需要將編譯固件燒錄到ESP8266即可。

圖3 MQTT協議流程圖
MQTT協議中有三種身份:發布者、服務器、訂閱者(可以是手機客戶端或PC端)。其中,消息的發布者可以同時是訂閱者,消息的發布者和訂閱者都是手機客戶端,MQTT協議的實現需要客戶端和服務器的配合。
本項目用STM32作為發送客戶端,將MQTT協議(需要參數修改)移植到ESP8266當中,通過ESP8266將數據發送出去。同時對服務器搭建采用基于LINUX內核的CentOS6.8服務器專用系統,安裝MQTT協議至服務器上,再打開服務器,監聽端口,等待客戶端的數據傳輸。
2.2.2 ESP8266固件代碼編寫
根據官方手冊,需要對官方代碼進行修改。把STA_SSID和STA_PASS修改為自己的WiFI名和密碼;將MQTT_USER和MQTT_PASS修改為對應的MQTT服務器的用戶名和密碼;將MQTT_HOST和MQTT_PORT修改為MQTT服務器IP和PORT,目前是使用外網的MQTT服務器,所以是修改為自己服務器的IP地址,PORT是端口整數型為1883。
2.2.3 MQTT服務器搭建
服務器采用騰訊推出的ECS云服務器。騰訊云為推廣云+校園項目,對于在校學生有巨大優惠。購買完成后,進入控制臺,對云服務器進行設置。選擇操作系統為CentOS 6.8 64位。設置完成后在個人界面會顯示云服務器,查看云服務器IP地址記錄下來,設置好遠程連接帳號密碼,通過電腦-遠程桌面連接,即可連接至云服務器。
實驗結果表明:該系統實現了對特定工作環境的溫濕度遠程實時檢測。由DS18B20、HR202和STM32單片機組成溫濕度采集模塊,可以實時的采集溫濕度信號的變化,通過單片機IO口驅動顯示屏模塊實時顯示單片機采集過來的溫濕度數據,通過STM32的UART引腳與WIFI模塊通信,并將數據上傳至云服務器,服務端將收到的溫濕度數據保存,手機安卓等移動端可從服務端下載數據并將獲取到的數據顯示出來。