24小時(shí)聯(lián)系電話(huà):18217114652、13661815404
中文
- 您當前的位置:
- 首頁(yè)>
- 電子資訊>
- 技術(shù)專(zhuān)題>
- 使用 Arduino 的無(wú)線(xiàn)...
技術(shù)專(zhuān)題
使用 Arduino 的無(wú)線(xiàn)傳感器節點(diǎn)和遠程數據接收器
使用 Arduino 的無(wú)線(xiàn)傳感器節點(diǎn)和遠程數據接收器
無(wú)線(xiàn)傳感器節點(diǎn)是帶有無(wú)線(xiàn)發(fā)射器的傳感器節點(diǎn)。它具有一個(gè)或多個(gè)帶有放大器和信號調節電路或數字/智能傳感器的傳感元件、一個(gè)微控制器單元、調制器和帶天線(xiàn)的發(fā)射器,以及一個(gè)電池。它由電池或太陽(yáng)能供電,可感應溫度、陽(yáng)光、土壤濕度或震動(dòng)等,并將信號傳輸到遠程接收器。
許多這樣的傳感器節點(diǎn)以固定距離放置在一個(gè)大的地理區域中以覆蓋整個(gè)區域。它們都將數據發(fā)送到位于中央數據監控和存儲系統中的接收器。所有傳感器節點(diǎn)都定期傳輸數據(值)。接收器從所有這些節點(diǎn)接收數據并存儲和顯示它以用于監視和控制目的。
在農田中,自動(dòng)灌溉系統有許多遍布整個(gè)農場(chǎng)的土壤濕度傳感器節點(diǎn)。這些周期性地將土壤濕度水平傳輸到一個(gè)中央接收器,該接收器連接到監測和控制系統。如果某一特定區域的土壤濕度水平低于閾值水平,則該區域的水泵、電磁閥等將自動(dòng)打開(kāi)。因此,整個(gè)農場(chǎng)所需的土壤濕度水平得以維持。
在兩國之間的邊界處,可以將帶有 PIR 接近傳感器的傳感器節點(diǎn)放置在固定距離處,以檢測邊界處的任何運動(dòng)并向控制站發(fā)送警告/警報消息。
對于溫室,需要保持適當的溫度、濕度和陽(yáng)光。因此,它配備了許多傳感器節點(diǎn),可以感知溫室內不同位置的溫度、濕度和陽(yáng)光,并定期將數據發(fā)送到中央控制室。中央控制室根據收集的傳感器數據增加/減少冷卻、濕度或光照強度。
在該項目中,使用的多個(gè)傳感器是數字濕度和溫度傳感器、感測環(huán)境光的光敏電阻器 (LDR) 和感測土壤水分含量的土壤濕度傳感器。該項目還使用 Arduino Nano 作為微控制器 (MCU) 和 433MHz ASK RF 發(fā)射器模塊??梢杂泻芏噙@樣的傳感器節點(diǎn),但這里只使用兩個(gè)這樣的節點(diǎn)。
接收器包括 433MHz ASK RF 接收器模塊、實(shí)時(shí)時(shí)鐘 (RTC) 模塊和 Arduino Nano。兩個(gè)傳感器節點(diǎn)都傳輸溫度、濕度、環(huán)境光和土壤含水量的感測值數據。接收器接收來(lái)自?xún)蓚€(gè)傳感器的值(共八個(gè)值)并將它們提供給計算機,計算機顯示這些值并存儲以備將來(lái)使用。
如圖 1 中項目的框圖所示,有兩個(gè)不同的部分——發(fā)射器(傳感器節點(diǎn))和遠程數據接收器。傳感器節點(diǎn)由不同的傳感器、微控制器、射頻發(fā)射器和電池組成。
圖 1:項目框圖
傳感器
DHT11 是一種智能傳感器,可感應周?chē)臏囟群蜐穸炔⒋藬祿l(fā)送到微控制器。LDR 感應環(huán)境光,土壤濕度傳感器感應土壤水分含量。
微控制器
Arduino Nano 板用作微控制器,從所有三個(gè)傳感器讀取數據并使用 RF 發(fā)射器進(jìn)行傳輸。
射頻發(fā)射器
具有 433MHz 載波頻率的基于 ASK 的射頻發(fā)射器模塊用于調制傳感器數據并將其傳輸到接收器。
電池
6V 或 9V 電池用于為完整的傳感器節點(diǎn)提供電源。
LED 閃爍表示傳感器節點(diǎn)處于活動(dòng)狀態(tài),并且正在傳輸數據。
遠程數據接收器只有射頻接收器模塊和微控制器。
射頻接收器
具有 433MHz 載波頻率的基于 ASK 的 RF 接收器模塊用于解調和接收由傳感器節點(diǎn)的 RF 發(fā)射器模塊傳輸的數據。
微控制器。Arduino Nano 板用作微控制器,從 RF 接收器模塊獲取數據并將其提供給計算機,計算機將其存儲以備將來(lái)使用。
接收器中的 LED 閃爍表示接收器處于活動(dòng)狀態(tài)并且正在接收數據。
傳感器節點(diǎn)(發(fā)射機)
圖 2:無(wú)線(xiàn)傳感器節點(diǎn)的電路圖
如圖2中傳感器節點(diǎn)的電路圖所示,發(fā)射器電路中只有五個(gè)主要組件:
1. 具有三個(gè)接口引腳的傳感器 DHT11:Vcc、Gnd 和數據輸出。Vcc 引腳由 Arduino 板提供 5V 電源,Gnd 引腳連接到公共地。數據輸出引腳連接到 Arduino Nano 板的數字引腳 D10。它被上拉電阻R3拉高,如圖2所示。
2. 土壤濕度傳感器 SS1,具有三個(gè)接口引腳:Vcc、Gnd 和 A0。Vcc 引腳由 Arduino Nano 板提供 5V 電源,Gnd 引腳連接到公共地。SIG/A0 引腳是傳感器的模擬輸出,連接到 Arduino Nano 板的模擬輸入引腳 A1。
3. LDR1,它與一個(gè) 10 千歐電阻器 (R2) 以下拉配置連接。它的輸出連接到 Arduino Nano 板的模擬輸入引腳 A0。
4. 433MHz 射頻發(fā)射器模塊 (TX1),具有四個(gè)接口引腳:Vcc、Gnd、Data 和 Antenna。Vcc 引腳連接到 Arduino 板的 5V 輸出,Gnd 連接到公共地。數據引腳連接到 Arduino 板的數字引腳 D11。天線(xiàn) (ANT.1) 由直徑 1mm、長(cháng) 35cm 的銅線(xiàn)(單芯)繞制而成,該銅線(xiàn)連接到天線(xiàn)引腳。
5. LED(LED1),通過(guò)限流電阻R1連接到數字引腳D12。
使用 9V 電池或穩壓電源為 Arduino 板供電。Arduino 板的 Vin 引腳連接到電池,因此板載 7805 穩壓芯片產(chǎn)生 5V 電源,提供給 DHT11 和 433MHz 射頻發(fā)射器模塊(TX1)。
傳感器節點(diǎn)定期檢測溫度、濕度、土壤濕度和環(huán)境光并傳輸這些值。但是,如框圖所示,可能有任意數量的傳感器節點(diǎn)。他們都會(huì )傳遞他們的價(jià)值觀(guān)??赡軙?huì )發(fā)生多個(gè)節點(diǎn)同時(shí)傳輸數據的情況。另外,接收方如何知道接收到的數據來(lái)自哪個(gè)節點(diǎn)?
為了克服這些問(wèn)題,所有傳感器節點(diǎn)都在時(shí)間上同步,這樣兩個(gè)節點(diǎn)就不會(huì )同時(shí)傳輸。但如果發(fā)生這種情況,接收器將接受任何一個(gè)傳感器數據。此外,所有節點(diǎn)都被分配了編號(例如,從 1 到 N)。在他們傳輸數據之前,他們傳輸他們的節點(diǎn)號。因此,接收器知道數據來(lái)自哪個(gè)傳感器節點(diǎn)。
DHT11 傳感器可提供準確且經(jīng)過(guò)校準的溫度和濕度測量值。它為兩種測量提供直接的數字值。Arduino 微控制器讀取這些值并將它們轉換為字符形式 (ASCII)。
隨著(zhù)落在 LDR1 上的環(huán)境光增加,其電阻降低,模擬電壓輸出增加。因此,LDR1 的模擬輸出電壓與環(huán)境光成正比。Arduino 將此模擬電壓轉換為數字值(0 到 1023 之間)并將其映射到 0 到 99% 之間。最后,它將此百分比值轉換為 ASCII 字符。
土壤水分傳感器 (SS1) 產(chǎn)生與土壤水分含量成反比的模擬電壓輸出。這意味著(zhù)它的輸出電壓隨著(zhù)土壤水分含量的增加而降低。Arduino 將此模擬電壓轉換為數字值(0 到 1023 之間)并將其映射到 0 到 99% 之間。最后,它將此百分比值轉換為 ASCII 字符。
然后這些數據通過(guò)Arduino的引腳D11發(fā)送到RF發(fā)射器模塊(TX1)。
TX1 得到這 10 個(gè)字符的字符串(我們可以稱(chēng)它為數據包),使用 433MHz 載波調制它并通過(guò)天線(xiàn) ANT1 傳輸它。每次發(fā)送數據包時(shí),微控制器都會(huì )使 LED1 閃爍以指示正在發(fā)送數據。此循環(huán)在每個(gè)設定的時(shí)間段(例如 10 秒)后不斷重復。
遠程數據接收器
圖 3:遠程數據接收器電路圖
如圖3遠程數據接收器電路圖所示,該接收器電路只有三個(gè)主要元件:
1. 433 MHz RF 接收器模塊 RX1,具有四個(gè)接口引腳:Vcc、Gnd、數據輸出和天線(xiàn)。Vcc 引腳連接到 Arduino 板的 5V 輸出,Gnd 連接到公共地。數據引腳連接到 Arduino 板的數字引腳 D12。天線(xiàn)(ANT.2)與發(fā)射端相同,連接到天線(xiàn)引腳。
2、這里使用的RTC模塊是DS1307 RTC芯片,有四個(gè)接口引腳:Vcc、Gnd、SDA和SCL。Vcc 引腳連接到 Arduino 板的 5V 輸出,Gnd 連接到公共地。SDA 和 SCL 引腳用于面向 TWI (IIC) 字節的數據傳輸。它們分別連接到 Arduino Nano 板的 A4 (SDA) 和 A5 (SCL) 引腳。
3. LED(LED2),通過(guò)限流電阻R4連接到Arduino的數字引腳D10。
Arduino Nano 板和 RF RX1 模塊通過(guò) USB 電纜從中央存儲系統計算機獲得電源。Arduino Nano 板還使用相同的 USB 電纜記錄數據并與計算機通信。
遠程數據接收器的工作和操作可以通過(guò)以下步驟來(lái)理解:
接收器首先檢查 RTC 是否正在運行并給出正確的日期和時(shí)間。如果 RTC 正在運行,Arduino 會(huì )在串行監視器上顯示當前時(shí)間。
RF RX1 模塊從每個(gè)節點(diǎn)接收數據包。它解調這些數據包并將其提供給 Arduino 微控制器。
微控制器獲取數據包并從每個(gè)數據包中提取所有四個(gè)值:環(huán)境光、土壤水分含量、溫度和濕度以及節點(diǎn)編號。
它作為節點(diǎn) x 通過(guò) USB 串行發(fā)送以下數據到計算機:
土壤水分:XX %
光:XX%
濕度:XX%
溫度:XX°C
微控制器使 LED2 閃爍以指示正在接收數據。
此外,每次 Arduino 從任何傳感器節點(diǎn)獲取數據時(shí),它都會(huì )從 RTC 模塊讀取時(shí)間和日期并將其串行發(fā)送到計算機。因此,傳感器節點(diǎn)數據值與時(shí)間和日期一起打印。
帶有時(shí)間和日期的所有四個(gè)傳感器數據值按順序顯示在串行監視器上。
任何時(shí)候從任何節點(diǎn)接收到的每個(gè)數據包都會(huì )重復此過(guò)程。由于所有節點(diǎn)在時(shí)間上同步,它們一個(gè)接一個(gè)地依次傳輸數據。
接收器從所有節點(diǎn)一一獲取數據,并在設定的時(shí)間段后更新任何節點(diǎn)的讀數。
首次打開(kāi) RTC 時(shí),必須使用 rtc.adjust ( ) 函數(在程序中給出的注釋?zhuān)┰O置其當前日期和時(shí)間。一旦為 RTC 設置了日期和時(shí)間,我們必須再次從程序中注釋掉 rtc.adjust ( ) 函數并再次上傳程序。因此,接收器程序將在 Arduino Nano 板中上傳兩次。
有兩個(gè)源代碼:用于傳感器節點(diǎn)的 Labtesttxnode.ino 代碼和用于接收器的 LabtestRx.ino 代碼。Board1 中的 Labtesttxnode.ino 代碼用于從傳感器收集數據并處理數據。Board2 中的 LabtestRx.ino 代碼用于在串口監視器上顯示節點(diǎn)傳輸的時(shí)間、日期和狀態(tài)。在上傳源代碼之前,您需要包含相關(guān)庫 DHT.zip、RTClib.zip 和 VirtualWire.zip。
構建和測試
變送器(傳感器節點(diǎn))的實(shí)際尺寸 PCB 布局如圖 4 所示,其元件布局如圖 5 所示。在 PCB 上組裝電路后,將 9V DC 連接到 CON1。
圖 4:傳感器節點(diǎn)的 PCB 布局
圖 5:圖 4 中 PCB 的元件布局
接收器的實(shí)際尺寸 PCB 布局如圖 6 所示,其元件布局如圖 7 所示。 在 PCB 上組裝電路后,將電路板連接到筆記本電腦或臺式計算機,以串行方式監控從各個(gè)節點(diǎn)發(fā)送的數據在 Arduino IDE 中監控。
圖 6:接收器的 PCB 布局
圖 7:圖 6 中 PCB 的元件布局