摘要:基於AM2303溫溼度傳感器、STC15F104W單片機和WiFi模塊設計了一種無線溫溼度檢測節點。介紹了AM2303及其通信協議、WiFi模塊及其組網特性等,並且給出了讀取AM2303數據的軟體流程。經測試,該節點通信距離遠,組網靈活,可很好地應用於糧庫糧情檢測等實際工作環境。
本文引用地址:http://www.eepw.com.cn/article/201610/309033.htm引言
隨著無線通信、嵌入式系統以及網絡等技術的快速發展,無線傳感器網絡在軍事和環境監測等領域得到了廣泛的應用。它由部署在檢測區域內的大量廉價的微型傳感器網絡節點組成,通過無線通信方式形成一個多跳的自組織網絡系統,用以協作地感知、採集和處理網絡覆蓋區域中被感知對象的信息,並發送給觀察者。
這是一種全新的信息獲取技術,在無線傳感器網絡中常用的無線通信技術包括藍牙、WiFi、ZigBee等。其中,藍牙技術協議複雜、開發成本高;ZigBee通信距離較短。而WiFi技術具有傳輸速率高、覆蓋範圍廣、組網成本低、與Internet網絡無縫連接等優點,在通信距離等方面與其他無線通信技術相比具有顯著的優勢,這使得該技術在溫溼度檢測領域應用中具有明顯優勢。
本文結合無線傳感器網絡的設計思想,設計了一種基於WiFi技術的溫溼度實時檢測終端節點。
1 節點硬體設計
節點硬體電路如圖1所示。硬體結構由數字溫溼度傳感器、WiFi通信模塊和單片機三個模塊組成。
1.1 AM2303溫溼度傳感器
本設計採用的數字溫溼度傳感器為廣州奧松電子有限公司生產的AM2303溫溼度傳感器。它是一款新型單總線傳感器,其內部包括一個電容式感溼元件和一個高精度測溫元件。溫度測量範圍為-40~+80℃,精度為±0.3℃;溼度測量範圍為0~99.9%RH,精度為±2%RH(25℃)。
相比市場上常見的SHT1x系列溫溼度傳感器,AM2303具有價格低、算法簡單等優點,並且具有低功耗、自動化校準、傳輸距離遠等特點。
1.1.1 引腳說明
AM2303引出3個引腳。其中,VDD、GND為電源引腳,供電3.5~5.5 V;SDA為數據線,用於與單片機STC15F104W進行通信。SDA引腳為三態結構,用於讀、寫傳感器數據。
1.1.2 通信協議
AM2303具體通信時序圖如圖2所示。採用簡化的單總線通信,節點對AM2303的控制和數據交換均由數據線完成。數據線一次傳送40位溫溼度數據,高位先出。
單片機向AM2303發送一次起始信號(圖中粗線所示區域)後,AM2303從休眠模式轉換到高速模式並發送響應信號,從數據線SDA串行送出檢測到的溫溼度數據,發送數據結束觸發一次信息採集,採集結束傳感器自動轉入休眠模式,直到下一次通信來臨。具體通信協議描述如下:
①單片機向AM2303發送起始信號,將數據線SDA拉低一段時間(至少800μs),然後釋放數據線,偵聽AM2303送出的響應信號。
②AM2303發出響應信號,將數據線SDA拉低80μs,再拉高80μs作為響應信號響應單片機。
③AM2303通過數據線SDA串行輸出40位數據,高位先出,發送的數據依次為溼度高8位、溼度低8位、溫度高8位、溫度低8位和8位校驗位。AM2303傳出的溼度和溫度值是實際溼度和溫度值的10倍,溫度最高位(位15)為符號位,置「1」表示負溫度,置「0」表示正溫度;溫度低15位(位14~位0)表示溫度值。校驗位為溼度高位、溼度低位、溫度高位和溫度低位之和。
④AM2303的數據線SDA輸出40位數據後,繼續輸出50μs低電平,然後轉為輸入狀態。由於上拉電阻作用,數據線變為高電子。AM2303內部再次測量溫溼度數據,並記錄數據,等待單片機再次發送起始信號。
1.1.3 位數據格式
位數據「0」、位數據「1」格式信號如圖3所示。AM2303發送完響應信號之後,由數據線SDA連續串行輸出40位數據。位數據「0」的格式為50μs的低電平加26~28μs的高電平。位數據「1」的格式為50 μs的低電平加70us的高電平。
1.2 WiFi通信模塊
本設計採用的WiFi通信模塊為有人科技有限公司生產的超低功耗嵌入式WiFi模組(USR-WiFi232-G)。該模塊提供了一種將用戶的物理設備連接到WiFi無線網絡上,並提供UART串口等接口傳輸數據的解決方案,提供了一體化的801.11/b/g/n WiFi的低功耗解決方案。USR-WiFi232-G是一款集成了所有WiFi功能的模塊,採用表貼封裝,配備有內置PCB天線、外置天線連接器。採用FCC/CE標準認證,頻率範圍為2.412~2.484 GHz,工作電壓範圍為3.6~3.1 V,在-40~85℃環境內可正常工作,使用內置天線時信號傳輸距離可達到150m,使用外置天線時則可達400 m。
1.2.1 WiFi無線組網
USR-WiFi232-G支持無線組網功能,既可以作為無線接入點(AP)實現無線網絡的中心節點功能,也可以作為無線站點(STA)實現無線網絡終端功能。
利用USR-WiFi232-G組網有基於AP的組網和基於AP+STA共存的組網兩種方式。基於AP的無線組網是一種基本的組網方式,由一個AP和多個STA組成,AP處於中心地位,多個STA之間通過AP轉發完成相互通信。USR-WiFi232-G支持基於AP+STA共存的組網方式,即模塊可同時支持一個AP接口和一個STA接口,如圖4所示。模塊的STA接口可以與路由器相連,並通過TCP連接與網絡中的伺服器相連,由此可通過網際網路實現遠程通信。同時模塊上的AP接口也是可用的,智慧型手機或PAD等可直接連接到AP接口上,控制串口設備或模塊與設備進行通信。這種無線組網模式為用戶的使用提供了更大的靈活性。
1.2.2 WiFi透明傳輸模式
USR-WiFi232-G支持串口透明傳輸模式,可以實現串口即插即用,從而最大程度降低用戶使用的複雜度。首次使用時需要對模塊進行配置,作為無線傳感器網絡節點使用時,需要通過PC的無線網卡連接USR-WiFi232-G,默認網絡名稱(SSID)為HF-A11X_AP。加入網絡後,在IE瀏覽器地址欄輸入http://10.10.100.254,在無線終端設置選項中,鍵入模塊要連接的無線接入點的SSID和密碼,並選擇自動獲取IP位址。
然後在模式選擇選項中設置USR-WiFi232-G模塊工作模式為AP+STA模式,保存後重新啟動模塊。打開智慧型手機或者PC的上位機終端,選擇客戶機(TCP client)模式,伺服器IP位址輸入自動分配給USR-WiFi232-G的地址,伺服器埠號為8899,此為模塊默認監聽的TCP埠號,點擊連接建立TCP連接,即可進行遠程數據收發。
1.3 STC15F104W單片機
本設計採用宏晶科技有限公司生產的STC15F104W單片機。該單片機工作電壓為3.8~5.5 V,採用增強型8051CPU內核,指令代碼完全兼容傳統51單片機,速度更快。片內128位元組RAM,1K EEPROM,4 KB Flash程序存儲器;內部高可靠復位,可徹底省掉外部復位電路;具有高精度R/C時鐘,內部時鐘為5~35 MHz可選。採用8引腳封裝,有2個普通16位重裝載定時器/計數器,共有6個通用I/O埠,可利用I/O口結合定時器實現串口功能(通常使用P3.0和P3.1埠)。該單片機價格便宜,單個售價少於2.0元,設計採用該系列單片機,完全可以滿足進行溫溼度檢測的要求。
2 節點軟體設計
2.1 讀取1位數據
單片機讀取一位數據流程如圖5所示。由於每位數據都有約50μs的低電平時隙和其後的高電平時隙兩部分,單片機將根據高電平時隙的長度確定當前位數據的取值。讀取數據時,單片機持續檢測數據線SDA狀態,當SDA變力高電平時,利用軟體延時約30 μs,然後再次檢測SDA電平狀態。若此耐SDA處於高電平狀態,則表示當前位數據為「1」,存儲當前位數據,等待SDA重新變為低電子狀態時,開始讀取下一位數據;若SDA處於低電子狀態,則表示當前位數據為「0」,存儲數據後開始讀取下一位數據。
2.2 讀取AM2303數據
單片機讀取AM2303數據採用KEIL C51實現,流程如圖6所示。AM2303上電後需等待2 s以越過不穩定狀態,期間單片機不能向其發送指令。讀取AM2303數據時,單片機通過I/O口向AM2303數據線SDA發送起始信號,待接收到響應信號後,依次從數據線SDA串行讀取溼度高8位、溼度低8位、溫度高8位、溫度低8位以及8位校驗位。
單片機通過判斷溼度高、低8位與溫度高、低8位之和是否等於校驗位,來確定所接收的溫溼度數據是否準確,校驗正確則將溫溼度數據通過串口送至WiFi模塊;否則重新獲取溫溼度數據。由於AM2303硬體原因,讀取間隔小於2 s可能導致讀取溫溼度數據不準確或通信不成功等情況,所以單片機連續兩次讀取溫溼度數據時間至少間隔2 s。
結語
本文介紹的溫溼度檢測節點作為無線溫溼度傳感器網絡節點可以實現靈活組網,並可針對現場溫溼度信息進行實技嗖狻Mü打開路由器網絡設置中的動態DHCP客戶端列表,獲取路由器分配給節點的IP位址。使用智慧型手機客戶端連接節點IP,選擇TCP Client模式,默認埠號8899,連接後即可接收節點數據。經測試,在無障礙物的室外環境,節點可接入約300m範圍內的路由器,並可穩定地通過路由器上傳溫溼度數據,數據傳輸錯誤出錯率很低。測試效果如圖7所示。
測試表明節點用於採集環境溫溼度數據,檢測距離遠並且運行穩定。該設計節點的通用性良好,組網方便,具有擴充能力與發展餘地,並可接入網際網路方便遠程測控與資源共享,具有較強的實用性。