【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

这篇具有很好参考价值的文章主要介绍了【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于本教程:

ESP32 基础篇                                

1.ESP32简介                                                                

2.ESP32 Arduino 集成开发环境

3.VS 代码和 PlatformIO

4.ESP32 引脚

5.ESP32 输入输出

6.ESP32 脉宽调制

7.ESP32 模拟输入

8.ESP32 中断定时器

9.ESP32 深度睡眠

ESP32 协议篇

1.ESP32 网络服务器

2.ESP32 LoRa

3.ESP32 BLE

4.ESP32 BLE 客户端-服务器

5.ESP32 蓝牙

6.ESP32 MQTT

7.ESP32 ESP-NOW

8.ESP32 Wi-Fi

9.ESP32 WebSocket

10.ESP32 ESP-MESH

11.ESP32 邮箱

12.ESP32 短信

13.ESP32 HTTP 获取 POST

14.HTTP GET Web APIs

15.HTTP POST Web APIs

 ESP32 服务器篇

持续更新,关注博主不迷路!!!

 ESP32 传感器模块篇

持续更新,关注博主不迷路!!!

ESP32 终极实战篇

百余项ESP32实战项目,敬请关注!!!

使用 Arduino IDE 和 LoRa 的 ESP32——入门

在本教程中,我们将探讨 LoRa 的基本原理,以及如何使用 Arduino IDE 将其与 ESP32 一起用于物联网项目。为了帮助您入门,我们还将向您展示如何使用 RFM95 收发器模块创建简单的 LoRa 发送器和 LoRa 接收器。

什么是LoRa?

LoRa 是一种无线数据通信技术,它使用可由 Semtech LoRa 收发器芯片生成的无线电调制技术。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

这种调制技术允许少量数据的远程通信(这意味着低带宽)、高抗干扰性,同时最大限度地降低功耗。因此,它允许以低功率要求进行长距离通信。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

LoRa 频率

LoRa 使用全球可用的免许可频率。这些是使用最广泛的频率:

  • 欧洲 868 MHz
  • 北美 915 MHz
  • 亚洲 433 MHz 频段

LoRa应用

LoRa 远距离和低功耗特性使其非常适合电池供电的传感器和低功耗应用:

  • 物联网 (IoT)
  • 智能家居
  • 机器对机器通信
  • 以及更多…

因此,LoRa 是在线圈电池或太阳能供电的传感器节点上运行的一个不错的选择,可传输少量数据。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

请记住,LoRa 不适用于以下项目:

  • 需要高数据速率传输;
  • 需要非常频繁的传输;
  • 或者在人口稠密的网络中。

LoRa 拓扑结构

您可以在以下方面使用 LoRa:

 【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

  • 点对点通信
  • 或者搭建一个 LoRa 网络(以 LoRaWAN 为例)

点对点通信

在点对点通信中,两个支持 LoRa 的设备使用射频信号相互通信。

例如,这对于两个配备 LoRa 收发器芯片的 ESP32 板之间的数据交换非常有用,这些板彼此相距较远或在没有 Wi-Fi 覆盖的环境中。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

仅支持短距离通信的 Wi-Fi 或蓝牙不同,两个具有适当天线的 LoRa 设备可以远距离交换数据。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

您可以使用 LoRa 芯片轻松配置您的 ESP32,以在 200 米以上的距离可靠地传输和接收数据(您可以获得更好的结果,具体取决于您的环境和 LoRa 设置)。还有其他 LoRa 解决方案可以轻松达到 30 公里以上的范围。

LoRaWAN

您还可以使用 LoRaWAN 构建 LoRa 网络。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

 LoRaWAN 协议是一种低功耗广域网 (LPWAN) 规范,源自 LoRa 联盟标准化的 LoRa 技术。我们不会在本教程中探讨 LoRaWAN,但有关更多信息,您可以查看LoRa Alliance和The Things Network网站。

