Arduino Uno與nRF24L01-無線發(fā)送和接收溫度和濕度數(shù)據(jù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
有各種無線通信技術(shù)用于構(gòu)建物聯(lián)網(wǎng)應(yīng)用,RF(射頻)是其中之一。nRF24L01是一款工作在2.4 - 2.5 GHz (ISM頻段)的單片無線電收發(fā)模塊。該收發(fā)模塊由一個(gè)完全集成的頻率合成器、一個(gè)功率放大器、一個(gè)晶體振蕩器、一個(gè)解調(diào)器、一個(gè)調(diào)制器和增強(qiáng)的ShockBurs協(xié)議引擎組成。輸出功率、頻率通道和協(xié)議設(shè)置可以通過SPI接口輕松編程。
收發(fā)模塊的工作電壓范圍為1.9V ~ 3.6V。它有內(nèi)置的關(guān)機(jī)和待機(jī)模式,使其省電和容易實(shí)現(xiàn)。
我們以前使用nRF24L01與Arduino來構(gòu)建一個(gè)手勢控制的機(jī)器人,在這里我們將簡單地將nRF24L01與Arduino Uno連接,以無線方式從DHT11傳感器發(fā)送和接收溫度和濕度數(shù)據(jù)。
Arduino Uno沒有任何內(nèi)置的無線通信支持,如藍(lán)牙或Wi-Fi,但它可以很容易地與其他Wi-Fi或無線模塊接口,如LoRa, nRF,藍(lán)牙,可用于構(gòu)建基于物聯(lián)網(wǎng)的應(yīng)用程序。在這里,我們使用Arduino與ESP8266, LoRa, 433 MHz RF模塊,nRF24L01模塊和藍(lán)牙建立物聯(lián)網(wǎng)項(xiàng)目的無線通信。我們還使用DHT11傳感器建立了一些基于物聯(lián)網(wǎng)的氣象站。
組件的要求
?Arduino Uno (2)
?nRF24L01 (2)
?16 * 2液晶
?LCD I2C模塊
?DHT11傳感器
NRF24L01收發(fā)模塊電路圖
基于Arduino nRF24L01的發(fā)射器和接收器的電路圖如下。在這里,我們使用nRF24L01模塊將溫度和濕度值從一個(gè)Arduino無線發(fā)送到另一個(gè)Arduino。為了獲得溫度和濕度值,我們使用連接到發(fā)送端Arduino的DHT11傳感器。發(fā)送Arduino將從DHT11獲取溫度和濕度值,然后通過nRF24L01模塊發(fā)送到另一個(gè)Arduino。這些濕度和溫度值將顯示在連接到接收端Arduino的16*2 LCD上。
nRF24L01與Arduino UNO發(fā)送端接口
發(fā)射端由Arduino UNO、nRF24L01模塊和DHT11傳感器組成。Arduino UNO與nRF24L01和DHT11的接口如下圖所示。Arduino不斷地從DHT11傳感器獲取數(shù)據(jù),并將其發(fā)送到nRF24L01發(fā)射器。然后,無線射頻發(fā)射器將數(shù)據(jù)傳輸?shù)江h(huán)境中。
nRF24L01與Arduino UNO接收端的接口
接收端由Arduino UNO、nRF24L01模塊和16*2 LCD模塊組成。接收端nRF模塊接收來自發(fā)射器的數(shù)據(jù)并將其發(fā)送給Arduino。Arduino與nRF24L01和LCD模塊的接口如下圖所示。
nRF24L01與Arduino UNO編程-發(fā)送和接收端
要將nRF24L01收發(fā)模塊與Arduino一起使用,首先要安裝nRF24L01庫。這里使用兩個(gè)nRF24L01模塊作為發(fā)送端和接收端,所以我們需要分別編寫兩個(gè)發(fā)送端和接收端代碼。除了發(fā)送和接收選項(xiàng)之外,這兩個(gè)程序是相同的。在發(fā)送端程序中,接收端選項(xiàng)將被注釋掉,在接收端程序中,發(fā)送端選項(xiàng)將被注釋掉。
首先,包括所有必需的庫文件。SPI庫用于nRF24L01與Arduino之間的SPI通信,DHT11庫用于計(jì)算溫度和濕度值。
然后定義通信的無線電管道地址和nRF發(fā)射機(jī)的CN和CSN引腳。
之后,我們將溫度和濕度變量聲明為復(fù)合變量結(jié)構(gòu)。在本程序中,h & t用于發(fā)送和接收來自RF模塊的數(shù)據(jù)。
在void設(shè)置函數(shù)中,我們將射頻模塊的數(shù)據(jù)速率初始化為至少250 Kbps。
在void loop函數(shù)內(nèi)部,從DHT11傳感器讀取溫濕度數(shù)據(jù),并將該數(shù)據(jù)保存為data。T和data。h變量。
在接收端程序中,使用void recvData函數(shù)接收發(fā)送的數(shù)據(jù)。
nRF24L01 Arduino發(fā)送器和接收器測試
一旦硬件和程序準(zhǔn)備好,在兩個(gè)Arduino模塊中上傳nRF24L01發(fā)射器和接收器代碼。發(fā)送模塊將溫度和濕度值發(fā)送給接收模塊。接收模塊將在其16x2 LCD上顯示,如下圖所示
這就是如何使用nRF24L01作為兩個(gè)arduino之間的無線通信介質(zhì)。
本文編譯自iotdesignpro