搜索代码

13英里20公里没有WiFi?LoRa如何在疯狂的距离上传输电压!(Heltec WiFi LoRa 32 V3)

本课是……的一部分: WiFi LoRa简介

13英里20公里没有WiFi?LoRa如何在疯狂的距离上传输电压!(Heltec WiFi LoRa 32 V3)

构建一个13英里离网电压监测器,使用LoRa和ESP32

你是否曾需要远程监控一个电源,比如小屋里的太阳能电池板、船上的电池组,或大型农场上的设备,远隔数英里?本项目指南将指导你构建一个长距离、离网的电压监测器,能够传输数据,距离可达惊人的13英里(或21公里), 无需订阅费用或依赖 Wi-Fi 或蜂窝网络。

我们将使用两个Heltec WiFi LoRa 32模块,每个都 housed 在一个坚固的Meshnology N32手机壳配备3000mAh电池,创建一个发射器和一个接收器。发射器将使用简单的电压分压电路测量目标电压(从几伏到100V或更高),并通过LoRa无线发送读数。接收器将实时显示此电压,让您能够在数英里外监控您的系统。


工作原理:电压分压器

该项目的核心是能够测量广泛的电压范围。由于ESP32的输入引脚只能安全地测量高达3.3V的电压,我们无法直接连接12V或100V的电源。为了解决这个问题,我们使用一个简单的电路,称为电压分压器,将电压降至微控制器可读取的安全水平。视频中对此进行了说明。12:26.

电路使用两个串联的电阻(R1 和 R2)。高电压源(V) 在两个电阻上施加,ESP32 读取较低的比例电压 (V外面) 仅在 R2 电阻器上。通过正确的电阻值,您可以准确测量非常高的电压。

包含R1和R2电阻的电压分压器电路图。

在选择电阻时,一个好的经验法则是选择值,使输出电压远低于 3.3V 的限制,即使在测量您预计的最大电压时也是如此。为了获得最佳精度,您应该使用万用表测量电阻的实际阻值,并在代码中使用这些精确值。

电压分压器输出和输入电压的计算公式。

硬件组装与接线

组装过程包括将Heltec LoRa 32模块和3000mAh电池放入N32外壳内。外壳上有屏幕和按钮的开口,以及一个用于外部天线安装的孔。最重要的安全提示之一是在开启设备之前,始终确保天线连接好。因为在没有天线的情况下进行传输可能会损坏LoRa模块。

主接线图显示电压分压器连接到ESP32和电池。
实际项目电路的照片,显示了连接的电阻器和电线。
发射器OLED屏幕的照片显示30V测量。

Arduino IDE 和库设置

https://resource.heltec.cn/download/package_heltec_esp32_index.json

要编程Heltec模块,您必须首先配置您的Arduino IDE。这一次性的设置非常重要,详细信息在20:41在视频中。

  1. 安装ESP32开发板:在文件 > 首选项中添加官方 Espressif ESP32 板的 URL,并从开发板管理器安装“esp32”软件包。
  2. 安装 Heltec 支持:将特定于 Heltec 的 JSON URL 添加到您的偏好设置中。然后,在板管理器中搜索并安装“Heltec ESP32”包。
  3. 安装所需库:使用库管理器(草图 > 包含库 > 管理库),安装以下内容:
    • Heltec ESP32 dev boards
    • Adafruit GFX Library(及其依赖项)
  4. 安装 Robojax 库:您需要下载自定义内容。Robojax_HeltecLoRa32库,作为.zip文件提供。通过 Sketch > 包含库 > 添加 .ZIP 库 在IDE中安装它。
  5. 选择董事会:最后,转到工具 > 板,并选择Heltec WiFi LoRa 32 (V3)和正确的COM端口。

代码配置说明

该项目使用两个独立的草图:一个用于发射器 (TX)和一个用于接收器 (RX)您只需在发射器代码中配置几个关键设置即可使其正常工作,如下所述。25:02接收器代码需要匹配的LoRa设置。


#define VOLTAGE_READING_PIN 4  // The pin reading the voltage
const int R1 = 39120; // Your measured value for R1 in ohms
const int R2 = 3312; // Your measured value for R2 in ohms

const float CALIB_FACTOR = 1.007f; // Calibration factor to match a multimeter

const char *displayTexttitle = "Voltage:"; // Text for the OLED
const char *displayTexTX = "(TX)";

// This security key MUST be IDENTICAL on the TX and RX devices
const char *userKey = "YOUR_SECRE8888";

// These LoRa settings MUST be IDENTICAL on the TX and RX devices
#define RF_FREQUENCY      915000000 // LoRa Frequency in Hz
#define TX_OUTPUT_POWER   2         // TX Power in dBm (2-21)
  • VOLTAGE_READING_PIN您已连接到电压分压器输出的 ESP32 上的 GPIO 引脚。
  • R1R2请输入确切的电阻值你使用万用表测量的两个电阻的值。这对准确性至关重要。
  • CALIB_FACTOR如果您显示的电压与可信的万用表略有偏差,可以上下调整该值(例如,1.008 或 0.995)以微调读数。将其设置为1.0禁用。
  • userKey这是您的私密安全密钥。只有具有完全相同密钥的设备才能进行通信。
  • RF_FREQUENCYLoRa的操作频率。此频率必须在两个设备上匹配,并且在您的地区是合法的(例如,北美为915MHz)。
  • TX_OUTPUT_POWER传输功率范围从2(低功率,短距离)到21(高功率,长距离)。更高的功率会消耗更多电池。在13英里测试中,使用了20的值。在桌面测试中,2就足够了。

接收器代码具有类似的设置用于userKeyRF_FREQUENCY必须与发射器的设置匹配。


行动中的实时项目

一旦代码上传,发射器单元将开始测量您连接的源的电压,并在其OLED屏幕上显示出带有“(TX)”指示的电压,并通过LoRa广播数据。接收器单元在编程时使用匹配的安全密钥和频率,将监听信号。一旦收到有效的传输,它将在其屏幕上显示相同的电压,并带有“(RX)”指示。

在长途测试中证明了31:39这个设置非常有效。凭借高增益天线和清晰的视线,该系统成功地从13英里外传输和接收准确的电压读数,证明它是执行重大远程监控任务的稳健可靠解决方案。


视频章节

  • 00:00- 开始
  • 03:33- 板子和LoRa介绍
  • 05:47N32 LoRa WiFi 32的外壳
  • 12:26- 电压分压器用于测量最高150V
  • 19:47- 准备导线以测量电压
  • 20:41为WiFi LoRa 32安装库
  • 25:02- 传输代码解说
  • 27:16- 收货人代码解释
  • 28:36- 读取电压的演示
  • 31:39实际距离范围测试(13 英里)
没有附加代码。

Common Course Files

文件📁

其他文件