基于Arduino IDE的ESP32 LoRa通信
扫描二维码
随时随地手机看文章
物联网行业引入了许多技术,但它们都不适合物联网设备,因为它们需要在不使用太多功率的情况下远距离传输信息,直到引入LoRa技术。LoRa技术可以实现超低功耗的超远距离传输。根据行业分析公司IHS Market的数据,到2023年,43%的LPWAN连接将基于LoRa。LoRa技术在智能城市、智能家居、智能农业、智能计量、智能供应链和物流应用方面具有灵活性。
之前我们了解了LoRa技术以及SX1278 LoRa模块与Arduino的接口。现在我们将替换Arduino,并使用ESP32与SX1278 LoRa模块。在这里,两个LoRa模块将与两个ESP32板接口,以发送和接收从一个板到另一个板的数据包。ESP32是一种非常流行的Wi-Fi收发器和微控制器,通过构建在其上的各种物联网应用程序了解更多关于ESP32及其工作的信息。
组件的要求
•ESP32 (2)
•LoRa -02 SX1278模块(2)
•16*2液晶显示模块(2个)
线路图
下面给出了基于LoRa ESP32的发射器和接收器的电路图。在这个项目中,我们将使用LoRa SX1278模块在两个ESP32模块之间交换数据。发送端LoRa模块将发送一个带有计数器的“Hello”给接收端LoRa。该信息可以很容易地替换为任何传感器数据。
接口LoRa与ESP32-发射端
在发射端,ESP32连接LoRa模块和16*2 LCD Display。这里使用I2C模块将LCD与ESP32连接起来。ESP32与LoRa和16x2 LCD模块的接口如下图所示。一个按钮也与ESP32接口,开始发送数据到接收器。
下表给出了完整的连接。
LoRa SX1278与ESP32接收端接口
对于接收端,我们使用带有LoRa收发模块和16×2 LCD模块的ESP32。这里的LCD连接ESP32,没有I2C。ESP32与LoRa和LCD模块的接口如下图所示
除了LCD模块不使用I2C模块连接ESP32外,其他连接方式相同。下表给出了完整的连接。
ESP32 LoRa发送器代码
在文档的末尾给出了LoRa发送端和接收端的完整代码。这里我们将解释一些重要的代码片段。
有许多用于LoRa通信的库。在这个项目中,我们使用的是Sandeep Mistry的LoRa库。
首先,包括所有必需的库。SPI.h用于ESP32和LoRa之间的SPI通信,LiquidCrystal_I2C.h用于ESP32和LCD I2C模块之间的I2C通信。Wire.h库允许I2C设备之间的通信。
之后,定义连接LoRa模块的引脚。
然后,定义按钮的引脚。
现在初始化一个计数器来计算发送的包;
更改LoRa.begin()函数的频率。根据你的型号改变频率。
我的LoRa模块工作在433MHz频率上。
现在设置同步字。接收方和发送方都应该使用相同的同步词。
现在在void loop()中,读取按钮状态,如果按钮状态为高,则调用sendpacket()函数。
在sendpacket循环中,使用beginPacket()方法初始化一个数据包。罗拉。打印功能用于将数据写入数据包。
ESP32 LoRa接收器代码
LoRa接收代码与发送代码相似。唯一的区别是,我们不是在发送数据包,而是在接收数据包。
在void循环函数中,它使用LoRa.parsePacket()函数搜索新数据包。如果它发现了一个新数据包,它将使用LoRa.readString()函数读取其内容,然后将其打印到串行监视器上。
测试LoRa发送方和接收方
一旦硬件和程序准备好,在各自的ESP32模块中上传发送方和接收方代码,并使用适配器或USB电缆为它们供电。发射器和接收器部分都有16x2 lcd。连接到发送端的LCD将显示正在发送的值,而接收端的LCD将显示带有RSSI值的接收值。RSSI代表接收信号强度指标。这个值总是负值;在我们的例子中,温度在-68左右。这个值越接近零,你的信号强度就越强。
本文编译自iotdesignpro