INHOUDSOPGAWE:

Interaktiewe Minecraft Tik nie swaard/teken in nie (ESP32-CAM): 15 stappe (met foto's)
Interaktiewe Minecraft Tik nie swaard/teken in nie (ESP32-CAM): 15 stappe (met foto's)

Video: Interaktiewe Minecraft Tik nie swaard/teken in nie (ESP32-CAM): 15 stappe (met foto's)

Video: Interaktiewe Minecraft Tik nie swaard/teken in nie (ESP32-CAM): 15 stappe (met foto's)
Video: Minecraft, maar ik mag de kleur GROEN niet aanraken! 2024, November
Anonim
Image
Image
Finale produk
Finale produk

Daar is werklik verskeie redes waarom hierdie projek tot stand gekom het:

1. As skrywer van koöperatiewe multitasking-biblioteek TaskScheduler was ek altyd nuuskierig oor hoe om die voordele van samewerkende multitasking te kombineer met die voordele van pre-emptive. Daar is voordele vir albei en albei het tekortkominge. Deur die twee te kombineer, is dit 'n unieke geleentheid om voordele te benut en kwessies van 'n spesifieke geval te bespaar. Interessant? Lees verder…

2. Die feit dat ESP32 'n multi-kern mikrobeheerder is, is fassinerend. Ek was altyd nuuskierig of ek voordeel kon trek uit die funksie. Die eksperiment hier was dus: kan ESP32 video vlot stroom met die een kern terwyl u iets anders (betekenisvol en redelik intensief anders) aan die ander kern doen. Nog interessanter ?? Lees verder…!

3. Ek het 'n toetsgrond nodig gehad vir my onlangse projekte rondom OTA -firmwarevoorsiening en konfigurasiebestuur …

4. Ek het 'n tyd gelede twee LED Dot Matrix -modules gekoop en kon nie uitvind wat ek daarmee moes doen nie …

5. My seun is 'n Minecraft -speler, en soos elke klein seuntjie graag sy deur versier met plakkate met 'Moenie ingaan nie' …

So, goeie redes vir: Interaktiewe Moenie deurteken betree met ESP32 -CAM -streaming van 'n videostroom "van agter die geslote deur" - of "Wie kom na my kamer?"

So … waaroor gaan dit?

As u die geduld het om die hele verhaal te lees, besef u dat dit nie eintlik oor 'n Minecraft -swaard gaan nie. Hierdie projek is 'n bewys van baie konsepte:

  • Saambestaan van voorkomende en samewerkende multitasking
  • Selektiewe gebruik van ESP32 -kerne
  • Gebruik van nuwe woordeboek- en EspBootstrap -biblioteke
  • OTA -firmware -verskaffing
  • Konfigurasie bestuur
  • Videostroom na verskeie kliënte

en nog baie meer.

Geniet dit

Voorrade

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

Stap 1: Finale produk

Finale produk
Finale produk

Ek sal begin met hoe die finale produk lyk, en dan verduidelik hoe dit gebou is en hoe om dit te beheer.

Dit lyk meer boeiend op hierdie manier …

Stap 2: Swaardblad

Swaard voorblad
Swaard voorblad
Swaard voorblad
Swaard voorblad

Die swaardblad is gemaak van die witbord, gemerk met 'n potlood en gekleur met Crayola -merkers. Dit alleen kan 'n interessante projek met u kind wees:

  • Merk 'n swaard op 'n witbord
  • Knip die voorblad uit
  • Merk die blokkies (of blokkies)
  • Kleur hulle individueel in
  • Voeg swart lyne by met 'n skerp punt.

Ek het 'n oop kantoordokument bygevoeg met 'n voorbeeld van 'n diamantswaard wat u bo-op die witbord kan plak as u kortpaaie verkies … Sodra alles klaar is, kan u die voorplaat warm plak op die res van die vergadering of dubbel gebruik. syband.

Stap 3: Dot Matrix LED -skerm

Dot Matrix LED -skerm
Dot Matrix LED -skerm
Dot Matrix LED -skerm
Dot Matrix LED -skerm
Dot Matrix LED -skerm
Dot Matrix LED -skerm

Ek het 2 daarvan gehad, 4 segmente elk, so ek het besluit om een 8-segment een te maak.

Daar is gerieflik 'n 5-pen-kopstuk aan die een kant en 5 gate aan die teenoorgestelde kant. Deur die manlike kop in 'n stapelvormige vorm te buig, kon ek die twee modules beide elektries en meganies koppel! Twee voëls met een klap doodgemaak (of twee vlieë met een hou, om twee monde met een stukkie te stop, om twee vriende met een geskenk te maak, om twee snare tot een boog te hê, wat is ander idiome in die saak - het jy gedink? Jammer, ek het afgedwaal).

Die teenoorgestelde manlike kop sal gebruik word om 'n bypassende vroulike kop vanaf die verobord aan te sluit met ESP32-Cam en ander komponente.

Die twee komponente is verbind met 'n 3D-gedrukte brug, wat ook 'n skakelaar bevat om die krag aan en uit te skakel. 3D STL-lêers vir brug en ander komponente is in die lêers/3d-lêergids op GitHub geleë.

Stap 4: Krag

Krag
Krag

Die swaard word aangedryf deur 'n 2500 mAh USB -kragbank - die kleinste en dunste wat ek kon vind. Powerbank skuif in 'n 3D-gedrukte omhulsel, wat ook aan die puntmatriksmodules geheg kan word en sodoende die hele ding bymekaar hou.

Daar is twee ronde magnete aan die kragbank vasgeplak, en dit is hoe die swaard aan die deur vasgemaak word (sodat dit net so maklik verwyder kan word vir onderhoud).

Stap 5: Skematiese

Skematiese
Skematiese
Skematiese
Skematiese
Skematiese
Skematiese

Die werklike skematika is op GitHub geleë, maar 'n foto is 1000 woorde werd (1024 in inligtingstegnologie), so hier is u:

Dit is redelik eenvoudig as u die pad met 'n soldeerpistool ken. OPMERKING: Die 3D -brugdeel is ontwerp vir 'n baie spesifieke verboordgrootte: 30 x 70 mm. As u besluit om 'n ander een te gebruik, moet u die brugkomponent herontwerp.

Stap 6: 3D -druk

3D druk
3D druk
3D druk
3D druk
3D druk
3D druk

Die batterykas en 'n brug wat die ESP32-CAM-verboord verbind met die dot-matrix-vertoningsamestelling, is 3d ontwerp en gedruk.

Die batterykas bestaan uit 2 dele wat na die druk geplak moet word om 'n 'sak' vir die battery te skep. Die brug moet net van al die steunstrukture skoongemaak word (daar is ongelukkig geen goeie oriëntasie wat dit tot 'n minimum beperk nie). STL -lêers is op GitHub en TinkerCad se oorspronklike is hier geleë.

Die 3D -ontwerp op TinkerCad bevat ook 'n gesimuleerde samestellingskema van hoe die onderdele bymekaar pas en verbind moet word.

Stap 7: Programmering

Multi-multitasking

Hierdie ontwerp gebruik FreeRTOS vir voorkomende multitasking en TaskScheduler -biblioteek vir koöperatiewe een. Swaard se gedrag en boodskappe word beheer via die Blynk-app. Na die opstelling (spelde, kamera- en puntmatriks-inisialisering, verbinding met WiFi, ens.), Word twee hoof RTOS-take geskep:

  • Videostreaming RTOS -taak, vasgemaak aan die toepassingskern van ESP32 (kern 1)
  • Teksvertoning en Blynk beheer RTOS-taak, vasgemaak aan die Power Core van ESP32 (kern 0), wat ook verantwoordelik is vir alle WiFi-verwante take. Teks- en Blynk -verwante uitvoering word bestuur via TaskScheduler -take.

Ek het uitgevind dat 4K stapelruimte genoeg is vir RTOS -take, maar daar is 'n moontlikheid dat die stapel opraak, so as u dit verkies, maak dit 8K - daar is baie RAM op ESP32.

Alle video -opnames en -stroming vind plaas op Core 1. Alles anders - op Core 0.

ESP32 het genoeg krag om dit alles te hanteer met 'n bietjie sweet (die bord word warm as u video stroom).

DIT was die hoofdoel van die projek: vreedsame en produktiewe saambestaan van voorkomende en samewerkende multitasking!

Stap 8: Dot Matrix Control

Ek gebruik baie kragtige MD_Parola- en MD_MAX72xx -biblioteke wat ook beskikbaar is in die Arduino IDE -biblioteekbestuurder.

Alle tekstuele spesiale effekte word via die biblioteke gedoen. Dit het 'n bietjie moeite gekos om die korrekte tipe MAX72XX hardeware te bepaal (MD_MAX72XX:: ICSTATION_HW in my geval, die uwe kan anders wees), daarna is die beheer van teks maklik.

Die swaard laat die volgende kontroles toe:

  • Helderheid
  • Knipperend
  • Flits
  • Rolspoed en rigting (op/af, links/regs, bestendig)
  • U kan dit ook in 'n muurklok verander

Stap 9: Videostroom

Die Blynk -app het 'n klein widget vir videostroom, maar u kan na die blaaier, VLC -speler of enigiets wat MJPEG -standaard ondersteun, stroom.

Tot 10 gekoppelde kliënte word ondersteun.

U moet die IP-adres van u ESP32-CAM uitvind om daaraan te kan koppel. U kan dit op u router opsoek of hierdie skets saamstel met die opsie _DEBUG_ eers ingeskakel en die IP -adres van die terminaal lees as dit met u netwerk verbind word.

BELANGRIK: Dit is baie raadsaam om 'n permanente IP-adres toe te ken aan, of 'n DHCP-bespreking vir die ESP32-CAM-module te skep, sodat die adres nie verander wanneer die huurkontrak verstryk nie. U kan ook die Blynk -app verander om die IP -adres in die stroom -URL op te dateer - 'n interessante huiswerkopdrag as u dit regkry.

Die huidige skets gebruik 'n QVGA -resolusie: 320x240 pixels, wat dit redelik vinnig maak. U is vry om aan te moedig om met ander resolusies te speel en te besluit wat vir u werk.

RAM behoort nie 'n probleem te wees nie, aangesien die skets voordeel trek uit die PSRAM.

Stap 10: Konfigurasie

Die skets maak gebruik van my woordeboek- en EspBootstrap -biblioteke om konfigurasieparameters van die konfigurasiebediener te laai tydens opstart.

Ek het my eie konfigurasie -bediener, wat u ook kan doen (dit is 'n eenvoudige Apache2 -bediener wat eintlik net JSON -lêers bedien).

U kan ook enige van die aanlyn dienste wat vir die taak beskikbaar is, gebruik: (OTADrive, Microsoft Azure, AWS IoT, ens.). In hierdie geval, verander asseblief die metode String makeConfig (String pad) om 'n URL wat op u konfigurasiebron wys, op die regte manier te bou. U kan ook die konfigurasielêer in die SPIFFS-lêerstelsel op ESP32-CAM stoor en dit van daar af lees, of net al die inskrywings hardcode. Sien README van die EspBootstrap -biblioteek vir u opsies.

'N Voorbeeld van 'n konfigurasielêer word op GitHub verskaf.

As u verkies om parameters te hardcode, is 'n voorbeeld hieronder:

pd ("Titel", "DND Sword Setup");

pd ("ssid", "your wifi ssid"); pd ("wagwoord", "u wifi -wagwoord"); pd ("msg", "Hello!"); pd ("toestelle", "8"); pd ("blynk_auth", "your blynk AUTH UUID"); // as u slegs u eie bediener bestuur: pd ("blynk_host", "u blynk -bediener -IP"); pd ("blynk_port", "u bedienerpoort");

Stap 11: OTA -firmware -opdaterings

Die skets is ook opgedateer deur die OTA (Over The Air) firmware -opdatering en kyk by elke opstart na nuwe firmware.

Ek bedryf weer my eie OTA -opdateringsbediener, wat u ook kan doen (dit is 'n eenvoudige Apache2 -webbediener met 'n bietjie PHP -script wat binêre lêers bedien).

U kan ook enige van die aanlyn IoT -dienste gebruik wat vir die taak beskikbaar is: (OTADrive, Microsoft Azure, AWS IoT, ens.). In hierdie geval, verander die leemte checkOTA () -metode om 'n opdaterings -URL na u binêre lêerbron op die regte manier op te stel.

Dit is opsioneel - u kan kies om net binaries op te laai via seriële verbinding.

Stap 12: MJPEG -bediener

Hierdie onderwerp word hier breedvoerig beskryf.

Stap 13: Blynk -app

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

Blynk is 'n wolkgebaseerde IoT-platform wat vinnige ontwikkeling van programme moontlik maak. Dit is gratis vir persoonlike gebruik en het selfs die opsie om u eie Blynk -bediener te bestuur.

Ek (soos u dalk al geraai het) bedryf my eie Blynk -bediener, maar dit is miskien makliker vir u om die wolkweergawe te gebruik. Installeer die Blynk iOS- of Android -app en volg die onderstaande foto's om die app op u selfoon te rekonstrueer.

U moet u eie Blynk Auth UUID verskaf sodat die toepassing met u app kan werk. Daarom gebruik ek konfigurasie lêers. Vir 'n eenmalige projek sal 'n harde kode egter net so goed werk.

BELANGRIK: maak seker dat u Blynk -projek ingestel is om toestelle in kennis te stel wanneer die program verbind is.

LET WEL op die videostroom -widget: soms begin die video nie. Dit blyk nie 'n probleem met ESP32 te wees nie, eerder met die video -widget van die Blynk -toepassing. Probeer om die program te sluit en weer oop te maak, of om die projek weer te stop/te begin. Uiteindelik begin dit wel. Dit lyk asof hierdie probleem byvoorbeeld nie in die blaaier of VLC -speler bestaan nie.

Stap 14: Geniet dit

Dit was baie lekker om dit te bou en te bewys dat 'n toestel met 'n posstempel soos ESP32 baie meer kan doen as om net video te stroom. Baie konsepte uit hierdie projek kan in ander toepassings hergebruik word.

Stap 15: Biblioteke en kode

Biblioteke:

  • Blynk bediener
  • EspBootstrap -biblioteek
  • TaskScheduler -biblioteek
  • Woordeboek biblioteek
  • LED Matrix -biblioteek
  • Biblioteek vir modulêre blaai -LED -matriks -teksvertonings

Werklike bewaarplek:

Minecraft Interactive Moenie swaard/teken invoer nie (ESP32-CAM)

Aanbeveel: