Cuprins:

Minecraft interactiv Nu introduceți sabie / semn (ESP32-CAM): 15 pași (cu imagini)
Minecraft interactiv Nu introduceți sabie / semn (ESP32-CAM): 15 pași (cu imagini)

Video: Minecraft interactiv Nu introduceți sabie / semn (ESP32-CAM): 15 pași (cu imagini)

Video: Minecraft interactiv Nu introduceți sabie / semn (ESP32-CAM): 15 pași (cu imagini)
Video: BEN ALEGE CHEST-UL GREȘIT în MINECRAFT ! (Talking Ben) 2024, Iulie
Anonim
Image
Image
Produs final
Produs final

Există într-adevăr mai multe motive pentru care acest proiect a luat ființă:

1. În calitate de autor al bibliotecii cooperative multitasking TaskScheduler, am fost mereu curios cum să combin beneficiile multitaskingului cooperativ cu beneficiile celei preventive. Ambele au beneficii și ambele au neajunsuri. Combinarea celor două permite o oportunitate unică de a valorifica beneficiile și de a reduce problemele bazate pe un anumit caz de utilizare. Interesant? Citiți mai departe…

2. Faptul că ESP32 este un microcontroler multi-core este fascinant. Am fost mereu curios dacă pot profita de această caracteristică. Deci experimentul de aici a fost: ESP32 poate transmite video fără probleme folosind un nucleu în timp ce face altceva (altceva semnificativ și rezonabil intensiv) pe celălalt nucleu. Chiar mai interesant ?? Citiți mai departe…!

3. Aveam nevoie de un teren de testare pentru proiectele mele recente în ceea ce privește aprovizionarea firmware-ului OTA și gestionarea configurației …

4. Cumpărasem două module LED Dot Matrix în urmă cu ceva timp și nu-mi puteam da seama ce să fac cu ele …

5. Fiul meu este un jucător Minecraft și, deoarece oricărui băiețel îi place să-și decoreze ușa cu afișele „Nu intra” …

Deci iată - toate motivele bune pentru: interactiv Nu introduceți semnul ușii cu difuzarea ESP32-CAM a unui flux video „din spatele ușii închise” - sau „Cine vine în camera mea?”

Deci … despre ce este vorba?

Dacă ai răbdare să citești întreaga poveste, îți dai seama că nu este vorba despre o sabie Minecraft. Acest proiect este o dovadă a multor concepte:

  • Coexistența multitaskingului preventiv și cooperativ
  • Utilizarea selectivă a nucleelor ESP32
  • Utilizarea noilor biblioteci Dicționar și EspBootstrap
  • Provizionare firmware OTA
  • Managementul configurației
  • Streaming video către mai mulți clienți

si mult mai mult.

Bucurați-vă

Provizii

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

Pasul 1: Produsul final

Produs final
Produs final

Voi începe cu cum arată produsul final și apoi voi explica cum a fost construit și cum să-l controlez.

Pare mai antrenant în acest fel …

Pasul 2: Faceți sabia

Sabie Faceplate
Sabie Faceplate
Sabie Faceplate
Sabie Faceplate

Placa de față a sabiei este realizată din tablă albă, marcată cu un creion și colorată cu marcaje Crayola. Numai acesta ar putea fi un proiect interesant pentru copilul tău:

  • Marcează o sabie pe o tablă albă
  • Decupați fața
  • Marcați pătratele (sau blocurile)
  • Colorează-le individual
  • Adăugați linii negre cu un sharpie.

Am inclus un document de birou deschis cu o mostră de imagine a unei sabii de diamant pe care o puteți lipi deasupra tablei, dacă preferați comenzile rapide … bandă laterală.

Pasul 3: Afișaj LED cu matrice de puncte

Afișaj LED cu matrice de puncte
Afișaj LED cu matrice de puncte
Afișaj LED Dot Matrix
Afișaj LED Dot Matrix
Afișaj LED Dot Matrix
Afișaj LED Dot Matrix

Aveam 2 dintre ele, câte 4 segmente fiecare, așa că am decis să fac unul cu 8 segmente.

În mod convenabil, există un antet de sex masculin cu 5 pini pe o parte și care se potrivește cu 5 găuri pe partea opusă. Îndoind antetul masculin într-o formă asemănătoare capsei, am reușit să conectez cele două module atât electric, cât și mecanic! A ucis două păsări cu o singură piatră (sau două muște cu o singură șuviță, pentru a opri două guri cu o bucată, pentru a face doi prieteni cu un singur cadou, pentru a avea două corzi la un arc, care sunt alte limbaje în acest sens - v-ați gândit? Îmi pare rău, am deviat).

Antetul mascul opus va fi utilizat pentru a conecta un antet feminin potrivit de la veroboard cu ESP32-Cam și alte componente.

Cele două componente sunt conectate cu o punte imprimată 3D, care găzduiește și un comutator pentru pornirea și oprirea alimentării. Fișierele 3D STL pentru bridge și alte componente sunt situate în dosarul fișiere / 3d de pe GitHub.

Pasul 4: Putere

Putere
Putere

Sword este alimentat de o bancă de alimentare USB de 2500 mAh - cea mai mică și mai subțire pe care am putut să o găsesc. Powerbank alunecă într-o carcasă imprimată 3D, care se atașează și la modulele matrice de puncte, ținând astfel întregul lucru împreună.

Există doi magneți rotunzi, lipiți de carcasa băncii de putere, și așa este sabia atașată la ușă (deci ar putea fi detașată la fel de ușor pentru întreținere).

Pasul 5: Schematic

Schematic
Schematic
Schematic
Schematic
Schematic
Schematic

Schema reală se află pe GitHub, dar o imagine valorează 1000 de cuvinte (1024 în Tehnologia informației), așa că iată-vă:

Acest lucru este destul de simplu dacă vă cunoașteți calea cu un pistol de lipit. NOTĂ: Piesa de pod 3d este proiectată pentru o dimensiune foarte specifică a veroboardului: 30 x 70 mm. Dacă decideți să utilizați una diferită, trebuie să reproiectați componenta bridge.

Pasul 6: Imprimare 3D

printare 3d
printare 3d
printare 3d
printare 3d
printare 3d
printare 3d

Carcasa bateriei și o punte care conectează veroboard-ul ESP32-CAM la ansamblul afișajului cu matrice de puncte au fost proiectate și imprimate 3D.

Carcasa bateriei vine în 2 părți, care trebuie lipite între ele după imprimare pentru a crea un „buzunar” pentru baterie. Podul trebuie doar curățat de toate structurile de susținere (din păcate, nu există o orientare bună care să le minimizeze). Fișierele STL sunt pe GitHub și originalele TinkerCad sunt aici.

Designul 3D de pe TinkerCad include, de asemenea, schema de asamblare simulată a modului în care piesele se potrivesc și ar trebui conectate.

Pasul 7: Programare

Multi-multitasking

Acest design folosește FreeRTOS pentru multitasking preventiv și biblioteca TaskScheduler pentru una cooperativă. Comportamentul și mesajele lui Sword sunt controlate prin intermediul aplicației Blynk. După configurare (inițializarea pinilor, a camerei și a matricei de puncte, conectarea la WiFi etc.), sunt create două sarcini principale RTOS:

  • Sarcină RTOS de streaming video, fixată pe nucleul aplicației ESP32 (nucleul 1)
  • Afișarea textului și sarcina RTOS de control Blynk, fixate pe Power Core-ul ESP32 (nucleul 0), care este, de asemenea, responsabil pentru toate sarcinile legate de WiFi. Execuția legată de text și Blynk este gestionată prin sarcini TaskScheduler.

Am aflat că 4K de spațiu stivă este suficient pentru sarcinile RTOS, dar există posibilitatea de a rămâne fără stivă, deci, dacă preferați, faceți-l 8K - există o mulțime de memorie RAM pe ESP32.

Toate capturarea și streamingul video se întâmplă pe Core 1. Toate celelalte - pe Core 0.

ESP32 are suficientă putere pentru a rezolva toate acestea prin spargerea puțină transpirație (placa se încălzește atunci când transmiteți videoclipuri).

Acesta a fost principalul obiectiv al proiectului: coexistența pașnică și productivă a multitaskingului preventiv și cooperativ!

Pasul 8: Controlul matricei de puncte

Folosesc biblioteci MD_Parola și MD_MAX72xx foarte puternice, disponibile și în managerul de biblioteci Arduino IDE.

Toate efectele speciale textuale sunt realizate prin intermediul acelor biblioteci. A fost nevoie de puțin efort pentru a determina tipul corect de hardware MAX72XX (MD_MAX72XX:: ICSTATION_HW în cazul meu, al tău poate fi diferit), după aceea, controlul textului este o briză.

Sabia permite următoarele controale:

  • Luminozitate
  • Clipește
  • Flash
  • Viteza și direcția de derulare (sus / jos, stânga / dreapta, constantă)
  • De asemenea, îl puteți transforma într-un ceas de perete

Pasul 9: Streaming video

Aplicația Blynk are un mic widget pentru streaming video, dar puteți transmite în browser, player VLC sau orice altceva care acceptă standardul MJPEG.

Sunt acceptate până la 10 clienți conectați.

Va trebui să aflați adresa IP a ESP32-CAM pentru a vă putea conecta la aceasta. Puteți să o căutați pe router sau să compilați această schiță cu opțiunea _DEBUG_ activată mai întâi și să citiți adresa IP a terminalului atunci când se conectează la rețeaua dvs.

IMPORTANT: Este foarte recomandabil să atribuiți o adresă IP permanentă sau să creați o rezervare DHCP pentru modulul ESP32-CAM, astfel încât adresa acestuia să nu se schimbe la expirarea contractului de leasing. De asemenea, puteți modifica aplicația Blynk pentru a actualiza adresa IP din URL-ul fluxului - o sarcină interesantă pentru teme, dacă sunteți la curent.

Schița actuală utilizează o rezoluție QVGA: 320x240 pixeli, ceea ce o face destul de rapidă. Sunteți liber și încurajați să jucați cu alte rezoluții și să decideți ce funcționează pentru dvs.

RAM-ul nu ar trebui să fie o problemă, deoarece schița profită de PSRAM.

Pasul 10: Configurare

Schița profită de bibliotecile mele Dicționar și EspBootstrap pentru a încărca parametrii de configurare de pe serverul de configurare la pornire.

Execut propriul meu server de configurare, pe care îl puteți face la fel de bine (este un server web Apache2 simplu care servește doar fișiere JSON).

De asemenea, puteți utiliza oricare dintre serviciile online disponibile pentru sarcină: (OTADrive, Microsoft Azure, AWS IoT etc.). În acest caz, vă rugăm să modificați metoda String makeConfig (Calea șirului) pentru a construi în mod adecvat o adresă URL care indică sursa de configurare. Alternativ, puteți salva fișierul de configurare în sistemul de fișiere SPIFFS de pe ESP32-CAM și îl puteți citi de acolo sau pur și simplu codifica toate intrările. Pentru opțiuni, consultați README din biblioteca EspBootstrap.

Un exemplu de fișier de configurare este furnizat pe GitHub.

Dacă preferați parametrii codului hard, un exemplu este mai jos:

pd („Titlu”, „Configurare sabie DND”);

pd („ssid”, „ssid-ul tău wifi”); pd („parola”, „parola wifi”); pd („msg”, „Bună ziua!”); pd („dispozitive”, „8”); pd ("blynk_auth", "blynk AUTH UUID"); // dacă rulați propriul server numai: pd ("blynk_host", "IP-ul serverului dvs. blynk"); pd ("blynk_port", "portul serverului dvs.");

Pasul 11: Actualizări firmware OTA

Schița este de asemenea activată actualizarea firmware-ului OTA (Over The Air) și verifică dacă există firmware nou la fiecare boot.

Din nou, rulez propriul meu server de actualizare OTA, pe care îl puteți face la fel de bine (este un simplu server web Apache2 cu un pic de script PHP care servește fișiere binare).

De asemenea, puteți utiliza oricare dintre serviciile IoT online disponibile pentru sarcină: (OTADrive, Microsoft Azure, AWS IoT etc.). În acest caz, vă rugăm să modificați metoda void checkOTA () pentru a construi în mod corespunzător o adresă URL de actualizare care indică sursa fișierului dvs. binar.

Acest lucru este opțional - puteți alege să încărcați doar binare prin conexiune serială.

Pasul 12: Server MJPEG

Acest subiect este descris în detaliu aici.

Pasul 13: aplicația Blynk

Aplicația Blynk
Aplicația Blynk
Aplicația Blynk
Aplicația Blynk
Aplicația Blynk
Aplicația Blynk

Blynk este o platformă IoT bazată pe cloud care permite dezvoltarea rapidă a aplicațiilor. Este gratuit pentru uz personal și are chiar și opțiunea de a rula propriul server Blynk.

Eu (așa cum ați fi ghicit deja) rulez propriul meu server Blynk, dar s-ar putea să vă fie mai ușor să folosiți versiunea cloud. Instalați aplicația Blynk iOS sau Android și urmați imaginile de mai jos pentru a reconstrui aplicația pe telefon.

Va trebui să furnizați propriul UUID Blynk Auth pentru ca aplicația să funcționeze cu aplicația dvs. Acesta este motivul pentru care folosesc fișiere de configurare. Cu toate acestea, pentru un proiect unic, o valoare codificată ar funcționa la fel de bine.

IMPORTANT: Asigurați-vă că Proiectul dvs. Blynk este setat să notifice dispozitivele atunci când aplicația este conectată.

NOTĂ despre widget-ul de streaming video: uneori videoclipul nu pornește. Nu pare să fie o problemă cu ESP32, mai degrabă cu widgetul video al aplicației Blynk. Încercați să închideți și să redeschideți aplicația sau să opriți / porniți din nou proiectul. În cele din urmă, începe. Această problemă nu pare să existe în browser sau în playerul VLC (de exemplu).

Pasul 14: Bucurați-vă

A fost foarte distractiv să construim acest lucru și să dovedim că un dispozitiv de mărime poștală, cum ar fi ESP32, poate face mult mai mult decât simpla redare video. O mulțime de concepte din acest proiect ar putea fi refolosite în alte aplicații.

Pasul 15: Biblioteci și cod

Biblioteci:

  • Server Blynk
  • Biblioteca EspBootstrap
  • Biblioteca TaskScheduler
  • Dicționar biblioteca
  • Bibliotecă cu matrice LED
  • Bibliotecă pentru afișarea textului cu matrice LED cu defilare modulară

Depozitul real:

Minecraft Interactive Nu introduceți sabie / semn (ESP32-CAM)

Recomandat: