تحكم في محرك سيرفو من مسافة بعيدة! درس Arduino لهيليك WiFi LoRa 32 V3 (TX)

هذه الدرس جزء من: مقدمة عن WiFi LoRa

تحكم في محرك سيرفو من مسافة بعيدة! درس Arduino لهيليك WiFi LoRa 32 V3 (TX)

في هذا الدليل، نأخذ الرسومات الدقيقة من مشروع السيرفو Heltec ESP32 LoRa V3 ونستعرض كيف تعمل - دون إضافة أي كود إضافي. ستتعلم كيف يقرأ جهاز الإرسال المشفر الدوار، ويؤمن تلك الزاوية ويرسلها عبر LoRa، وكيف يقوم جهاز الاستقبال بفك تشفيرها ويوجه سيرفو صغير. جميع روابط الأجزاء والكود أدناه، وإذا قمت بالطلب من خلال روابط الشركاء لدينا، فإن ذلك يساعدنا على الاستمرار في إنشاء هذه الدروس.

تثبيت لوحات هيلتيك ESP32

قم بإضافة هذا المسار في تفضيلات بيئة تطوير Arduino الخاصة بك كما هو موضح في الفيديو:https://resource.heltec.cn/download/package_heltec_esp32_index.json

1. أجهزة الإرسال (TX) والإعداد

على جانب TX تحتاج إلى:

  • لوحة Heltec WiFi LoRa 32 V3 (داخل غلاف Meshnology N33، مزودة ببطارية سعة 3000 مللي أمبير)

  • مُشَفِّر دوار موصول بـ GPIO 6 (CLK)، GPIO 5 (DT)، GPIO 4 (SW)

  • شاشة OLED على I²C (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، القناة، والمعايير تمامًا كما هو موضح في الرسم التخطيطي المقدم.

إرسال الزاوية بأمان

كل دورة حلقة تعملrotary_loop()، التي:

  • يقرأ المشفر في خدمة المقاطعة للوقت الحقيقي (ISR)

  • عندماservoAngelالتغييرات، ويضعها في مخزن بيانات بحجم 16 بايت، ويقوم بتشفيرها باستخدام AES-128encryptAES()من الرسم التخطيطي)، ويدعو

    cppCopyEditRadio.Send(data, sizeof(data));
    
    
  • مجموعاتlora_idle = falseحتىOnTxDone()يُشغّل ويعيد تعيينه.

3. معدات وترتيب جهاز الاستقبال (RX)

على جانب RX تحتاج إلى:

  • لوحة هيلتيك واي فاي لوارا 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 لوحدة العرض/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 ميكروثانية(180 درجة)، مما يمنح حركة سلسة وكاملة دون اهتزاز.

6. مخطط الأسلاك

فيما يلي أماكن مخصصة حيث يمكنك وضع مخططات الإرسال والاستقبال الخاصة بك:

هيلت_واي فاي_لورا_مشفِّر دوار
هيلتي_Wifi_LoRA مع بطارية

رمز وروابط الشركاء

جميع الرسومات المذكورة أعلاه متاحة للتنزيل في قسم "الكود والموارد" أدناه. إذا كنت ترغب في بناء هذا بنفسك، يرجى النظر في شراء وحدة Heltec LoRa32 V3، وعلبة Meshnology N33، وم encoder دوار، ومحرك SG90 من خلال روابطنا التابعة. لا يكلفك ذلك شيئًا إضافيًا ويساعدنا على الاستمرار في إنشاء دروس مجانية مثل هذه!


فصول الفيديو للرجوع إليها

  • 00:00 المقدمة ونظرة عامة

  • مفاهيم التحكم عن بُعد

  • أساسيات الاتصال LoRa

  • 00:23 عينة الأجهزة

  • عرض الحالات والبطاريات

  • 01:03 ميزات الوحدة

  • 01:42 المواصفات والاتصال

  • :54 تشغيل السيرفو

  • 03:05 التوصيلات وتخطيط الدبابيس

  • 09:35 وضع الهوائي

  • 11:04 تجميع الحالة

  • :26 رفع الرسومات

  • 35:09 اختبار المدى 1.2 كم

  • :38 اختبار النطاق 1.4 كم

  • ملخص الأداء 38:41

  • :04 الخاتمة والدعم

775-Secure LoRa Servo Angle Transmitter (TX) with Rotary Encoder - Heltec V3
اللغة: C++
تم النسخ!

Common Course Files

الموارد والمراجع

ملفات📁

لا توجد ملفات متاحة.