LoRa 如何在您的家庭自动化项目中发挥作用?

我们来看一个实际应用。

想象一下,您想测量田地中的湿度。虽然,它离你家不远,但它可能没有 Wi-Fi 覆盖。因此,您可以构建一个带有 ESP32 和湿度传感器的传感器节点,该节点每天使用 LoRa 将湿度读数发送一次或两次到另一个 ESP32

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

 后来的 ESP32 可以访问 Wi-Fi,它可以运行一个显示湿度读数的网络服务器。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

 这只是一个示例,用于说明如何在 ESP32 项目中使用 LoRa 技术。

ESP32 与 LoRa

在本节中,我们将向您展示如何使用 Arduino IDE 通过 ESP32 开始使用 LoRa。例如,我们将构建一个简单的 LoRa 发送器和一个 LoRa 接收器。

LoRa 发送器将发送一条“hello”消息,然后发送一个用于测试目的的计数器。此消息可以轻松替换为有用的数据,例如传感器读数或通知。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

要完成此部分,您需要以下组件:

2x ESP32 DOIT DEVKIT V1 开发板
2x LoRa 收发器模块 (RFM95)
RFM95 LoRa 分线板(可选)
跳线
面包板 或 条板
选择:2x TTGO LoRa32 SX1276 OLED

准备 Arduino IDE

Arduino IDE 有一个附加组件,可让您使用 Arduino IDE 及其编程语言对 ESP32 进行编程。如果您还没有准备好 Arduino IDE 以使用 ESP32,请按照之前进行操作。

安装 LoRa 库

有几个库可用于使用 ESP32 轻松发送和接收 LoRa 数据包。在这个例子中,我们将使用sandeep mistry 的 arduino-LoRa 库。

打开您的 Arduino IDE,转到Sketch > Include Library > Manage Libraries并搜索“ LoRa ”。选择下图中突出显示的 LoRa 库,并安装它。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

获取 LoRa 收发器模块

要使用 ESP32 发送和接收 LoRa 消息,我们将使用 RFM95 收发器模块RFM95 收发器模块RFM95 收发器模块。所有 LoRa 模块都是收发器,这意味着它们可以发送和接收信息。你需要其中的 2 个。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

您还可以使用其他兼容模块,例如基于 Semtech SX1276/77/78/79 的电路板,包括:RFM96W、RFM98W 等……

准备 RFM95 收发器模块

如果您有内置 LoRa 的 ESP32 开发板,则可以跳过此步骤。

RFM95 收发器不适合试验板。一排普通的 2.54mm 接头插针不适合收发器插针。连接之间的空间比平时短。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

有几个选项可用于访问收发器引脚。

  • 您可以将一些电线直接焊接到收发器上;
  • 断开插头引脚并分别焊接每一个;
  • 或者您可以购买一个分线板,使引脚面包板更加友好。

我们已经将接头焊接到模块,如下图所示。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

通过这种方式,您可以使用常规跳线访问模块的引脚,甚至可以放置一些插头引脚将它们直接连接到条形板或面包板上。

天线

RFM95 收发器芯片需要一个连接到 ANA 引脚的外部天线。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

您可以连接一个“真正的”天线,也可以使用如下图所示的导线自己制作一个。一些分线板带有一个特殊的连接器,用于添加合适的天线。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

导线长度取决于频率:

  • 868 兆赫:86.3 毫米(3.4 英寸)
  • 915 兆赫:81.9 毫米(3.22 英寸)
  • 433 兆赫:173.1 毫米(6.8 英寸)

对于我们的模块,我们需要使用直接焊接到收发器的 ANA 引脚的 86.3 mm 电线。请注意,使用合适的天线会扩大通信范围。

重要提示:您必须将天线连接到模块。

连接 RFM95 LoRa 收发器模块

RFM95 LoRa 收发模块使用 SPI 通信协议与 ESP32 通信。因此,我们将使用 ESP32 默认的 SPI 引脚。将两个 ESP32 板连接到相应的收发器模块,如下一个示意图所示:

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

下面是 RFM95 LoRa 收发模块和 ESP32 之间的连接:

  • ANA:天线
  • GND: GND
  • DIO3:不接
  • DIO4:不接
  • 3.3伏: 3.3V
  • DIO0:   GPIO 2
  • DIO1:不连接
  • DIO2:不接
  • GND:不接
  • DIO5:不接
  • RESET:GPIO 14
  • NSS:GPIO 5
  • SCK:GPIO 18
  • MOSI:GPIO 23
  • MISO:GPIO 19
  • GND:不接

注意: RFM95 收发模块有 3 个 GND 引脚。使用哪一个并不重要,但您至少需要连接一个。

    

出于实际原因,我们在条板上制作了这个电路。它更容易处理,而且电线不会断开。如果您愿意,可以使用面包板。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

LoRa 发送器代码

打开您的 Arduino IDE 并复制以下代码。此草图基于 LoRa 库中的示例。它使用 LoRa 每 10 秒传输一次消息。它发送一个“hello”,后跟一个在每条消息中递增的数字。

  
#include <SPI.h>
#include <LoRa.h>

//define the pins used by the transceiver module
#define ss 5
#define rst 14
#define dio0 2

int counter = 0;

void setup() {
  //initialize Serial Monitor
  Serial.begin(115200);
  while (!Serial);
  Serial.println("LoRa Sender");

  //setup LoRa transceiver module
  LoRa.setPins(ss, rst, dio0);
  
  //replace the LoRa.begin(---E-) argument with your location's frequency 
  //433E6 for Asia
  //866E6 for Europe
  //915E6 for North America
  while (!LoRa.begin(866E6)) {
    Serial.println(".");
    delay(500);
  }
   // Change sync word (0xF3) to match the receiver
  // The sync word assures you don't get LoRa messages from other LoRa transceivers
  // ranges from 0-0xFF
  LoRa.setSyncWord(0xF3);
  Serial.println("LoRa Initializing OK!");
}

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  //Send LoRa packet to receiver
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();

  counter++;

  delay(10000);
}

让我们快速浏览一下代码。

它首先包含所需的库。

#include <SPI.h>
#include <LoRa.h>

然后,定义 LoRa 模块使用的引脚。如果您遵循了之前的原理图,则可以使用代码中使用的引脚定义。如果您使用的是内置 LoRa 的 ESP32 板,请检查板中 LoRa 模块使用的引脚并进行正确的引脚分配。

#define ss 5
#define rst 14
#define dio0 2

你初始化counter从 0 开始的变量;

int counter = 0;

在里面setup(),您初始化串行通信。

Serial.begin(115200);
while (!Serial);

设置 LoRa 模块的引脚。

LoRa.setPins(ss, rst, dio0);

并以指定频率初始化收发模块。

while (!LoRa.begin(866E6)) {
  Serial.println(".");
  delay(500);
}

您可能需要更改频率以匹配您所在位置使用的频率。选择以下选项之一:

  • 433E6
  • 866E6
  • 915E6

LoRa 收发器模块侦听其范围内的数据包。数据包来自哪里并不重要。为确保您只接收来自发送方的数据包,您可以设置一个同步字(范围从 0 到 0xFF)。

LoRa.setSyncWord(0xF3);

接收方和发送方都需要使用相同的同步字。这样,接收器将忽略任何不包含该同步字的 LoRa 数据包。

接下来,在loop()你发送 LoRa 数据包。你初始化一个数据包beginPacket()方法。

LoRa.beginPacket();

 您使用print()方法。正如您在以下两行中看到的,我们发送了一条问候消息,然后是计数器。

LoRa.print("hello ");
LoRa.print(counter);

 然后,关闭数据包endPacket()方法。

LoRa.endPacket();

 此后,计数器消息在每个循环中递增 1,每 10 秒发生一次。

counter++;
delay(10000);

测试发件人代码

将代码上传到您的 ESP32 开发板。确保选择了正确的板和 COM 端口。

之后,打开串行监视器,然后按下 ESP32 启用按钮。您应该会看到一条成功消息,如下图所示。计数器应每 10 秒递增一次。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

LoRa 接收器代码

现在,拿起另一个 ESP32 并上传以下代码(LoRa 接收器代码)。此代码使用您定义的同步字侦听 LoRa 数据包,并在串行监视器和 RSSI 上打印数据包的内容。RSSI 测量相对接收信号强度。

#include <SPI.h>
#include <LoRa.h>

//define the pins used by the transceiver module
#define ss 5
#define rst 14
#define dio0 2

void setup() {
  //initialize Serial Monitor
  Serial.begin(115200);
  while (!Serial);
  Serial.println("LoRa Receiver");

  //setup LoRa transceiver module
  LoRa.setPins(ss, rst, dio0);
  
  //replace the LoRa.begin(---E-) argument with your location's frequency 
  //433E6 for Asia
  //866E6 for Europe
  //915E6 for North America
  while (!LoRa.begin(866E6)) {
    Serial.println(".");
    delay(500);
  }
   // Change sync word (0xF3) to match the receiver
  // The sync word assures you don't get LoRa messages from other LoRa transceivers
  // ranges from 0-0xFF
  LoRa.setSyncWord(0xF3);
  Serial.println("LoRa Initializing OK!");
}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available()) {
      String LoRaData = LoRa.readString();
      Serial.print(LoRaData); 
    }

    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}

这代码与上一张非常相似。只有loop()是不同的。

您可能需要更改频率和 sycnword 以匹配发件人草图中使用的那个。

在里面loop()该代码使用parsePacket()方法。

int packetSize = LoRa.parsePacket();

如果有新数据包,我们会在它可用时读取它的内容。

要读取传入的数据,您可以使用readString()方法。

while (LoRa.available()) {
  String LoRaData = LoRa.readString();
  Serial.print(LoRaData); 
}

传入的数据保存在LoRa数据变量并在串行监视器中打印。

最后,接下来的两行代码以 dB 为单位打印接收到的数据包的 RSSI。

Serial.print("' with RSSI ");
Serial.println(LoRa.packetRssi());

测试 LoRa 接收器代码

将此代码上传到您的 ESP32。此时,您应该有两个具有不同代码的 ESP32 板:发送器和接收器。

打开 LoRa 接收器的串行监视器,然后按下 LoRa 发送器启用按钮。您应该开始在接收器上获取 LoRa 数据包。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

恭喜!您已经使用 ESP32 构建了一个 LoRa 发送器和一个 LoRa 接收器。

更进一步

现在,您应该测试您所在区域的发送方和接收方之间的通信范围。通信范围根据您的环境而有很大差异(如果您住在高楼林立的农村或城市地区)。要测试通信范围,您可以在 LoRa 接收器上添加一个 OLED 显示器,然后出去散散步,看看您可以通信多远(这是未来教程的主题)。

【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】

 在此示例中,我们只是发送一条问候消息,但我们的想法是用有用的信息替换该文本。

总结

总之,在本教程中,我们向您展示了 LoRa 技术的基础知识:文章来源地址https://www.toymoban.com/news/detail-442847.html

  • LoRa 是一种无线电调制技术;
  • LoRa允许少量数据的远距离通信,并且需要低功耗;
  • 您可以在点对点通信或网络中使用 LoRa;
  • 如果您想监控未被 Wi-Fi 网络覆盖且相距数米的传感器,LoRa 会特别有用。

