Satura rādītājs:

Interaktīvais Minecraft neievadiet zobenu/zīmi (ESP32-CAM): 15 soļi (ar attēliem)
Interaktīvais Minecraft neievadiet zobenu/zīmi (ESP32-CAM): 15 soļi (ar attēliem)

Video: Interaktīvais Minecraft neievadiet zobenu/zīmi (ESP32-CAM): 15 soļi (ar attēliem)

Video: Interaktīvais Minecraft neievadiet zobenu/zīmi (ESP32-CAM): 15 soļi (ar attēliem)
Video: Minecraft: Jaunais Update 1.3.1 ir klāt! 2024, Novembris
Anonim
Image
Image
Galaprodukts
Galaprodukts

Šim projektam ir vairāki iemesli:

1. Kā kooperatīvās daudzuzdevumu bibliotēkas TaskScheduler autore man vienmēr bija interesanti, kā apvienot kooperatīvās daudzuzdevumu priekšrocības ar priekšrocībām, ko sniedz iepriekšēja darbība. Abiem ir priekšrocības, un abiem ir trūkumi. Abu apvienošana dod unikālu iespēju izmantot priekšrocības un mazināt problēmas, pamatojoties uz konkrētu lietošanas gadījumu. Interesanti? Turpini lasīt…

2. Pats fakts, ka ESP32 ir daudzkodolu mikrokontrolleris, ir aizraujošs. Man vienmēr bija interesanti, vai varu izmantot šo iespēju. Tātad eksperiments bija šāds: vai ESP32 var netraucēti straumēt video, izmantojot vienu kodolu, bet otrā kodolā darīt kaut ko citu (jēgpilnu un samērā intensīvu). Vēl interesantāk ?? Turpini lasīt…!

3. Man vajadzēja testēšanas vietu saviem nesenajiem projektiem saistībā ar OTA programmaparatūras nodrošināšanu un konfigurācijas pārvaldību…

4. Pirms kāda laika es biju iegādājies divus LED punktu matricas moduļus un nevarēju saprast, ko ar tiem iesākt …

5. Mans dēls ir Minecraft spēlētājs, un kā jebkurš mazs zēns mīl izrotāt savas durvis ar plakātiem “Neieiet”…

Lūk, visi labi iemesli: Interaktīva zīme “Neieejiet durvīs” ar ESP32 -CAM video plūsmas straumēšanu “aiz aizvērtām durvīm” - vai “Kas nāk uz manu istabu?”

Tātad … par ko ir runa?

Ja jums ir pacietība izlasīt visu stāstu, jūs saprotat, ka tas patiesībā nav par Minecraft zobenu. Šis projekts ir pierādījums daudziem jēdzieniem:

  • Preventīvās un sadarbības daudzuzdevumu līdzāspastāvēšana
  • ESP32 serdeņu selektīva izmantošana
  • Jaunu vārdnīcu un EspBootstrap bibliotēku izmantošana
  • OTA programmaparatūras nodrošināšana
  • Konfigurācijas pārvaldība
  • Video straumēšana vairākiem klientiem

un daudz ko citu.

Izbaudi

Piegādes

  • ESP32-CAM
  • MAX7219 Dot Matrix Module 4-in-1 LED displeja modulis Geekcreit Arduino
  • Attom Tech 2500 mAh jaudas banka

1. darbība: galaprodukts

Galaprodukts
Galaprodukts

Sākšu ar to, kā izskatās galaprodukts, un tad paskaidrošu, kā tas tika uzbūvēts un kā to kontrolēt.

Šādi tas šķiet saistošāk…

2. solis: zobena priekšējā plāksne

Zobena priekšpuse
Zobena priekšpuse
Zobena priekšpuse
Zobena priekšpuse

Zobena priekšējā plāksne ir izgatavota no tāfeles, atzīmēta ar zīmuli un krāsota ar Crayola marķieriem. Tas vien varētu būt interesants projekts ar jūsu bērnu:

  • Atzīmējiet zobenu uz tāfeles
  • Izgrieziet priekšējo plāksni
  • Atzīmējiet kvadrātus (vai blokus)
  • Krāsojiet tos atsevišķi
  • Pievienojiet melnas līnijas ar asumu.

Es iekļāvu atklātu biroja dokumentu ar dimanta zobena attēla paraugu, kuru varat pielīmēt uz tāfeles, ja vēlaties īsceļus … Kad viss ir izdarīts, jūs varat vai nu karsti pielīmēt priekšējo plāksni pārējai montāžas daļai, vai izmantot dubultā abpusēja lente.

3. solis: Dot Matrix LED displejs

Dot Matrix LED displejs
Dot Matrix LED displejs
Dot Matrix LED displejs
Dot Matrix LED displejs
Dot Matrix LED displejs
Dot Matrix LED displejs

Man bija 2 no tiem, katrs 4 segmenti, tāpēc es nolēmu izveidot vienu 8 segmentu.

Ērti vienā pusē ir 5 kontaktu vīriešu galviņa, bet pretējā pusē-5 caurumi. Saliekot vīriešu galviņu štāpeļšķiedrām līdzīgā formā, es varēju savienot abus moduļus gan elektriski, gan mehāniski! Nogalināja divus putnus ar vienu akmeni (vai divas mušas ar vienu putu, lai apturētu divas mutes ar vienu kumosu, lai sadraudzētos ar vienu dāvanu, lai divas stīgas būtu pie viena priekšgala, kādas ir citas idiomas šajā jautājumā - vai jūs domājāt? Atvainojiet, es atkāpos).

Pretējā vīrieša galvene tiks izmantota, lai savienotu atbilstošu sieviešu galveni no veroboard ar ESP32-Cam un citiem komponentiem.

Abas sastāvdaļas ir savienotas ar 3D drukātu tiltu, kurā ir arī slēdzis strāvas ieslēgšanai un izslēgšanai. 3d STL faili tiltam un citiem komponentiem atrodas GitHub mapē files/3d.

4. solis: jauda

Jauda
Jauda

Zobens tiek darbināts ar 2500 mAh USB strāvas banku - mazāko un plānāko, kādu varēju atrast. Powerbank ieslīd 3D drukātā korpusā, kas arī piestiprinās punktu matricas moduļiem, tādējādi turot visu kopā.

Pie strāvas bankas korpusa ir pielīmēti divi apaļi magnēti, un tā zobens ir piestiprināts pie durvīm (lai to varētu tik viegli noņemt, lai veiktu apkopi).

5. solis: shematisks

Shematisks
Shematisks
Shematisks
Shematisks
Shematisks
Shematisks

Īstā shēma atrodas vietnē GitHub, bet attēls ir 1000 vārdu vērts (1024 informācijas tehnoloģijās), tāpēc šeit jūs esat:

Tas ir diezgan vienkārši, ja jūs zināt savu ceļu ar lodēšanas pistoli. PIEZĪME. 3D tilta daļa ir paredzēta ļoti specifiskam verbooard izmēram: 30 x 70 mm. Ja jūs nolemjat izmantot citu, jums ir jāpārprojektē tilta sastāvdaļa.

6. darbība: 3D drukāšana

3D druka
3D druka
3D druka
3D druka
3D druka
3D druka

Akumulatora korpuss un tilts, kas savieno ESP32-CAM grafisko karti ar punktu matricas displeja bloku, tika izstrādāti un izdrukāti 3D formātā.

Akumulatora korpusam ir 2 daļas, kuras pēc drukāšanas ir jāpielīmē, lai izveidotu akumulatora "kabatu". Tilts vienkārši jātīra no visām atbalsta konstrukcijām (diemžēl nav labas orientācijas, kas tās minimizētu). STL faili atrodas vietnē GitHub, un šeit atrodas TinkerCad oriģināli.

TinkerCad 3D dizains ietver arī simulētu montāžas shēmu par to, kā detaļas sader kopā un ir jāsavieno.

7. solis: programmēšana

Vairāku uzdevumu veikšana

Šis dizains izmanto FreeRTOS priekšlaicīgai daudzuzdevumu veikšanai un TaskScheduler bibliotēku sadarbībai. Zobena uzvedību un ziņojumus kontrolē, izmantojot lietotni Blynk. Pēc iestatīšanas (tapas, kameras un punktu matricas inicializācija, savienojuma izveide ar WiFi utt.) Tiek izveidoti divi galvenie RTOS uzdevumi:

  • Video straumēšanas RTOS uzdevums, piestiprināts pie ESP32 lietojumprogrammas kodola (1. kodols)
  • Teksta displejs un Blynk vadības RTOS uzdevums, piestiprināts pie ESP32 barošanas kodola (kodols 0), kas arī ir atbildīgs par visiem ar WiFi saistītiem uzdevumiem. Ar tekstu un Blynk saistīto izpildi pārvalda, izmantojot TaskScheduler uzdevumus.

Es uzzināju, ka RTOS uzdevumiem pietiek ar 4K kaudzes vietu, taču pastāv iespēja, ka kaudze beigsies, tādēļ, ja vēlaties, padariet to par 8K - ESP32 ir daudz RAM.

Visa video uzņemšana un straumēšana notiek ar Core 1. Viss pārējais - ar Core 0.

ESP32 ir pietiekami daudz jaudas, lai to visu paveiktu, nedaudz svīstot (video straumēšanas laikā tāfele sakarst).

ŠIS bija projekta galvenais mērķis: mierīga un produktīva līdzāspastāvēšana, veicot iepriekšēju un sadarbīgu daudzuzdevumu!

8. solis: punktu matricas kontrole

Es izmantoju ļoti spēcīgas MD_Parola un MD_MAX72xx bibliotēkas, kas pieejamas arī Arduino IDE bibliotēkas pārvaldniekā.

Visi teksta speciālie efekti tiek veikti, izmantojot šīs bibliotēkas. Lai noteiktu pareizo MAX72XX aparatūras tipu (manā gadījumā MD_MAX72XX:: ICSTATION_HW, jūsu var atšķirties), vajadzēja nedaudz piepūles, pēc tam teksta vadīšana ir vienkārša.

Ar zobenu var veikt šādas darbības:

  • Spilgtums
  • Mirgo
  • Zibspuldze
  • Ritināšanas ātrums un virziens (uz augšu/uz leju, pa kreisi/pa labi, stabils)
  • Varat arī pārvērst to par sienas pulksteni

9. darbība: video straumēšana

Lietotnei Blynk ir neliels logrīks video straumēšanai, taču varat straumēt pārlūkprogrammā, VLC atskaņotājā vai jebkurā citā vietā, kas atbalsta MJPEG standartu.

Tiek atbalstīti līdz 10 savienotiem klientiem.

Lai varētu ar to izveidot savienojumu, jums būs jānoskaidro ESP32-CAM IP adrese. Varat to meklēt savā maršrutētājā vai apkopot šo skici, vispirms iespējojot opciju _DEBUG_, un izlasīt termināļa IP adresi, kad tas izveido savienojumu ar jūsu tīklu.

SVARĪGI: Ir ļoti ieteicams ESP32-CAM modulim piešķirt pastāvīgu IP adresi vai izveidot DHCP rezervāciju, lai tā adrese nemainītos pēc nomas termiņa beigām. Varat arī modificēt lietotni Blynk, lai straumes vietrādī URL atjauninātu IP adresi - interesants mājasdarbs, ja esat gatavs to izpildīt.

Pašreizējā skicē tiek izmantota QVGA izšķirtspēja: 320x240 pikseļi, kas padara to diezgan ātru. Jūs varat brīvi spēlēties ar citām rezolūcijām un izlemt, kas jums noder.

RAM nevajadzētu radīt problēmas, jo skice patiešām izmanto PSRAM priekšrocības.

10. darbība: konfigurēšana

Skice izmanto manas vārdnīcas un EspBootstrap bibliotēkas, lai ielādētu konfigurācijas parametrus no konfigurācijas servera pēc palaišanas.

Es palaistu savu konfigurācijas serveri, ko arī jūs varat darīt (tas ir vienkāršs Apache2 tīmekļa serveris, kas patiešām apkalpo tikai JSON failus).

Varat arī izmantot jebkuru uzdevumam pieejamo tiešsaistes pakalpojumu: (OTADrive, Microsoft Azure, AWS IoT utt.). Šādā gadījumā, lūdzu, mainiet metodi String makeConfig (virknes ceļš), lai atbilstoši izveidotu URL, kas norāda uz jūsu konfigurācijas avotu. Varat arī saglabāt konfigurācijas failu SPIFFS failu sistēmā ESP32-CAM un nolasīt to no turienes, vai arī vienkārši ierakstīt visus ierakstus. Lūdzu, skatiet EspBootstrap bibliotēkas README.

GitHub ir sniegts konfigurācijas faila piemērs.

Ja vēlaties kodēt parametrus, tālāk ir sniegts piemērs.

pd ("Nosaukums", "DND zobenu iestatīšana");

pd ("ssid", "jūsu wifi ssid"); pd ("parole", "jūsu wifi parole"); pd ("msg", "Sveiki!"); pd ("ierīces", "8"); pd ("blynk_auth", "jūsu blynk AUTH UUID"); // ja jūs darbināt tikai savu serveri: pd ("blynk_host", "jūsu blynk servera IP"); pd ("blynk_port", "jūsu servera ports");

11. darbība. OTA programmaparatūras atjauninājumi

Skicei ir iespējota arī OTA (Over The Air) programmaparatūras atjaunināšana, un tā pārbauda, vai katrā sāknēšanas reizē nav pieejama jauna programmaparatūra.

Atkal es palaistu savu OTA atjaunināšanas serveri, ko arī jūs varat darīt (tas ir vienkāršs Apache2 tīmekļa serveris ar nelielu PHP skriptu, kas apkalpo bināros failus).

Varat arī izmantot jebkuru uzdevumam pieejamo tiešsaistes IoT pakalpojumu: (OTADrive, Microsoft Azure, AWS IoT utt.). Šādā gadījumā, lūdzu, mainiet void checkOTA () metodi, lai atbilstoši izveidotu atjauninājuma URL, kas norāda uz jūsu bināro failu avotu.

Tas nav obligāti - iespējams, vienkārši augšupielādēsit bināros failus, izmantojot seriālo savienojumu.

12. solis: MJPEG serveris

Šī tēma ir sīki aprakstīta šeit.

13. darbība: lietotne Blynk

Lietotne Blynk
Lietotne Blynk
Lietotne Blynk
Lietotne Blynk
Lietotne Blynk
Lietotne Blynk

Blynk ir uz mākoņiem balstīta IoT platforma, kas ļauj ātri izstrādāt lietotnes. Tas ir bezmaksas personiskai lietošanai un pat ir iespēja palaist savu Blynk serveri.

Es (kā jūs, iespējams, jau uzminējāt) izmantoju savu Blynk serveri, taču jums varētu būt vieglāk izmantot mākoņa versiju. Instalējiet Blynk iOS vai Android lietotni un izpildiet tālāk redzamos attēlus, lai tālrunī atjaunotu lietotni.

Lai lietojumprogramma darbotos ar jūsu lietotni, jums būs jānorāda savs Blynk Auth UUID. Tāpēc es izmantoju konfigurācijas failus. Tomēr vienreizējam projektam cietā kodētā vērtība darbotos tikpat labi.

SVARĪGI: Lūdzu, pārliecinieties, vai jūsu Blynk projekts ir iestatīts uz Paziņot ierīcēm, kad lietotne ir savienota.

PIEZĪME par video straumēšanas logrīku: dažreiz video netiek startēts. Šķiet, ka tā nav problēma ar ESP32, drīzāk ar lietojumprogrammas Blynk video logrīku. Mēģiniet aizvērt un atkārtoti atvērt lietotni vai apturēt/sākt projektu vēlreiz. Galu galā tas sākas. Šķiet, ka šī problēma nepastāv pārlūkprogrammā vai VLC atskaņotājā (piemēram).

14. solis: izbaudiet

Bija ļoti jautri to veidot un pierādīt, ka tāda pasta zīmoga izmēra ierīce kā ESP32 var paveikt daudz vairāk nekā tikai video straumēšana. Daudzus šī projekta jēdzienus varētu atkārtoti izmantot citās lietojumprogrammās.

15. darbība: bibliotēkas un kods

Bibliotēkas:

  • Blynk serveris
  • EspBootstrap bibliotēka
  • TaskScheduler bibliotēka
  • Vārdnīcas bibliotēka
  • LED matricas bibliotēka
  • Bibliotēka modulārai ritinošai LED matricas teksta parādīšanai

Faktiskā krātuve:

Interaktīvais Minecraft neievadiet zobenu/zīmi (ESP32-CAM)

Ieteicams: