Steuere einen Servo-Motor aus großer Entfernung! Heltec WiFi LoRa 32 V3 Arduino Tutorial (TX)

Diese Lektion ist Teil von: Einführung in WiFi LoRa

Steuere einen Servo-Motor aus großer Entfernung! Heltec WiFi LoRa 32 V3 Arduino Tutorial (TX)

In diesem Leitfaden verwenden wir die genauen Skizzen unseres Heltec ESP32 LoRa V3 Servo-Projekts und erklären, wie sie funktionieren - kein zusätzlicher Code hinzugefügt. Sie erfahren, wie der Sender einen Drehgeber liest, den Winkel sichert und über LoRa sendet, und wie der Empfänger ihn entschlüsselt und einen Mikroservo antreibt. Alle Teile- und Code-Links sind unten, und wenn Sie über unsere Affiliate-Links bestellen, hilft uns das, weiterhin diese Tutorials zu erstellen.

Installation von Heltec ESP32-Boards

Fügen Sie diesen Pfad in die Einstellungen Ihrer Arduino IDE ein, wie im Video gezeigt:https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. Transmitter (TX) Hardware und Einrichtung

Auf der TX-Seite benötigen Sie:

  • Heltec WiFi LoRa 32 V3 Platine (im Meshnology N33 Gehäuse, betrieben von einem 3000 mAh Akku)

  • Rotary-Encoder, verdrahtet an GPIO 6 (CLK), GPIO 5 (DT), GPIO 4 (SW)

  • OLED-Display über I²C (SDA= 4, SCL= 15)

Die Skizze beginnt damit, alles genau wie in einzuschließen und zu initialisieren.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;


Insetup(), der Code:

  • Leistungsanzeige, Schriftart einstellen

  • AnruferotaryEncoder.begin(),rotaryEncoder.setup(readEncoderISR),rotaryEncoder.setBoundaries(0, MAX_ANGLE, true)undrotaryEncoder.setAcceleration(20)

  • Setzt den Encoder zurück aufhomePosition

  • Initialisiert LoRa überMcu.begin(HELTEC_BOARD, SLOW_CLK_TPYE)und richtet einRadioEvents, Kanal und Parameter genau wie im bereitgestellten Entwurf.

2. Den Winkel sicher senden

Jeder Schleifenzyklus läuftrotary_loop(), welches:

  • Liest den Encoder im ISR.

  • WennservoAngelÄnderungen, verpackt sie in einen 16-Byte-Puffer, verschlüsselt mit AES-128encryptAES()Von der Skizze), und ruft

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • Setslora_idle = falsebisOnTxDone()löscht und setzt es zurück.

3. Empfänger (RX) Hardware & Installation

Auf der RX-Seite benötigen Sie:

  • Heltec WiFi LoRa 32 V3 Board (gleiche Gehäuse/Batterie)

  • Mikro-Servo (z.B. SG90) an GPIO 6 (oder jedem getesteten PWM-Pin)

  • OLED-Display

Die Skizze inHeltec_ESP32_LoRa_V3_Sevo_RX.inobeginnt mit:

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:

  • Powers on Vext für das Display/LoRa-Modul (VextON())

  • AnrufeRadio.Init(&RadioEvents)und konfiguriert RX mit denselben LoRa-Parametern

  • Befestigt den Servo mitmyservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)und zentriert es beihomePosition.

4. Empfang, Entschlüsselung und Steuerung des Servos

Der Kern ist derOnRxDone(uint8_t *payload, …)Rückruf:

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


Es entschlüsselt den 16-Byte-Block, konvertiert ihn in eine Ganzzahl und aktualisiert sofort den Servo.

5. PWM-Pin-Unterstützung & Servo-Abstimmung

Wir haben diese ESP32-Pins für PWM-Ausgang getestet und sie funktionieren alle zur Steuerung eines Mikro-Servos:

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


Für einen Standard SG90 verwendet unser Code einen Pulsbereich von400 µs(0°) zu2400 µs(180°), was eine sanfte, volle Bewegung ohne Ruckeln ergibt.

6. Schaltplan

Unten finden Sie Platzhalter, in die Sie Ihre TX- und RX-Schemata einfügen können:

Helte_Wifi_LoRA_Rotary_Encoder
Helte_Wifi_LoRA mit Batterie

Code & Affiliate-Links

Alle oben genannten Skizzen sind im Abschnitt "Code & Ressourcen" unten zum Download verfügbar. Wenn Sie dies selbst bauen möchten, ziehen Sie bitte in Betracht, Ihr Heltec LoRa32 V3-Modul, das Meshnology N33-Gehäuse, den Drehgeber und den SG90-Servo über unsere Affiliate-Links zu kaufen. Es kostet Sie nichts extra und hilft uns, weiterhin kostenlose Tutorials wie dieses zu erstellen!


Video-Kapitel zur Referenz

  • 00:00 Einführung & Übersicht

  • 00:05 Fernbedienungskonzepte

  • 00:19 Grundlagen der LoRa-Kommunikation

  • 00:23 Hardware-Vorschau

  • 00:28 Gehäuse- & Batterie-Präsentation

  • 01:03 Modulmerkmale

  • 01:42 Spezifikationen & Konnektivität

  • 02:54 Servoantrieb aktivieren

  • 03:05 Verdrahtung & Pinbelegung

  • 09:35 Antennenplatzierung

  • 11:04 Fallmontage

  • 29:26 Skizzen hochladen

  • 35:09 Reichweitentest 1,2 km

  • 36:38 Reichweitentest 1,4 km

  • 38:41 Leistungszusammenfassung

  • 43:04 Schlussfolgerung & Unterstützung

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

Common Course Files

Ressourcen & Referenzen

Dateien📁

Keine Dateien verfügbar.