Съдържание:

Интерактивен Minecraft Не въвеждайте меч/знак (ESP32-CAM): 15 стъпки (със снимки)
Интерактивен Minecraft Не въвеждайте меч/знак (ESP32-CAM): 15 стъпки (със снимки)

Видео: Интерактивен Minecraft Не въвеждайте меч/знак (ESP32-CAM): 15 стъпки (със снимки)

Видео: Интерактивен Minecraft Не въвеждайте меч/знак (ESP32-CAM): 15 стъпки (със снимки)
Видео: КАК СОЗДАТЬ СВОЙ МОД В МАЙНКРАФТ С ПОМОЩЬЮ MCREATOR БЕЗ НАПИСАНИЯ КОДОВ? Minecraft Mod Forge 2024, Ноември
Anonim
Image
Image
Краен продукт
Краен продукт

Наистина има няколко причини, поради които този проект възникна:

1. Като автор на кооперативна многозадачна библиотека TaskScheduler винаги ми беше любопитно как да комбинирам предимствата на кооперативната многозадачност с предимствата на предварителната. И от двете има ползи и двете имат недостатъци. Комбинирането на двете дава уникална възможност да се използват предимствата и да се намалят проблемите на всеки от тях въз основа на конкретен случай на употреба. Интересно? Прочетете на…

2. Самият факт, че ESP32 е многоядрен микроконтролер, е очарователен. Винаги ми беше любопитно дали мога да се възползвам от тази функция. Така че експериментът тук беше: може ли ESP32 да стриймва видео безпроблемно, използвайки едно ядро, докато прави нещо друго (смислено и разумно интензивно нещо друго) на другото ядро. Още по -интересно ?? Четете …!

3. Имах нужда от полигон за последните си проекти, свързани с предоставяне на OTA фърмуер и управление на конфигурацията …

4. Преди време бях закупил два LED Dot Matrix модула и не можах да разбера какво да правя с тях …

5. Синът ми е играч на Minecraft и както всяко малко момче обича да украсява вратата си с плакати „Не влизай“…

И така, ето ви - всички добри причини за: Интерактивен знак „Не влизайте“с врата с ESP32 -CAM стрийминг на видео емисия „отзад затворената врата“- или „Кой идва в стаята ми?“

И така … за какво става въпрос?

Ако имате търпение да прочетете цялата история, разбирате, че всъщност не става въпрос за меч на Minecraft. Този проект е доказателство за много концепции:

  • Съвместно съществуване на превантивна и кооперативна многозадачност
  • Селективно използване на ядра ESP32
  • Използване на нови библиотеки за речник и EspBootstrap
  • Осигуряване на OTA фърмуер
  • Управление на конфигурацията
  • Видео стрийминг към множество клиенти

и много повече.

Наслади се

Консумативи

  • ESP32-CAM
  • MAX7219 Dot Matrix Module 4-in-1 LED Display Module Geekcreit за Arduino
  • Банка за захранване Attom Tech 2500mAh

Стъпка 1: Краен продукт

Краен продукт
Краен продукт

Ще започна с това как изглежда крайният продукт, а след това ще обясня как е създаден и как да го контролирам.

Изглежда по -ангажиращо по този начин …

Стъпка 2: Лицева плоча на меча

Лицева плоча на меча
Лицева плоча на меча
Лицева плоча на меча
Лицева плоча на меча

Лицевата плоча на меча е направена от бялата дъска, маркирана с молив и оцветена с маркери Crayola. Само това може да бъде интересен проект с вашето дете:

  • Маркирайте меч на бяла дъска
  • Изрежете лицевата плоча
  • Маркирайте квадратите (или блоковете)
  • Оцветете ги индивидуално
  • Добавете черни линии с острие.

Включих отворен офис документ с примерна снимка на диамантен меч, който можете да залепите върху бялата дъска, ако предпочитате преки пътища … След като всичко е направено, можете или да залепите горещо лицевата плоча към останалата част от сглобката, или да използвате двойно- едностранна лента.

Стъпка 3: Dot Matrix LED дисплей

Матричен светодиоден дисплей
Матричен светодиоден дисплей
Матричен светодиоден дисплей
Матричен светодиоден дисплей
Матричен светодиоден дисплей
Матричен светодиоден дисплей

Имах 2 от тях, по 4 сегмента всеки, затова реших да направя един 8-сегментен.

Удобно има 5-пинов мъжки хедър от едната страна и съвпадащи 5 дупки от другата страна. Огъвайки мъжкия хедър във форма, подобна на телбод, успях да свържа двата модула както електрически, така и механично! Уби две птици с един камък (или две мухи с един замах, да спре две уста с една хапка, да направи двама приятели с един подарък, да има две струни към един лък, какви са другите идиоми по този въпрос - мислили ли сте? Съжалявам, отклоних се).

Противоположният мъжки хедър ще се използва за свързване на съвпадащ женски хедър от veroboard с ESP32-Cam и други компоненти.

Двата компонента са свързани с 3D отпечатан мост, който също съдържа превключвател за включване и изключване на захранването. 3D STL файлове за мост и други компоненти се намират в папката files/3d на GitHub.

Стъпка 4: Захранване

Мощност
Мощност

Sword се захранва от 2500 mAh USB захранваща банка - най -малката и най -тънката, която мога да намеря. Powerbank се плъзга в 3D отпечатан калъф, който също се прикрепя към матричните модули, като по този начин държи цялото нещо заедно.

Има два кръгли магнита, залепени към кутията на захранващия блок и по този начин мечът е прикрепен към вратата (така че може да бъде толкова лесно отделен за поддръжка).

Стъпка 5: Схеми

Схематично
Схематично
Схематично
Схематично
Схематично
Схематично

Истинската схема се намира на GitHub, но картината струва 1000 думи (1024 в информационните технологии), така че тук сте:

Това е доста лесно, ако познавате пътя си с пистолет за запояване. ЗАБЕЛЕЖКА: 3D мостовата част е проектирана за много специфичен размер на борда: 30 x 70 mm. Ако решите да използвате различен, трябва да препроектирате компонента на моста.

Стъпка 6: 3D печат

3D печат
3D печат
3D печат
3D печат
3D печат
3D печат

Корпусът на батерията и мостът, свързващ ESP32-CAM veroboard с точково-матричния дисплей, бяха проектирани и отпечатани 3D.

Калъфът за батерията се предлага в 2 части, които трябва да бъдат залепени заедно след отпечатване, за да се създаде "джоб" за батерията. Мостът просто трябва да бъде почистен от всички опорни конструкции (няма добра ориентация, която да ги сведе до минимум, за съжаление). STL файловете са на GitHub и оригиналите на TinkerCad се намират тук.

3D дизайнът на TinkerCad включва и симулирана схема на сглобяване на това как частите се вписват заедно и трябва да бъдат свързани.

Стъпка 7: Програмиране

Многозадачност

Този дизайн използва FreeRTOS за изпреварваща многозадачност и библиотека TaskScheduler за съвместна работа. Поведението и съобщенията на Sword се контролират чрез приложението Blynk. След настройка (игли, камера и матрична инициализация, свързване към WiFi и т.н.) се създават две основни задачи за RTOS:

  • RTOS задача за стрийминг на видео, прикрепена към ядрото на приложението на 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 има малка джаджа за стрийминг на видео, но можете да предавате поточно в браузъра, VLC плейъра или всичко, което поддържа стандарта MJPEG.

Поддържат се до 10 свързани клиенти.

Ще трябва да разберете IP адреса на вашия ESP32-CAM, за да можете да се свържете с него. Можете да го потърсите на вашия рутер или да компилирате тази скица с първоначално активирана опция _DEBUG_ и да прочетете IP адреса на терминала, когато той се свърже с вашата мрежа.

ВАЖНО: Много е препоръчително да присвоите постоянен IP адрес на или да създадете DHCP резервация за модула ESP32-CAM, така че неговият адрес да не се променя, когато срокът на лизинга изтече. Можете също така да промените приложението Blynk, за да актуализирате IP адреса в URL адреса на потока - интересно задание за домашна работа, ако го правите.

Настоящата скица използва QVGA резолюция: 320x240 пиксела, което я прави доста бърза. Вие сте свободни и насърчавани да играете с други резолюции и да решите какво работи за вас.

RAM не би трябвало да е проблем, тъй като скицата се възползва от PSRAM.

Стъпка 10: Конфигурация

Скицата се възползва от моите библиотеки за речник и EspBootstrap за зареждане на конфигурационни параметри от конфигурационния сървър при зареждане.

Пускам собствен сървър за конфигуриране, което можете да направите и вие (това е прост уеб сървър Apache2, който наистина обслужва JSON файлове).

Можете също да използвате някоя от онлайн услугите, налични за задачата: (OTADrive, Microsoft Azure, AWS IoT и др.). В този случай, моля, променете метода String makeConfig (String path), за да конструирате по подходящ начин URL адрес, сочещ към вашия източник на конфигурация. Като алтернатива можете да запишете конфигурационния файл във файловата система SPIFFS на ESP32-CAM и да го прочетете от там, или просто да кодирате хардкор всички записи. Моля, вижте README на библиотеката EspBootstrap за вашите възможности.

Пример за конфигурационен файл е предоставен на GitHub.

Ако предпочитате да кодирате параметрите хардкод, пример е по -долу:

pd ("Заглавие", "Настройка на DND Sword");

pd ("ssid", "вашият wifi ssid"); pd ("парола", "вашата парола за wifi"); pd ("msg", "Hello!"); pd ("devices", "8"); pd ("blynk_auth", "вашият blynk AUTH UUID"); // ако работите само със собствен сървър: pd ("blynk_host", "вашият blynk сървър IP"); pd ("blynk_port", "вашият порт на сървъра");

Стъпка 11: Актуализации на фърмуера на OTA

Скицата също е активирана актуализация на фърмуера на OTA (Over The Air) и проверява за нов фърмуер при всяко зареждане.

Отново пускам собствен OTA сървър за актуализация, което можете да направите и вие (това е прост уеб сървър Apache2 с малко PHP скриптове, обслужващи бинарни файлове).

Можете също да използвате някоя от онлайн услугите на IoT, налични за задачата: (OTADrive, Microsoft Azure, AWS IoT и др.). В този случай, моля, променете метода void checkOTA (), за да създадете по подходящ начин URL за актуализация, сочещ към вашия двоичен източник на файл.

Това е по избор - може да изберете просто да качите двоични файлове чрез серийна връзка.

Стъпка 12: MJPEG сървър

Тази тема е описана подробно тук.

Стъпка 13: Приложението Blynk

Приложение Blynk
Приложение Blynk
Приложение Blynk
Приложение Blynk
Приложение Blynk
Приложение Blynk

Blynk е облачна IoT платформа, която позволява бързо разработване на приложения. Той е безплатен за лична употреба и дори има възможност да стартирате свой собствен Blynk сървър.

Аз (както може би вече се досещате) използвам собствен Blynk сървър, но може да ви е по -лесно да използвате облачната версия. Инсталирайте приложението Blynk за iOS или Android и следвайте снимките по -долу, за да възстановите приложението на телефона си.

Ще трябва да предоставите свой собствен UUID на Blynk Auth, за да може приложението да работи с вашето приложение. Ето защо използвам конфигурационни файлове. Въпреки това, за еднократен проект, твърдо кодирана стойност би работила също толкова добре.

ВАЖНО: Моля, уверете се, че вашият Blynk Project е настроен на Notify Devices When App Connected.

ЗАБЕЛЕЖКА за приспособлението за стрийминг на видео: понякога видеото не стартира. Изглежда не е проблем с ESP32, по -скоро с видео джаджата на приложението Blynk. Опитайте да затворите и отворите отново приложението или да спрете/стартирате проекта отново. В крайна сметка започва. Изглежда, че този проблем не съществува в браузъра или VLC плейъра (например).

Стъпка 14: Насладете се

Беше много забавно да се изгради това и да се докаже, че устройство с размер на пощенска марка като ESP32 може да направи много повече от просто поточно видео. Много концепции от този проект могат да бъдат използвани повторно в други приложения.

Стъпка 15: Библиотеки и код

Библиотеки:

  • Blynk сървър
  • Библиотека на EspBootstrap
  • Библиотека на TaskScheduler
  • Речникова библиотека
  • Библиотека с LED матрици
  • Библиотека за модулни превъртащи се LED матрични текстови дисплеи

Действително хранилище:

Minecraft Interactive Do Not Enter Sword/Sign (ESP32-CAM)

Препоръчано: