Controlla un servomotore da lontano! Tutorial Arduino Heltec WiFi LoRa 32 V3 (TX)

Questa lezione fa parte di: Introduzione al WiFi LoRa

Controlla un servomotore da lontano! Tutorial Arduino Heltec WiFi LoRa 32 V3 (TX)

In questa guida, prenderemo i disegni esatti dal nostro progetto servo Heltec ESP32 LoRa V3 e spiegheremo come funzionano: nessun codice extra aggiunto. Imparerai come il trasmettitore legge un encoder rotativo, acquisisce e invia quell'angolo tramite LoRa, e come il ricevitore lo decripta e aziona un micro-servo. Tutti i link ai componenti e al codice sono qui sotto, e se ordini tramite i nostri link affiliati ci aiuti a continuare a realizzare questi tutorial.

Installazione delle schede Heltec ESP32

Aggiungi questo percorso nelle preferenze del tuo Arduino IDE come mostrato nel video:https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. Hardware e configurazione del trasmettitore (TX)

Dalla parte TX hai bisogno di:

  • Scheda Heltec WiFi LoRa 32 V3 (in custodia Meshnology N33, alimentata da batteria da 3000 mAh)

  • Encoder rotativo cablato a GPIO 6 (CLK), GPIO 5 (DT), GPIO 4 (SW)

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

Lo schizzo inizia includendo e inizializzando tutto esattamente come inHeltec_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;


Insetup(), il codice:

  • Accende sul display, imposta il carattere

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

  • Ripristina l'encoder ahomePosition

  • Inizializza LoRa tramiteMcu.begin(HELTEC_BOARD, SLOW_CLK_TPYE)e impostaRadioEvents, canale e parametri esattamente come nello schizzo fornito.

2. Inviare l'angolo in modo sicuro

Ogni ciclo di loop viene eseguitorotary_loop(), che:

  • Legge l'encoder nell'ISR

  • QuandoservoAngelcambia, lo impacchetta in un buffer da 16 byte, crittografa con AES-128 (encryptAES()dallo schizzo), e chiama

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • Setèlora_idle = falsefino aOnTxDone()accende e ripristina.

3. Ricevitore (RX) hardware e configurazione

Dalla parte RX hai bisogno di:

  • Scheda Heltec WiFi LoRa 32 V3 (stesso case/batteria)

  • Micro-servo (ad es. SG90) su GPIO 6 (o qualsiasi pin PWM testato)

  • display OLED

Il bozzetto inHeltec_ESP32_LoRa_V3_Sevo_RX.inoiniziato 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;


Insetup(), it:

  • Alimentazione su Vext per il modulo display/LoRaVextON())

  • ChiamateRadio.Init(&RadioEvents)e configura RX con gli stessi parametri LoRa

  • Attacca il servocomando conmyservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)e lo centra ahomePosition.

4. Ricezione, decrittazione e pilotaggio del servo

Il nucleo è ilOnRxDone(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;


Decripta il blocco di 16 byte, lo converte in un intero e aggiorna immediatamente il servo.

5. Supporto del pin PWM e taratura del servo

Abbiamo testato questi pin ESP32 per l'uscita PWM e funzionano tutti per pilotare un micro-servomotore:

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


Per uno standard SG90, il nostro codice utilizza un intervallo di impulsi di400 µs(0Ã'°) to2400 µs(180°), che offre un'ampia curva fluida senza jitter.

6. Schema elettrico

Di seguito ci sono segnaposto in cui puoi inserire i tuoi schemi TX e RX:

Helte_Wifi_LoRA_encoder_rotativo
Helte_Wifi_LoRA con batteria

Codice e link affiliati

Tutti gli schizzi sopra menzionati sono disponibili per il download nella sezione "Codice e Risorse" qui sotto. Se desideri costruirlo da solo, ti preghiamo di considerare di acquistare il tuo modulo Heltec LoRa32 V3, la custodia Meshnology N33, l'encoder rotativo e il servo SG90 tramite i nostri link affiliati. Non ti costerà nulla in più e ci aiuta a continuare a realizzare tutorial gratuiti come questo!


Capitoli video per riferimento

  • 00:00 Introduzione e Panoramica

  • 00:05 Concetti di Controllo Remoto

  • 00:19 Nozioni di base sulla comunicazione LoRa

  • 00:23 Anteprima hardware

  • 00:28 Vetrina di Custodie e Batterie

  • 01:03 Caratteristiche del Modulo

  • 01:42 Specifiche e Connettività

  • 02:54 Alimentazione del servomotore

  • 03:05 Cablaggio e Pinout

  • 09:35 Posizionamento dell'antenna

  • 11:04 Assemblaggio del caso

  • 29:26 Caricamenti Schizzi

  • 35:09 Test di Gamma 1,2 km

  • 36:38 Test di intervallo 1,4 km

  • 38:41 Riepilogo delle prestazioni

  • 43:04 Conclusione e Supporto

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

Common Course Files

Risorse e riferimenti

File📁

Nessun file disponibile.