Taula de continguts:

Minecraft interactiu No introduïu espasa / signe (ESP32-CAM): 15 passos (amb imatges)
Minecraft interactiu No introduïu espasa / signe (ESP32-CAM): 15 passos (amb imatges)

Vídeo: Minecraft interactiu No introduïu espasa / signe (ESP32-CAM): 15 passos (amb imatges)

Vídeo: Minecraft interactiu No introduïu espasa / signe (ESP32-CAM): 15 passos (amb imatges)
Vídeo: Golang vs Python #shorts tiktok hackmymozg 2024, Juliol
Anonim
Image
Image
Producte final
Producte final

En realitat, hi ha diverses raons per les quals aquest projecte va sorgir:

1. Com a autor de la biblioteca multitarea cooperativa TaskScheduler, sempre vaig tenir curiositat per combinar els avantatges de la multitarea cooperativa amb els avantatges de la preventiva. Hi ha avantatges per a tots dos i tots dos tenen deficiències. La combinació de tots dos permet una oportunitat única d’aprofitar els beneficis i minimitzar els problemes basats en un cas d’ús concret. Interessant? Segueix llegint…

2. El fet que ESP32 sigui un microcontrolador multi-nucli és fascinant. Sempre vaig tenir curiositat si podia aprofitar aquesta característica. Així doncs, l’experiment aquí va ser: ESP32 pot transmetre vídeo sense problemes utilitzant un nucli mentre es fa una altra cosa (una altra cosa significativa i raonablement intensa) a l’altre nucli. Encara més interessant ?? Segueix llegint…!

3. Necessitava un camp de proves per als meus projectes recents sobre el subministrament de firmware OTA i la gestió de configuracions …

4. Feia temps que havia comprat dos mòduls LED Dot Matrix i no sabia què fer-ne …

5. El meu fill és un jugador de Minecraft i, com a qualsevol nen petit, li encanta decorar la seva porta amb cartells "No entrar" …

Així que aquí teniu, tots els bons motius per a: Interactiu No introduïu el cartell de la porta amb la transmissió ESP32-CAM d’un canal de vídeo "des de la porta tancada" - o "Qui ve a la meva habitació?"

Llavors … de què es tracta?

Si teniu paciència per llegir tota la història, us adoneu que no es tracta realment d’una espasa de Minecraft. Aquest projecte és una prova de molts conceptes:

  • Convivència de multitarea preventiva i cooperativa
  • Ús selectiu de nuclis ESP32
  • Ús de noves biblioteques Dictionary i EspBootstrap
  • Subministrament de firmware OTA
  • Gestió de configuracions
  • Transmissió de vídeo a diversos clients

i molt més.

Gaudeix-ne

Subministraments

  • ESP32-CAM
  • MAX7219 Mòdul de matriu de punts Mòdul de pantalla LED 4 en 1 Geekcreit per Arduino
  • Banc de potència Attom Tech 2500mAh

Pas 1: producte final

Producte final
Producte final

Començaré per l’aspecte del producte final i, a continuació, explicaré com es va construir i com es pot controlar.

Sembla més atractiu d’aquesta manera …

Pas 2: placa frontal de l’espasa

Placa frontal d’espasa
Placa frontal d’espasa
Placa frontal d’espasa
Placa frontal d’espasa

La placa frontal de l’espasa està feta a partir de la pissarra, marcada amb un llapis i acolorida amb retoladors Crayola. Només això podria ser un projecte interessant per al vostre fill:

  • Marqueu una espasa en una pissarra
  • Retalleu la placa frontal
  • Marqueu els quadrats (o blocs)
  • Pinteu-los individualment
  • Afegiu línies negres amb un punxegut.

Vaig incloure un document d’oficina oberta amb una imatge de mostra d’una espasa de diamant que podeu enganxar a la part superior de la pissarra si preferiu les dreceres … Un cop fet tot, podeu enganxar la placa frontal a la resta del conjunt o fer servir doble cinta de cares.

Pas 3: pantalla LED de matriu de punts

Pantalla LED de matriu de punts
Pantalla LED de matriu de punts
Pantalla LED de matriu de punts
Pantalla LED de matriu de punts
Pantalla LED de matriu de punts
Pantalla LED de matriu de punts

En tenia 2, de 4 segments cadascun, de manera que vaig decidir fer-ne un de 8.

Convenientment, hi ha una capçalera masculina de 5 pins a un costat i coincideix amb 5 forats al costat oposat. Doblegant la capçalera masculina en forma de grapa, vaig poder connectar els dos mòduls tant elèctricament com el mecànic. Vau matar dos ocells amb una pedra (o dues mosques amb un sol cop, per aturar dues boques amb un bocí, per fer dos amics amb un regal, per tenir dues cordes a un arc, quins altres idiomes hi ha?), Heu pensat? Ho sento, he divagat).

La capçalera masculina oposada s'utilitzarà per connectar una capçalera femenina coincident des del veroboard amb ESP32-Cam i altres components.

Els dos components estan connectats amb un pont imprès en 3D, que també alberga un commutador per encendre i apagar els fitxers.3 STL per al pont i altres components es troben a la carpeta de fitxers / 3d de GitHub.

Pas 4: alimentació

Potència
Potència

El Sword funciona amb un banc d’alimentació USB de 2.500 mAh, el més petit i prim que he pogut trobar. Powerbank es llisca cap a una caixa impresa en 3D, que també es fixa als mòduls de matriu de punts, mantenint així tot el conjunt.

Hi ha dos imants rodons enganxats a la caixa del banc de potència, i és així com l’espasa s’adhereix a la porta (de manera que es podria desprendre tan fàcilment per al manteniment).

Pas 5: esquema

Esquema
Esquema
Esquema
Esquema
Esquema
Esquema

L’esquema real es troba a GitHub, però una imatge val més que 1000 paraules (1024 a Tecnologia de la informació), així que aquí teniu:

Això és bastant senzill si coneixeu el vostre camí amb una pistola de soldar. NOTA: la part del pont en 3D està dissenyada per a una mida veroboard molt específica: 30 x 70 mm. Si decidiu utilitzar-ne un de diferent, heu de tornar a dissenyar el component pont.

Pas 6: impressió en 3D

Impressió en 3D
Impressió en 3D
Impressió en 3D
Impressió en 3D
Impressió en 3D
Impressió en 3D

Es va dissenyar i imprimir la caixa de la bateria i un pont que connectava el veroboard ESP32-CAM al conjunt de pantalla de matriu de punts.

La caixa de la bateria es presenta en dues parts, que s’han d’enganxar després d’imprimir per crear una "butxaca" per a la bateria. El pont només s’ha de netejar de totes les estructures de suport (malauradament, no hi ha una bona orientació que les minimitzi). Els fitxers STL es troben a GitHub i els originals de TinkerCad es troben aquí.

El disseny 3D de TinkerCad també inclou l’esquema de muntatge simulat de com s’ajusten les peces i s’han de connectar.

Pas 7: Programació

Multitasca

Aquest disseny utilitza FreeRTOS per a la multitarea preventiva i la biblioteca TaskScheduler per a una cooperativa. El comportament i els missatges de Sword es controlen mitjançant l’aplicació Blynk. Després de la configuració (inicialització de pins, càmera i matriu de punts, connexió a WiFi, etc.), es creen dues tasques principals de RTOS:

  • Tasca de transmissió de vídeo RTOS, fixada al nucli d'aplicació d'ESP32 (nucli 1)
  • Visualització de text i tasca RTOS de control de Blynk, fixada al Power Core d'ESP32 (core 0), que també és responsable de totes les tasques relacionades amb el WiFi. L'execució relacionada amb el text i Blynk es gestiona mitjançant tasques de TaskScheduler.

Vaig descobrir que 4K d’espai de pila és suficient per a tasques RTOS, però hi ha la possibilitat de quedar-se sense pila, així que, si ho preferiu, feu-ne 8K: hi ha molta memòria RAM a l’ESP32.

La captura i reproducció de vídeo es realitza a Core 1. Tota la resta, a Core 0.

L'ESP32 té prou potència per manejar tot això amb una mica de suor (el tauler s'escalfa quan es transmet un vídeo).

AQUEST era l’objectiu principal del projecte: la coexistència pacífica i productiva d’una multitasca preventiva i cooperativa.

Pas 8: control de matriu de punts

Estic fent servir biblioteques MD_Parola i MD_MAX72xx molt potents també disponibles al gestor de biblioteques Arduino IDE.

Tots els efectes especials textuals es fan mitjançant aquestes biblioteques. Va caldre una mica d’esforç per determinar el tipus de maquinari MAX72XX correcte (MD_MAX72XX:: ICSTATION_HW en el meu cas, pot ser que el vostre sigui diferent), després d’això, controlar el text és molt fàcil.

L'espasa permet els següents controls:

  • Brillantor
  • Parpellejant
  • Flash
  • Velocitat i direcció de desplaçament (amunt / avall, esquerra / dreta, constant)
  • També podeu convertir-lo en un rellotge de paret

Pas 9: transmissió de vídeo

L’aplicació Blynk té un petit widget per transmetre vídeos, però podeu transmetre’ls al navegador, al reproductor VLC o a qualsevol cosa que admeti l’estàndard MJPEG.

S'admeten fins a 10 clients connectats.

Haureu d’esbrinar l’adreça IP del vostre ESP32-CAM per poder-hi connectar. Podeu cercar-lo al vostre encaminador o compilar aquest esbós amb l'opció _DEBUG_ activada primer i llegir l'adreça IP del terminal quan es connecti a la vostra xarxa.

IMPORTANT: és molt aconsellable assignar una adreça IP permanent o crear una reserva DHCP per al mòdul ESP32-CAM perquè la seva adreça no canviï quan caduqui el contracte d’arrendament. També podeu modificar l'aplicació Blynk per actualitzar l'adreça IP a l'URL del flux, una tasca interessant si esteu a l'altura.

