فهرست مطالب:

Minecraft تعاملی شمشیر/علامت وارد نکنید (ESP32-CAM): 15 مرحله (همراه با تصاویر)
Minecraft تعاملی شمشیر/علامت وارد نکنید (ESP32-CAM): 15 مرحله (همراه با تصاویر)

تصویری: Minecraft تعاملی شمشیر/علامت وارد نکنید (ESP32-CAM): 15 مرحله (همراه با تصاویر)

تصویری: Minecraft تعاملی شمشیر/علامت وارد نکنید (ESP32-CAM): 15 مرحله (همراه با تصاویر)
تصویری: Justin Shi: Blockchain, Cryptocurrency and the Achilles Heel in Software Developments 2024, جولای
Anonim
Image
Image
محصول نهایی
محصول نهایی

دلایل متعددی برای به وجود آمدن این پروژه وجود دارد:

1. من به عنوان نویسنده کتابخانه چند وظیفه ای تعاونی TaskScheduler همیشه کنجکاو بودم که چگونه مزایای چند وظیفه ای مشارکتی را با مزایای یک برنامه پیشگیرانه ترکیب کنم. هر دو مزایایی دارند و هر دو دارای کاستی هایی هستند. ترکیب این دو ، فرصتی منحصر به فرد را برای استفاده از مزایا و کاهش مسائل مربوط به هر یک بر اساس یک مورد استفاده خاص ایجاد می کند. جالب هست؟ ادامه مطلب را بخوانید…

2. این واقعیت که ESP32 یک میکروکنترلر چند هسته ای است بسیار جذاب است. من همیشه کنجکاو بودم که بتوانم از آن ویژگی استفاده کنم. بنابراین آزمایش در اینجا این بود: آیا ESP32 می تواند ویدیو را با استفاده از یک هسته به آرامی پخش کند در حالی که در هسته دیگر کار دیگری (معنی دار و با شدت زیاد) انجام می دهد. حتی جالب تر ؟؟ بخوانید…!

3. من برای انجام پروژه های اخیرم در زمینه تهیه سیستم عامل OTA و مدیریت پیکربندی به یک زمین آزمایش نیاز داشتم …

4. من مدتی پیش دو ماژول LED Dot Matrix خریداری کرده بودم و نمی توانستم بفهمم با آنها چه کنم…

5. پسرم گیمر ماینکرفت است و مانند هر پسر کوچکی دوست دارد در خانه خود را با پوسترهای "وارد نشو" تزئین کند…

بنابراین ، همه دلایل خوب برای: Interactive علامت درب را با جریان ESP32 -CAM از فید ویدئویی "از پشت در بسته" وارد کنید - یا "چه کسی به اتاق من می آید؟"

بنابراین… همه چیز درباره چیست؟

اگر حوصله خواندن کل داستان را داشته باشید ، متوجه می شوید که این در واقع در مورد شمشیر Minecraft نیست. این پروژه اثبات بسیاری از مفاهیم است:

  • همزیستی چند وظیفه ای پیشگیرانه و مشارکتی
  • استفاده انتخابی از هسته های ESP32
  • استفاده از کتابخانه های جدید Dictionary و EspBootstrap
  • تهیه سیستم عامل OTA
  • مدیریت پیکربندی
  • پخش ویدئو برای چندین مشتری

و خیلی بیشتر.

لذت بردن

تدارکات

  • ESP32-CAM
  • MAX7219 Dot Matrix Module 4-in-1 LED Display Module Geekcreit برای آردوینو
  • پاوربانک Attom Tech 2500mAh

مرحله 1: محصول نهایی

محصول نهایی
محصول نهایی

من با ظاهر محصول نهایی شروع می کنم ، و سپس نحوه ساخت آن و نحوه کنترل آن را توضیح خواهم داد.

اینجوری جذاب تر به نظر میاد…

مرحله 2: صفحه شمشیر

صفحه شمشیر
صفحه شمشیر
صفحه شمشیر
صفحه شمشیر

صفحه شمشیر از تخته سفید ساخته شده ، با مداد مشخص شده و با نشانگرهای Crayola رنگ آمیزی شده است. این به تنهایی می تواند یک پروژه جالب با فرزند شما باشد:

  • شمشیری را روی تخته سفید نشان دهید
  • صفحه نما را برش دهید
  • علامت گذاری مربع (یا بلوک)
  • آنها را به صورت جداگانه رنگ آمیزی کنید
  • خطوط سیاه را با نوک تیز اضافه کنید.

