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