基于Arduino IDE的ESP32 LoRa通信
物聯(lián)網行業(yè)引入了許多技術,但它們都不適合物聯(lián)網設備,因為它們需要在不使用太多功率的情況下遠距離傳輸信息,直到引入LoRa技術。LoRa技術可以實現(xiàn)超低功耗的超遠距離傳輸。根據(jù)行業(yè)分析公司IHS Market的數(shù)據(jù),到2023年,43%的LPWAN連接將基于LoRa。LoRa技術在智能城市、智能家居、智能農業(yè)、智能計量、智能供應鏈和物流應用方面具有靈活性。
之前我們了解了LoRa技術以及SX1278 LoRa模塊與Arduino的接口?,F(xiàn)在我們將替換Arduino,并使用ESP32與SX1278 LoRa模塊。在這里,兩個LoRa模塊將與兩個ESP32板接口,以發(fā)送和接收從一個板到另一個板的數(shù)據(jù)包。ESP32是一種非常流行的Wi-Fi收發(fā)器和微控制器,通過構建在其上的各種物聯(lián)網應用程序了解更多關于ESP32及其工作的信息。
組件的要求
?ESP32 (2)
?LoRa -02 SX1278模塊(2)
?16*2液晶顯示模塊(2個)
線路圖
下面給出了基于LoRa ESP32的發(fā)射器和接收器的電路圖。在這個項目中,我們將使用LoRa SX1278模塊在兩個ESP32模塊之間交換數(shù)據(jù)。發(fā)送端LoRa模塊將發(fā)送一個帶有計數(shù)器的“Hello”給接收端LoRa。該信息可以很容易地替換為任何傳感器數(shù)據(jù)。
接口LoRa與ESP32-發(fā)射端
在發(fā)射端,ESP32連接LoRa模塊和16*2 LCD Display。這里使用I2C模塊將LCD與ESP32連接起來。ESP32與LoRa和16x2 LCD模塊的接口如下圖所示。一個按鈕也與ESP32接口,開始發(fā)送數(shù)據(jù)到接收器。
下表給出了完整的連接。
LoRa SX1278與ESP32接收端接口
對于接收端,我們使用帶有LoRa收發(fā)模塊和16×2 LCD模塊的ESP32。這里的LCD連接ESP32,沒有I2C。ESP32與LoRa和LCD模塊的接口如下圖所示
除了LCD模塊不使用I2C模塊連接ESP32外,其他連接方式相同。下表給出了完整的連接。
ESP32 LoRa發(fā)送器代碼
在文檔的末尾給出了LoRa發(fā)送端和接收端的完整代碼。這里我們將解釋一些重要的代碼片段。
有許多用于LoRa通信的庫。在這個項目中,我們使用的是Sandeep Mistry的LoRa庫。
首先,包括所有必需的庫。SPI.h用于ESP32和LoRa之間的SPI通信,LiquidCrystal_I2C.h用于ESP32和LCD I2C模塊之間的I2C通信。Wire.h庫允許I2C設備之間的通信。
之后,定義連接LoRa模塊的引腳。
然后,定義按鈕的引腳。
現(xiàn)在初始化一個計數(shù)器來計算發(fā)送的包;
更改LoRa.begin()函數(shù)的頻率。根據(jù)你的型號改變頻率。
我的LoRa模塊工作在433MHz頻率上。
現(xiàn)在設置同步字。接收方和發(fā)送方都應該使用相同的同步詞。
現(xiàn)在在void loop()中,讀取按鈕狀態(tài),如果按鈕狀態(tài)為高,則調用sendpacket()函數(shù)。
在sendpacket循環(huán)中,使用beginPacket()方法初始化一個數(shù)據(jù)包。羅拉。打印功能用于將數(shù)據(jù)寫入數(shù)據(jù)包。
ESP32 LoRa接收器代碼
LoRa接收代碼與發(fā)送代碼相似。唯一的區(qū)別是,我們不是在發(fā)送數(shù)據(jù)包,而是在接收數(shù)據(jù)包。
在void循環(huán)函數(shù)中,它使用LoRa.parsePacket()函數(shù)搜索新數(shù)據(jù)包。如果它發(fā)現(xiàn)了一個新數(shù)據(jù)包,它將使用LoRa.readString()函數(shù)讀取其內容,然后將其打印到串行監(jiān)視器上。
測試LoRa發(fā)送方和接收方
一旦硬件和程序準備好,在各自的ESP32模塊中上傳發(fā)送方和接收方代碼,并使用適配器或USB電纜為它們供電。發(fā)射器和接收器部分都有16x2 lcd。連接到發(fā)送端的LCD將顯示正在發(fā)送的值,而接收端的LCD將顯示帶有RSSI值的接收值。RSSI代表接收信號強度指標。這個值總是負值;在我們的例子中,溫度在-68左右。這個值越接近零,你的信號強度就越強。
本文編譯自iotdesignpro