Мазмұны:

ESP32 көмегімен бейне ойнату: 10 қадам (суреттермен)
ESP32 көмегімен бейне ойнату: 10 қадам (суреттермен)

Бейне: ESP32 көмегімен бейне ойнату: 10 қадам (суреттермен)

Бейне: ESP32 көмегімен бейне ойнату: 10 қадам (суреттермен)
Бейне: ESP32 Tutorial 10 - Digital counter using Seven Segment Display 74HC595 -ESP32 IoT Learnig kit 2024, Шілде
Anonim
ESP32 көмегімен бейнені ойнату
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 бағдарламасын ресми сайтында жүктеп, орнатыңыз:

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 интерфейсі

SD интерфейсі
SD интерфейсі
SD интерфейсі
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 картасына көшіріп, СКД ұясына салыңыз

Компиляция және жүктеу

  1. Arduino IDE бағдарламасында SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino ашыңыз.
  2. Егер сіз ILI9225 қолданбайтын болсаңыз, сынып атауын түзету үшін жаңа сынып кодын (35 -жолдың айналасында) өзгертіңіз
  3. Arduino IDE «Жүктеу» түймесін басыңыз
  4. Егер сіз бағдарламаны жүктей алмасаңыз, ESP32 GPIO 2 мен SD D0/MISO арасындағы байланысты үзіп көріңіз.
  5. Егер бағдар дұрыс емес деп тапсаңыз, жаңа класс кодындағы «айналу» мәнін (0-3) өзгертіңіз
  6. Егер бағдарлама жақсы жұмыс істесе, сіз SDMMC_* үлгісінің басқа бастауын қолдана аласыз.
  7. Егер сізде SD картасының ұясы болмаса немесе сізде FFmpeg орнатылмаған болса, SPIFFS_* мысалын қолдануға болады.

9 -қадам: эталон

Benchmark
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 көмегімен бейне мен аудионы ойнай аласыз, бұл көптеген мүмкіндіктерді ашты!

Кішкене винтажды теледидар жасаймын деп ойлаймын …

Ұсынылған: