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