到了这里,关于【ESP32最全学习笔记(协议篇)——2.ESP32 LoRa】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ESP32最全学习笔记(基础篇)——2.ESP32 Arduino 集成开发环境】

    关于本教程: 1.ESP32简介                                                                 2.ESP32 Arduino 集成开发环境 ☑ 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输入 8.ESP32 中断定时器 9 .ES P32 深度睡眠 ESP32 网络

    2024年02月10日
    浏览(49)
  • 【ESP32最全学习笔记(基础篇)——5.ESP32 数字输入和数字输出(Arduino IDE)】

    关于本教程: 1.ESP32简介                                                                 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 ☑ 6.ESP32 脉宽调制 7.ESP32 模拟输入 8.ESP32 中断定时器 9 .ESP32 深度睡眠 ESP32 网络

    2024年02月01日
    浏览(90)
  • 【ESP32最全学习笔记(基础篇)——7.ESP32 ADC – 使用 Arduino IDE 读取模拟值】

    关于本教程: 1.ESP32简介                                                                 2.ESP32 Arduino 集成开发环境 3.VS 代码和 PlatformIO 4.ESP32 引脚 5.ESP32 输入输出 6.ESP32 脉宽调制 7.ESP32 模拟输入 ☑ 8.ESP32 中断定时器 9 .ESP32 深度睡眠 ESP32 网络

    2023年04月15日
    浏览(45)
  • ESP32学习笔记 MQTT协议

    MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),信息传输的对象我分为 客户端消息发布者 (pub)、 服务器 (server)、 客户端消息订阅者 (sub), 一个客户端可以同时为发布者和订阅者 。服务器,服务器为信息传输的枢纽有传递数据、管理客户端、数据保真等作用。

    2024年02月08日
    浏览(45)
  • 【史上最全面esp32教程】oled显示篇

    本节课主要讲的是OLED的基础使用。使用的oled为0.96寸,128*64。 大家的其他型号也是可以用的。 提示:以下是本篇文章正文内容,下面案例可供参考 oled的简介: OLED英文全名Organic Light-Emitting Diode,又可称为「有机发光二极体」或是「有机电雷射显示」。 OLED有着色彩鲜艳、功

    2023年04月19日
    浏览(41)
  • 【史上最全面esp32教程】蜂鸣器篇(是噪声还是音乐?)

    蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。蜂鸣器在电路中用字母“H”或“HA”(

    2024年02月10日
    浏览(120)
  • 【史上最全面esp32教程】网络篇和tcp/ip的使用

    ESP32是一款集成Wi-Fi和蓝牙的开发板,它可以轻松地和其他设备进行网络和TCP/IP通信 提示:以下是本篇文章正文内容,下面案例可供参考 ESP32网络学习: 了解网络协议: 在了解ESP32的网络功能之前,需要了解一些基本的网络协议,例如TCP,IP,DNS和HTTP等。这可以帮助您更深入

    2024年02月04日
    浏览(78)
  • ESP32-LORA通信

    oRa就是远距离无线电(Long Range Radio),是semtech公司创建的低功耗局域网无线标准,它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。 ESP32开发板1块 SA32型LORA模块2块

    2023年04月09日
    浏览(32)
  • ESP8266学习笔记一 互联网通讯协议

    协议作用简单来说 就是规范不同的语言; 包含的协议有 TCP/IP实际上是一个协议组   不同的协议处于不同的层次上 (由下到上) 链路层WIFI 网络层IP 传输层TCP/UDP 应用层 HTTP 链路层: WIFI Ethernet 就是实实在在的进行数据传输的物理连接层 ESP32的三种模式: 链路层 数据帧 1,

    2023年04月27日
    浏览(47)
  • esp32学习笔记(4)——adc

    ADC即模拟数字转换器(Analog-to-digital converter)是用于将 模拟 形式的 连续 信号 转换 为 数字 形式的 离散 信号的一类设备。一个模拟数字转换器可以提供信号用于测量。与之相对的设备成为数字模拟转换器。 例如温度、压力、声音或者图像等,需要转换成更容易储存、处理

    2023年04月19日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包