Controle um motor servo de longe! Tutorial Arduino Heltec WiFi LoRa 32 V3 (TX)

Esta lição faz parte de: Introdução ao WiFi LoRa

Controle um motor servo de longe! Tutorial Arduino Heltec WiFi LoRa 32 V3 (TX)

Neste guia, estamos pegando os esboços exatos do nosso projeto de servo Heltec ESP32 LoRa V3 e passando por como eles funcionam - sem código extra adicionado. Você aprenderá como o transmissor lê um codificador rotativo, segura e envia esse ângulo pela LoRa, e como o receptor o descriptografa e aciona um micro-servo. Todos os links de peças e código estão abaixo, e se você fizer pedidos através de nossos links de afiliados, nos ajuda a continuar fazendo esses tutoriais.

Instalando Placas Heltec ESP32

Adicione este caminho nas preferências do seu Arduino IDE conforme mostrado no vídeo:https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. Hardware e configuração do transmissor (TX)

Do lado do TX você precisa:

  • Placa Heltec WiFi LoRa 32 V3 (no case Meshnology N33, alimentada por bateria de 3000 mAh)

  • Encoder rotativo conectado ao GPIO 6 (CLK), GPIO 5 (DT), GPIO 4 (SW)

  • Display OLED no I²C (SDA= 4, SCL= 15)

O esboço começa incluindo e inicializando tudo exatamente como emHeltec_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;


Emsetup(), o código:

  • Liga no display, define a fonte

  • ChamadasrotaryEncoder.begin(),rotaryEncoder.setup(readEncoderISR),rotaryEncoder.setBoundaries(0, MAX_ANGLE, true)erotaryEncoder.setAcceleration(20)

  • Redefine o codificador parahomePosition

  • Inicializa o LoRa viaMcu.begin(HELTEC_BOARD, SLOW_CLK_TPYE)e configuraRadioEvents, canal, e parâmetros exatamente como no esboço fornecido.

2. Enviando o ângulo com segurança

Cada ciclo de loop é executadorotary_loop(), que:

  • Lê o codificador na ISR

  • QuandoservoAngelmudanças, empacota em um buffer de 16 bytes, criptografa com AES-128encryptAES()do esboço), e chamadas

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • Conjuntoslora_idle = falseatéOnTxDone()acende e reinicia-o.

3. Hardware e configuração do receptor (RX)

No lado RX você precisa:

  • Placa Heltec WiFi LoRa 32 V3 (mesma caixa/bateria)

  • Micro-servo (por exemplo, SG90) no GPIO 6 (ou qualquer pino PWM testado)

  • Tela OLED

O esboço emHeltec_ESP32_LoRa_V3_Sevo_RX.inocomeça com:

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;


Emsetup(), it:

  • Poderes no Vext para o módulo de display/LoRa (VextON())

  • ChamadasRadio.Init(&RadioEvents)e configura o RX com os mesmos parâmetros LoRa

  • Anexa o servo commyservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)e centraliza emhomePosition.

4. Receber, descriptografar e acionar o servo

O núcleo é oOnRxDone(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;


Ele descriptografa o bloco de 16 bytes, converte para um inteiro e atualiza imediatamente o servo.

5. Suporte a pinos PWM e ajuste de servo

Testamos esses pinos ESP32 para saída PWM e todos funcionam para acionar um micro-servo:

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


Para um SG90 padrão, nosso código usa uma faixa de pulso de400 µs(0°) para2400 µs(180°), que proporciona um movimento suave e completo sem tremores.

6. Diagrama de ligação

Abaixo estão os espaços reservados onde você pode inserir seus esquemáticos de TX e RX:

Helte_Wifi_LoRA_Encoder_Rotativo
Helte_Wifi_LoRA com bateria

Código e Links de Afiliados

Todos os esboços acima estão disponíveis para download na seção "Código e Recursos" abaixo. Se você gostaria de construir isso por conta própria, por favor, considere comprar seu módulo Heltec LoRa32 V3, a caixa Meshnology N33, o encoder rotativo e o servo SG90 através dos nossos links de afiliados. Não lhe custa nada a mais e nos ajuda a continuar fazendo tutoriais gratuitos como este!


Capítulos do Vídeo para Referência

  • 00:00 Introdução e Visão Geral

  • 00:05 Conceitos de Controle Remoto

  • 00:19 Fundamentos da Comunicação LoRa

  • 00:23 Visualização de Hardware

  • 00:28 Exibição de Capas e Baterias

  • 01:03 Recursos do Módulo

  • 01:42 Especificações e Conectividade

  • 02:54 Alimentando o Servo

  • 03:05 Fiação e Conexões

  • 09:35 Colocação da Antena

  • 11:04 Montagem do Caso

  • 29:26 Carregando Esboços

  • 35:09 Teste de Alcance 1,2 km

  • 36:38 Teste de Alcance 1,4 km

  • 38:41 Recapitulação de Performance

  • 43:04 Conclusão e Suporte

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

Common Course Files

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.