📌 بخش ۳ از ۴ — پهپاد هیچهایکینگ
- بخش ۱/۴: مفهوم هیچهایکینگ و معماری سیستم ✅
- بخش ۲/۴: سختافزار — سنسورها، MCU دوگانه، BOM ✅
- بخش ۳/۴ (همین پست): ارتباطات FLRC/LoRa و ماشین حالت مأموریت
- بخش ۴/۴: مدیریت انرژی، ایمنی، هزینه و نمونهسازی
FLRC و LoRa چه فرقی دارند؟ (مبتدی)
این پهپاد از دو رادیو کاملاً متفاوت استفاده میکند. LoRaWAN مثل پیامرسان است — کُند، اما بسیار بُرددار و کممصرف. هر ۲ دقیقه یک پیام ۲۰ بایتی (فقط موقعیت GPS و وضعیت باتری) میفرستد. اما وقتی نیاز به ارسال تصویر است، FLRC وارد میشود — یک پروتکل سریع Semtech که تا ۲.۶ مگابیت در ثانیه میرسد و میتواند یک تصویر فشردهشده را در کمتر از ۵۰ میلیثانیه بفرستد!
چرا WiFi یا 4G نه؟ چون هر دو بسیار پُرمصرف هستند. FLRC تنها ۸ میلیآمپر مصرف میکند و با همان آنتن SX1280 میتوان LoRa را هم اجرا کرد — یک چیپ، دو کار. این برای پهپاد ۱۳۰ گرمی ایدهآل است.
ماشین حالت (State Machine) هم یک مفهوم برنامهنویسی است: پهپاد در هر لحظه در یک “حالت” مشخص است (مثل “در حال هیچهایک” یا “در حال جستجو برای کامیون”) و بر اساس شرایط به حالت دیگری منتقل میشود. این از هرجومرج جلوگیری میکند.
مقایسه دو رادیو: FLRC vs LoRaWAN
| ویژگی | FLRC (SX1280/LR2021) | LoRaWAN (SX1262) |
|---|---|---|
| کاربرد | ارسال تصویر (فوری) | تلهمتری (هر ۲ دقیقه) |
| باند فرکانسی | 2.4 GHz | Sub-GHz (868/915) |
| سرعت داده | تا 2.6 Mbps | 0.25-11 kbps |
| برد (LoS) | 5+ km | 10-15 km |
| جریان Rx | ~8 mA | ~4.2 mA |
| جریان خواب | 0.2 µA | 0.16 µA |
| زمان ارسال ۲KB تصویر | ~25 میلیثانیه | ~2.9 ثانیه (ناممکن) |
| قیمت ماژول | 3-5 دلار | 3-5 دلار |
ساختار پکت ۲۰ بایتی LoRaWAN
// فرمت Payload 20 بایتی LoRaWAN:
// Byte 0-3 : Timestamp (Unix epoch, uint32)
// Byte 4-7 : Latitude (float × 1e7, int32)
// Byte 8-11 : Longitude (float × 1e7, int32)
// Byte 12-13: Altitude AGL (uint16, متر)
// Byte 14 : Voltage باتری (uint8, scale: 2.5V=0, 4.5V=255)
// Byte 15 : کد حالت فعلی:
// 0x01 = جستجوی کامیون (SCAN_TRAFFIC)
// 0x02 = در حال هیچهایک (HITCHHIKE_SLEEP)
// 0x03 = در حال پرواز (GNSS_NAV)
// 0x04 = تحویل دقیق (PRECISION_LAND)
// 0x05 = مأموریت کامل (MISSION_COMPLETE)
// 0xFF = خطای بحرانی (ABORT)
// Byte 16 : دمای داخلی MCU (int8, درجه سانتیگراد)
// Byte 17-19: Flags وضعیت سنسورها (bitmask):
// bit0: GPS Fix OK
// bit1: IMU OK
// bit2: LoRa Connected
// bit3: Battery OK
// bit4: روی کامیون هستیم
// bit5: UWB فعال
دستورات Downlink از سرور به پهپاد
| دستور | کد | عملکرد |
|---|---|---|
| Update Destination | 0x01 | مختصات GPS جدید مقصد |
| Request Image | 0x02 | عکاسی و ارسال فوری FLRC |
| Confirm Delivery | 0x03 | تایید مقصد → شروع فرود دقیق |
| Abort Mission | 0x04 | فرود فوری → حالت بازیابی |
| Force Detach | 0x06 | جدا شدن فوری از کامیون |
ماشین حالت مأموریت — ۸ مرحله
// چرخه کامل حالتهای پهپاد:
POWER_ON → BIST (تست خودکار قبل پرواز)
├─ تمام سنسورها OK؟ → SCAN_TRAFFIC
└─ خطا؟ → ABORT_GROUND (بدون پرواز)
SCAN_TRAFFIC (جستجوی کامیون در ارتفاع ۸-۱۲ متر)
├─ کامیون مناسب در جهت مقصد شناسایی شد؟ → APPROACH_TRUCK
└─ باتری کم + مقصد نزدیک؟ → GNSS_NAV
APPROACH_TRUCK (تطبیق سرعت + فرود روی سقف)
├─ آهنربا چسبید؟ → HITCHHIKE_SLEEP
└─ شکست فرود؟ → SCAN_TRAFFIC
HITCHHIKE_SLEEP (خواب عمیق، هر ۱۲۰ثانیه بیدار)
├─ فاصله تا مقصد < برد پرواز؟ → DETACH_DELIVER
├─ کامیون در مسیر اشتباه یا ایستاده؟ → DETACH_HUNT
└─ همهچیز OK؟ → ادامه HITCHHIKE_SLEEP
DETACH_HUNT (جدا شدن → جستجوی کامیون جدید)
└─ → SCAN_TRAFFIC
DETACH_DELIVER (جدا شدن برای تحویل نهایی)
└─ → GNSS_NAV
GNSS_NAV (پرواز با GPS به سمت مقصد)
├─ فاصله < 50m؟ → UWB_NAV
└─ باتری بحرانی؟ → EMERGENCY_LAND
UWB_NAV → PRECISION_LAND → PAYLOAD_RELEASE → MISSION_COMPLETE
فرآیند تایید تصویر توسط اپراتور
- پهپاد در نزدیکی مقصد عکس QQVGA (160×120) میگیرد
- MCU تصویر را با JPEG کیفیت ۳۰ فشرده میکند → ~۲ KB
- تصویر از طریق FLRC در کمتر از ۵۰ میلیثانیه به سرور میرسد
- سرور تصویر دریافتی را کنار تصویر هدف برنامهریزیشده نشان میدهد
- اپراتور انسانی تایید میکند → دستور
CONFIRM_DELIVER - پهپاد مرحله فرود دقیق LiDAR+UWB را شروع میکند
ویدئوهای آموزشی
📌 بخش بعدی و آخر: مدیریت انرژی و هزینه
در بخش ۴/۴ نهایی: بودجه کامل انرژی برای یک مأموریت، تمام ۱۶ حالت خرابی و پاسخ به آنها، هزینه BOM و مسیر کاهش قیمت، و قدمهای بعدی نمونهسازی.