劉嘯松
(長安大學信息工程學院,西安710010)
短距離通信技術中,無線數據傳輸模塊的傳輸誤碼率高,可靠性差;ZigBee 以低功耗、自組網的特點而受到物聯網的關注,但是專用協議無線網絡,傳輸速率低,開發難;WiFi 是以太網的一種無線擴展技術,用戶可以共享寬帶,但是其傳輸速率低,在此基礎上發展起來的WIGIG 技術,傳輸速率可以達到1Gbps 以上,但是不能穿過墻壁,且功耗高;藍牙技術已進入低功耗時代,能在包括移動電話、PDA、無線耳機、筆記本電腦、相關外設等眾多設備之間進行無線信息交換。但是這些短距離技術覆蓋范圍有限,對于大范圍或移動性布局的物聯網設備無能為力[1]。
GPRS 允許用戶在端到端分組模式下發送和接收數據,而不需要利用電路交換模式的網絡資源,從而提供了一種高效、低成本的無線分組數據業務,和GSM 通信網絡相比,技術特點如下:①資源利用率高;②傳輸速率高(64~128Kbps);③接入時間短;④支持IP 協議和X.25 協議;⑤低成本,以通信的數據量為主要依據進行計費。
WiFi 最主要的優勢在于不需要布線,可以不受布線條件的限制,發射信號功率低于100mw,低于手機發射功率。WiFi具有如下技術特點:更寬的帶寬、更強的射頻信號、更低的功耗、改進的安全性。
從覆蓋范圍、傳輸速率、基本業務類別、可移動速率、前向擴展、演進走向等多方面綜合分析,本設計提出一種基于WiFi和GPRS 的DHT11 溫濕度遠程監測系統,具有傳輸誤碼率低、成本低及覆蓋范圍廣等優點,并且可與監測人員的手機綁定,實現隨時、隨地地移動監測。設計主要內容包括:①利用嵌入式開發技術、TCP/IP 網絡協議等,設計出了基于OneNET 的環境監控系統,該系統以OneNET 為協調中心,實現了環境變量檢測數據上傳,與控制命令下達的閉環控制系統。②設計開發了以HTTP 協議為接入方式、以WiFi 連接和GPRS 網絡作為數據傳輸渠道的智能終端,外接溫濕度傳感器,使終端具有感知能力。③增加了電源對系統進行供電。
溫濕度遠程監測系統是在物聯網下,可以通過PC、手機等移動設備端實時監測溫濕度值,能夠實時采集溫度和濕度,溫度的監測范圍為-20~+80℃,測量精度為±0.5℃,濕度的監測范圍為0%RH~100%RH,測量精度為±3%RH。系統的設計應用需求有系統低成本要求、系統低功耗要求、系統穩定性要求和系統實時性要求。
系統的整體設計流程包括:①各種通信方案的比較、方案確定及傳感器選型;②系統硬件數據處理電路、低功耗方案確定、系統程序功能實現;③OneNet 物聯網云平臺、API 接口開發。
本系統的數據采集和發送使用的編程工具是C 語言和Keil 編輯器。在使用電腦或手機在服務端查看遠程監測的溫濕度系統時,嵌入式軟件必須與上文中的硬件系統緊密結合,從而實現溫濕度的實時監測。
本系統設計采用接受OneNET 云服務平臺指令,與定時器定時發送兩種方式來發送溫濕度數據。判斷是否連接上WiFi,當未搜索到默認WiFi 時,可以由用戶連接ESP-01S 的AP,通過訪問192.168.4.1 對ESP-01S 進行配置。若當前無法使用WiFi,則轉到STM32 作為控制器的GPRS 通信模式。進行系統初始化,包括所有外設的復位,定時器的初始化,配置系統時鐘,輸入輸出口的初始化,設置當前時間。然后通過“AT”指令與服務端口嘗試握手連接,保證指令能夠發送成功。判斷定時時間到或者收到發送指令時,獲取傳感器數據并發送給服務器,判斷數據是否發送成功,若發送成功,獲取當前時間并重新判斷。否則,重新獲取傳感器數據并發送到服務器。
DHT11 是一款含有已校準數字信號輸出的溫濕度復合傳感器。DATA 用于微處理器與DHT11 之間的通訊與同步,單總線數據格式,單詞通訊時間為4ms 左右,數據分小數和整數部分。
數據的GPRS 通信主要是對GA6 模塊進行控制,主要包括握手程序、發送數據程序、數據監測服務程序等。
①握手連接。在與GA6 模塊進行通信前需要先握手來判斷STM32 與GA6 模塊是否建立連接,以保證信息能夠傳輸成功。發送AT 指令,如果返回值為OK 則證明握手成功,否則程序無法往下進行而是繼續進行握手,直到成功為止。②AT 發送數據。通過STM32 的串口輸出AT 指令來控制GA6 模塊的相應動作,將模塊設置為透傳模式,這樣經過STM32 串口發送的數據在模塊連接TCP 成功之后可發送至模塊的串口上,模塊通過GPRS 自動將這些數據發送至服務端,有利于控制軟件流程[2]。
程序的WiFi 通信主要是對ESP-01S 進行控制,主要包括配置WiFi、構建AP、處理和上傳數據三部分。
①配置WiFi。ESP-01S 采用了事件響應的方式。ESP-01S可以設置自動連接,這里只需要調用固件庫中的函數就可以實現掉線重連,當配置的WiFi 有效時,ESP-01S 便能自動連入。可以結合監聽器用LED 顯示連接狀態。②構建AP。ESP-01S 在自身開放的AP 局域網中的默認IP 地址是192.168.4.1。給HttpServer 添加中間件,當訪問'/scanap'時,使用wifi.sta.getap()獲取AP 列表再轉換到JSON 格式返回。前端使用了輕量的Zepto.js 來搭建前端頁面,通過AJAX 來請求數據。③處理和上傳數據。溫濕度傳感器DHT11,通過對IO 管腳的讀寫,讀取傳感器數據,并通過WIFIAPI 將數據上傳到ONENET 平臺。在init.lua 腳本里面周期性通過dofile()函數來調用dht11.lua 函數來讀取數據。將讀取到的數據按照OneNET 平臺HTTP API 接口的要求打包成數據包,并通過WiFi 上傳到云平臺。
①關于WiFi 模塊與DHT11 模塊的測試。先通過手機或者電腦連接ESP-01S(微控制器)的AP,通關訪問192.168.4.1 來對ESP-01S 所要連接的WiFi 進行配置。訪問前端Web 頁面進行WiFi 的連接。可以手動輸入密碼,也可以掃描熱點然后進行選擇。連接上WiFi 后,ESP-01S 會自動獲取并處理DHT11 傳輸過來的數據,然后向OneNET 云平臺進行數據傳送,在手機端和網頁端進行結果查看,預測結果為當前環境中的溫度與濕度。由數據可以看出,傳送的數據與環境中的數據大致相等,結果無誤。②關于GPRS 模塊與USB 轉TTL 模塊的測試。GPRS模塊通過流量傳送數據,模擬DHT11 測試的數據,傳送給GPRS 模塊,通過AT 指令發送至OneNET 平臺。在手機與網頁端進行結果查看與預測結果接近。③關于STM32 模塊、GPRS模塊與DHT11 模塊的測試。先進行通信測試,電腦與STM32 之間的通信成功,STM32 能正確地將數據傳送給GPRS 模塊,并發送到云端。但GPRS 的數據回傳到STM32 的數據稍有問題,不能很好地展示當前的狀態和執行的指令。可以從串口中打印的數據看到,GPRS 可將接收到的數據發送到云平臺,不過會傳到STM32 的數據只能顯示指令,不能顯示指令的處理結果。