Sisällysluettelo:

Toista video ESP32: 10 vaihetta (kuvien kanssa)
Toista video ESP32: 10 vaihetta (kuvien kanssa)

Video: Toista video ESP32: 10 vaihetta (kuvien kanssa)

Video: Toista video ESP32: 10 vaihetta (kuvien kanssa)
Video: Управляйте 10 выходными контактами или реле с помощью 10 кнопочных переключателей с 1 входным контактом Arduino ANPB-V2. 2024, Marraskuu
Anonim
Toista video ESP32: lla
Toista video ESP32: lla

Tämä opas näyttää jotain videon ja äänen toistamisesta ESP32: lla.

Vaihe 1: ESP32: n ominaisuudet ja rajoitukset

ominaisuudet

  • 4 SPI -väylää, 2 SPI -väylää käytettävissä tilaa varten, ne ovat SPI2 ja SPI3 tai kutsutaan HSPI- ja VSPI -väyliksi. Molemmat SPI -väylät voivat ajaa enintään 80 MHz. Teoreettisesti se voi siirtää 320 x 240 16-bittisiä väripikseleitä SPI LCD -nopeuteen 60 kuvaa sekunnissa, mutta se ei ole vielä laskenut videodatan lukemiseen ja purkamiseen tarvittavaa aikaa.
  • 1-bittinen / 4-bittinen SD-väylä voi yhdistää SD-kortin natiiviprotokollaan
  • I2S: n sisäinen DAC -äänilähtö
  • yli 100 kt RAM -muistia käytettävissä video- ja äänipuskurille
  • Riittävä prosessointiteho JPEG (Play Motion JPEG) - ja LZW -tietojen pakkauksen purkamiseen (Play Animated GIF)
  • Kaksoisydinversio voi jakaa lukutiedot SD-kortilta, purkaa ja siirtää SPI LCD -näyttöön rinnakkaisiin monitehtäviin ja parantaa toiston suorituskykyä

Rajoitukset

  • sisäinen RAM-muisti ei riitä kaksoiskehyspuskuriin 320 x 240 kuvapistettä varten 16-bittisissä väreissä, se rajoitti moniajo-suunnittelua. Se voi voittaa hieman ulkoisella PSRAM -muistilla, vaikka se on hitaampi kuin sisäinen RAM
  • prosessointiteho ei riitä mp4 -videon purkamiseen
  • Kaikissa ESP32-versioissa ei ole 2 ydintä

Viite:

Vaihe 2: Videomuoto

RGB565

Tai nimeltään 16-bittinen väri on raakatietoformaatti, jota käytetään yleisesti MCU: n ja värinäytön välisessä viestinnässä. Jokaista väripikseliä edustaa 16-bittinen arvo, ensimmäinen 5-bittinen on punainen arvo, seuraava 6-bittinen on vihreä arvo ja sitten 5-bittinen sininen arvo. 16-bittinen arvo voi tehdä 65536 värivaihtelua, joten sitä kutsutaan myös 64K-väreiksi. Joten 1 minuutin 320x240@30 fps videon koko on: 16 * 320 * 240 * 30 * 60 = 2211840000 bittiä = 276480000 tavua tai yli 260 Mt

Animoitu GIF

Tämä on yleinen tiedostomuoto verkossa 1990 -luvulta lähtien. Se rajoittaa kunkin näytön värivaihtelua enintään 256 väriin eikä toista pikselin tallentamista samaan väriin kuin edellinen kehys. Joten se voi pienentää tiedoston kokoa paljon, varsinkin kun jokainen animaatiokehys ei muuta liikaa yksityiskohtia. LZW -pakkaus on suunniteltu dekoodattavaksi 1990 -luvun tietokoneella, joten ESP32: lla on myös riittävästi prosessointitehoa sen purkamiseen reaaliajassa.

Liike JPEG

Tai nimeltään M-JPEG / MJPEG on yleinen videopakkausmuoto videokuvauslaitteistolle, jolla on rajallinen prosessointiteho. Se on itse asiassa yksinkertaisesti edelleen JPEG -kehysten ketjutus. Vertaa MPEG- tai MP4 -muotoon, Motion JPEG ei tarvitse laskennallisesti intensiivistä kehystenvälistä ennustamistekniikkaa, jokainen kehys on itsenäinen. Joten se vaatii vähemmän resursseja koodata ja purkaa.

Viite.:

en.wikipedia.org/wiki/List_of_monochrome_a…

en.wikipedia.org/wiki/GIF

en.wikipedia.org/wiki/Motion_JPEG

Vaihe 3: Äänimuoto

PCM

Raaka datamuoto digitaalista ääntä varten. ESP32 DAC käyttää 16-bittistä syvyyttä, mikä tarkoittaa, että jokainen 16-bittinen data edustaa digitaalista näytteistettyä analogista signaalia. Useimmat video- ja kappaleäänet käyttävät yleensä näytteenottotaajuutta 44100 MHz: llä, mikä tarkoittaa 44100 näytteistettyä analogista signaalia joka sekunti. Joten 1 minuutin monoäänen PCM -raakatiedot mitoitetaan: 16 * 44100 * 60 = 42336000 bittiä = 5292000 tavua tai yli 5 Mt. Stereoäänen koko on kaksinkertainen eli yli 10 Mt

MP3

MPEG Layer 3 on pakattu äänimuoto, jota on käytetty laajasti kappaleiden pakkaamiseen 1990 -luvulta lähtien. Se voi pienentää tiedoston kokoa dramaattisesti alle kymmenesosaan raa'asta PCM-muodosta

Viite.:

en.wikipedia.org/wiki/Pulse-code_modulatio…

en.wikipedia.org/wiki/MP3

Vaihe 4: Muunna muoto

Tämä projekti käyttää FFmpeg muuntaa videon ESP32 luettavissa muodossa.

Lataa ja asenna FFmpeg niiden viralliselle sivustolle, jos et vielä:

Muunna PCM -ääniksi

ffmpeg -i input.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm

Muunna MP3 -ääniksi

ffmpeg -i input.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3

Muunna RGB565: ksi

ffmpeg -i input.mp4 -vf "fps = 9, asteikko = -1: 176: liput = lanczos, crop = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb

Muunna animoiduksi GIF: ksi

ffmpeg -i input.mp4 -vf "fps = 15, asteikko = -1: 176: liput = lanczos, crop = 220: in_h: (in_w -220)/2: 0, split [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif

Muunna Motion JPEG

ffmpeg -i input.mp4 -vf "fps = 30, asteikko = -1: 176: liput = lanczos, raja = 220: in_h: (in_w -220)/2: 0" -q: v 9220_30fps.mjpeg

Huomautus:

FFmpeg -muunnettu animoitu-g.webp" />

Vaihe 5: Laitteiston valmistelu

Laitteiston valmistelu
Laitteiston valmistelu

ESP32 -kehityskortti

Kaikkien kahden ytimen ESP32-kehityskorttien pitäisi olla kunnossa, tällä kertaa käytän TTGO ESP32-Micro -laitetta.

Värinäyttö

Kaikkien värinäyttöjen, joita Arduino_GFX tukee, pitäisi olla kunnossa, tällä kertaa käytän ILI9225 -murtokorttia, jossa on SD -korttipaikka.

Löydät Arduino_GFX -tuetut värinäyttöluettelot Githubista:

github.com/moononournation/Arduino_GFX

Sd-kortti

Kaikkien SD -korttien pitäisi olla kunnossa, tällä kertaa käytän SanDiskin "normaalinopeuksista" 8 Gt: n micro -SD -korttia SD -sovittimella.

Audio

Jos haluat käyttää vain kuulokkeita, kytke vain kuulokkeiden nastat nastaan 26 ja GND voi kuunnella ääntä. Tai voit käyttää pientä vahvistinta äänen toistamiseen kaiuttimella.

Muut

Jotkut leipälaudat ja leipälautajohdot

Vaihe 6: SD -käyttöliittymä

SD -käyttöliittymä
SD -käyttöliittymä
SD -käyttöliittymä
SD -käyttöliittymä

ILI9225 LCD -murtokortti sisälsi myös SD -korttipaikan aukot. Sitä voidaan käyttää SPI-väylänä tai 1-bittisenä SD-väylänä. Kuten aiemmissa ohjeissani mainitsin, mieluummin käytän 1-bittistä SD-väylää, joten tämä projekti perustuu 1-bittiseen SD-väylään.

Vaihe 7: Laita se yhteen

Laita se yhteen
Laita se yhteen
Laita se yhteen
Laita se yhteen
Laita se yhteen
Laita se yhteen

Yllä olevat kuvat osoittavat testausalustan, jota käytän tässä projektissa. Valkoinen leipälauta on 3D -tulostettu, voit ladata ja tulostaa sen osoitteesta thingiverse:

Todellinen yhteys riippuu siitä, mitä laitteistoa sinulla on käsilläsi.

Tässä yhteenveto yhteydestä:

ESP32

Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k vastus -> Vcc GPIO 14 -> SD CLK GPIO 15 -> SD CMD/MOSI GPIO 18 -> LCD SCK GPIO 19 -> LCD MISO GPIO 22 -> LCD LED GPIO 23 -> LCD MOSI GPIO 27 -> LCD DC/RS GPIO 33 -> LCD RST

Viite:

Vaihe 8: Ohjelmoi

Ohjelmoida
Ohjelmoida

Arduino IDE

Lataa ja asenna Arduino IDE, jos et ole vielä tehnyt sitä:

www.arduino.cc/en/main/software

ESP32 -tuki

Lisää ESP32 -tuki asennusohjeiden mukaisesti, jos et ole vielä tehnyt sitä:

github.com/espressif/arduino-esp32

Arduino_GFX -kirjasto

Lataa uusimmat Arduino_GFX -kirjastot: (paina "Kloona tai lataa" -> "Lataa ZIP")

github.com/moononournation/Arduino_GFX

Tuo kirjastoja Arduino IDE: ssä. (Arduino IDE "Sketch" -valikko -> "Include Library" -> "Add. ZIP Library" -> valitse ladattu ZIP -tiedosto)

ESP8266Audio

Lataa uusimmat ESP8266Audio -kirjastot: (paina "Kloona tai lataa" -> "Lataa ZIP")

github.com/earlephilhower/ESP8266Audio

Tuo kirjastoja Arduino IDE: ssä. (Arduino IDE "Sketch" -valikko -> "Include Library" -> "Add. ZIP Library" -> valitse ladattu ZIP -tiedosto)

RGB565_video Esimerkkikoodi

Lataa uusin RGB565_video -mallikoodi: (paina "Kloona tai lataa" -> "Lataa ZIP")

github.com/moononournation/RGB565_video

SD -kortin tiedot

Kopioi muunnetut tiedostot SD -kortille ja aseta ne LCD -korttipaikkaan

Käännä ja lataa

  1. Avaa SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino Arduino IDE: ssä
  2. Jos et käytä ILI9225: tä, vaihda uusi luokan koodi (noin rivi 35) oikean luokan nimeksi
  3. Paina Arduino IDE "Lataa" -painiketta
  4. Jos ohjelman lataaminen epäonnistui, yritä irrottaa yhteys ESP32 GPIO 2: n ja SD D0/MISO: n välillä
  5. Jos suunta ei ole oikea, muuta "kierto" -arvoa (0-3) uudessa luokkakoodissa
  6. Jos ohjelma toimii hyvin, voit kokeilla toista näytealoitusta SDMMC_*: lla
  7. Jos sinulla ei ole SD -korttipaikkaa tai sinulla ei ole FFmpeg -ohjelmistoa, voit silti kokeilla SPIFFS_* -esimerkkiä

Vaihe 9: Vertailuarvo

Vertailuarvo
Vertailuarvo

Tässä on yhteenveto eri video- (220x176) ja äänimuodosta (44100 MHz):

Muoto Ruutu sekunnissa (fps)
MJPEG + PCM 30
15
RGB565 + PCM 9
MJPEG + MP3 24

Huomautus:

  • MJPEG + PCM voi saavuttaa korkeammat fps, mutta se on tarpeetonta toistoa pienellä näytöllä, joka on suurempi kuin 30 fps
  • RGB565 ei vaadi dekoodausprosessia, mutta datakoko on liian suuri ja paljon aikaa kuluu tietojen lataamiseen SD: ltä, 4-bittiseltä SD-väylältä ja nopeammalta SD-kortilta.
  • MP3 -dekoodausprosessia ei ole vielä optimoitu, se on nyt omistanut ytimen 0 MP3 -dekoodaukselle ja ydin 1 videon toistolle

Vaihe 10: Hyvää pelaamista

Hyvää pelaamista!
Hyvää pelaamista!

Nyt voit toistaa videota ja ääntä ESP32: lla, ja se avasi monia mahdollisuuksia!

Luulen, että teen pienen vintage -television myöhemmin …

Suositeltava: