Obsah:

Interaktivní Minecraft Nezadávejte meč/znak (ESP32-CAM): 15 kroků (s obrázky)
Interaktivní Minecraft Nezadávejte meč/znak (ESP32-CAM): 15 kroků (s obrázky)

Video: Interaktivní Minecraft Nezadávejte meč/znak (ESP32-CAM): 15 kroků (s obrázky)

Video: Interaktivní Minecraft Nezadávejte meč/znak (ESP32-CAM): 15 kroků (s obrázky)
Video: Interaktivní Minecraft S02E01 - Bude to jízda! 2024, Listopad
Anonim
Image
Image
Finální produkt
Finální produkt

Existuje opravdu několik důvodů, proč tento projekt vznikl:

1. Jako autor kooperativní multitaskingové knihovny TaskScheduler jsem byl vždy zvědavý, jak skloubit výhody kooperativního multitaskingu s výhodami pre-emptivního. Oba mají výhody a oba mají nedostatky. Kombinace těchto dvou umožňuje jedinečnou příležitost využít výhody a přehrát problémy buď na základě konkrétního případu použití. Zajímavý? Číst dál…

2. Už samotný fakt, že ESP32 je vícejádrový mikrokontrolér, je fascinující. Vždy jsem byl zvědavý, jestli mohu této funkce využít. Experiment tedy byl: dokáže ESP32 streamovat video plynule pomocí jednoho jádra, zatímco na druhém jádru dělá něco jiného (smysluplného a přiměřeně intenzivního něco jiného). Ještě zajímavější ?? Číst dál…!

3. Potřeboval jsem testovací půdu pro své nedávné projekty kolem zajišťování firmwaru OTA a správy konfigurace…

4. Koupil jsem před časem dva moduly LED Dot Matrix a nemohl jsem přijít na to, co s nimi…

5. Můj syn je hráčem Minecraftu a jako každý malý chlapec rád zdobí své dveře plakáty „Nevstupovat“…

Tak jdeme na to - všechny dobré důvody pro: Interaktivní Nevstupujte na cedulku s ESP32 -CAM streamováním videa „zpoza zavřených dveří“- nebo „Kdo přichází do mého pokoje?“

Takže … o co jde?

Pokud máte trpělivost přečíst si celý příběh, uvědomíte si, že to ve skutečnosti není o meči Minecraftu. Tento projekt je důkazem mnoha konceptů:

  • Koexistence preventivního a kooperativního multitaskingu
  • Selektivní použití jader ESP32
  • Použití nových knihoven Dictionary a EspBootstrap
  • Zajištění firmwaru OTA
  • Správa konfigurace
  • Streamování videa více klientům

a mnoho dalšího.

Užívat si

Zásoby

  • ESP32-CAM
  • MAX7219 Dot Matrix Module 4-v-1 LED Display Module Geekcreit pro Arduino
  • Power Bank Attom Tech 2500mAh

Krok 1: Konečný produkt

Finální produkt
Finální produkt

Začnu tím, jak konečný produkt vypadá, a poté vysvětlím, jak byl postaven a jak jej ovládat.

Vypadá to tak poutavěji…

Krok 2: Čelní deska meče

Čelní deska meče
Čelní deska meče
Čelní deska meče
Čelní deska meče

Čelní deska meče je vyrobena z tabule, označena tužkou a vybarvena značkami Crayola. To samo o sobě by mohl být zajímavý projekt s vaším dítětem:

  • Označte meč na tabuli
  • Vyřízněte čelní desku
  • Označte čtverce (nebo bloky)
  • Vybarvěte je jednotlivě
  • Přidejte ostré čáry.

Zahrnul jsem dokument otevřené kanceláře s ukázkovým obrázkem diamantového meče, který můžete nalepit na tabuli, pokud dáváte přednost zkratkám … Až bude vše hotové, můžete čelní desku buď lepit za tepla ke zbytku sestavy, nebo použít dvojité oboustranná páska.

Krok 3: Dot Matrix LED displej

Dot Matrix LED displej
Dot Matrix LED displej
Dot Matrix LED displej
Dot Matrix LED displej
Dot Matrix LED displej
Dot Matrix LED displej

Měl jsem 2 z nich, každý po 4 segmentech, a tak jsem se rozhodl udělat jeden 8segmentový.

Pohodlně je na jedné straně 5kolíkový konektor záhlaví a odpovídající 5 otvorů na opačné straně. Ohnutím mužského záhlaví do sponkovitého] tvaru jsem dokázal oba moduly spojit elektricky i mechanicky! Zabil dva ptáky jedním kamenem (nebo dvě mouchy jednou ranou, aby zastavil dvě tlamy jedním soustem, udělal dva přátele jedním dárkem, měl dvě struny na jeden luk, jaké jsou další idiomy - záleží na tom? Promiň, odbočil jsem).

Opačný samčí záhlaví bude použit pro připojení odpovídajícího samičího záhlaví z veroboardu s ESP32-Cam a dalšími komponentami.

Tyto dvě komponenty jsou propojeny pomocí 3D tištěného můstku, který také obsahuje přepínač pro zapnutí a vypnutí napájení. 3D soubory STL pro můstek a další komponenty jsou umístěny ve složce files/3d na GitHubu.

Krok 4: Napájení

Napájení
Napájení

Sword je napájen 2500 mAh USB power bankou - nejmenší a nejtenčí, jakou jsem mohl najít. Powerbank se zasouvá do pouzdra s 3D potiskem, které se také připojuje k modulům jehličkové matice, čímž drží celou věc pohromadě.

Na pouzdru powerbanky jsou přilepené dva kulaté magnety, a tím je meč připevněn ke dveřím (aby se dal snadno odepnout kvůli údržbě).

Krok 5: Schéma

Schéma
Schéma
Schéma
Schéma
Schéma
Schéma

Skutečné schéma se nachází na GitHubu, ale obrázek má hodnotu 1000 slov (1024 v informačních technologiích), takže tady jste:

To je docela jednoduché, pokud znáte svou cestu s pájecí pistolí. UPOZORNĚNÍ: Část 3D můstku je navržena pro velmi specifickou velikost veroboardu: 30 x 70 mm. Pokud se rozhodnete použít jiný, musíte znovu navrhnout součást můstku.

Krok 6: 3D tisk

3D tisk
3D tisk
3D tisk
3D tisk
3D tisk
3D tisk

Pouzdro na baterie a můstek spojující veroboard ESP32-CAM se sestavou jehličkového displeje byly navrženy a vytištěny ve 3D.

Pouzdro na baterii se skládá ze 2 částí, které je třeba po tisku slepit a vytvořit tak „kapsu“pro baterii. Most je třeba vyčistit od všech podpůrných struktur (neexistuje dobrá orientace, která by je bohužel minimalizovala). Soubory STL jsou na GitHubu a zde jsou umístěny originály TinkerCad.

3D návrh na TinkerCad také obsahuje simulované schéma montáže, jak části do sebe zapadají a měly by být spojeny.

Krok 7: Programování

Multi-multitasking

Tento design používá FreeRTOS pro preemptivní multitasking a knihovnu TaskScheduler pro kooperativní. Chování a zprávy meče se ovládají pomocí aplikace Blynk. Po nastavení (inicializace pinů, kamery a jehličkové matice, připojení k WiFi atd.) Se vytvoří dvě hlavní úlohy RTOS:

  • Úkol RTOS pro streamování videa, připnutý k aplikačnímu jádru ESP32 (jádro 1)
  • Textový displej a Blynk ovládají úlohu RTOS připojenou k Power Core ESP32 (jádro 0), která je také zodpovědná za všechny úkoly související s WiFi. Provádění související s textem a Blynkem je spravováno pomocí úloh TaskScheduler.

Zjistil jsem, že pro úlohy RTOS stačí 4 kB místa v zásobníku, ale existuje možnost, že dojde k nedostatku zásobníku, takže pokud dáváte přednost, udělejte to 8 kB - na ESP32 je spousta paměti RAM.

Veškeré nahrávání a streamování videa probíhá v jádru 1. Všechno ostatní - v jádru 0.

ESP32 má dostatek energie, aby to všechno zvládl s trochou potu (deska se při streamování videa zahřívá).

TOTO byl hlavní cíl projektu: mírové a produktivní soužití preemptivního a kooperativního multitaskingu!

Krok 8: Dot Matrix Control

Používám velmi výkonné knihovny MD_Parola a MD_MAX72xx dostupné také ve správci knihoven Arduino IDE.

Všechny textové speciální efekty se provádějí prostřednictvím těchto knihoven. Určení správného typu hardwaru MAX72XX (MD_MAX72XX:: ICSTATION_HW v mém případě může být váš jiný) vyžadovalo trochu úsilí, poté je ovládání textu hračkou.

Meč umožňuje následující ovládání:

  • Jas
  • Bliká
  • Blikat
  • Rychlost a směr posouvání (nahoru/dolů, doleva/doprava, stabilní)
  • Můžete z něj také udělat nástěnné hodiny

Krok 9: Streamování videa

Aplikace Blynk má malý widget pro streamování videa, ale můžete streamovat do prohlížeče, přehrávače VLC nebo čehokoli, co podporuje standard MJPEG.

Podporováno je až 10 připojených klientů.

Abyste se k němu mohli připojit, budete muset zjistit IP adresu vašeho ESP32-CAM. Můžete si to vyhledat na routeru nebo zkompilovat tento náčrt s povolenou možností _DEBUG_ a přečíst si IP adresu terminálu, když se připojí k vaší síti.

DŮLEŽITÉ: Je velmi vhodné přiřadit trvalou IP adresu modulu ESP32-CAM nebo pro něj vytvořit rezervaci DHCP, aby se jeho adresa po vypršení pronájmu nezměnila. Můžete také upravit aplikaci Blynk a aktualizovat IP adresu v URL streamu - zajímavé domácí úkoly, pokud na to máte.

Aktuální skica používá rozlišení QVGA: 320 x 240 pixelů, což je docela rychlé. Máte volnost a jste povzbuzováni hrát s jinými rozlišeními a rozhodovat, co vám vyhovuje.

RAM by neměl být problém, protože skica využívá výhody PSRAM.

Krok 10: Konfigurace

Náčrt využívá mých knihoven Dictionary a EspBootstrap k načtení konfiguračních parametrů z konfiguračního serveru při spuštění.

Provozuji vlastní konfigurační server, což můžete také udělat (je to jednoduchý webový server Apache2, který ve skutečnosti slouží pouze souborům JSON).

Můžete také použít kteroukoli z online služeb dostupných pro daný úkol: (OTADrive, Microsoft Azure, AWS IoT atd.). V takovém případě prosím změňte metodu String makeConfig (String path) tak, aby odpovídajícím způsobem vytvořila adresu URL směřující na váš zdroj konfigurace. Alternativně můžete konfigurační soubor uložit do souborového systému SPIFFS na ESP32-CAM a odtud jej přečíst, nebo jednoduše naprogramovat všechny položky natvrdo. Možnosti najdete v README knihovny EspBootstrap.

Příklad konfiguračního souboru je k dispozici na GitHubu.

Pokud dáváte přednost parametrům v pevném kódu, příklad je níže:

pd („Název“, „Nastavení meče DND“);

pd ("ssid", "vaše wifi ssid"); pd („heslo“, „vaše heslo k wifi“); pd ("msg", "Hello!"); pd ("zařízení", "8"); pd ("blynk_auth", "váš blynk AUTH UUID"); // pokud provozujete pouze svůj vlastní server: pd ("blynk_host", "IP vašeho serveru blynk"); pd ("blynk_port", "port vašeho serveru");

Krok 11: Aktualizace firmwaru OTA

Skica má také povolenou aktualizaci firmwaru OTA (Over The Air) a kontroluje nový firmware při každém spuštění.

Opět provozuji svůj vlastní aktualizační server OTA, což můžete také udělat (je to jednoduchý webový server Apache2 s trochou skriptování PHP, který obsluhuje binární soubory).

Můžete také použít kteroukoli z online služeb IoT dostupných pro daný úkol: (OTADrive, Microsoft Azure, AWS IoT atd.). V takovém případě prosím změňte metodu void checkOTA () tak, aby odpovídajícím způsobem vytvořila aktualizační adresu URL směřující na váš binární zdroj souboru.

Toto je volitelné - můžete se rozhodnout pouze nahrát binární soubory prostřednictvím sériového připojení.

Krok 12: Server MJPEG

Toto téma je podrobně popsáno zde.

Krok 13: Aplikace Blynk

Blynk App
Blynk App
Blynk App
Blynk App
Blynk App
Blynk App

Blynk je cloudová platforma IoT, která umožňuje rychlý vývoj aplikací. Je zdarma pro osobní použití a dokonce má možnost provozovat vlastní server Blynk.

(Jak jste již možná uhodli) provozuji svůj vlastní server Blynk, ale může být pro vás jednodušší používat cloudovou verzi. Nainstalujte si aplikaci Blynk pro iOS nebo Android a při rekonstrukci aplikace v telefonu postupujte podle následujících obrázků.

Aby aplikace fungovala s vaší aplikací, budete muset zadat vlastní UUID Blynk Auth. Proto používám konfigurační soubory. U jednorázového projektu by ale pevně zakódovaná hodnota fungovala stejně dobře.

DŮLEŽITÉ: Ujistěte se, že je váš projekt Blynk nastaven na oznamování zařízení při připojení aplikace.

POZNÁMKA k widgetu pro streamování videa: někdy se video nespustí. Zdá se, že to není problém s ESP32, spíše s video widgetem aplikace Blynk. Zkuste zavřít a znovu otevřít aplikaci nebo zastavit/spustit projekt znovu. Nakonec to začne. Zdá se, že tento problém neexistuje v prohlížeči nebo přehrávači VLC (například).

Krok 14: Užijte si to

Byla to legrace stavět to a dokázat, že zařízení velikosti poštovního razítka, jako je ESP32, dokáže mnohem víc, než jen streamovat video. Mnoho konceptů z tohoto projektu by bylo možné znovu použít v jiných aplikacích.

Krok 15: Knihovny a kód

Knihovny:

  • Server Blynk
  • Knihovna EspBootstrap
  • Knihovna TaskScheduler
  • Slovníková knihovna
  • LED maticová knihovna
  • Knihovna pro modulární rolování LED maticových textových displejů

Skutečné úložiště:

Interaktivní Minecraft Nezadávejte meč/znak (ESP32-CAM)

Doporučuje: