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