من یک سند اداری باز با نمونه ای از شمشیر الماس قرار دادم که اگر میانبرها را ترجیح می دهید می توانید بالای تخته سفید بچسبانید … وقتی همه کارها تمام شد ، می توانید صفحه رو را به بقیه قسمتها بچسبانید یا دوبار استفاده کنید. نوار جانبی

مرحله 3: صفحه نمایش LED ماتریس نقطه ای

صفحه نمایش LED ماتریس نقطه ای
صفحه نمایش LED ماتریس نقطه ای
صفحه نمایش LED ماتریسی نقطه ای
صفحه نمایش LED ماتریسی نقطه ای
صفحه نمایش LED ماتریس نقطه ای
صفحه نمایش LED ماتریس نقطه ای

من 2 تا از آنها را داشتم ، هر کدام 4 بخش ، بنابراین تصمیم گرفتم یک قسمت 8 قسمتی بسازم.

به راحتی یک سربرگ مردانه 5 پین در یک طرف و 5 سوراخ در طرف مقابل وجود دارد. با خم کردن هدر نر به شکل اصلی] ، من توانستم این دو ماژول را به صورت الکتریکی و مکانیکی به هم متصل کنم! دو پرنده را با یک سنگ کشته (یا دو مگس با یک گوزن ، برای جلوگیری از دو دهان با یک لقمه ، برای دو دوست شدن با یک هدیه ، برای داشتن دو سیم به یک کمان ، اصطلاحات دیگر آن چیست) آیا فکر کرده اید؟ ببخشید من منحرف شدم)

هدر نر مخالف برای اتصال یک هدر زن منطبق از روی تخته روی با ESP32-Cam و سایر اجزا استفاده خواهد شد.

این دو جزء با یک پل چاپ سه بعدی به هم متصل شده اند ، همچنین یک سوئیچ برای روشن و خاموش کردن دستگاه وجود دارد. فایل های STL سه بعدی برای Bridge و سایر اجزا در پوشه files/3d در GitHub قرار دارند.

مرحله 4: قدرت

قدرت
قدرت

Sword از یک پاوربانک USB 2500 میلی آمپر ساعتی تغذیه می کند - کوچکترین و نازک ترین پاوربانکی که می توانم پیدا کنم. پاوربانک به یک قاب چاپ سه بعدی می رود که به ماژول های ماتریس نقطه متصل می شود ، بنابراین کل کار را در کنار هم نگه می دارد.

دو آهنربای گرد روی بدنه پاوربانک چسبانده شده است و به این ترتیب شمشیر به در وصل می شود (بنابراین برای تعمیر و نگهداری به راحتی جدا می شود).

مرحله 5: شماتیک

شماتیک
شماتیک
شماتیک
شماتیک
شماتیک
شماتیک

شماتیک واقعی در GitHub قرار دارد ، اما یک تصویر 1000 کلمه ارزش دارد (در فناوری اطلاعات 1024) ، بنابراین در اینجا آمده است:

اگر راه خود را با یک اسلحه لحیم کاری می دانید ، این امر بسیار ساده است. اگر تصمیم به استفاده از یکی دیگر دارید ، باید جزء پل را دوباره طراحی کنید.

مرحله 6: چاپ سه بعدی

چاپ سه بعدی
چاپ سه بعدی
چاپ سه بعدی
چاپ سه بعدی
چاپ سه بعدی
چاپ سه بعدی

قاب باتری و یک پل متصل کننده روکش ESP32-CAM به مجموعه نمایش نقطه-ماتریس به صورت سه بعدی طراحی و چاپ شدند.

قاب باتری در 2 قسمت عرضه می شود که پس از چاپ باید به هم چسبانده شوند تا یک "جیب" برای باتری ایجاد شود. پل فقط باید از همه ساختارهای پشتیبانی تمیز شود (متأسفانه جهت گیری مناسبی وجود ندارد که آنها را به حداقل برساند). فایل های STL در GitHub و نسخه های اصلی TinkerCad در اینجا قرار دارند.

طراحی سه بعدی در TinkerCad همچنین شامل شماتیک شبیه سازی مونتاژ نحوه اتصال قطعات به یکدیگر و باید به هم متصل شود.

مرحله 7: برنامه نویسی

چند کار چند منظوره

در این طرح از FreeRTOS برای انجام چند وظیفه پیشگیرانه و از کتابخانه TaskScheduler برای همکاری استفاده می شود. رفتار و پیام های شمشیر از طریق Blynk App کنترل می شود. پس از راه اندازی (پین ها ، راه اندازی دوربین و نقطه-ماتریس ، اتصال به WiFi و غیره) ، دو وظیفه اصلی RTOS ایجاد می شود:

  • وظیفه پخش ویدئو RTOS ، متصل به Core Application of ESP32 (هسته 1)
  • نمایش متن و وظیفه کنترل Blynk RTOS ، متصل به Power Core ESP32 (هسته 0) ، که همچنین وظیفه همه کارهای مربوط به WiFi را بر عهده دارد. مدیریت متن و Blynk از طریق وظایف TaskScheduler مدیریت می شود.

من متوجه شدم که 4K فضای پشته برای کارهای RTOS کافی است ، اما امکان اتمام پشته وجود دارد ، بنابراین اگر ترجیح می دهید ، آن را 8K کنید - RAM زیادی در ESP32 وجود دارد.

همه فیلمبرداری و پخش در Core 1 اتفاق می افتد. سایر موارد - در Core 0.

ESP32 دارای قدرت کافی برای مقابله با همه این موارد با کمی عرق کردن است (هنگام پخش ویدئو داغ می شود).

این هدف اصلی پروژه بود: همزیستی مسالمت آمیز و مولد چند وظیفه ای پیشگیرانه و مشارکتی!

مرحله 8: کنترل ماتریس نقطه

من از کتابخانه های بسیار قدرتمند MD_Parola و MD_MAX72xx که در مدیریت کتابخانه Arduino IDE موجود است استفاده می کنم.

همه جلوه های ویژه متنی از طریق آن کتابخانه ها انجام می شود. کمی تلاش برای تعیین نوع سخت افزاری MAX72XX صحیح (MD_MAX72XX:: ICSTATION_HW در مورد من ، ممکن است شما متفاوت باشد) انجام شد ، پس از آن کنترل متن یک نسیم است.

شمشیر به کنترل های زیر اجازه می دهد:

  • روشنایی
  • پلک زدن
  • فلاش
  • سرعت و جهت حرکت (بالا/پایین ، چپ/راست ، ثابت)
  • همچنین می توانید آن را به ساعت دیواری تبدیل کنید

مرحله 9: پخش ویدئو

Blynk App دارای ویجت کمی برای پخش ویدئو است ، اما می توانید در مرورگر ، پخش کننده VLC یا هر چیزی که از استاندارد MJPEG پشتیبانی می کند ، پخش کنید.

حداکثر 10 مشتری متصل پشتیبانی می شوند.

شما باید آدرس IP ESP32-CAM خود را پیدا کنید تا بتوانید به آن متصل شوید. می توانید آن را در روتر خود جستجو کنید ، یا ابتدا این طرح را با گزینه _DEBUG_ فعال کنید و هنگام اتصال به شبکه ، آدرس IP ترمینال را بخوانید.

مهم: توصیه می شود یک آدرس IP دائمی به ماژول ESP32-CAM یا رزرو DHCP برای آن اختصاص دهید ، بنابراین آدرس آن هنگام پایان قرارداد اجاره تغییر نمی کند. همچنین می توانید برنامه Blynk را تغییر دهید تا آدرس IP را در نشانی اینترنتی جاری به روز کنید - اگر از عهده انجام آن برآمده اید ، یک تکلیف جالب است.

طرح فعلی از رزولوشن QVGA استفاده می کند: 320x240 پیکسل ، که سرعت آن را بسیار بالا می کند. شما آزاد هستید و تشویق می شوید که با سایر قطعنامه ها بازی کنید و تصمیم بگیرید که برای شما مناسب است.

RAM نباید مشکلی ایجاد کند زیرا طرح از PSRAM استفاده می کند.

مرحله 10: پیکربندی

این طرح از کتابخانه های Dictionary و EspBootstrap من برای بارگیری پارامترهای پیکربندی از سرور پیکربندی هنگام بوت استفاده می کند.

من سرور پیکربندی خودم را اجرا می کنم ، که شما نیز می توانید انجام دهید (این یک وب سرور ساده Apache2 است که فقط فایل های JSON را ارائه می دهد).

همچنین می توانید از هر یک از خدمات آنلاین موجود برای انجام این کار استفاده کنید: (OTADrive ، Microsoft Azure ، AWS IoT و غیره). در این مورد لطفاً String makeConfig (مسیر رشته) را تغییر دهید تا URL مناسبی برای منبع پیکربندی شما ایجاد شود. متناوبا ، می توانید فایل پیکربندی را در سیستم فایل SPIFFS در ESP32-CAM ذخیره کرده و آن را از آنجا بخوانید ، یا فقط تمام ورودی ها را به صورت کد سخت وارد کنید. لطفاً برای انتخاب های خود به README کتابخانه EspBootstrap مراجعه کنید.

نمونه ای از یک فایل پیکربندی در GitHub ارائه شده است.

اگر ترجیح می دهید پارامترهای کد سخت را انجام دهید ، یک مثال در زیر آمده است:

pd ("عنوان" ، "راه اندازی شمشیر DND") ؛

pd ("ssid" ، "ssid wifi شما") ؛ pd ("رمز عبور" ، "رمز عبور wifi شما") ؛ pd ("msg"، "Hello!")؛ pd ("devices"، "8")؛ pd ("blynk_auth" ، "blynk AUTH UUID") ؛ // اگر فقط سرور خود را اجرا می کنید: pd ("blynk_host" ، "IP سرور blynk شما") ؛ pd ("blynk_port" ، "پورت سرور شما") ؛

مرحله 11: به روز رسانی سیستم عامل OTA

این طرح همچنین به روزرسانی سیستم عامل OTA (Over The Air) را فعال کرده است و در هر بار راه اندازی سیستم عامل جدید را بررسی می کند.

دوباره ، من سرور به روز رسانی OTA خودم را اجرا می کنم ، که شما نیز می توانید انجام دهید (این یک وب سرور Apache2 ساده با کمی اسکریپت نویسی PHP است که فایل های باینری را ارائه می دهد).

همچنین می توانید از هر یک از خدمات آنلاین اینترنت اشیاء موجود برای انجام این کار استفاده کنید: (OTADrive ، Microsoft Azure ، AWS IoT و غیره). در این مورد لطفاً روش () void checkOTA را تغییر دهید تا به درستی URL به روز رسانی را نشان دهید که به منبع فایل باینری شما اشاره می کند.

این اختیاری است - ممکن است فقط آپلود فایلهای باینری از طریق اتصال سریال را انتخاب کنید.

مرحله 12: سرور MJPEG

این مبحث در اینجا به تفصیل شرح داده شده است.

مرحله 13: برنامه Blynk

برنامه Blynk
برنامه Blynk
برنامه Blynk
برنامه Blynk
برنامه Blynk
برنامه Blynk

Blynk یک بستر اینترنت اشیا مبتنی بر ابر است که امکان توسعه سریع برنامه را فراهم می کند. این برنامه برای استفاده شخصی رایگان است و حتی می تواند سرور Blynk خود را اجرا کند.

من (همانطور که احتمالاً قبلاً حدس زده اید) سرور Blynk خودم را اجرا می کنم ، اما ممکن است استفاده از نسخه ابری برای شما راحت تر باشد. برنامه Blynk iOS یا Android را نصب کنید و تصاویر زیر را دنبال کنید تا برنامه را در تلفن خود بازسازی کنید.

برای کارکردن برنامه با برنامه خود ، باید Blynk Auth UUID خود را ارائه دهید. به همین دلیل از فایل های پیکربندی استفاده می کنم. با این حال ، برای یک پروژه یکبار ، یک مقدار کد سخت به همان اندازه خوب کار می کند.

مهم: لطفاً مطمئن شوید که پروژه Blynk شما طوری تنظیم شده است که وقتی برنامه متصل می شود ، دستگاه ها را مطلع کند.

توجه به ویجت جریان ویدئو: گاهی اوقات ویدئو شروع نمی شود. به نظر می رسد مشکلی در ESP32 وجود ندارد ، بلکه ویجت ویدئویی برنامه Blynk است. سعی کنید برنامه را ببندید و دوباره باز کنید یا پروژه را متوقف کنید/دوباره شروع کنید. سرانجام ، شروع می شود. به نظر می رسد این مشکل در مرورگر یا پخش کننده VLC وجود ندارد (به عنوان مثال).

مرحله 14: لذت ببرید

ساختن این امر بسیار سرگرم کننده بود و ثابت کرد که یک دستگاه با اندازه پست الکترونیکی مانند ESP32 می تواند کارهای بیشتری فراتر از پخش مستقیم ویدئو انجام دهد. بسیاری از مفاهیم این پروژه می تواند مجدداً در برنامه های دیگر مورد استفاده قرار گیرد.

مرحله 15: کتابخانه ها و کد

کتابخانه ها:

  • سرور بلینک
  • کتابخانه EspBootstrap
  • کتابخانه TaskScheduler
  • کتابخانه فرهنگ لغت
  • کتابخانه ماتریس LED
  • کتابخانه برای نمایش متن های ماتریس LED پیمایش مدولار

مخزن واقعی:

Minecraft Interactive Sword/Sign (ESP32-CAM) وارد نکنید

توصیه شده: