2025 Автор: John Day | [email protected]. Соңғы өзгертілген: 2025-01-23 14:50
ESP32 көмегімен бейнені ойнату
Бұл нұсқаулық ESP32 көмегімен бейне мен аудионы ойнату туралы бірдеңе көрсетеді.
1 -қадам: ESP32 мүмкіндіктері мен шектеулері
Мүмкіндіктер
Қолданушылар кеңістігі үшін 4 SPI шинасы, 2 SPI шинасы бар, олар SPI2 және SPI3 немесе HSPI және VSPI деп аталады. Екі SPI автобусы 80 МГц жиілікте жұмыс жасай алады. Теориялық тұрғыдан алғанда, ол 320x240 16-разрядты түсті пиксельді SPI LCD-ге 60 кадр / с жылдамдықпен жібере алады, бірақ ол бейне деректерді оқу мен декодтау үшін қажет уақытты әлі есептемеген.
1-биттік / 4-биттік SD шинасы SD картасын жергілікті протоколға қосады
I2S ішкі DAC аудио шығысы
бейне және аудио буфері үшін 100 Кбайт жедел жады бар
JPEG (ойнату Motion JPEG) және LZW деректерді сығу (анимациялық-g.webp" />
Екі ядролы нұсқа SD картасынан оқылған деректерді бөлуге, декодтауға және SPI LCD-ге параллель көп тапсырмаларға жіберуге және ойнату өнімділігін арттыруға мүмкіндік береді.
Шектеулер
16-разрядты 320x240 өлшемді қос кадрлық буферге ие болу үшін ішкі жедел жады жеткіліксіз, ол көп тапсырмалы дизайнды шектеді. Ол сыртқы PSRAM көмегімен аздап жеңе алады, бірақ ол ішкі жедел жадыға қарағанда баяу
mp4 бейнесін декодтау үшін өңдеу қуаты жеткіліксіз
барлық ESP32 нұсқаларында 2 ядролы болмайды, көп тапсырмалы үлгі екі ядролы нұсқада ғана пайда әкеледі
Сілт:
2 -қадам: Бейне форматы
RGB565
Немесе 16-разрядты түс-бұл MCU мен түрлі-түсті дисплей арасындағы байланыста жиі қолданылатын шикізат форматы. 16-биттік мәнмен ұсынылған әр түсті пиксель, бірінші 5-разряд қызыл мән, 6-биттен кейін жасыл мән, содан кейін 5-биттік көк мән. 16 биттік мән 65536 түс өзгерісін жасай алады, сондықтан оны 64K түстер деп те атайды. Сонымен, 320x240 секундына 30 минуттық бейне өлшемі: 16 * 320 * 240 * 30 * 60 = 2211840000 бит = 276480000 байт немесе 260 МБ жоғары
Анимациялық GIF
Бұл 1990 -шы жылдардан бері интернетте кең таралған файл пішімі. Ол әр экранның түсінің өзгеруін 256 түске дейін шектейді және пиксельді алдыңғы кадрмен бірдей түсінде қайталамайды. Бұл файл өлшемін едәуір кішірейтуі мүмкін, әсіресе әрбір анимациялық кадр тым көп мәліметтерді өзгертпесе. LZW қысу 1990 жылдардағы компьютерде декодталатын етіп жасалған, сондықтан ESP32 сонымен қатар оны нақты уақытта декодтау үшін жеткілікті өңдеу күшіне ие.
JPEG қозғалысы
Немесе M-JPEG / MJPEG деп аталады-бұл өңдеу қуаты шектеулі бейне түсіру аппаратурасы үшін кең таралған бейне қысу пішімі. Бұл шын мәнінде JPEG кадрларының үйлесімі. MPEG немесе MP4, Motion JPEG -пен салыстырыңыз, кадраралық болжамды есептеудің қарқынды әдісі қажет емес, әр кадр тәуелсіз. Сондықтан кодтау мен декодтау үшін оған аз ресурс қажет.
Сілт.:
kk.wikipedia.org/wiki/List_of_monochrome_a…
kk.wikipedia.org/wiki/GIF
kk.wikipedia.org/wiki/Motion_JPEG
3 -қадам: аудио формат
PCM
Цифрлық аудио үшін шикі деректер пішімі. ESP32 DAC 16 биттік тереңдікті пайдаланады, яғни әрбір 16 биттік деректер сандық үлгідегі аналогты сигналды білдіреді. Бейне және ән аудиосының көпшілігінде әдетте 44100 МГц жиіліктегі жиілік қолданылады, бұл әр секунд үшін 44100 үлгідегі аналогтық сигналды білдіреді. Осылайша, 1 минуттық моно аудио PCM шикізатының деректері өлшемді болады: 16 * 44100 * 60 = 42336000 бит = 5292000 байт немесе 5 Мбайт. Стерео дыбыстың көлемі екі есе артады, яғни 10 МБ -тан асады
MP3
MPEG Layer 3 - 1990 жылдан бастап әндерді қысу үшін кеңінен қолданылатын қысылған аудио формат. Ол шикізат PCM форматының оннан бір бөлігіне дейін файл өлшемін күрт азайтуы мүмкін
Сілт.:
kk.wikipedia.org/wiki/Pulse-code_modulatio…
kk.wikipedia.org/wiki/MP3
4 -қадам: конверсияны пішімдеу
Бұл жоба FFmpeg көмегімен бейнені ESP32 оқылатын форматқа түрлендіреді.
FFmpeg бағдарламасын ресми сайтында жүктеп, орнатыңыз:
Кез келген екі ядролы ESP32 әзірлеуші тақтасы жақсы болуы керек, бұл жолы мен TTGO ESP32-Micro қолданамын.
Түсті дисплей
Arduino_GFX қолдауы бар кез келген түсті дисплей жақсы болуы керек, бұл жолы мен SD картасының ұясы бар ILI9225 тақтасын қолданамын.
Github -да Arduino_GFX қолдайтын түсті дисплей тізімін таба аласыз:
github.com/moononournation/Arduino_GFX
SD картасы
Кез келген SD картасы жақсы болуы керек, бұл жолы мен SD адаптері бар SanDisk «қалыпты жылдамдықта» 8 ГБ micro SD қолданамын.
Аудио
Егер сіз тек құлаққапты қолданғыңыз келсе, құлаққап түйреуіштерін 26 -пинке жалғаңыз, ал GND дыбысты тыңдай алады. Немесе дыбысты динамикпен ойнату үшін кішкене күшейткішті қолдануға болады.
Басқалар
Кейбір тақталар мен тақталар сымдары
6 -қадам: SD интерфейсі
SD интерфейсіSD интерфейсі
ILI9225 СКД ажырату тақтасында сонымен қатар SD crd слотының саңылаулары бар. Ол SPI шинасы немесе 1 биттік SD шинасы ретінде қолданыла алады. Алдыңғы нұсқаулықтарда айтылғандай, мен 1 биттік SD шинасын қолданғанды жөн көремін, сондықтан бұл жоба 1 биттік SD шинасына негізделеді.
7 -қадам: оны біріктіріңіз
Оны бірге қойыңызОны бірге қойыңызОны бірге қойыңыз
Жоғарыдағы суреттер осы жобада мен қолданатын тестілеу алаңын көрсетеді. Ақ тақта 3D басып шығарылған, оны басқа жерден жүктеуге және басып шығаруға болады:
Нақты байланыс сіздің қолыңызда қандай жабдыққа байланысты.
Arduino IDE бағдарламасында SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino ашыңыз.
Егер сіз ILI9225 қолданбайтын болсаңыз, сынып атауын түзету үшін жаңа сынып кодын (35 -жолдың айналасында) өзгертіңіз
Arduino IDE «Жүктеу» түймесін басыңыз
Егер сіз бағдарламаны жүктей алмасаңыз, ESP32 GPIO 2 мен SD D0/MISO арасындағы байланысты үзіп көріңіз.
Егер бағдар дұрыс емес деп тапсаңыз, жаңа класс кодындағы «айналу» мәнін (0-3) өзгертіңіз
Егер бағдарлама жақсы жұмыс істесе, сіз SDMMC_* үлгісінің басқа бастауын қолдана аласыз.
Егер сізде SD картасының ұясы болмаса немесе сізде FFmpeg орнатылмаған болса, SPIFFS_* мысалын қолдануға болады.
9 -қадам: эталон
Benchmark
Міне, әр түрлі бейне (220x176) және аудио (44100 МГц) үшін өнімділіктің қысқаша мазмұны:
Пішім
Секундына кадр (секундына)
MJPEG + PCM
30
15
RGB565 + PCM
9
MJPEG + MP3
24
Ескерту:
MJPEG + PCM жоғары жылдамдыққа жетуі мүмкін, бірақ 30 кадр / с -тан асатын шағын экранда ойнаудың қажеті жоқ.
RGB565 декодтау процесін қажет етпейді, бірақ деректердің көлемі тым үлкен және SD, 4-биттік SD шинасы мен тезірек SD картасынан деректерді жүктеуге көп уақыт кетеді, оны біраз жақсарта алады (жабайы болжам шамамен 12 кадр / с жетуі мүмкін)
MP3 декодтау процесі әлі оңтайландырылмаған, енді ол MP3 декодтау үшін 0 ядро мен бейнені ойнату үшін 1 ядроға арналған
10 -қадам: бақытты ойын
Бақытты ойын!
Енді сіз ESP32 көмегімен бейне мен аудионы ойнай аласыз, бұл көптеген мүмкіндіктерді ашты!
Кішкене винтажды теледидар жасаймын деп ойлаймын …
ESP32 CAM -мен жұмысты бастау | Wifi арқылы ESP CAM көмегімен бейне ағыны | ESP32 қауіпсіздік камерасының жобасы: Бүгін біз осы жаңа ESP32 CAM тақтасын қалай пайдалану керектігін және оны қалай кодтауға және оны қауіпсіздік камерасы ретінде пайдалануға және wifi арқылы ағынды бейнені алуға болатынын білеміз
Сөйлейтін Ардуино | Arduino -мен ешқандай модульсіз MP3 ойнату | PC файлын қолдану арқылы Arduino -дан Mp3 файлын ойнату: Бұл нұсқаулықта біз mp3 файлды arduino -мен ешқандай аудио модульсіз ойнауды үйренеміз, мұнда біз Arduino үшін 8 кГц жиіліктегі 16 биттік PCM ойнайтын PCM кітапханасын қолданамыз
Аудио дыбыстық файлдарды (Wav) Arduino және DAC көмегімен ойнату: Audino SD картасынан wav аудио файлын ойнату. Бұл нұсқаулық сізге SdCard картасындағы wav файлын динамикке қарапайым тізбек арқылы қалай ойнатуға болатынын көрсетеді. Wav файлы 8 бит моно болуы керек. 44 кГц файлдарды ойнату менде қиындық тудырмады
Raspberry Pi көмегімен ойнату жазғышы: Сәлеметсіз бе, мен бұл нұсқаулықта Raspberry Pi көмегімен ойнату жазғышын қалай жасағанымды түсіндіремін. Бұл құрылғы B+Raspberry Pi үлгісі, оның жоғарғы жағында 7 түйме бар, Pi -дің USB порттарының біріне қосылған динамик және екіншісіне қосылған микрофон
Quicktime ойнатқышының көмегімен бейнелерді артқа қарай ойнату: Бұл ғасырдың ең керемет айла -амалдары. Бұл нұсқаулық сізге қауіпті бағдарламаларды жүктеместен бейнелерді артқа қарай ойнатудың оңай әдісін көрсетеді (егер сізде жылдам уақыт болмаса, сізге қажет болады.) Суретте ештеңе жоқ. жобамен айналысыңыз, бірақ маған қажет болды