L’esbós actual utilitza una resolució QVGA: 320x240 píxels, cosa que el fa bastant ràpid. Ets lliure i animat a jugar amb altres resolucions i a decidir què funciona per a tu.

La memòria RAM no hauria de ser un problema, ja que l’esbós aprofita la PSRAM.

Pas 10: Configuració

L’esbós aprofita les meves biblioteques Dictionary i EspBootstrap per carregar els paràmetres de configuració des del servidor de configuració en arrencar.

Executo el meu propi servidor de configuració, que també podeu fer (és un servidor web Apache2 senzill que només serveix fitxers JSON).

També podeu utilitzar qualsevol dels serveis en línia disponibles per a la tasca: (OTADrive, Microsoft Azure, AWS IoT, etc.). En aquest cas, canvieu el mètode String makeConfig (String path) per construir adequadament un URL que apunti a la vostra font de configuració. Com a alternativa, podeu desar el fitxer de configuració al sistema de fitxers SPIFFS a ESP32-CAM i llegir-lo des d'allà, o simplement codificar totes les entrades. Consulteu README de la biblioteca EspBootstrap per obtenir les vostres opcions.

A GitHub es proporciona un exemple de fitxer de configuració.

Si preferiu els paràmetres del codi dur, a continuació en trobareu un exemple:

pd ("Títol", "Configuració de DND Sword");

pd ("ssid", "el vostre ssid wifi"); pd ("contrasenya", "la vostra contrasenya wifi"); pd ("msg", "Hola!"); pd ("dispositius", "8"); pd ("blynk_auth", "el vostre blynk AUTH UUID"); // si només executeu el vostre propi servidor: pd ("blynk_host", "la vostra IP del servidor blynk"); pd ("blynk_port", "el port del vostre servidor");

Pas 11: actualitzacions de microprogramari OTA

L'esbós també està habilitat per a l'actualització de firmware OTA (Over The Air) i comprova si hi ha firmware nou a cada arrencada.

Una vegada més, tinc el meu propi servidor d'actualitzacions OTA, que també podeu fer (és un servidor web Apache2 senzill amb una mica de seqüència de comandaments PHP que serveix fitxers binaris).

També podeu utilitzar qualsevol dels serveis IoT en línia disponibles per a la tasca: (OTADrive, Microsoft Azure, AWS IoT, etc.). En aquest cas, canvieu el mètode void checkOTA () per construir adequadament una URL d’actualització que apunti al vostre origen de fitxer binari.

Això és opcional: podeu optar per carregar binaris mitjançant una connexió en sèrie.

Pas 12: servidor MJPEG

Aquest tema es descriu detalladament aquí.

Pas 13: aplicació Blynk

Aplicació Blynk
Aplicació Blynk
Aplicació Blynk
Aplicació Blynk
Aplicació Blynk
Aplicació Blynk

Blynk és una plataforma IoT basada en el núvol que permet el desenvolupament ràpid d’aplicacions. És gratuït per a ús personal i fins i tot té l’opció d’executar el vostre propi servidor Blynk.

Jo (com és possible que ja hagueu endevinat) estic executant el meu propi servidor Blynk, però és possible que us sigui més fàcil utilitzar la versió en núvol. Instal·leu l'aplicació Blynk per a iOS o Android i seguiu les imatges següents per reconstruir l'aplicació al telèfon.

Haureu de proporcionar el vostre propi UUID Blynk Auth perquè l’aplicació funcioni amb la vostra aplicació. Per això faig servir fitxers de configuració. No obstant això, per a un projecte puntual, un valor codificat dur funcionaria tan bé.

IMPORTANT: assegureu-vos que el vostre projecte Blynk estigui configurat per Notificar dispositius quan hi hagi una aplicació connectada.

NOTA sobre el giny de transmissió de vídeo: de vegades el vídeo no s'inicia. No sembla que sigui un problema amb ESP32, més aviat amb el giny de vídeo de l'aplicació Blynk. Proveu de tancar i tornar a obrir l'aplicació o aturar / iniciar el projecte de nou. Finalment, comença. Sembla que aquest problema no existeix al navegador ni al reproductor VLC (per exemple).

Pas 14: gaudiu

Va ser molt divertit construir-ho i demostrar que un dispositiu de mida de segell postal com ESP32 pot fer molt més que simplement transmetre vídeo. Molts conceptes d’aquest projecte es podrien reutilitzar en altres aplicacions.

Pas 15: Biblioteques i codi

Biblioteques:

  • Servidor Blynk
  • Biblioteca EspBootstrap
  • Biblioteca TaskScheduler
  • Biblioteca de diccionaris
  • Biblioteca de matrius LED
  • Biblioteca per a visualitzacions de text de matriu LED de desplaçament modular

Dipòsit real:

Minecraft Interactive No Enter Sword / Sign (ESP32-CAM)

Recomanat: