2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:53
Leiskite vaizdo įrašą naudodami ESP32
Ši instrukcija rodo kažką apie vaizdo ir garso atkūrimą naudojant ESP32.
1 žingsnis: ESP32 funkcijos ir apribojimai
funkcijos
4 SPI magistralės, 2 SPI magistralės, skirtos vartotojo erdvei, jos yra SPI2 ir SPI3 arba vadinamos HSPI ir VSPI. Abi SPI magistralės gali veikti daugiausia 80 MHz dažniu. Teoriškai jis gali perkelti 320x240 16 bitų spalvotų pikselių į SPI LCD 60 kadrų per sekundę greičiu, tačiau jis dar neskaičiavo laiko, reikalingo vaizdo duomenims skaityti ir dekoduoti.
yra daugiau nei 100 KB RAM vaizdo ir garso buferiui
Pakankamai tinkama apdorojimo galia, norint iššifruoti JPEG (paleisti judesio JPEG) ir LZW duomenų glaudinimą (paleisti animacinį GIF)
Dviejų branduolių versija gali padalyti skaitymo duomenis iš SD kortelės, iššifruoti ir perkelti į SPI LCD į lygiagrečias kelias užduotis ir pagerinti atkūrimo našumą
Apribojimai
nepakanka vidinės RAM, kad būtų dvigubo kadro buferis 320x240 formatu 16 bitų spalvomis, tai apribojo daugiafunkcinį dizainą. Jis gali šiek tiek įveikti naudojant išorinį PSRAM, nors jis yra lėtesnis nei vidinė RAM
nepakanka apdorojimo galios, kad būtų galima iššifruoti mp4 vaizdo įrašą
ne visos ESP32 versijos turi 2 branduolius, kelių užduočių pavyzdys naudingas tik dviejų branduolių versijai
Nuoroda:
2 žingsnis: vaizdo įrašo formatas
RGB565
Arba vadinama 16 bitų spalva yra neapdorotų duomenų formatas, dažniausiai naudojamas bendraujant tarp MCU ir spalvoto ekrano. Kiekvienas spalvinis pikselis yra 16 bitų reikšmė, pirmasis 5 bitų yra raudonos vertės, po 6 bitų-žalios spalvos, o po to-5 bitų mėlynos vertės. 16 bitų vertė gali pakeisti 65536 spalvas, todėl ji taip pat vadinama 64K spalvomis. Taigi 1 minutės 320x240@30 kadrų per sekundę vaizdo įrašo dydis bus toks: 16 * 320 * 240 * 30 * 60 = 2211840000 bitų = 276480000 baitų arba daugiau nei 260 MB
Animacinis GIF
Tai yra įprastas failų formatas žiniatinklyje nuo dešimtojo dešimtmečio. Tai apriboja kiekvieno ekrano spalvų variacijas iki 256 spalvų ir nekartokite taškų išsaugojimo tos pačios spalvos kaip ir ankstesnis kadras. Taigi tai gali žymiai sumažinti failo dydį, ypač kai kiekvienas animacijos kadras nepakeičia per daug detalių. LZW suspaudimas sukurtas taip, kad jį būtų galima iššifruoti dešimtojo dešimtmečio kompiuteriu, todėl ESP32 taip pat turi pakankamai pakankamai apdorojimo galios, kad jį būtų galima iššifruoti realiuoju laiku.
Judesio JPEG
Arba vadinamas M-JPEG / MJPEG yra įprastas vaizdo suspaudimo formatas, skirtas vaizdo įrašymo aparatūrai, turinčiai ribotą apdorojimo galią. Tiesą sakant, tai tiesiog nejudančių JPEG kadrų sujungimas. Palyginti su MPEG arba MP4, „Motion JPEG“nereikia skaičiavimo intensyvios tarprėmių prognozavimo technikos, kiekvienas kadras yra nepriklausomas. Taigi koduoti ir iššifruoti reikia mažiau išteklių.
Nuoroda:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
3 žingsnis: garso formatas
PCM
Neapdorotų duomenų formatas skaitmeniniam garsui. ESP32 DAC naudoja 16 bitų bitų gylį, tai reiškia, kad visi 16 bitų duomenys yra skaitmeninis atrinktas analoginis signalas. Daugelyje vaizdo įrašų ir dainų garso įrašų dažnis dažniausiai naudojamas 44100 MHz dažniu, tai reiškia, kad kiekvieną sekundę 44100 imamas analoginis signalas. Taigi 1 minutės mono garso PCM neapdorotų duomenų dydis bus: 16 * 44100 * 60 = 42336000 bitų = 5292000 baitų arba daugiau nei 5 MB. Stereo garso dydis bus dvigubas, t.y. daugiau nei 10 MB
MP3
„MPEG Layer 3“yra suspausto garso formatas, plačiai naudojamas dainų glaudinimui nuo dešimtojo dešimtmečio. Tai gali žymiai sumažinti failo dydį iki dešimtadalio neapdoroto PCM formato
Nuoroda:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
4 žingsnis: Formatuokite konvertavimą
Šiame projekte naudojamas FFmpeg konvertuoti vaizdo įrašą į ESP32 skaitomą formatą.
Atsisiųskite ir įdiekite „FFmpeg“oficialioje svetainėje, jei dar ne:
Bet kuri dviejų branduolių ESP32 dev plokštė turėtų būti tinkama, šį kartą aš naudoju TTGO ESP32-Micro.
Spalvotas ekranas
Bet koks spalvotas ekranas, kurį palaiko „Arduino_GFX“, turėtų būti tinkamas, šį kartą naudoju „ILI9225“pertraukos plokštę su SD kortelės lizdu.
„Arduino_GFX“palaikomų spalvų rodymo sąrašą galite rasti „Github“:
github.com/moononournation/Arduino_GFX
SD kortelė
Bet kuri SD kortelė turėtų būti tinkama, šį kartą naudoju „SanDisk“„įprasto greičio“8 GB „micro SD“su SD adapteriu.
Garsas
Jei norite naudoti tik ausines, tiesiog prijunkite ausinių kaiščius prie 26 kaiščio ir GND gali klausytis garso. Arba galite naudoti mažą stiprintuvą, norėdami leisti garsą su garsiakalbiu.
Kiti
Kai kurios lentos ir laidai
6 žingsnis: SD sąsaja
SD sąsajaSD sąsaja
„ILI9225“skystųjų kristalų skydui skirtoje plokštėje taip pat buvo SD kortelės lizdo išspaudimo kaiščiai. Jis gali būti naudojamas kaip SPI magistralė arba 1 bitų SD magistralė. Kaip minėta ankstesnėse instrukcijose, aš mieliau naudoju 1 bitų SD magistralę, todėl šis projektas bus pagrįstas 1 bitų SD magistralėmis.
7 žingsnis: sudėkite jį kartu
Sudėkite jį kartuSudėkite jį kartuSudėkite jį kartu
Aukščiau pateiktose nuotraukose parodyta bandymo platforma, kurią naudoju šiame projekte. Baltoji duonos lenta yra atspausdinta 3D, ją galite atsisiųsti ir atsispausdinti „thingiverse“:
Tikrasis ryšys priklauso nuo to, kokią aparatūrą turite.
Jei nenaudojate ILI9225, pakeiskite naują klasės kodą (maždaug 35 eilutėje) ir pakeiskite klasės pavadinimą
Paspauskite „Arduino IDE“mygtuką „Įkelti“
Jei nepavyko įkelti programos, pabandykite atjungti ryšį tarp ESP32 GPIO 2 ir SD D0/MISO
Jei manote, kad orientacija neteisinga, pakeiskite „sukimosi“reikšmę (0-3) naujame klasės kode
Jei programa veikia gerai, galite pabandyti kitą pavyzdį, pradedant nuo SDMMC_*
Jei neturite SD kortelės lizdo arba neįdiegėte „FFmpeg“, vis tiek galite išbandyti SPIFFS_* pavyzdį
9 žingsnis: etalonas
Etalonas
Čia pateikiama skirtingų vaizdo (220x176) ir garso (44100 MHz) formatų našumo santrauka:
Formatas
Kadras per sekundę (fps)
MJPEG + PCM
30
15
RGB565 + PCM
9
MJPEG + MP3
24
Pastaba:
„MJPEG + PCM“gali pasiekti didesnį kadrų per sekundę greitį, tačiau tai nereikalingas grojimas mažame ekrane, didesniame nei 30 kadrų per sekundę
RGB565 nereikia dekodavimo proceso, tačiau duomenų dydis yra per didelis ir daug laiko sugaišta įkeliant duomenis iš SD, 4 bitų SD magistralės ir greitesnės SD kortelės, tai gali šiek tiek patobulinti (laukinis spėjimas gali pasiekti apie 12 kadrų per sekundę)
MP3 dekodavimo procesas dar nėra optimizuotas, dabar jis skirtas 0 branduoliui MP3 dekodavimui ir 1 branduoliui vaizdo įrašams leisti
10 žingsnis: laimingas žaidimas
Laimingo žaidimo!
Dabar galite atkurti vaizdo ir garso įrašus naudodami savo ESP32, jis atvėrė daugybę galimybių!
Manau, vėliau padarysiu mažą senovinį televizorių …
Leiskite dainas su „Arduino“naudodami ADC į PWM „Flyback“transformatoriuje arba garsiakalbyje: Sveiki, vaikinai, tai yra antroji mano kito pamokomo dalyko dalis (tai buvo daug sunku). Iš esmės šiame projekte aš naudoju ADC ir laikmačius savo „Arduino“konvertuoti garso signalą į PWM signalą. Tai daug lengviau nei mano ankstesnė instrukcija
Leiskite dainas (MP3) naudodami „Arduino“naudodami PWM garsiakalbyje arba „Flyback Transformer“: Sveiki, vaikinai, tai yra mano pirmasis pamokomas dalykas, tikiuosi, kad jums tai patiks !! Iš esmės šiame projekte naudojau nuoseklųjį ryšį tarp mano „Arduino“ir nešiojamojo kompiuterio, perduoti muzikos duomenis iš nešiojamojo kompiuterio į „Arduino“. Ir naudojant „Arduino TIMERS t
Groti dainas naudojant žingsninį variklį !!: Šis projektas skirtas paprastos dinaminės sąsajos sukūrimui, kuri leis dviem būdais sąveikauti su žingsniniu varikliu. Pirmoji sąsaja valdys žingsninio variklio kryptį ir greitį, naudojant paprasta GUI, kuri
Groti vaizdo įrašus atgal naudojant „Quicktime Player“: tai yra pats nuostabiausias šimtmečio triukas. Šis instrukcinis rodo paprastą būdą, kaip atkurti vaizdo įrašus atgal neatsisiunčiant gudrių programų (jei neturite greito laiko, jums to reikės.) daryti su projektu, bet man reikėjo
Pridėkite vaizdo įrašą ir garso įrašą prie savo mikrovaldiklio projekto: 7 segmentų LED ekranai yra naudingi rodant skaičius, o bitmap LCD gali padaryti paprastą grafiką, tačiau kartais paprasčiausias būdas yra tikras spalvotas vaizdo išvestis: sudėtinis vaizdo įrašas (dar žinomas kaip RCA Jack) visur paplitęs ir veikia su 3 " - 60 ir