Indholdsfortegnelse:

Interaktivt Minecraft Indtast ikke sværd/tegn (ESP32-CAM): 15 trin (med billeder)
Interaktivt Minecraft Indtast ikke sværd/tegn (ESP32-CAM): 15 trin (med billeder)

Video: Interaktivt Minecraft Indtast ikke sværd/tegn (ESP32-CAM): 15 trin (med billeder)

Video: Interaktivt Minecraft Indtast ikke sværd/tegn (ESP32-CAM): 15 trin (med billeder)
Video: 🚽 ТИТАН СКИБИДИ ТУАЛЕТ КАМЕРАМЕН 🔥 СКИБИДИ ТУАЛЕТ MULTIVERSE Skibidi Toilet РЕАКЦИЯ 2024, November
Anonim
Image
Image
Slutprodukt
Slutprodukt

Der er virkelig flere grunde til, at dette projekt opstod:

1. Som forfatter til kooperativt multitaskingbibliotek TaskScheduler var jeg altid nysgerrig efter, hvordan man kombinerer fordelene ved kooperativ multitasking med fordelene ved en præventiv. Der er fordele ved begge, og begge har mangler. Kombinationen af de to giver en unik mulighed for at udnytte fordele og nedspille spørgsmål om enten baseret på en bestemt use-case. Interessant? Læs videre…

2. Selve det faktum, at ESP32 er en multi-core mikrokontroller, er fascinerende. Jeg var altid nysgerrig på, om jeg kunne drage fordel af den funktion. Så eksperimentet her var: kan ESP32 streame video problemfrit ved hjælp af den ene kerne, mens du gør noget andet (meningsfuldt og rimeligt intensivt noget andet) på den anden kerne. Endnu mere interessant ?? Læs videre…!

3. Jeg havde brug for en testplads for mine seneste projekter omkring OTA -firmwareudstyr og konfigurationsstyring …

4. Jeg havde købt to LED Dot Matrix -moduler for noget tid siden og kunne ikke finde ud af, hvad jeg skulle gøre med dem …

5. Min søn er en Minecraft -spiller, og som enhver lille dreng elsker at dekorere sin dør med "Gå ikke ind" plakater …

Så her er du - alle gode grunde til: Interaktiv Indtast ikke dørskilt med ESP32 -CAM -streaming af et videofeed "bag den lukkede dør" - eller "Hvem kommer til mit værelse?"

Så … hvad handler det om?

Hvis du har tålmodighed til at læse hele historien, indser du, at dette ikke virkelig handler om et Minecraft -sværd. Dette projekt er et bevis på mange begreber:

  • Sameksistens af præventiv og kooperativ multitasking
  • Selektiv brug af ESP32 -kerner
  • Brug af nye Dictionary- og EspBootstrap -biblioteker
  • OTA firmware klargøring
  • Konfigurationsstyring
  • Videostreaming til flere klienter

og meget mere.

God fornøjelse

Forbrugsvarer

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

Trin 1: Slutprodukt

Slutprodukt
Slutprodukt

Jeg starter med, hvordan det endelige produkt ser ud, og forklarer derefter, hvordan det blev bygget, og hvordan man kontrollerer det.

Det virker mere engagerende på denne måde …

Trin 2: Sværdsplade

Sword Faceplate
Sword Faceplate
Sword Faceplate
Sword Faceplate

Sværdets frontplade er lavet af whiteboardet, markeret med en blyant og farvet med Crayola -markører. Dette alene kan være et interessant projekt med dit barn:

  • Marker et sværd på et whiteboard
  • Skær frontpladen ud
  • Marker firkanterne (eller blokke)
  • Farvelæg dem individuelt
  • Tilføj sorte linjer med en sharpie.

Jeg inkluderede et åbent kontordokument med et prøvebillede af et diamantsværd, som du kan lime oven på tavlen, hvis du foretrækker genveje … Når alt er gjort, kan du enten varmlime frontpladen til resten af forsamlingen eller bruge dobbelt- sidebånd.

Trin 3: Dot Matrix LED Display

Dot Matrix LED Display
Dot Matrix LED Display
Dot Matrix LED Display
Dot Matrix LED Display
Dot Matrix LED Display
Dot Matrix LED Display

Jeg havde 2 af dem, 4 segmenter hver, så jeg besluttede at lave et 8-segment et.

Praktisk er der et 5-benet hanhoved på den ene side og matchende 5 huller på den modsatte side. Ved at bøje det mandlige header til en hæfteformet] form kunne jeg forbinde de to moduler både elektrisk og mekanisk! Dræbte to fugle i ét slag (eller to fluer med et slag, for at stoppe to mund med en bid, få to venner med en gave, have to strenge til en bue, hvad er andre formspørgsmål ved det - har du tænkt? Undskyld, jeg faldt ud).

Det modsatte mandlige header bruges til at forbinde en matchende kvindelig header fra veroboardet med ESP32-Cam og andre komponenter.

De to komponenter er forbundet med en 3d-printet bro, som også huser en switch til at tænde og slukke. 3D STL-filer til bridge og andre komponenter er placeret i files/3d-mappen på GitHub.

Trin 4: Strøm

Strøm
Strøm

Sværdet drives af en 2500 mAh USB powerbank - den mindste og tyndeste jeg kunne finde. Powerbank glider ind i et 3d-printet etui, som også fastgøres til dotmatrixmodulerne og dermed holder det hele sammen.

Der er limet to runde magneter til powerbank -kassen, og sådan er sværdet fastgjort til døren (så det kan lige så let løsnes til vedligeholdelse).

Trin 5: Skematisk

Skematisk
Skematisk
Skematisk
Skematisk
Skematisk
Skematisk

Den virkelige skematiske er placeret på GitHub, men et billede er 1000 ord værd (1024 i informationsteknologi), så her er du:

Dette er ret ligetil, hvis du kender din vej med en loddepistol. BEMÆRK: 3D -brodelen er designet til en meget specifik veroboardstørrelse: 30 x 70 mm. Hvis du beslutter dig for at bruge en anden, skal du designe brokomponenten.

Trin 6: 3D -udskrivning

3D -udskrivning
3D -udskrivning
3D -udskrivning
3D -udskrivning
3D -udskrivning
3D -udskrivning

Batterikassen og en bro, der forbinder ESP32-CAM-veroboardet med dot-matrix-skærmmodulet, blev 3d designet og printet.

Batterikassen kommer i 2 dele, der skal limes sammen efter udskrivning for at skabe en "lomme" til batteriet. Broen skal bare rengøres for alle understøtningsstrukturer (der er ikke nogen rigtig orientering, der minimerer dem desværre). STL -filer findes på GitHub, og TinkerCad -originaler findes her.

3D -designet på TinkerCad indeholder også en simuleret skematisk samling af, hvordan delene passer sammen og skal forbindes.

Trin 7: Programmering

Multi-multitasking

Dette design bruger FreeRTOS til forebyggende multitasking og TaskScheduler -bibliotek til kooperativt. Sværds adfærd og beskeder styres via Blynk App. Efter opsætning (pins, kamera og dot-matrix initialisering, forbindelse til WiFi osv.) Oprettes to hoved RTOS opgaver:

  • Videostreaming RTOS -opgave, fastgjort til Application Core i ESP32 (core 1)
  • Tekstvisning og Blynk styrer RTOS-opgave, fastgjort til Power Core i ESP32 (core 0), som også er ansvarlig for alle WiFi-relaterede opgaver. Tekst og Blynk -relateret udførelse administreres via TaskScheduler -opgaver.

Jeg fandt ud af, at 4K stakplads er nok til RTOS -opgaver, men der er mulighed for at løbe tør for stak, så hvis du foretrækker det, gør det til 8K - der er masser af RAM på ESP32.

Al videooptagelse og streaming sker på Core 1. Alt andet - på Core 0.

ESP32 har nok strøm til at klare alt det med at bryde lidt sved (brættet bliver varmt, når du streamer video).

DETTE var projektets hovedmål: fredelig og produktiv sameksistens af præventiv og kooperativ multitasking!

Trin 8: Dot Matrix Control

Jeg bruger meget kraftfulde MD_Parola og MD_MAX72xx biblioteker, der også er tilgængelige i Arduino IDE biblioteksstyring.

Alle tekstlige specialeffekter udføres via disse biblioteker. Det krævede en lille smule anstrengelser at bestemme den korrekte MAX72XX hardwaretype (MD_MAX72XX:: ICSTATION_HW i mit tilfælde, din kan være anderledes), efter det er det let at kontrollere teksten.

Sværdet tillader følgende kontroller:

  • Lysstyrke
  • Blinker
  • Blitz
  • Rullehastighed og retning (op/ned, venstre/højre, stabil)
  • Du kan også gøre det til et vægur

Trin 9: Videostreaming

Blynk App har en lille widget til videostreaming, men du kan streame ind i browseren, VLC -afspilleren eller noget, der understøtter MJPEG -standard.

Op til 10 forbundne klienter understøttes.

Du bliver nødt til at finde ud af IP-adressen på dit ESP32-CAM for at kunne oprette forbindelse til den. Du kan slå det op på din router eller kompilere denne skitse med _DEBUG_ option først aktiveret og læse terminalens IP -adresse, når den opretter forbindelse til dit netværk.

VIGTIGT: Det er meget tilrådeligt at tildele en permanent IP-adresse til, eller oprette en DHCP-reservation for, ESP32-CAM-modulet, så dens adresse ikke ændres, når lejemålet udløber. Du kan også ændre Blynk -appen for at opdatere IP -adressen i streamens URL - en interessant hjemmearbejde, hvis du er klar til det.

Den nuværende skitse bruger en QVGA -opløsning: 320x240 pixels, hvilket gør den ret hurtig. Du er fri til og opfordres til at lege med andre opløsninger og beslutte, hvad der fungerer for dig.

RAM bør ikke være et problem, da skitsen udnytter PSRAM.

Trin 10: Konfiguration

Skitsen drager fordel af mine Dictionary- og EspBootstrap -biblioteker til at indlæse konfigurationsparametre fra konfigurationsserveren ved opstart.

Jeg kører min egen konfigurationsserver, som du også kan gøre (det er en simpel Apache2 -webserver, der virkelig bare betjener JSON -filer).

Du kan også bruge alle de onlinetjenester, der er tilgængelige til opgaven: (OTADrive, Microsoft Azure, AWS IoT osv.). I dette tilfælde skal du ændre metoden String makeConfig (String path) for korrekt at konstruere en URL, der peger på din konfigurationskilde. Alternativt kan du gemme konfigurationsfilen i SPIFFS-filsystemet på ESP32-CAM og læse den derfra eller bare hardcode alle posterne. Se README i EspBootstrap -biblioteket for dine muligheder.

Et eksempel på en konfigurationsfil findes på GitHub.

Hvis du foretrækker at hardcode -parametre, er et eksempel herunder:

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

pd ("ssid", "din wifi ssid"); pd ("adgangskode", "dit wifi -kodeord"); pd ("msg", "Hello!"); pd ("devices", "8"); pd ("blynk_auth", "din blynk AUTH UUID"); // hvis du kun kører din egen server: pd ("blynk_host", "din blynk server IP"); pd ("blynk_port", "din serverport");

Trin 11: OTA -firmwareopdateringer

Skitsen er også OTA (Over The Air) firmwareopdatering aktiveret og søger efter ny firmware ved hver opstart.

Igen kører jeg min egen OTA -opdateringsserver, som du også kan gøre (det er en simpel Apache2 webserver med en lille smule PHP -scripting, der betjener binære filer).

Du kan også bruge alle de online IoT -tjenester, der er tilgængelige til opgaven: (OTADrive, Microsoft Azure, AWS IoT osv.). I dette tilfælde skal du ændre metoden for ugyldig checkOTA () for korrekt at konstruere en opdaterings -URL, der peger på din binære filkilde.

Dette er valgfrit - du kan vælge bare at uploade binærfiler via seriel forbindelse.

Trin 12: MJPEG -server

Dette emne er beskrevet detaljeret her.

Trin 13: Blynk App

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

Blynk er en skybaseret IoT-platform, der muliggør hurtig appudvikling. Det er gratis til personlig brug og har endda mulighed for at køre din egen Blynk -server.

Jeg (som du måske allerede har gættet) kører min egen Blynk -server, men det kan være lettere for dig at bruge cloudversionen. Installer Blynk iOS- eller Android -appen, og følg billederne herunder for at rekonstruere appen på din telefon.

Du skal angive dit eget Blynk Auth UUID for at applikationen kan fungere med din app. Det er derfor, jeg bruger konfigurationsfiler. Men for et engangsprojekt ville en hardkodet værdi fungere lige så fint.

VIGTIGT: Sørg for, at dit Blynk -projekt er indstillet til at underrette enheder, når appen er tilsluttet.

BEMÆRK på videostreaming -widgeten: Nogle gange starter videoen ikke. Det ser ikke ud til at være et problem med ESP32, snarere med video -widgeten i Blynk -applikationen. Prøv at lukke og genåbne appen eller stoppe/starte projektet igen. Til sidst starter det. Dette problem ser ikke ud til at eksistere i browseren eller VLC -afspilleren (f.eks.).

Trin 14: God fornøjelse

Det var meget sjovt at bygge dette og bevise, at en poststemplet enhed som ESP32 kan meget mere end bare streame video. Mange begreber fra dette projekt kan genbruges i andre applikationer.

Trin 15: Biblioteker og kode

Biblioteker:

  • Blynk server
  • EspBootstrap bibliotek
  • TaskScheduler bibliotek
  • Ordbog bibliotek
  • LED Matrix -bibliotek
  • Bibliotek til modulære rullende LED -matrixtekstdisplays

Faktisk depot:

Minecraft Interactive Indtast ikke sværd/tegn (ESP32-CAM)

Anbefalede: