Sommario:

Minecraft interattivo Non inserire la spada/segno (ESP32-CAM): 15 passaggi (con immagini)
Minecraft interattivo Non inserire la spada/segno (ESP32-CAM): 15 passaggi (con immagini)

Video: Minecraft interattivo Non inserire la spada/segno (ESP32-CAM): 15 passaggi (con immagini)

Video: Minecraft interattivo Non inserire la spada/segno (ESP32-CAM): 15 passaggi (con immagini)
Video: SEGRETO che IN POCHISSIMI CONOSCONO! minecraft ita 2024, Dicembre
Anonim
Image
Image
Prodotto finale
Prodotto finale

Ci sono davvero diversi motivi per cui questo progetto è nato:

1. In qualità di autore della libreria di multitasking cooperativo TaskScheduler, sono sempre stato curioso di sapere come combinare i vantaggi del multitasking cooperativo con i vantaggi di quello preventivo. Ci sono vantaggi per entrambi ed entrambi hanno difetti. La combinazione dei due consente un'opportunità unica di sfruttare i vantaggi e minimizzare i problemi di entrambi in base a un particolare caso d'uso. Interessante? Continuare a leggere…

2. Il fatto stesso che ESP32 sia un microcontrollore multi-core è affascinante. Sono sempre stato curioso di sapere se posso sfruttare questa funzione. Quindi l'esperimento qui era: ESP32 può trasmettere video in streaming senza problemi utilizzando un core mentre si fa qualcos'altro (qualcos'altro significativo e ragionevolmente intenso) sull'altro core. Ancora più interessante?? Continuare a leggere…!

3. Avevo bisogno di un banco di prova per i miei recenti progetti sul provisioning del firmware OTA e sulla gestione della configurazione…

4. Qualche tempo fa avevo acquistato due moduli LED Dot Matrix e non riuscivo a capire cosa farne…

5. Mio figlio è un giocatore di Minecraft e come ogni bambino adora decorare la sua porta con poster "Non entrare"…

Quindi ecco qui - tutte buone ragioni per: Segnale interattivo per non entrare nella porta con streaming ESP32-CAM di un feed video "da dietro la porta chiusa" - o "Chi sta venendo nella mia stanza?"

Allora… di cosa si tratta?

Se hai la pazienza di leggere l'intera storia ti rendi conto che non si tratta proprio di una spada di Minecraft. Questo progetto è una prova di molti concetti:

  • Coesistenza di multitasking preventivo e cooperativo
  • Uso selettivo dei core ESP32
  • Utilizzo delle nuove librerie Dictionary e EspBootstrap
  • Provisioning del firmware OTA
  • Gestione della configurazione
  • Streaming video su più client

e molto di più.

Divertiti

Forniture

  • ESP32-CAM
  • Modulo a matrice di punti MAX7219 Modulo display LED 4 in 1 Geekcreit per Arduino
  • Banco di alimentazione Atom Tech 2500mAh

Passaggio 1: prodotto finale

Prodotto finale
Prodotto finale

Inizierò con l'aspetto del prodotto finale, quindi spiegherò come è stato costruito e come controllarlo.

Sembra più coinvolgente in questo modo…

Passaggio 2: maschera della spada

Maschera della spada
Maschera della spada
Maschera della spada
Maschera della spada

Il frontalino della spada è ricavato dalla lavagna, segnato con una matita e colorato con pennarelli Crayola. Questo da solo potrebbe essere un progetto interessante con tuo figlio:

  • Segna una spada su una lavagna
  • Ritaglia il frontalino
  • Segna i quadrati (o blocchi)
  • Colorali singolarmente
  • Aggiungi linee nere con un pennarello.

Ho incluso un documento dell'ufficio aperto con un'immagine campione di una spada di diamante che puoi incollare sopra la lavagna se preferisci le scorciatoie… Una volta che tutto è fatto puoi incollare a caldo il frontalino al resto dell'assieme o usare il doppio nastro laterale.

Passaggio 3: display LED a matrice di punti

Display LED a matrice di punti
Display LED a matrice di punti
Display LED a matrice di punti
Display LED a matrice di punti
Display LED a matrice di punti
Display LED a matrice di punti

Ne avevo 2, 4 segmenti ciascuno, quindi ho deciso di farne uno a 8 segmenti.

Convenientemente c'è un'intestazione maschio a 5 pin su un lato e 5 fori corrispondenti sul lato opposto. Piegando l'intestazione maschio in una forma simile a una graffetta, sono riuscito a collegare i due moduli sia elettricamente che meccanicamente! Ucciso due piccioni con una fava (o due mosche con uno schiaffo, per fermare due bocche con un boccone, per fare due amici con un regalo, per avere due corde per un arco, quali sono gli altri modi di dire a questo proposito - hai pensato? scusa, ho divagato).

L'intestazione maschio opposta verrà utilizzata per collegare un'intestazione femmina corrispondente dalla veroboard con ESP32-Cam e altri componenti.

I due componenti sono collegati con un bridge stampato in 3D, che ospita anche un interruttore per accendere e spegnere l'alimentazione. I file STL 3d per il bridge e altri componenti si trovano nella cartella files/3d su GitHub.

Passaggio 4: alimentazione

Potenza
Potenza

La spada è alimentata da un power bank USB da 2500 mAh, il più piccolo e sottile che ho trovato. Powerbank scorre in una custodia stampata in 3D, che si attacca anche ai moduli a matrice di punti, tenendo così l'intera cosa insieme.

Ci sono due magneti rotondi incollati alla custodia del power bank, ed è così che la spada è attaccata alla porta (quindi potrebbe essere facilmente staccata per la manutenzione).

Passaggio 5: schema

Schema
Schema
Schema
Schema
Schema
Schema

Lo schema reale si trova su GitHub, ma un'immagine vale 1000 parole (1024 in Information Technology), quindi eccoti qui:

Questo è abbastanza semplice se conosci la tua strada con una pistola per saldatura. NOTA: la parte del ponte 3D è progettata per una dimensione di veroboard molto specifica: 30 x 70 mm. Se decidi di usarne uno diverso, devi riprogettare il componente del ponte.

Passaggio 6: stampa 3D

Stampa 3D
Stampa 3D
Stampa 3D
Stampa 3D
Stampa 3D
Stampa 3D

La custodia della batteria e un ponte che collega la veroboard ESP32-CAM al gruppo display a matrice di punti sono stati progettati e stampati in 3D.

La custodia della batteria è composta da 2 parti, che devono essere incollate insieme dopo la stampa per creare una "tasca" per la batteria. Il ponte ha solo bisogno di essere ripulito da tutte le strutture di supporto (non c'è davvero un buon orientamento che le minimizzi, purtroppo). I file STL sono su GitHub e gli originali di TinkerCad si trovano qui.

Il design 3D su TinkerCad include anche lo schema di assemblaggio simulato di come le parti si incastrano e dovrebbero essere collegate.

Passaggio 7: programmazione

Multi-multitasking

Questo design utilizza FreeRTOS per il multitasking preventivo e la libreria TaskScheduler per quello cooperativo. Il comportamento e i messaggi di Sword sono controllati tramite l'app Blynk. Dopo la configurazione (pin, inizializzazione della fotocamera e della matrice di punti, connessione al WiFi, ecc.), vengono create due attività RTOS principali:

  • Attività RTOS di streaming video, aggiunta all'Application Core di ESP32 (core 1)
  • Visualizzazione del testo e attività RTOS di controllo Blynk, appuntata al Power Core di ESP32 (core 0), che è anche responsabile di tutte le attività relative al WiFi. L'esecuzione correlata al testo e a Blynk viene gestita tramite le attività di TaskScheduler.

Ho scoperto che 4K di spazio nello stack sono sufficienti per le attività RTOS, ma c'è la possibilità di esaurire lo stack, quindi se preferisci, fallo 8K: c'è molta RAM su ESP32.

Tutta l'acquisizione e lo streaming video avvengono su Core 1. Tutto il resto - su Core 0.

ESP32 ha abbastanza potenza per gestire tutto ciò con un po' di sudore (la scheda si surriscalda durante lo streaming di video).

QUESTO era l'obiettivo principale del progetto: coesistenza pacifica e produttiva del multitasking preventivo e cooperativo!

Passaggio 8: controllo a matrice di punti

Sto usando le librerie MD_Parola e MD_MAX72xx molto potenti disponibili anche nel gestore di librerie IDE di Arduino.

Tutti gli effetti speciali testuali vengono eseguiti tramite tali librerie. Ci è voluto un po' di sforzo per determinare il tipo di hardware MAX72XX corretto (MD_MAX72XX::ICSTATION_HW nel mio caso, il tuo potrebbe essere diverso), dopodiché controllare il testo è un gioco da ragazzi.

La spada consente i seguenti controlli:

  • Luminosità
  • lampeggiante
  • Veloce
  • Velocità e direzione di scorrimento (su/giù, sinistra/destra, costante)
  • Puoi anche trasformarlo in un orologio da parete

Passaggio 9: streaming video

L'app Blynk ha un piccolo widget per lo streaming video, ma puoi eseguire lo streaming nel browser, nel lettore VLC o in qualsiasi cosa che supporti lo standard MJPEG.

Sono supportati fino a 10 client connessi.

Dovrai scoprire l'indirizzo IP della tua ESP32-CAM per poterti connettere. Puoi cercarlo sul tuo router, o compilare questo sketch con l'opzione _DEBUG_ abilitata prima, e leggere l'indirizzo IP del terminale quando si connette alla tua rete.

IMPORTANTE: è molto consigliabile assegnare un indirizzo IP permanente o creare una prenotazione DHCP per il modulo ESP32-CAM in modo che il suo indirizzo non cambi alla scadenza del contratto di locazione. Puoi anche modificare l'app Blynk per aggiornare l'indirizzo IP nell'URL del flusso: un compito interessante se sei all'altezza.

Lo schizzo attuale utilizza una risoluzione QVGA: 320x240 pixel, il che lo rende abbastanza veloce. Sei libero e incoraggiato a giocare con altre risoluzioni e decidere cosa funziona per te.

La RAM non dovrebbe essere un problema in quanto lo sketch sfrutta la PSRAM.

Passaggio 10: configurazione

Lo schizzo sfrutta le mie librerie Dictionary ed EspBootstrap per caricare i parametri di configurazione dal server di configurazione all'avvio.

Eseguo il mio server di configurazione, cosa che puoi fare anche tu (è un semplice server web Apache2 che serve solo file JSON).

Puoi anche utilizzare uno qualsiasi dei servizi online disponibili per l'attività: (OTADrive, Microsoft Azure, AWS IoT, ecc.). In questo caso, cambia il metodo String makeConfig(String path) per costruire in modo appropriato un URL che punta alla tua fonte di configurazione. In alternativa, puoi salvare il file di configurazione nel filesystem SPIFFS su ESP32-CAM e leggerlo da lì, o semplicemente codificare tutte le voci. Si prega di consultare README della libreria EspBootstrap per le opzioni.

Un esempio di file di configurazione è fornito su GitHub.

Se preferisci codificare i parametri, di seguito è riportato un esempio:

pd("Titolo", "Impostazione spada DND");

pd("ssid", "il tuo ssid wifi"); pd("password", "la tua password wifi"); pd("msg", "Ciao!");pd("dispositivi", "8"); pd("blynk_auth", "il tuo blynk AUTH UUID"); // se esegui solo il tuo server: pd("blynk_host", "il tuo IP del server blynk"); pd("blynk_port", "la porta del tuo server");

Passaggio 11: aggiornamenti del firmware OTA

Lo schizzo è anche abilitato per l'aggiornamento del firmware OTA (Over The Air) e verifica la presenza di nuovo firmware ad ogni avvio.

Ancora una volta, eseguo il mio server di aggiornamento OTA, cosa che puoi fare anche tu (è un semplice server web Apache2 con un po' di script PHP che serve file binari).

Puoi anche utilizzare uno qualsiasi dei servizi IoT online disponibili per l'attività: (OTADrive, Microsoft Azure, AWS IoT, ecc.). In questo caso, modificare il metodo void checkOTA() per costruire in modo appropriato un URL di aggiornamento che punti alla sorgente del file binario.

Questo è facoltativo: potresti scegliere di caricare solo i binari tramite connessione seriale.

Passaggio 12: server MJPEG

Questo argomento è descritto in dettaglio qui.

Passaggio 13: app Blynk

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

Blynk è una piattaforma IoT basata su cloud che consente lo sviluppo rapido di App. È gratuito per uso personale e ha anche la possibilità di eseguire il proprio server Blynk.

Io (come avrai già intuito) sto eseguendo il mio server Blynk, ma potrebbe essere più facile per te utilizzare la versione cloud. Installa l'app Blynk per iOS o Android e segui le immagini sottostanti per ricostruire l'app sul tuo telefono.

Dovrai fornire il tuo UUID di autenticazione Blynk affinché l'applicazione funzioni con la tua app. Questo è il motivo per cui utilizzo i file di configurazione. Tuttavia, per un progetto una tantum, un valore hardcoded funzionerebbe altrettanto bene.

IMPORTANTE: assicurati che il tuo progetto Blynk sia impostato su Notifica dispositivi quando l'app è connessa.

NOTA sul widget streaming video: a volte il video non si avvia. Non sembra essere un problema con ESP32, piuttosto con il widget video dell'applicazione Blynk. Prova a chiudere e riaprire l'App o a interrompere/riavviare il progetto. Alla fine, si avvia. Questo problema non sembra esistere nel browser o nel lettore VLC (ad esempio).

Passaggio 14: divertiti

È stato molto divertente costruirlo e dimostrare che un dispositivo delle dimensioni di un timbro postale come ESP32 può fare molto di più del semplice streaming di video. Molti concetti di questo progetto potrebbero essere riutilizzati in altre applicazioni.

Passaggio 15: librerie e codice

Biblioteche:

  • Server Blynk
  • Libreria EspBootstrap
  • Libreria TaskScheduler
  • Biblioteca del dizionario
  • Libreria di matrici LED
  • Libreria per display di testo modulari a matrice di LED a scorrimento

Deposito effettivo:

Minecraft Interactive non inserire spada/segno (ESP32-CAM)

Consigliato: