遠くからサーボモーターを制御しよう!Heltec WiFi LoRa 32 V3 Arduino チュートリアル (TX)

このレッスンはの一部です: WiFi LoRa入門

遠くからサーボモーターを制御しよう!Heltec WiFi LoRa 32 V3 Arduino チュートリアル (TX)

このガイドでは、Heltec ESP32 LoRa V3 サーボプロジェクトから正確なスケッチを取り上げ、それらがどのように機能するかを説明します。余分なコードは追加しません。送信機が回転エンコーダーを読み取り、その角度をLoRa経由で安全に送信し、受信機がそれを復号化してマイクロサーボを駆動する方法を学びます。すべての部品とコードのリンクは以下にあり、私たちのアフィリエイトリンクを通じてご注文いただくと、これらのチュートリアルの作成を続ける手助けになります。

Heltec ESP32ボードのインストール

このパスをArduino IDEの設定に追加してください。動画で示したように。https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. 送信機(TX)ハードウェアとセットアップ

TX側で必要なのは:

  • Heltec WiFi LoRa 32 V3ボード(Meshnology N33ケース内、3000mAhパックで電源供給)

  • GPIO 6 (CLK)、GPIO 5 (DT)、GPIO 4 (SW) に接続されたロータリーエンコーダー

  • I²C上のOLEDディスプレイ(SDA= 4、SCL= 15)

スケッチは、すべてを正確に含めて初期化することから始まります。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;


中でsetup(), コード:

  • ディスプレイの電源を入れ、フォントを設定します。

  • 呼び出しrotaryEncoder.begin(),rotaryEncoder.setup(readEncoderISR),rotaryEncoder.setBoundaries(0, MAX_ANGLE, true)rotaryEncoder.setAcceleration(20)

  • エンコーダをリセットします。homePosition

  • LoRaを初期化しますMcu.begin(HELTEC_BOARD, SLOW_CLK_TPYE)そして設定しますRadioEvents、チャネル、および提供されたスケッチとまったく同じパラメータ。

2. 角度を安全に送信する

各ループサイクルは実行されます。rotary_loop()、ということは:

  • ISRでエンコーダを読み取ります

  • いつservoAngel変更し、それを16バイトのバッファにパッケージ化し、AES-128で暗号化します。encryptAES()スケッチから)、そして呼び出し

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • セットlora_idle = falseまでOnTxDone()火を消し、リセットします。

3. 受信機(RX)ハードウェアとセットアップ

RX側で必要なのは:

  • Heltec WiFi LoRa 32 V3ボード(同じケース/バッテリー)

  • GPIO 6(またはテスト済みのPWMピン)にあるマイクロサーボ(例:SG90)

  • OLEDディスプレイ

スケッチはHeltec_ESP32_LoRa_V3_Sevo_RX.ino始まるのは:

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;


中にsetup(), it:

  • Vextのディスプレイ/LoRaモジュールの電源VextON())

  • 呼び出しRadio.Init(&RadioEvents)RXを同じLoRaパラメータで構成します。

  • サーボを取り付けますmyservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)それを中心に置いてhomePosition.

4. 受信し、復号化し、サーボを駆動する

コアは、OnRxDone(uint8_t *payload, …)コールバック:

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


それは16バイトのブロックを復号し、整数に変換し、即座にサーボを更新します。

5. PWMピンのサポートとサーボ調整

これらのESP32ピンをPWM出力のためにテストしましたが、すべてのピンがマイクロサーボを駆動するために機能します。

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


標準のSG90用に、私たちのコードはパルス範囲を使用します400マイクロ秒(0°) to2400 µs(180度)は、ジャターのない滑らかで完全なスイープを提供します。

6. 配線図

以下は、TXおよびRX回路図を挿入できるプレースホルダーです:

ヘルテ_Wifi_LoRA_ロータリーエンコーダー
Helte_Wifi_LoRA バッテリー付き

コードとアフィリエイトリンク

上記のすべてのスケッチは、下の「コードとリソース」セクションからダウンロード可能です。これを自分で作りたい場合は、Heltec LoRa32 V3モジュール、Meshnology N33ケース、ロタリーエンコーダー、SG90サーボを私たちのアフィリエイトリンクから購入することを検討してください。追加のコストはかからず、私たちがこのような無料のチュートリアルを作り続けるのを助けてくれます!


参考のためのビデオチャプター

  • 00:00 イントロダクションと概要

  • リモコンの概念

  • 00:19 LoRa通信の基礎

  • 00:23 ハードウェアプレビュー

  • 00:28 ケースとバッテリーのショーケース

  • 01:03 モジュールの機能

  • 01:42 仕様と接続性

  • 02:54 サーボの電源を入れる

  • 03:05 配線とピン配置

  • 09:35 アンテナ配置

  • 11:04 ケースアセンブリ

  • 29:26 スケッチをアップロード中

  • 35:09 範囲テスト 1.2 km

  • 36:38 範囲テスト 1.4 km

  • 38:41 パフォーマンスの振り返り

  • 43:04 結論とサポート

775-Secure LoRa Servo Angle Transmitter (TX) with Rotary Encoder - Heltec V3
言語: C++
コピーしました!

Common Course Files

リソースと参考文献

ファイル📁

ファイルは利用できません。