Sisällysluettelo:

Interaktiivinen Minecraft Älä anna miekkaa/merkkiä (ESP32-CAM): 15 vaihetta (kuvilla)
Interaktiivinen Minecraft Älä anna miekkaa/merkkiä (ESP32-CAM): 15 vaihetta (kuvilla)

Video: Interaktiivinen Minecraft Älä anna miekkaa/merkkiä (ESP32-CAM): 15 vaihetta (kuvilla)

Video: Interaktiivinen Minecraft Älä anna miekkaa/merkkiä (ESP32-CAM): 15 vaihetta (kuvilla)
Video: Kulikovon taistelu. Kirjallisuus virallisen todisteen perusteella. 2024, Heinäkuu
Anonim
Image
Image
Lopputuote
Lopputuote

Hankkeen syntymiseen on todella monia syitä:

1. Osuuskunnan TaskScheduler-monitoimikirjaston tekijänä olin aina utelias, miten yhdistettävän yhteistyön edut yhdistetään ennaltaehkäisevän edun kanssa. Molemmista on hyötyä ja molemmissa on puutteita. Näiden kahden yhdistäminen tarjoaa ainutlaatuisen mahdollisuuden hyödyntää etuja ja vähätellä kummankin ongelman ratkaisuja tietyn käyttötapauksen perusteella. Mielenkiintoista? Jatka lukemista…

2. Se tosiasia, että ESP32 on monisydäminen mikro-ohjain, on kiehtova. Olin aina utelias, voinko hyödyntää tätä ominaisuutta. Joten kokeilu oli seuraava: voiko ESP32 suoratoistaa videota sujuvasti yhdellä ytimellä samalla kun tekee jotain muuta (mielekästä ja kohtuullisen intensiivistä jotain muuta) toisella ytimellä. Vielä mielenkiintoisempaa ?? Jatka lukemista…!

3. Tarvitsin testauspaikkaa äskettäisille projekteilleni, jotka liittyvät OTA -laiteohjelmiston käyttöönottoon ja kokoonpanonhallintaan…

4. Olin ostanut kaksi LED Dot Matrix -moduulia jokin aika sitten, enkä keksinyt, mitä tehdä niiden kanssa …

5. Poikani on Minecraft -pelaaja, ja kuten jokainen pieni poika rakastaa koristella ovea "Älä mene sisään" -julisteilla …

Joten tässä kaikki - kaikki hyvät syyt: Interaktiivinen Älä mene ovikyltti, jossa ESP32 -CAM -suoratoisto videosyötteestä "suljetun oven takaa" - tai "Kuka tulee huoneeseeni?"

Joten… mistä on kyse?

Jos sinulla on kärsivällisyyttä lukea koko tarina, huomaat, että tässä ei todellakaan ole kyse Minecraft -miekasta. Tämä projekti on todiste monista käsitteistä:

  • Ennaltaehkäisevän ja yhteistoiminnallisen moniajon rinnakkaiselo
  • ESP32 -ytimien valikoiva käyttö
  • Uusien sanakirja- ja EspBootstrap -kirjastojen käyttö
  • OTA -laiteohjelmiston valmistelu
  • Kokoonpanon hallinta
  • Videon suoratoisto useille asiakkaille

ja paljon muuta.

Nauttia

Tarvikkeet

  • ESP32-CAM
  • MAX7219 Dot Matrix Module 4-in-1 LED-näyttömoduuli Geekcreit Arduinolle
  • Attom Tech 2500mAh virtapankki

Vaihe 1: Lopputuote

Lopputuote
Lopputuote

Aloitan siitä, miltä lopullinen tuote näyttää, ja selitän sitten, miten se rakennettiin ja miten sitä hallitaan.

Vaikuttaa kiinnostavammalta näin…

Vaihe 2: Miekan etulevy

Miekan etulevy
Miekan etulevy
Miekan etulevy
Miekan etulevy

Miekan etulevy on valmistettu taulusta, merkitty lyijykynällä ja värjätty Crayola -merkeillä. Tämä yksin voi olla mielenkiintoinen projekti lapsesi kanssa:

  • Merkitse miekka taululle
  • Leikkaa etulevy pois
  • Merkitse neliöt (tai lohkot)
  • Väritä ne yksitellen
  • Lisää mustat viivat teräväpiirtimellä.

Mukana oli avoin toimistoasiakirja, jossa oli esimerkkikuvio timanttimiekasta, jonka voit liimata taulun päälle, jos haluat pikavalintoja … Kun kaikki on tehty, voit joko liimata etulevyn koko kokoonpanoon tai käyttää kaksinkertaista puolinen teippi.

Vaihe 3: Dot Matrix LED -näyttö

Pistematriisin LED -näyttö
Pistematriisin LED -näyttö
Pistematriisin LED -näyttö
Pistematriisin LED -näyttö
Pistematriisin LED -näyttö
Pistematriisin LED -näyttö

Minulla oli niitä 2, 4 segmenttiä, joten päätin tehdä yhden 8-segmentin.

Kätevästi toisella puolella on 5-napainen urosliitin ja vastakkaisella puolella 5 reikää. Taivuttamalla urospuolisen otsikon niittimaiseksi] muotoon pystyin yhdistämään kaksi moduulia sekä sähköisesti että mekaanisesti! Tappoi kaksi lintua yhdellä kivellä (tai kaksi kärpästä yhdellä vatsalla, pysäyttää kaksi suuta yhdellä palanella, saada kaksi ystävää yhdellä lahjalla, saada kaksi narua yhteen keulaan, mitä muita idiomeja tässä asiassa - oletko ajatellut? Anteeksi, eksyin).

Vastakkaista urosotsikkoa käytetään vastaavan naarasotsikon yhdistämiseen veroboardista ESP32-Camiin ja muihin komponentteihin.

Kaksi komponenttia on yhdistetty 3D-painetulla sillalla, jossa on myös kytkin virran kytkemiseksi päälle ja pois. 3d STL-tiedostot siltaa ja muita komponentteja varten ovat GitHubin files/3d-kansiossa.

Vaihe 4: Virta

Virta
Virta

Miekka saa virtansa 2500 mAh: n USB -virtapankista - pienimmästä ja ohuimmasta mitä löysin. Powerbank liukuu 3D-painettuun koteloon, joka kiinnittyy myös pistematriisimoduuleihin pitäen siten koko asian koossa.

Virtapankin koteloon on liimattu kaksi pyöreää magneettia, ja näin miekka kiinnitetään oveen (joten se voidaan irrottaa yhtä helposti huoltoa varten).

Vaihe 5: Kaavio

Kaavamainen
Kaavamainen
Kaavamainen
Kaavamainen
Kaavamainen
Kaavamainen

Todellinen kaavio sijaitsee GitHubissa, mutta kuva on 1000 sanan arvoinen (1024 tietotekniikassa), joten tässä olet:

Tämä on melko yksinkertaista, jos tiedät tiesi juotospistoolilla. Jos päätät käyttää toista, siltakomponentti on suunniteltava uudelleen.

Vaihe 6: 3D -tulostus

3D -tulostus
3D -tulostus
3D -tulostus
3D -tulostus
3D -tulostus
3D -tulostus

Akkukotelo ja silta, joka yhdistää ESP32-CAM-veroboardin pistematriisikokoonpanoon, suunniteltiin ja tulostettiin 3D-muodossa.

Paristokotelossa on kaksi osaa, jotka on liimattava yhteen tulostuksen jälkeen, jotta akulle muodostuu "tasku". Silta on vain puhdistettava kaikista tukirakenteista (valitettavasti ei ole olemassa hyvää suuntaa, joka minimoi ne). STL -tiedostot ovat GitHubissa ja TinkerCad -alkuperäiset ovat täällä.

TinkerCadin 3D -suunnittelu sisältää myös simuloidun kokoonpanokaavion osien sopimisesta toisiinsa ja niiden yhdistämisestä.

Vaihe 7: Ohjelmointi

Moniajoa

Tämä malli käyttää FreeRTOSia ennakoivaan moniajoon ja TaskScheduler -kirjastoa yhteistyöhön. Miekan käyttäytymistä ja viestejä ohjataan Blynk-sovelluksella. Asennuksen jälkeen (nastat, kameran ja pistematriisin alustus, WiFi-yhteys jne.) Luodaan kaksi RTOS-päätehtävää:

  • Videon suoratoisto -RTOS -tehtävä, kiinnitetty ESP32 -sovelluksen ytimeen (ydin 1)
  • Tekstinäyttö ja Blynk-ohjauksen RTOS-tehtävä, joka on kiinnitetty ESP32: n virtalähteeseen (ydin 0), joka vastaa myös kaikista WiFi-tehtävistä. Tekstiin ja Blynkiin liittyvää suoritusta hallitaan TaskScheduler -tehtävien avulla.

Huomasin, että 4K -pinotilaa riittää RTOS -tehtäviin, mutta pino voi loppua, joten jos haluat, tee siitä 8K - ESP32: ssa on paljon RAM -muistia.

Kaikki videoiden sieppaus ja suoratoisto tapahtuu Core 1: ssä. Kaikki muu - Core 0: ssa.

ESP32: lla on tarpeeksi tehoa käsitellä kaikki tämä murtamalla hieman hikeä (levy kuumenee videon suoratoiston aikana).

TÄMÄ oli hankkeen päätavoite: ennakoivan ja yhteistyöhaluisen moniajon rauhanomainen ja tuottava rinnakkaiselo!

Vaihe 8: Dot Matrix Control

Käytän erittäin tehokkaita MD_Parola- ja MD_MAX72xx -kirjastoja, jotka ovat saatavilla myös Arduino IDE -kirjastonhallinnassa.

Kaikki tekstin erikoistehosteet tehdään näiden kirjastojen kautta. Oikean MAX72XX -laitteistotyypin (MD_MAX72XX:: ICSTATION_HW, omasi voi olla erilainen) määrittäminen vaati hieman vaivaa, sen jälkeen tekstin hallinta on helppoa.

Miekka mahdollistaa seuraavat säätimet:

  • Kirkkaus
  • Vilkkuu
  • Salama
  • Selausnopeus ja suunta (ylös/alas, vasen/oikea, tasainen)
  • Voit myös muuttaa sen seinäkelloksi

Vaihe 9: Videon suoratoisto

Blynk -sovelluksessa on pieni widget videon suoratoistoon, mutta voit suoratoistaa selaimeen, VLC -soittimeen tai mihin tahansa, joka tukee MJPEG -standardia.

Jopa 10 yhdistettyä asiakasta tuetaan.

Sinun on selvitettävä ESP32-CAM-laitteen IP-osoite, jotta voit muodostaa yhteyden siihen. Voit etsiä sen reitittimeltäsi tai koota tämän luonnoksen, jossa _DEBUG_ -vaihtoehto on ensin käytössä, ja lukea päätelaitteen IP -osoite, kun se muodostaa yhteyden verkkoon.

TÄRKEÄÄ: On erittäin suositeltavaa antaa pysyvä IP-osoite tai luoda DHCP-varaus ESP32-CAM-moduulille, jotta sen osoite ei muutu vuokrasopimuksen päättyessä. Voit myös muokata Blynk -sovellusta päivittämään streamin URL -osoitteen IP -osoitteen - mielenkiintoinen kotitehtävä, jos olet valmis siihen.

Nykyinen luonnos käyttää QVGA -tarkkuutta: 320x240 pikseliä, mikä tekee siitä melko nopean. Voit vapaasti leikkiä muiden päätöslauselmien kanssa ja päättää, mikä toimii sinulle.

RAM -muistin ei pitäisi olla ongelma, koska luonnos hyödyntää PSRAM -muistia.

Vaihe 10: Määritykset

Luonnos hyödyntää Dictionary- ja EspBootstrap -kirjastojani ladatakseen kokoonpanoparametrit kokoonpanopalvelimelta käynnistyksen yhteydessä.

Käytän omaa määrityspalvelinta, jonka voit tehdä sinäkin (se on yksinkertainen Apache2 -verkkopalvelin, joka todella palvelee vain JSON -tiedostoja).

Voit myös käyttää mitä tahansa tehtävään käytettävissä olevia online -palveluita: (OTADrive, Microsoft Azure, AWS IoT jne.). Muuta tässä tapauksessa String makeConfig (merkkijonopolku) -menetelmää luodaksesi oikein määrityslähteeseesi osoittavan URL -osoitteen. Vaihtoehtoisesti voit tallentaa määritystiedoston SPIFFS-tiedostojärjestelmään ESP32-CAM-laitteessa ja lukea sen sieltä tai koodata kaikki merkinnät. Katso vaihtoehdot EspBootstrap -kirjaston README -ohjelmasta.

Esimerkki määritystiedostosta on GitHubissa.

Jos haluat koodata parametrit kovalla koodilla, alla on esimerkki:

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

pd ("ssid", "wifi ssid"); pd ("salasana", "wifi -salasanasi"); pd ("msg", "Hei!"); pd ("laitteet", "8"); pd ("blynk_auth", "sinun blynk AUTH UUID"); // jos käytät vain omaa palvelinta: pd ("blynk_host", "blynk -palvelimesi IP"); pd ("blynk_port", "palvelinporttisi");

Vaihe 11: OTA -laiteohjelmistopäivitykset

Luonnoksessa on myös OTA (Over The Air) -laiteohjelmistopäivitys käytössä ja se tarkistaa uusia laiteohjelmistoja jokaisen käynnistyksen yhteydessä.

Käytän jälleen omaa OTA -päivityspalvelinta, jonka voit myös tehdä (se on yksinkertainen Apache2 -verkkopalvelin, jossa on vähän PHP -skriptejä, jotka palvelevat binääritiedostoja).

Voit myös käyttää mitä tahansa tehtävään saatavilla olevaa online -IoT -palvelua: (OTADrive, Microsoft Azure, AWS IoT jne.). Muuta tässä tapauksessa void checkOTA () -menetelmää siten, että se muodostaa päivitys -URL -osoitteen, joka osoittaa binääritiedostolähteeseesi.

Tämä on valinnaista - voit halutessasi ladata vain binääritiedostot sarjayhteyden kautta.

Vaihe 12: MJPEG -palvelin

Tämä aihe on kuvattu yksityiskohtaisesti täällä.

Vaihe 13: Blynk -sovellus

Blynk -sovellus
Blynk -sovellus
Blynk -sovellus
Blynk -sovellus
Blynk -sovellus
Blynk -sovellus

Blynk on pilvipohjainen IoT-alusta, joka mahdollistaa nopean sovellusten kehittämisen. Se on ilmainen henkilökohtaiseen käyttöön ja sillä on jopa mahdollisuus käyttää omaa Blynk -palvelinta.

Minulla (kuten olet ehkä jo arvannut) on oma Blynk -palvelin, mutta pilviversion käyttö voi olla sinulle helpompaa. Asenna Blynk iOS- tai Android -sovellus ja rekonstruoi sovellus puhelimeesi noudattamalla alla olevia kuvia.

Sinun on annettava oma Blynk Auth UUID, jotta sovellus toimii sovelluksesi kanssa. Siksi käytän määritystiedostoja. Kuitenkin kertaluonteisessa projektissa kovakoodattu arvo toimisi yhtä hyvin.

TÄRKEÄÄ: Varmista, että Blynk -projektisi on asetettu ilmoittamaan laitteille, kun sovellus on yhdistetty.

HUOMAUTUS videon suoratoisto -widgetistä: joskus video ei käynnisty. Se ei näytä olevan ongelma ESP32: n kanssa, pikemminkin Blynk -sovelluksen video -widgetin kanssa. Kokeile sulkea ja avata sovellus uudelleen tai pysäyttää/käynnistää projekti uudelleen. Lopulta se alkaa. Tätä ongelmaa ei näytä olevan selaimessa tai esimerkiksi VLC -soittimessa.

Vaihe 14: Nauti

Oli erittäin hauskaa rakentaa tämä ja todistaa, että postimerkin kokoinen laite, kuten ESP32, voi tehdä paljon enemmän kuin vain suoratoistaa videota. Monet tämän projektin käsitteet voitaisiin käyttää uudelleen muissa sovelluksissa.

Vaihe 15: Kirjastot ja koodi

Kirjastot:

  • Blynk -palvelin
  • EspBootstrap -kirjasto
  • TaskScheduler -kirjasto
  • Sanakirjasto
  • LED -matriisikirjasto
  • Kirjasto modulaarisille vierittäville LED -matriisin tekstinäytöille

Varsinainen arkisto:

Interaktiivinen Minecraft Älä anna miekkaa/merkkiä (ESP32-CAM)

Suositeltava: