کنترل یک موتور سروو از فاصله دور! آموزش آردوینو Heltec WiFi LoRa 32 V3 (TX)

کنترل یک موتور سروو از فاصله دور! آموزش آردوینو Heltec WiFi LoRa 32 V3 (TX)

در این راهنما، طرح‌های دقیقی از پروژه سروو Heltec ESP32 LoRa V3 خود را می‌گیریم و نحوه عملکرد آنها را بررسی می‌کنیم - بدون افزودن شِفر (کود) اضافی. شما یاد خواهید گرفت که چگونه فرستنده یک انکودر چرخشی را می‌خواند، آن زاویه را تأمین و از طریق LoRa ارسال می‌کند و چگونه گیرنده آن را رمزگشایی کرده و یک میکرو سروو را به حرکت در می‌آورد. تمام واصل‌های قطعات و کدها در پایین ذکر شده است و اگر از طریق واصل‌های وابسته ما سفارش دهید، به ما کمک می‌کند تا به ساخت این آموزش‌ها ادامه دهیم.

نصب تخته‌های ESP32 هل‌تک

این مسیر را به تنظیمات IDE آردوینو خود اضافه کنید، همانطور که در ویدیو نشان داده شده است:https://resource.heltec.cn/download/package_heltec_esp32_index.json

۱. سخت‌افزار و تنظیمات فرستنده (TX)

در سمت TX شما نیاز دارید:

  • برد Heltec WiFi LoRa 32 V3 (در کیس Meshnology N33، با باتری 3000 میلی‌آمپر ساعتی)

  • چرخش انکودر متصل به GPIO 6 (CLK)، GPIO 5 (DT)، GPIO 4 (SW)

  • صفحه نمایش OLED بر روی I²C (SDA= ۴، SCL= ۱۵)

طرح اولیه شامل و راه‌اندازی همه چیز به‌طور دقیق مانند است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, کانال و پارامترها دقیقاً همانطور که در طرح ارائه شده است.

ارسال زاویه به صورت ایمن

هر دوره حلقه اجرا می‌شودrotary_loop()، که:

  • در ISR انکودر را می‌خواند

  • زمانی کهservoAngelتغییرات، آن را در یک بافر ۱۶ بایتی بسته‌بندی می‌کند، با AES-۱۲۸ رمزنگاری می‌کندencryptAES()از طرح)، و تماس ها

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • ست‌هاlora_idle = falseتاOnTxDone()آتش می‌زند و آن را ریست می‌کند.

۳. سخت‌افزار و تنظیمات گیرنده (RX)

در سمت RX شما به موارد زیر نیاز دارید:

  • برد Heltec WiFi LoRa 32 V3 (همان جعبه/باتری)

  • میکروسرو (مانند SG90) بر روی GPIO 6 (یا هر پایه PWM آزمایش شده دیگر)

  • صفحه نمایش 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 برای ماجیول نمایشی/LoRaVextON())

  • تماس‌هاRadio.Init(&RadioEvents)و RX را با همان پارامترهای LoRa پیکربندی می‌کند

  • سرو را به آن وصل می‌کندmyservo.attach(servoPin, SERVO_DUTY_MIN, SERVO_DUTY_MAX)و آن را در مرکز قرار می‌دهدhomePositionمتن:

۴. دریافت، رمزگشایی و راه‌اندازی سروو

هسته است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;


این بلوک ۱۶ بایتی را رمزگشایی کرده، به یک عدد صحیح تبدیل می‌کند و بلافاصله سروو را بروز می‌کند.

پشتیبانی از پایه PWM و تنظیم سروو

این پایه‌های ESP32 را برای خروجی PWM آزمایش کردیم و همه آن‌ها برای راه‌اندازی یک میکروسرو کار می‌کنند:

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


برای یک SG90 استاندارد، شِفر (کود) ما از یک دامنه پالس استفاده می‌کند400 میکروثانیه(0Ã'°) to2400 میکروثانیه(180 درجه)، که یک حرکت نرم و کامل بدون لرزش را فراهم می‌آورد.

6. نمودار سیم‌کشی

در زیر مکان‌هایی وجود دارد که می‌توانید مدارهای TX و RX خود را قرار دهید:

هلت_وای‌فای_لودم_رمزگذار_چرخشی
هِلته_وای‌فای_لورا با باتری

شِفر (کود) و واصل‌های وابسته

همه طرح‌های فوق برای دانلود در بخش "شِفر (کود) و منابع" در زیر در دسترس هستند. اگر می‌خواهید این کار را خودتان انجام دهید، لطفاً خرید ماجیول Heltec LoRa32 V3، قاب Meshnology N33، انکودر چرخشی و سروو SG90 را از طریق واصل‌های وابسته ما در نظر بگیرید. این برای شما هیچ هزینه اضافی ندارد و به ما کمک می‌کند تا بتوانیم همچنان آموزش‌های رایگان مانند این را ارائه دهیم!


فصول ویدئو برای مرجع

  • ۰۰:۰۰ مقدمه و مرور کلی

  • مفاهیم کنترل از راه دور

  • مبانی ارتباطات لوRa

  • 00:23 پیش‌نمایش سخت‌افزار

  • 00:28 نمایش کیس و باتری

  • ویژگی‌های ماجیول 01:03

  • مشخصات و اتصالات 01:42

  • ۲:۵۴ تامین انرژی سروو

  • 03:05 سیم‌کشی و پایه‌اوت

  • 09:35 جایگذاری آنتن

  • ۱۱:۰۴ مونتاژ کیس

  • ۲۹:۲۶ بارگذاری طرح‌ها

  • 35:09 امتحان محدوده 1.2 کیلومتر

  • آزمایش دامنه ۱.۴ کیلومتر

  • خلاصه عملکرد 38:41

  • ۴۳:۰۴ نتیجه‌گیری و پشتیبانی

775-Secure LoRa Servo Angle Transmitter (TX) with Rotary Encoder - Heltec V3
زبان: C++
کپی شد!

Common Course Files

منابع و مراجع

فایل‌ها📁

هیچ فایلی موجود نیست.