Contrôlez un moteur servo à des kilomètres de distance ! Tutoriel Arduino Heltec WiFi LoRa 32 V3 (TX)

Cette leçon fait partie de: Introduction au WiFi LoRa

Contrôlez un moteur servo à des kilomètres de distance ! Tutoriel Arduino Heltec WiFi LoRa 32 V3 (TX)

Dans ce guide, nous prenons les croquis exacts de notre projet de servo Heltec ESP32 LoRa V3 et expliquons comment ils fonctionnent - sans code supplémentaire ajouté. Vous apprendrez comment l'émetteur lit un encodeur rotatif, sécurise et envoie cet angle via LoRa, et comment le récepteur le déchiffre et actionne un micro-servo. Tous les liens vers les pièces et le code sont ci-dessous, et si vous commandez via nos liens d'affiliés, cela nous aide à continuer à réaliser ces tutoriels.

Installation des cartes Heltec ESP32

Ajoutez ce chemin dans les préférences de votre IDE Arduino comme montré dans la vidéo :https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. Matériel et configuration de l'émetteur (TX)

Sur le côté TX, vous avez besoin de :

  • Carte Heltec WiFi LoRa 32 V3 (dans le boîtier Meshnology N33, alimentée par une batterie de 3000 mAh)

  • Encodeur rotatif câblé à GPIO 6 (CLK), GPIO 5 (DT), GPIO 4 (SW)

  • Écran OLED sur I²C (SDA= 4, SCL= 15)

Le croquis commence par inclure et initialiser tout exactement comme dansHeltec_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;


Danssetup(), le code :

  • Alimente l'affichage, définit la police

  • AppelsrotaryEncoder.begin(),rotaryEncoder.setup(readEncoderISR),rotaryEncoder.setBoundaries(0, MAX_ANGLE, true)etrotaryEncoder.setAcceleration(20)

  • Réinitialise l'encodeur àhomePosition

  • Initialise LoRa viaMcu.begin(HELTEC_BOARD, SLOW_CLK_TPYE)et met en placeRadioEvents, canal, et paramètres exactement comme dans le croquis fourni.

2. Envoyer l'angle en toute sécurité

Chaque cycle de boucle s'exécuterotary_loop(), ce qui :

  • Lit l'encodeur dans l'ISR

  • QuandservoAngelmodifie, l'emballe dans un tampon de 16 octets, le chiffre avec AES-128 (encryptAES()de l'esquisse), et appelle

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • Ensembleslora_idle = falsejusqu'àOnTxDone()il déclenche et réinitialise.

3. Matériel et configuration du récepteur (RX)

D'un côté RX, vous avez besoin de :

  • Carte Heltec WiFi LoRa 32 V3 (même boîtier/batterie)

  • Micro-servomoteur (par exemple SG90) sur GPIO 6 (ou toute broche PWM testée)

  • écran OLED

Le croquis dansHeltec_ESP32_LoRa_V3_Sevo_RX.inocommence par :

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;


Danssetup(), it:

  • Alimente le Vext pour le module d'affichage/LoRa.VextON())

  • AppelsRadio.Init(&RadioEvents)et configure RX avec les mêmes paramètres LoRa

  • Attache le servo avecmyservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)et le centre àhomePosition.

4. Réception, décryptage et commande du servo

Le cœur est leOnRxDone(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;


Il déchiffre le bloc de 16 octets, le convertit en entier et met immédiatement à jour le servo.

5. Support de broches PWM et réglage de servo

Nous avons testé ces broches ESP32 pour la sortie PWM et elles fonctionnent toutes pour piloter un micro-servo :

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


Pour un SG90 standard, notre code utilise une plage d'impulsions de400 µs(0Ã'°) to2400 µs(180°), ce qui procure un mouvement fluide et complet sans à-coups.

6. Schéma de câblage

Ci-dessous, vous trouverez des espaces réservés où vous pouvez insérer vos schémas TX et RX :

Helte_Wifi_LoRA_Encodeur_Rotatif
Helte_Wifi_LoRA avec batterie

Code et liens d'affiliation

Tous les croquis ci-dessus sont disponibles en téléchargement dans la section "Code & Ressources" ci-dessous. Si vous souhaitez le construire vous-même, veuillez envisager d'acheter votre module Heltec LoRa32 V3, le boîtier Meshnology N33, l'encodeur rotatif et le servomoteur SG90 via nos liens d'affiliation. Cela ne vous coûte rien de plus et nous aide à continuer de produire des tutoriels gratuits comme celui-ci !


Chapitres vidéo pour référence

  • 00:00 Introduction et Aperçu

  • 00:05 Concepts de télécommande

  • 00:19 Notions de base sur la communication LoRa

  • 00:23 Aperçu du matériel

  • 00:28 Vitrine de coques et de batteries

  • 01:03 Caractéristiques du module

  • 01:42 Spécifications et connectivité

  • 02:54 Alimentation du Servo

  • 03:05 Câblage et brochage

  • 09:35 Placement de l'antenne

  • 11:04 Assemblage de cas

  • 29:26 Téléchargement de croquis

  • 35:09 Test de portée 1,2 km

  • 36:38 Test de portée 1,4 km

  • 38:41 Récapitulatif de la performance

  • 43:04 Conclusion et soutien

775-Secure LoRa Servo Angle Transmitter (TX) with Rotary Encoder - Heltec V3
Langue: C++
Copié !

Common Course Files

Ressources et références

Fichiers📁

Aucun fichier disponible.