¡Controla un motor servo desde lejos! Tutorial de Arduino Heltec WiFi LoRa 32 V3 (TX)

Esta lección es parte de: Introducción a WiFi LoRa

¡Controla un motor servo desde lejos! Tutorial de Arduino Heltec WiFi LoRa 32 V3 (TX)

En esta guía, estamos tomando los bocetos exactos de nuestro proyecto de servo Heltec ESP32 LoRa V3 y explicando cómo funcionan, sin código adicional. Aprenderás cómo el transmisor lee un codificador rotatorio, asegura y envía ese ángulo a través de LoRa, y cómo el receptor lo descifra y controla un micro-servo. Todos los enlaces de piezas y código están a continuación, y si haces un pedido a través de nuestros enlaces de afiliados, nos ayudas a seguir creando estos tutoriales.

Instalando placas Heltec ESP32

Añade esta ruta en las preferencias de tu IDE de Arduino como se muestra en el video:https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. Hardware y configuración del transmisor (TX)

En el lado de TX necesitas:

  • Placa Heltec WiFi LoRa 32 V3 (en caja Meshnology N33, alimentada por batería de 3000 mAh)

  • Codificador rotatorio conectado a GPIO 6 (CLK), GPIO 5 (DT), GPIO 4 (SW)

  • Pantalla OLED en I²C (SDA= 4, SCL= 15)

El boceto comienza incluyendo e inicializando todo exactamente como enHeltec_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;


Ensetup(), el código:

  • Activa en la pantalla, establece la fuente.

  • LlamadasrotaryEncoder.begin(),rotaryEncoder.setup(readEncoderISR),rotaryEncoder.setBoundaries(0, MAX_ANGLE, true)yrotaryEncoder.setAcceleration(20)

  • Restablece el codificador ahomePosition

  • Inicializa LoRa a través deMcu.begin(HELTEC_BOARD, SLOW_CLK_TPYE)y configuraRadioEvents, canal, y parámetros exactamente como en el boceto proporcionado.

2. Enviando el ángulo de forma segura

Cada ciclo de bucle se ejecutarotary_loop(), que:

  • Lee el codificador en la ISR.

  • CuandoservoAngelcambios, los empaqueta en un búfer de 16 bytes, cifra con AES-128encryptAES()desde el boceto), y llamadas

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • Conjuntoslora_idle = falsehastaOnTxDone()enciende y reinicia.

3. Hardware y configuración del receptor (RX)

En el lado de RX necesitas:

  • Placa Heltec WiFi LoRa 32 V3 (mismo caso/batería)

  • Microservomotor (por ejemplo, SG90) en GPIO 6 (o cualquier pin PWM probado)

  • pantalla OLED

El boceto enHeltec_ESP32_LoRa_V3_Sevo_RX.inocomienza con:

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;


Ensetup(), it:

  • Potencias en Vext para el módulo de pantalla/LoRaVextON())

  • LlamadasRadio.Init(&RadioEvents)y configura RX con los mismos parámetros de LoRa

  • Adjunta el servo conmyservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)y lo centra enhomePosition.

4. Recibiendo, descifrando y controlando el servo

El núcleo es elOnRxDone(uint8_t *payload, …)callback:

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


Descifra el bloque de 16 bytes, lo convierte en un entero y actualiza inmediatamente el servo.

5. Soporte para pin PWM y ajuste de servo

Probamos estos pines ESP32 para salida PWM y todos funcionan para controlar un micro-servo:

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


Para un SG90 estándar, nuestro código utiliza un rango de pulsos de400 µs(0Ã'°) to2400 µs(180°), que ofrece un barrido suave y completo sin temblores.

6. Diagrama de cableado

A continuación se encuentran los espacios donde puedes insertar tus esquemas de TX y RX:

Helte_Wifi_LoRA_Encoder_Rotativo
Helte_Wifi_LoRA con batería

Código y enlaces de afiliados

Todos los bocetos anteriores están disponibles para descargar en la sección "Código y Recursos" a continuación. Si deseas construir esto tú mismo, considera comprar tu módulo Heltec LoRa32 V3, la caja Meshnology N33, el codificador rotativo y el servo SG90 a través de nuestros enlaces de afiliados. No te costará nada extra y nos ayuda a seguir creando tutoriales gratuitos como este.


Capítulos de video para referencia

  • 00:00 Introducción y Visión General

  • 00:05 Conceptos de Control Remoto

  • 00:19 Conceptos básicos de comunicación LoRa

  • 00:23 Vista previa de hardware

  • 00:28 Exhibición de Carcasas y Baterías

  • Características del Módulo 01:03

  • 01:42 Especificaciones y Conectividad

  • 02:54 Alimentando el Servo

  • 03:05 Cableado y Pinout

  • 09:35 Colocación de la antena

  • 11:04 Montaje de Caja

  • 29:26 Subiendo bocetos

  • 35:09 Prueba de rango 1.2 km

  • 36:38 Prueba de rango 1.4 km

  • 38:41 Resumen de Rendimiento

  • 43:04 Conclusión y Apoyo

775-Secure LoRa Servo Angle Transmitter (TX) with Rotary Encoder - Heltec V3
Idioma: C++
¡Copiado!

Common Course Files

Recursos y referencias

Archivos📁

No hay archivos disponibles.