搜索代码

远程控制伺服电机!Heltec WiFi LoRa 32 V3 Arduino 教程(TX)

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

远程控制伺服电机!Heltec WiFi LoRa 32 V3 Arduino 教程(TX)

在本指南中,我们将使用我们Heltec ESP32 LoRa V3舵机项目的确切草图,并逐步讲解它们的工作原理——没有添加任何额外代码。您将了解到发射器如何读取旋转编码器,固定并通过LoRa发送该角度,以及接收器如何解密它并驱动微型舵机。所有部件和代码链接在下方,如果您通过我们的推荐链接下单,将帮助我们继续制作这些教程。

安装 Heltec ESP32 板

将此路径添加到您的Arduino IDE的首选项中,如视频所示:https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. 发射器(TX)硬件与设置

在TX一侧您需要:

  • Heltec WiFi LoRa 32 V3 主板(在 Meshnology N33 外壳中,由 3000 mAh 电池供电)

  • 旋转编码器接线到 GPIO 6(CLK)、GPIO 5(DT)、GPIO 4(SW)

  • 在 I²C 上的 OLED 显示器 (SDA= 4, SCL= 15)

该草图开始时包含并初始化一切,正如在Heltec_ESP32_LoRa_V3_Sevo_TX_AiRotaryEncoder.ino:

cppCopyEdit#include "AiEsp32RotaryEncoder.h"
#include "HT_SSD1306Wire.h"
#include "LoRaWan_APP.h"
#include "mbedtls/aes.h"
// …
static SSD1306Wire display(0x3c, 500000, SDA_OLED, SCL_OLED, GEOMETRY, RST_OLED);
AiEsp32RotaryEncoder rotaryEncoder = AiEsp32RotaryEncoder(
    PIN_A, PIN_B, SW_PIN, ROTARY_ENCODER_VCC_PIN, false, true, true);
const int homePosition = 90;
const int MAX_ANGLE    = 180;
int servoAngel = homePosition;


setup()代码:

  • 在显示屏上开启电源,设置字体

  • 呼叫rotaryEncoder.begin(),rotaryEncoder.setup(readEncoderISR),rotaryEncoder.setBoundaries(0, MAX_ANGLE, true)rotaryEncoder.setAcceleration(20)

  • 重置编码器为homePosition

  • 通过初始化LoRaMcu.begin(HELTEC_BOARD, SLOW_CLK_TPYE)并设置RadioEvents、通道和参数与提供的草图完全相同。

安全地发送角度

每个循环周期运行rotary_loop(),它:

  • 在中断服务例程中读取编码器

  • servoAngel更改,将其打包到一个16字节的缓冲区中,使用AES-128加密encryptAES()从草图中) ,并呼叫

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • 套装lora_idle = false直到OnTxDone()触发并重置它。

3. 接收机 (RX) 硬件和设置

在RX端你需要:

  • Heltec WiFi LoRa 32 V3 板(相同外壳/电池)

  • 微型伺服(如 SG90)连接在 GPIO 6(或任何经过测试的 PWM 引脚)

  • OLED 显示器

草图在Heltec_ESP32_LoRa_V3_Sevo_RX.ino开始于:

cppCopyEdit#include <ESP32Servo.h>
#include "HT_SSD1306Wire.h"
#include "LoRaWan_APP.h"
#include "mbedtls/aes.h"
// …
const int servoPin       = 6;
const int SERVO_DUTY_MIN = 400;  // us
const int SERVO_DUTY_MAX = 2400; // us
Servo    myservo;
int      servoAngel     = homePosition;


setup(), it:

  • 为显示/LoRa模块的电源开启VextON())

  • 电话Radio.Init(&RadioEvents)并使用相同的LoRa参数配置RX

  • 将伺服器附加到myservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)并将其居中于homePosition.

4. 接收、解密和驱动伺服器

核心是OnRxDone(uint8_t *payload, …)回调:

cppCopyEditdecryptAES((uint8_t*)rxpacket, userKey);
if (isNumber(rxpacket)) {
  servoAngel = atoi(rxpacket);
  myservo.write(servoAngel);
  delay(15);
}
Serial.println("Angle: " + String(servoAngel));
lora_idle = true;


它解密16字节的数据块,将其转换为一个整数,并立即更新伺服器。

5. PWM引脚支持与伺服调整

我们测试了这些ESP32引脚的PWM输出,它们都可以用来驱动微型伺服电机:

CopyEdit1, 2, 3, 4, 5, 6, 19, 35, 36, 38, 39, 40, 41, 42, 45, 47, 48


对于标准的SG90,我们的代码使用的脉冲范围为400 微秒(0Ã'°) to2400 微秒(180°),这提供了平滑、完整的扫动,没有抖动。

6. 接线图

以下是您可以放入 TX 和 RX 原理图的占位符:

Helte_Wifi_LoRA_旋转编码器
Helte_Wifi_LoRA 带电池

代码和联盟链接

以上所有草图均可在下面的“代码与资源”部分下载。如果您想自己动手制作,请考虑通过我们的附属链接购买您的Heltec LoRa32 V3模块、Meshnology N33外壳、旋转编码器和SG90伺服电机。这对您没有额外费用,并帮助我们继续制作像这样的免费教程!


视频章节供参考

  • 00:00 介绍与概述

  • 遥控概念

  • 00:19 LoRa通信基础知识

  • 00:23 硬件预览

  • 00:28 案例和电池展示

  • 模块功能 :03

  • 01:42 规格与连接性

  • 02:54 给伺服供电

  • 03:05 接线和引脚排列

  • 09:35 天线放置

  • 11:04 案件组装

  • 29:26 上传草图

  • 35:09 范围测试 1.2 公里

  • 36:38 范围测试 1.4 公里

  • 38:41 性能回顾

  • 43:04 结论与支持

775-Secure LoRa Servo Angle Transmitter (TX) with Rotary Encoder - Heltec V3
语言: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Common Course Files

资源与参考

文件📁

没有可用的文件。