Мазмұны:
- 1 -қадам: ESP32 мүмкіндіктері мен шектеулері
- 2 -қадам: Бейне форматы
- 3 -қадам: аудио формат
- 4 -қадам: конверсияны пішімдеу
- 5 -қадам: аппараттық құралдарды дайындау
- 6 -қадам: SD интерфейсі
- 7 -қадам: оны біріктіріңіз
- 8 -қадам: Бағдарлама
- 9 -қадам: эталон
- 10 -қадам: бақытты ойын
Бейне: ESP32 көмегімен бейне ойнату: 10 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-31 10:21
Бұл нұсқаулық 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 бағдарламасын ресми сайтында жүктеп, орнатыңыз:
PCM дыбысына түрлендіру
ffmpeg -i input.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm
MP3 аудиоға түрлендіру
ffmpeg -i input.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3
RGB565 түрлендіру
ffmpeg -i input.mp4 -vf «fps = 9, масштаб = -1: 176: жалаушалар = lanczos, кесу = 220: in_h: (in_w -220)/2: 0» -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb
Анимациялық-g.webp
ffmpeg -i input.mp4 -vf «fps = 15, масштаб = -1: 176: жалаушалар = lanczos, кесу = 220: in_h: (in_w -220)/2: 0, бөлінген [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse «-loop -1 220_15fps.gif
Motion JPEG форматына түрлендіру
ffmpeg -i input.mp4 -vf «fps = 30, масштаб = -1: 176: жалаушалар = lanczos, кесу = 220: in_h: (in_w -220)/2: 0» -q: v 9 220_30fps.mjpeg
Ескерту:
FFmpeg түрлендірілген анимациялық-g.webp" />
5 -қадам: аппараттық құралдарды дайындау
ESP32 әзірлеуші тақтасы
Кез келген екі ядролы 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 интерфейсі
ILI9225 СКД ажырату тақтасында сонымен қатар SD crd слотының саңылаулары бар. Ол SPI шинасы немесе 1 биттік SD шинасы ретінде қолданыла алады. Алдыңғы нұсқаулықтарда айтылғандай, мен 1 биттік SD шинасын қолданғанды жөн көремін, сондықтан бұл жоба 1 биттік SD шинасына негізделеді.
7 -қадам: оны біріктіріңіз
Жоғарыдағы суреттер осы жобада мен қолданатын тестілеу алаңын көрсетеді. Ақ тақта 3D басып шығарылған, оны басқа жерден жүктеуге және басып шығаруға болады:
Нақты байланыс сіздің қолыңызда қандай жабдыққа байланысты.
Міне қосылымның қысқаша мазмұны:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k резистор -> Vcc GPIO 14 -> SD CLK GPIO 15 -> SD CMD/MOSI GPIO 18 -> LCD SCK GPIO 19 -> СКД MISO GPIO 22 -> СКД LED GPIO 23 -> LCD MOSI GPIO 27 -> СКД DC/RS GPIO 33 -> LCD RST
Сілтеме:
8 -қадам: Бағдарлама
Arduino IDE
Егер сіз әлі жасамасаңыз, Arduino IDE жүктеп алыңыз және орнатыңыз:
www.arduino.cc/kz/main/software
ESP32 қолдау
Егер сіз әлі жасамасаңыз, ESP32 қолдауын қосу үшін орнату нұсқауларын орындаңыз:
github.com/espressif/arduino-esp32
Arduino_GFX кітапханасы
Arduino_GFX соңғы кітапханаларын жүктеп алыңыз: («Clone or Download» -> «ZIP жүктеу» түймесін басыңыз)
github.com/moononournation/Arduino_GFX
Arduino IDE кітапханаларын импорттаңыз. (Arduino IDE «Sketch» мәзірі -> «Кітапхананы қосу» -> «. ZIP кітапханасын қосу» -> жүктелген ZIP файлын таңдау)
ESP8266Аудио
Ең соңғы ESP8266Audio кітапханаларын жүктеңіз: («Clone or Download» -> «ZIP жүктеу» түймесін басыңыз)
github.com/earlephilhower/ESP8266Audio
Arduino IDE кітапханаларын импорттаңыз. (Arduino IDE «Sketch» мәзірі -> «Кітапхананы қосу» -> «. ZIP кітапханасын қосу» -> жүктелген ZIP файлын таңдау)
RGB565_video үлгі коды
Ең соңғы RGB565_video үлгі кодын жүктеңіз: («Clone or Download» -> «ZIP жүктеу» түймесін басыңыз)
github.com/moononournation/RGB565_video
SD картасының деректері
Түрлендірілген файлдарды SD картасына көшіріп, СКД ұясына салыңыз
Компиляция және жүктеу
- 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 -қадам: эталон
Міне, әр түрлі бейне (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 қауіпсіздік камерасының жобасы: 8 қадам
ESP32 CAM -мен жұмысты бастау | Wifi арқылы ESP CAM көмегімен бейне ағыны | ESP32 қауіпсіздік камерасының жобасы: Бүгін біз осы жаңа ESP32 CAM тақтасын қалай пайдалану керектігін және оны қалай кодтауға және оны қауіпсіздік камерасы ретінде пайдалануға және wifi арқылы ағынды бейнені алуға болатынын білеміз
Сөйлейтін Ардуино - Arduino -мен ешқандай модульсіз MP3 ойнату - PCM көмегімен Arduino -дан Mp3 файлын ойнату: 6 қадам
Сөйлейтін Ардуино | Arduino -мен ешқандай модульсіз MP3 ойнату | PC файлын қолдану арқылы Arduino -дан Mp3 файлын ойнату: Бұл нұсқаулықта біз mp3 файлды arduino -мен ешқандай аудио модульсіз ойнауды үйренеміз, мұнда біз Arduino үшін 8 кГц жиіліктегі 16 биттік PCM ойнайтын PCM кітапханасын қолданамыз
Дыбыстық файлдарды (Wav) Arduino және DAC көмегімен ойнату: 9 қадам
Аудио дыбыстық файлдарды (Wav) Arduino және DAC көмегімен ойнату: Audino SD картасынан wav аудио файлын ойнату. Бұл нұсқаулық сізге SdCard картасындағы wav файлын динамикке қарапайым тізбек арқылы қалай ойнатуға болатынын көрсетеді. Wav файлы 8 бит моно болуы керек. 44 кГц файлдарды ойнату менде қиындық тудырмады
Raspberry Pi көмегімен ойнату жазбасы: 7 қадам (суреттермен)
Raspberry Pi көмегімен ойнату жазғышы: Сәлеметсіз бе, мен бұл нұсқаулықта Raspberry Pi көмегімен ойнату жазғышын қалай жасағанымды түсіндіремін. Бұл құрылғы B+Raspberry Pi үлгісі, оның жоғарғы жағында 7 түйме бар, Pi -дің USB порттарының біріне қосылған динамик және екіншісіне қосылған микрофон
Quicktime ойнатқышының көмегімен бейнелерді артқа қарай ойнату: 5 қадам
Quicktime ойнатқышының көмегімен бейнелерді артқа қарай ойнату: Бұл ғасырдың ең керемет айла -амалдары. Бұл нұсқаулық сізге қауіпті бағдарламаларды жүктеместен бейнелерді артқа қарай ойнатудың оңай әдісін көрсетеді (егер сізде жылдам уақыт болмаса, сізге қажет болады.) Суретте ештеңе жоқ. жобамен айналысыңыз, бірақ маған қажет болды