2025 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2025-01-23 14:59
Atskaņojiet video, izmantojot ESP32
Šī instrukcija parāda kaut ko par video un audio atskaņošanu, izmantojot ESP32.
1. darbība: ESP32 funkcijas un ierobežojumi
Iespējas
4 SPI kopnes, 2 SPI kopnes, kas pieejamas lietotāja vietai, tās ir SPI2 un SPI3 vai sauktas par HSPI un VSPI. Abas SPI kopnes var darboties ne vairāk kā 80 MHz. Teorētiski tas var nospiest 320x240 16 bitu krāsu pikseļus uz SPI LCD ar ātrumu 60 kadri sekundē, bet vēl nav uzskaitījis laiku, kas vajadzīgs, lai nolasītu un atšifrētu video datus.
1 bitu / 4 bitu SD kopne var savienot SD karti vietējā protokolā
I2S iekšējā DAC audio izeja
video un audio buferim ir pieejama vairāk nekā 100 KB RAM
Pietiekama apstrādes jauda, lai atšifrētu JPEG (atskaņot Motion JPEG) un LZW datu saspiešanu (atskaņot animētu GIF)
Divkodolu versija var sadalīt lasāmos datus no SD kartes, atšifrēt un nospiest uz SPI LCD paralēlos daudzuzdevumos un uzlabot atskaņošanas veiktspēju
Ierobežojumi
nav pietiekami daudz iekšējās RAM, lai būtu divkārša kadra buferis 320x240 formātā 16 bitu krāsās, tas ierobežoja daudzuzdevumu dizainu. To var nedaudz pārvarēt ar ārējo PSRAM, lai gan tas ir lēnāks nekā iekšējā RAM
Nepietiek apstrādes jaudas, lai atšifrētu mp4 video
ne visām ESP32 versijām ir 2 kodoli, vairāku uzdevumu paraugs gūst labumu tikai no divkodolu versijas
Atsauce:
2. darbība: video formāts
RGB565
Vai arī sauc par 16 bitu krāsu ir neapstrādātu datu formāts, ko parasti izmanto saziņai starp MCU un krāsu displeju. Katru krāsu pikseļu attēlo 16 bitu vērtība, pirmie 5 biti ir sarkanā vērtība, pēc 6 bitu ir zaļā vērtība un pēc tam 5 bitu zilā vērtība. 16 bitu vērtība var radīt 65536 krāsu variācijas, tāpēc to sauc arī par 64K krāsām. Tātad 1 minūte 320x240@30 kadri / s video tiks izmērīts: 16 * 320 * 240 * 30 * 60 = 2211840000 biti = 276480000 baiti vai vairāk nekā 260 MB
Animēts GIF
Šis ir izplatīts failu formāts tīmeklī kopš deviņdesmitajiem gadiem. Tas ierobežo katra ekrāna krāsu variācijas līdz 256 krāsām un neatkārto to, ka pikseļi tiek saglabāti tādā pašā krāsā kā iepriekšējais kadrs. Tātad tas var ievērojami samazināt faila lielumu, it īpaši, ja katrs animācijas rāmis nemaina pārāk daudz detaļu. LZW kompresija ir izstrādāta, lai to varētu atšifrēt 1990. gadu dators, tāpēc ESP32 ir arī pietiekami liela apstrādes jauda, lai to atšifrētu reālā laikā.
Kustības JPEG
Vai arī sauc par M-JPEG / MJPEG ir parasts video saspiešanas formāts video uztveršanas aparatūrai ar ierobežotu apstrādes jaudu. Patiesībā tas ir vienkārši nekustīgu JPEG kadru savienojums. Salīdzinot ar MPEG vai MP4, Motion JPEG nav nepieciešama skaitļošanas ziņā intensīva starp kadru paredzēšanas tehnika, katrs kadrs ir neatkarīgs. Tātad kodēšanai un atšifrēšanai ir nepieciešami mazāk resursu.
Atsauce:
en.wikipedia.org/wiki/List_of_monochrome_a…
en.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
3. darbība: audio formāts
PCM
Neapstrādātu datu formāts digitālajam audio. ESP32 DAC izmanto 16 bitu dziļumu, kas nozīmē, ka katrs 16 bitu dati attēlo ciparu paraugu analogo signālu. Lielākajā daļā video un dziesmu audio parasti tiek izmantots izlases ātrums 44100 MHz, tas nozīmē 44100 parauga analogo signālu katrā sekundē. Tātad 1 minūtes mono audio PCM izejas dati tiks izmērīti: 16 * 44100 * 60 = 42336000 biti = 5292000 baiti vai vairāk nekā 5 MB. Stereo audio izmērs būs dubultā, t.i., vairāk nekā 10 MB
MP3
MPEG Layer 3 ir saspiests audio formāts, ko plaši izmanto dziesmu saspiešanai kopš 1990. gadiem. Tas var ievērojami samazināt faila lielumu līdz vienai desmitdaļai neapstrādāta PCM formāta
Atsauce:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
4. darbība: konvertēšanas formāts
Šis projekts izmanto FFmpeg, lai pārvērstu video ESP32 lasāmā formātā.
Lūdzu, lejupielādējiet un instalējiet FFmpeg savā oficiālajā vietnē, ja vēl neesat:
Jebkurai divkodolu ESP32 dev plāksnei vajadzētu būt kārtībā, šoreiz es izmantoju TTGO ESP32-Micro.
Krāsu displejs
Jebkuram krāsu displejam, kuru Arduino_GFX atbalsta, vajadzētu būt kārtībā, šoreiz es izmantoju ILI9225 sadalīšanas paneli ar SD kartes slotu.
Arduino_GFX atbalstīto krāsu displeju sarakstu varat atrast vietnē Github:
github.com/moononournation/Arduino_GFX
SD karte
Jebkurai SD kartei vajadzētu būt kārtībā, šoreiz es izmantoju SanDisk "normālā ātruma" 8 GB micro SD ar SD adapteri.
Audio
Ja vēlaties izmantot tikai austiņas, vienkārši pievienojiet austiņu tapas 26. tapai, un GND var klausīties audio. Vai arī varat izmantot nelielu pastiprinātāju, lai atskaņotu audio ar skaļruni.
Citi
Daži maizes dēļi un maizes dēļu vadi
6. darbība: SD saskarne
SD interfeissSD saskarne
ILI9225 LCD sadalīšanas panelī bija arī SD crd slota sadalīšanas tapas. To var izmantot kā SPI kopni vai 1 bitu SD kopni. Kā minēts iepriekšējos norādījumos, es labprātāk izmantoju 1 bitu SD kopni, tāpēc šis projekts balstīsies uz 1 bitu SD kopni.
7. solis: salieciet to kopā
Salieciet to kopāSalieciet to kopāSalieciet to kopā
Iepriekš redzamajos attēlos ir redzama testēšanas platforma, kuru izmantoju šajā projektā. Baltā maize ir iespiesta 3D formātā, to varat lejupielādēt un izdrukāt vietnē thingiverse:
Faktiskais savienojums ir atkarīgs no tā, kāda aparatūra jums ir rokās.
Kopējiet konvertētos failus uz SD karti un ievietojiet LCD kartes slotā
Apkopot un augšupielādēt
Atveriet SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino Arduino IDE
Ja neizmantojat ILI9225, nomainiet jauno klases kodu (ap 35. rindu), lai tas būtu pareizs
Nospiediet pogu Arduino IDE "Augšupielādēt"
Ja jums neizdevās augšupielādēt programmu, mēģiniet atvienot savienojumu starp ESP32 GPIO 2 un SD D0/MISO
Ja jums šķiet, ka orientācija nav pareiza, nomainiet "rotācijas" vērtību (0-3) jaunā klases kodā
Ja programma darbojas labi, varat izmēģināt citu paraugu, sākot ar SDMMC_*
Ja jums nav SD kartes slota vai neesat instalējis FFmpeg, joprojām varat izmēģināt SPIFFS_* piemēru
9. solis: etalons
Etalons
Šeit ir veiktspējas kopsavilkums dažādiem video (220x176) un audio (44100 MHz) formātiem:
Formāts
Kadrs sekundē (kadri sekundē)
MJPEG + PCM
30
15
RGB565 + PCM
9
MJPEG + MP3
24
Piezīme:
MJPEG + PCM var sasniegt augstāku kadru nomaiņas ātrumu sekundē, taču nav nepieciešama atskaņošana nelielā ekrānā, kas ir lielāks par 30 kadriem sekundē
RGB565 nav nepieciešams atšifrēšanas process, taču datu apjoms ir pārāk liels, un datu ielādēšanai no SD, 4 bitu SD kopnes un ātrākas SD kartes tiek patērēts daudz laika (to var nedaudz uzlabot (savvaļas minējums var sasniegt aptuveni 12 kadrus sekundē))
MP3 atšifrēšanas process vēl nav optimizēts, tagad tas atvēl kodolu 0 MP3 dekodēšanai un kodolu 1 video atskaņošanai
10. solis: laimīgu spēli
Priecīgu spēli!
Tagad jūs varat atskaņot video un audio ar savu ESP32, tas pavēra daudzas iespējas!
Es domāju, ka vēlāk es uztaisīšu nelielu vintage televizoru …
TextPlayBulb: REST iespējots PlayBulb, izmantojot Raspberry Pi 3, BLE un telegrammu: šī pamācība parāda, kā izveidot savienojumu ar PlayBulb krāsu Bluetooth LED lampu, izmantojot Python, Raspberry Pi 3 un Bluetooth bibliotēku, un paplašināt vadīklas, izmantojot REST API IoT scenārijam , un, kā pierādījums, projekts arī parāda, kā paplašināt šo
Runājošais Arduino | MP3 atskaņošana ar Arduino bez moduļa | Mp3 faila atskaņošana no Arduino, izmantojot PCM: Šajā pamācībā mēs iemācīsimies atskaņot mp3 failu ar arduino, neizmantojot nevienu audio moduli, šeit mēs izmantosim PCM bibliotēku Arduino, kas atskaņo 16 bitu PCM ar 8 kHz frekvenci, tāpēc ļauj to izdarīt
Midi ieraksts/atskaņošana/pārsniegšana ar 5 kontaktu savienojumiem: * izmanto ATMega-1284 mikroshēmu, kas darbojas 8 MHz frekvencē, ar 4 k baitu RAM un 4 kB eeprom * izmanto vecos DIN 5 kontaktu savienotājus * ļauj ierakstīt un atskaņot, kā arī overdub: ierakstīšana kopā ar kaut ko iepriekš ierakstītu. * Pilna ēdienkarte * Capab
Audio skaņas failu atskaņošana (Wav) ar Arduino un DAC: atskaņojiet wav failu audio no savas Audino SD kartes. Šī pamācība parādīs, kā jūsu SdCard wav failu var atskaņot, izmantojot vienkāršu ķēdi skaļrunim. Wav failam jābūt 8 bitu mono. Man nav bijis problēmu atskaņot 44 KHz failus. Lai gan nē
Arduino Bascis - Skaņu un toņu atskaņošana: Es gribēju atskaņot dažus skaņas efektus un sapratu, ka šī ir viena no novārtā atstātajām jomām, kad runa ir par apmācībām. Pat vietnē Youtube trūkst labu pamācību par Arduinos un skaņām, tāpēc, būdams jauks puisis, nolēmu dalīties savās zināšanās