چالش و مسئله

توسعه نرم‌افزار برای بردهای ESP32 معمولاً نیازمند دانش عمیق از زبان C/C++، آشنایی با SDK رسمی (ESP-IDF) و مدیریت پیچیدگی‌های سخت‌افزاری است. این فرایند زمان‌بر بوده و برای نمونه‌سازی سریع یا کاربران غیرمتخصص دشوار است. علاوه بر این، اتصال چند برد به یکدیگر و مدیریت آن‌ها نیازمند زیرساخت ارتباطی خاصی است که اغلب از ابتدا باید پیاده‌سازی شود.

راهکار ارائه‌شده

پروژه Dsp32-firmware یک فریم‌ورک متن‌باز و کامل برای خانواده ESP32 ارائه می‌دهد که شامل موارد زیر است:

  • دسکتاپ گرافیکی یکپارچه: رابط کاربری شبیه به سیستم‌عامل‌های دسکتاپ با منوی استارت، مدیریت فایل، مدیریت وظایف و ترمینال که مستقیماً روی برد اجرا می‌شود.
  • پشتیبانی از بردهای متعدد: سازگاری با ESP32، ESP32-C3، ESP32-C6، ESP32-S2، ESP32-S3، ESP32-CAM و Seeed XIAO ESP32S3 Sense.
  • نصب آسان برنامه‌ها: فروشگاه برنامه (App Store) که برنامه‌ها را از مخزن مرکزی دانلود و نصب می‌کند؛ بدون نیاز به کامپایل مجدد فریم‌ورک.
  • ارتباط شبکه‌ای ساده: برد با روشن شدن، یک شبکه Wi-Fi به نام Dibachain ایجاد می‌کند و از طریق پورتال captive (http://10.3.2.1) تنظیمات را انجام می‌دهد.
  • پشتیبانی از گره‌های ESP8266: پروتکل Dmesh به برد Dsp32 اجازه می‌دهد گره‌های ارزان‌قیمت ESP8266 را کشف، مدیریت و کنترل کند.
  • به‌روزرسانی OTA: امکان به‌روزرسانی فریم‌ورک و برنامه‌ها از طریق شبکه بدون نیاز به اتصال فیزیکی.

فرآیند توسعه

توسعه این فریم‌ورک با تمرکز بر ماژولار بودن و کارایی بالا انجام شده است. تصاویر آماده فلش برای هر برد به صورت فایل‌های ادغام‌شده (Merged) ارائه می‌شوند که فرآیند فلش را به یک دستور ساده کاهش می‌دهند. همچنین اسکریپت‌های خودکار برای انتخاب پورت و چیپ‌ست، خطای انسانی را به حداقل می‌رسانند. مستندات کامل به دو زبان فارسی و انگلیسی برای توسعه‌دهندگان و کاربران نهایی تهیه شده است.

فناوری‌های استفاده‌شده

  • ESP-IDF (Espressif IoT Development Framework)
  • زبان C/C++ برای توسعه فریم‌ورک
  • HTML/CSS/JavaScript برای رابط کاربری دسکتاپ
  • پروتکل REST API برای ارتباط با دستگاه
  • پروتکل اختصاصی Dmesh برای ارتباط با گره‌های ESP8266
  • ابزار esptool برای فلش کردن بردها

نتیجه‌گیری

Dsp32-firmware با ارائه یک پلتفرم کامل و کاربرپسند، پیچیدگی‌های توسعه سیستم‌های تعبیه‌شده را کاهش می‌دهد و به توسعه‌دهندگان اجازه می‌دهد در کسری از زمان، محصولات IoT خود را نمونه‌سازی و راه‌اندازی کنند. این پروژه منبع‌باز بوده و جامعه توسعه‌دهندگان می‌توانند به راحتی آن را گسترش دهند.