Obsah:

Interaktívny Minecraft Nezadávajte meč/znak (ESP32-CAM): 15 krokov (s obrázkami)
Interaktívny Minecraft Nezadávajte meč/znak (ESP32-CAM): 15 krokov (s obrázkami)

Video: Interaktívny Minecraft Nezadávajte meč/znak (ESP32-CAM): 15 krokov (s obrázkami)

Video: Interaktívny Minecraft Nezadávajte meč/znak (ESP32-CAM): 15 krokov (s obrázkami)
Video: ИГРУШКА MINECRAFT ДЛЯ ЛЮБИТЕЛЕЙ ХЕКСА - Minecraft Dungeons 2024, November
Anonim
Image
Image
Finálny produkt
Finálny produkt

Existuje skutočne niekoľko dôvodov, prečo tento projekt vznikol:

1. Ako autor kooperatívnej multitaskingovej knižnice TaskScheduler ma vždy zaujímalo, ako skombinovať výhody kooperatívneho multitaskingu s výhodami pre-emptívneho. Oba majú výhody a oba majú nedostatky. Kombinácia týchto dvoch možností ponúka jedinečnú príležitosť využiť výhody a prehrať problémy buď na základe konkrétneho prípadu použitia. Zaujímavé? Pokračuj v čítaní…

2. Samotný fakt, že ESP32 je viacjadrový mikrokontrolér, je fascinujúci. Vždy som bol zvedavý, či môžem túto funkciu využiť. Experiment teda bol: môže ESP32 plynulo streamovať video pomocou jedného jadra, zatiaľ čo robí niečo iné (zmysluplné a primerane intenzívne niečo iné) na druhom jadre. Ešte zaujímavejšie ?? Pokračuj v čítaní…!

3. Potreboval som testovacie prostredie pre svoje nedávne projekty okolo poskytovania firmvéru OTA a správy konfigurácie …

4. Kúpil som si pred časom dva moduly LED Dot Matrix a nevedel som prísť na to, čo s nimi…

5. Môj syn je hráčom Minecraftu a ako každý malý chlapec rád zdobí svoje dvere plagátmi „Nevstupovať“…

Tak nech sa páči - všetky dobré dôvody pre: Interaktívny dverný nápis Nevstupujte pomocou streamovania videa ESP32 -CAM „spoza zatvorených dverí“- alebo „Kto príde do mojej miestnosti?“

Takže … o čo vlastne ide?

Ak máte trpezlivosť na prečítanie celého príbehu, uvedomíte si, že v skutočnosti nejde o meč Minecraft. Tento projekt je dôkazom mnohých konceptov:

  • Koexistencia preventívneho a kooperatívneho multitaskingu
  • Selektívne používanie jadier ESP32
  • Použitie nových knižníc Dictionary a EspBootstrap
  • Zabezpečenie firmvéru OTA
  • Správa konfigurácie
  • Streamovanie videa pre viacerých klientov

a veľa ďalších.

Užite si to

Zásoby

  • ESP32-CAM
  • Modul MAX7219 Dot Matrix Module 4-v-1 LED displejový modul Geekcreit pre Arduino
  • Energetická banka Attom Tech 2500 mAh

Krok 1: Konečný produkt

Finálny produkt
Finálny produkt

Začnem tým, ako konečný produkt vyzerá, a potom vysvetlím, ako bol postavený a ako ho ovládať.

Zdá sa to takto pútavejšie …

Krok 2: Čelná doska meča

Čelná doska meča
Čelná doska meča
Čelná doska meča
Čelná doska meča

Čelná doska meča je vyrobená z tabule, označená ceruzkou a zafarbená značkami Crayola. Toto samotné by mohol byť zaujímavý projekt s vašim dieťaťom:

  • Zapíšte meč na tabuľu
  • Vystrihnite prednú dosku
  • Označte štvorce (alebo bloky)
  • Vyfarbite ich jednotlivo
  • Štipkou pridajte čierne čiary.

Priložil som dokument z otvorenej kancelárie so vzorovým obrázkom diamantového meča, ktorý môžete prilepiť na tabuľu, ak dávate prednosť skratkám … Keď je všetko hotové, môžete čelnú dosku buď prilepiť za tepla k zvyšku zostavy, alebo použiť dvojité obojstranná páska.

Krok 3: Bodový maticový LED displej

Bodový maticový LED displej
Bodový maticový LED displej
Bodový maticový LED displej
Bodový maticový LED displej
Bodový maticový LED displej
Bodový maticový LED displej

Mal som 2 z nich, po 4 segmenty, a tak som sa rozhodol urobiť jeden 8-segmentový.

Pohodlne je na jednej strane 5-kolíkový kolíkový konektor a zodpovedajúcich 5 otvorov na opačnej strane. Ohnutím mužskej hlavičky do tvaru sponky] sa mi podarilo spojiť dva moduly elektricky aj mechanicky! Zabil dve muchy jednou ranou (alebo dve muchy jednou ranou, zastaviť dve ústa jedným kúskom, spriateliť sa s jedným darčekom dvoch priateľov, mať dve šnúrky na jeden luk, aké sú ďalšie idiomy v tejto záležitosti - mysleli ste si? Prepáč, odbočil som).

Opačná samičia hlavička bude použitá na prepojenie zodpovedajúcej samičej hlavičky z veroboardu s ESP32-Cam a ďalšími komponentmi.

Tieto dve súčasti sú spojené mostom s 3D tlačou, v ktorom je tiež umiestnený vypínač na zapnutie a vypnutie napájania. 3D súbory STL pre most a ďalšie komponenty sú umiestnené v priečinku files/3d na GitHub.

Krok 4: Napájanie

Moc
Moc

Meč je napájaný 2500 mAh USB power bankou - najmenšou a najtenšou, akú som mohol nájsť. Powerbank sa zasunie do puzdra s 3D tlačou, ktoré sa tiež pripája k modulom bodovej matice, čím drží celú vec pohromade.

Na puzdre powerbanky sú prilepené dva okrúhle magnety, a tým je meč pripevnený k dverám (aby sa dal ľahko odpojiť kvôli údržbe).

Krok 5: Schéma

Schematický
Schematický
Schematický
Schematický
Schematický
Schematický

Skutočná schéma je umiestnená na GitHub, ale obrázok má hodnotu 1000 slov (1024 v informačných technológiách), takže tu ste:

To je celkom jednoduché, ak poznáte svoju cestu s spájkovacou pištoľou. UPOZORNENIE: Časť 3d mosta je navrhnutá pre veľmi špecifickú veľkosť veroboardu: 30 x 70 mm. Ak sa rozhodnete použiť iný, musíte znova navrhnúť mostový komponent.

Krok 6: 3D tlač

3D tlač
3D tlač
3D tlač
3D tlač
3D tlač
3D tlač

Puzdro na batériu a most spájajúci veroboard ESP32-CAM so zostavou ihličkového displeja boli navrhnuté a vytlačené v 3D formáte.

Puzdro na batériu sa skladá z 2 častí, ktoré je potrebné po vytlačení zlepiť, aby sa vytvorilo „vrecko“na batériu. Most je potrebné vyčistiť od všetkých nosných štruktúr (v skutočnosti neexistuje dobrá orientácia, ktorá ich bohužiaľ minimalizuje). Súbory STL sú na serveroch GitHub a originály TinkerCad sa nachádzajú tu.

3D návrh na TinkerCad tiež obsahuje simulovanú schému montáže, ako diely do seba zapadajú a ako by mali byť prepojené.

Krok 7: Programovanie

Multi-multitasking

Tento dizajn používa FreeRTOS na preventívne multitasking a knižnicu TaskScheduler na kooperatívnu. Správanie a správy meča sú ovládané pomocou aplikácie Blynk. Po nastavení (inicializácia pinov, fotoaparátu a bodovej matice, pripojenie k WiFi atď.) Sú vytvorené dve hlavné úlohy RTOS:

  • Úloha RTOS streamovania videa, pripnutá k aplikačnému jadru ESP32 (jadro 1)
  • Textový displej a úloha Blynk riadia RTOS, pripojené k Power Core ESP32 (jadro 0), ktorý je tiež zodpovedný za všetky úlohy súvisiace s WiFi. Vykonávanie súvisiace s textom a Blynkom je spravované pomocou úloh TaskScheduler.

Zistil som, že na úlohy RTOS stačí 4 kB miesta v zásobníku, ale existuje možnosť, že sa zásobník minie, takže ak chcete, urobte ho 8 kB - na ESP32 je veľa pamäte RAM.

Všetky videá a ich streamovanie prebieha v jadre 1. Všetko ostatné - v jadre 0.

ESP32 má dostatok energie, aby to všetko zvládol s trochou potu (doska sa pri streamovaní videa zahrieva).

TOTO bolo hlavným cieľom projektu: mierové a produktívne spolužitie preemptívneho a kooperatívneho multitaskingu!

Krok 8: Ovládanie bodovej matice

Používam veľmi výkonné knižnice MD_Parola a MD_MAX72xx, dostupné aj v správcovi knižníc Arduino IDE.

Prostredníctvom týchto knižníc sa vykonávajú všetky textové špeciálne efekty. Určenie správneho typu hardvéru MAX72XX (MD_MAX72XX:: ICSTATION_HW v mojom prípade môže byť váš iný) si vyžadovalo trochu úsilia, potom je ovládanie textu hračkou.

Meč umožňuje nasledujúce ovládanie:

  • Jas
  • Bliká
  • Blesk
  • Rýchlosť a smer posúvania (hore/dole, doľava/doprava, stabilné)
  • Môžete z neho tiež urobiť nástenné hodiny

Krok 9: Streamovanie videa

Aplikácia Blynk má malý widget na streamovanie videa, ale môžete streamovať do prehliadača, prehrávača VLC alebo čohokoľvek, čo podporuje štandard MJPEG.

Podporovaných je až 10 pripojených klientov.

Aby ste sa k nej mohli pripojiť, budete musieť zistiť IP adresu vášho ESP32-CAM. Môžete si to vyhľadať na svojom smerovači alebo skompilovať tento náčrt s najskôr povolenou možnosťou _DEBUG_ a prečítať si IP adresu terminálu, keď sa pripája k vašej sieti.

DÔLEŽITÉ: Je veľmi vhodné priradiť k modulu ESP32-CAM trvalú IP adresu alebo vytvoriť rezerváciu DHCP, aby sa jeho adresa po vypršaní lízingu nezmenila. Môžete tiež upraviť aplikáciu Blynk tak, aby aktualizovala IP adresu v URL streamu - zaujímavá domáca úloha, ak na to máte.

Aktuálny náčrt používa rozlíšenie QVGA: 320 x 240 pixelov, čo ho robí pomerne rýchlym. Môžete sa rozhodnúť hrať s inými uzneseniami a rozhodnúť sa, čo vám vyhovuje.

RAM by nemal byť problém, pretože náčrt využíva výhodu pamäte PSRAM.

Krok 10: Konfigurácia

Náčrt využíva moje knižnice Dictionary a EspBootstrap na načítanie konfiguračných parametrov z konfiguračného servera pri zavádzaní.

Prevádzkujem svoj vlastný konfiguračný server, čo môžete urobiť aj vy (je to jednoduchý webový server Apache2, ktorý v skutočnosti poskytuje iba súbory JSON).

Môžete tiež použiť ktorúkoľvek z online služieb dostupných pre úlohu: (OTADrive, Microsoft Azure, AWS IoT atď.). V takom prípade zmeňte metódu String makeConfig (String path), aby zodpovedajúcim spôsobom zostrojila adresu URL smerujúcu na váš zdroj konfigurácie. Alternatívne môžete konfiguračný súbor uložiť do súborového systému SPIFFS na serveri ESP32-CAM a odtiaľ ho načítať alebo jednoducho zadať všetky položky v pevnom kóde. Možnosti nájdete v knižnici README knižnice EspBootstrap.

Príklad konfiguračného súboru je poskytovaný na GitHub.

Ak dávate prednosť parametrom v pevnom kóde, príklad je uvedený nižšie:

pd („Názov“, „Nastavenie meča DND“);

pd ("ssid", "váš wifi ssid"); pd („heslo“, „vaše heslo do wifi“); pd ("msg", "Hello!"); pd ("zariadenia", "8"); pd ("blynk_auth", "váš blynk AUTH UUID"); // ak prevádzkujete iba svoj vlastný server: pd ("blynk_host", "IP vášho servera blynk"); pd ("blynk_port", "port vášho servera");

Krok 11: Aktualizácie firmvéru OTA

Skica je tiež povolená aktualizácia firmvéru OTA (Over The Air) a pri každom spustení kontroluje nový firmvér.

Opäť používam svoj vlastný aktualizačný server OTA, čo môžete urobiť aj vy (je to jednoduchý webový server Apache2 s trochou skriptov PHP, ktoré slúžia binárnym súborom).

Môžete tiež použiť ktorúkoľvek z online služieb IoT dostupných pre danú úlohu: (OTADrive, Microsoft Azure, AWS IoT atď.). V takom prípade zmeňte metódu void checkOTA () tak, aby zodpovedajúcim spôsobom zostavila aktualizačnú adresu URL smerujúcu na váš binárny zdroj súborov.

Toto je voliteľné - môžete sa rozhodnúť iba nahrať binárne súbory prostredníctvom sériového pripojenia.

Krok 12: Server MJPEG

Táto téma je podrobne popísaná tu.

Krok 13: Aplikácia Blynk

Aplikácia Blynk
Aplikácia Blynk
Aplikácia Blynk
Aplikácia Blynk
Aplikácia Blynk
Aplikácia Blynk

Blynk je cloudová platforma IoT, ktorá umožňuje rýchly vývoj aplikácií. Je bezplatný na osobné použitie a dokonca má možnosť spustiť vlastný server Blynk.

Ako som už asi tušil, prevádzkujem vlastný server Blynk, ale používanie cloudovej verzie by pre vás mohlo byť jednoduchšie. Nainštalujte si aplikáciu Blynk pre iOS alebo Android a podľa nižšie uvedených obrázkov rekonštruujte aplikáciu vo svojom telefóne.

Na to, aby aplikácia fungovala s vašou aplikáciou, budete musieť poskytnúť svoj vlastný UUID Blynk Auth. Preto používam konfiguračné súbory. V prípade jednorazového projektu by však pevne zakódovaná hodnota fungovala rovnako dobre.

DÔLEŽITÉ: Uistite sa, že váš projekt Blynk je nastavený na oznamovanie zariadení pri pripojení aplikácie.

POZNÁMKA k miniaplikácii streamovania videa: niekedy sa video nespustí. Zdá sa, že to nie je problém s ESP32, skôr s video widgetom aplikácie Blynk. Skúste aplikáciu zatvoriť a znova otvoriť alebo projekt zastaviť/spustiť znova. Nakoniec to začne. Zdá sa, že tento problém neexistuje v prehliadači alebo prehrávači VLC (napríklad).

Krok 14: Užite si to

Bola to veľká zábava stavať to a dokázať, že zariadenie veľkosti poštovej pečiatky, ako napríklad ESP32, dokáže oveľa viac, než len streamovať video. Mnoho konceptov z tohto projektu by bolo možné znova použiť v iných aplikáciách.

Krok 15: Knižnice a kód

Knižnice:

  • Server Blynk
  • Knižnica EspBootstrap
  • Knižnica TaskScheduler
  • Slovníková knižnica
  • LED maticová knižnica
  • Knižnica pre modulárne rolovacie maticové textové displeje LED

Skutočné úložisko:

Interaktívny Minecraft Nezadávajte meč/znak (ESP32-CAM)

Odporúča: