Mündəricat:
- Addım 1: ESP32 Xüsusiyyətləri və Məhdudiyyətləri
- Addım 2: Video Formatı
- Addım 3: Səs Formatı
- Addım 4: Dönüşümü Formatlayın
- Addım 5: Avadanlıqların Hazırlanması
- Addım 6: SD Arayüzü
- Addım 7: Birlikdə qoyun
- Addım 8: Proqram
- Addım 9: Qiymətləndirmə
- Addım 10: Xoşbəxt Oyun
Video: ESP32 ilə Video Oynayın: 10 Adım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-31 10:16
Bu Təlimatlar, ESP32 ilə video və audio oynatmaqla bağlı bir şey göstərir.
Addım 1: ESP32 Xüsusiyyətləri və Məhdudiyyətləri
Xüsusiyyətləri
- 4 SPI avtobusu, 2 SPI avtobusu istifadəçi üçün mövcuddur, bunlar SPI2 və SPI3 və ya HSPI və VSPI adlanır. Hər iki SPI avtobusu ən çox 80 MHz -də işləyə bilər. Teorik olaraq 320x240 16-bit rəngli pikselləri SPI LCD-ə 60 kadr sürətində itələyə bilər, lakin hələ də video məlumatların oxunması və deşifr edilməsi üçün lazım olan əlavə vaxtı hesablamayıb.
- 1-bit / 4-bit SD avtobusu SD kartı yerli protokola qoşa bilər
- I2S daxili DAC audio çıxışı
- video və audio tampon üçün 100 KB -dən çox RAM mövcuddur
- JPEG (oyun Motion JPEG) və LZW məlumat sıxılma (Animasiya-g.webp" />
- İki nüvəli versiya, oxunan məlumatları SD kartdan ayıra, deşifr edə və SPI LCD-yə paralel çox vəzifələrə köçürə və oynatma performansını artıra bilər.
Məhdudiyyətlər
- 16 bit rəngli 320x240 ölçülü ikiqat çərçivə tamponuna sahib olmaq üçün kifayət qədər daxili RAM yoxdur, çoxlu dizaynı məhdudlaşdırır. Daxili RAM -dan daha yavaş olsa da, xarici PSRAM ilə bir az öhdəsindən gələ bilər
- mp4 videonun kodunu açmaq üçün kifayət qədər işləmə gücü yoxdur
- bütün ESP32 versiyasının 2 nüvəsi yoxdur, çox tapşırıq nümunəsi yalnız ikili nüvəli versiyada faydalanır
İstinad:
Addım 2: Video Formatı
RGB565
Və ya 16 bit rəng adlanır, MCU və rəngli ekran arasındakı ünsiyyətdə istifadə olunan xam bir məlumat formatıdır. Hər bir rəng pikseli 16 bitlik dəyərlə təmsil olunur, ilk 5 bit qırmızı, 6 bitdən sonra yaşıl, sonra 5 bit mavi rəngdir. 16 bitlik dəyər 65536 rəng dəyişikliyi edə bilər, buna görə də 64K rənglər adlanır. Beləliklə, 1 dəqiqəlik 320x240@30 kadr saniyədə video ölçülü olacaq: 16 * 320 * 240 * 30 * 60 = 2211840000 bit = 276480000 bayt və ya 260 MB -dən çox
Cizgi GIF
Bu, 1990 -cı illərdən bəri internetdə yayılmış bir fayl formatıdır. Hər bir ekran üçün rəng dəyişikliyini 256 rəngə qədər məhdudlaşdırır və əvvəlki çərçivə ilə eyni rəngdə olan pikselləri təkrarlamır. Xüsusilə hər bir animasiya çərçivəsi çox detalları dəyişmədikdə, fayl ölçüsünü çox azalda bilər. LZW sıxılma, 1990 -cı illərin kompüterləri tərəfindən deşifr edilə bilən bir dizaynla hazırlanmışdır, buna görə də ESP32 də onu real vaxtda deşifr etmək üçün kifayət qədər ədalətli işləmə gücünə malikdir.
Hərəkət JPEG
Və ya M-JPEG / MJPEG adlandırılan, məhdud işləmə gücünə malik video çəkmə aparatı üçün ümumi bir video sıxılma formatıdır. Bu əslində hələ də JPEG çərçivələrinin birləşməsidir. MPEG və ya MP4, Motion JPEG ilə müqayisə edin, hesablama baxımından sıx bir çərçivə proqnozlaşdırma texnikasına ehtiyac yoxdur, hər bir çərçivə müstəqildir. Beləliklə, kodlaşdırmaq və deşifr etmək üçün daha az resurs tələb olunur.
İstinad:
en.wikipedia.org/wiki/List_of_monochrome_a…
az.wikipedia.org/wiki/GIF
en.wikipedia.org/wiki/Motion_JPEG
Addım 3: Səs Formatı
PCM
Rəqəmsal audio üçün xam məlumat formatı. ESP32 DAC, 16 bitlik bit dərinliyindən istifadə edir, yəni hər 16 bitlik məlumat rəqəmsal nümunəli analoq siqnalını təmsil edir. Əksər video və mahnı səsi 44100 MHz tezliyində istifadə edir, yəni hər saniyə üçün 44100 nümunə götürülmüş analoq siqnal deməkdir. Beləliklə, 1 dəqiqəlik mono səsli PCM xam məlumatları ölçülü olacaq: 16 * 44100 * 60 = 42336000 bit = 5292000 bayt və ya 5 MB -dan çox. Stereo səsin həcmi ikiqat, yəni 10 MB -dan çox olacaq
MP3
MPEG Layer 3, 1990 -cı illərdən bəri mahnıların sıxılması üçün geniş istifadə olunan sıxılmış səs formatıdır. Fayl ölçüsünü xam PCM formatının onda birindən çox azalda bilər
İstinad:
az.wikipedia.org/wiki/Pulse-code_modulatio…
az.wikipedia.org/wiki/MP3
Addım 4: Dönüşümü Formatlayın
Bu layihə FFmpeg istifadə edərək videonu ESP32 oxunaqlı formata çevirir.
Zəhmət olmasa hələ FFmpegi rəsmi saytına yükləyin və quraşdırın:
PCM səsinə çevirin
ffmpeg -i input.mp4 -f u16be -acodec pcm_u16le -ar 44100 -ac 1 44100_u16le.pcm
MP3 audioya çevirin
ffmpeg -i input.mp4 -ar 44100 -ac 1 -q: a 9 44100.mp3
RGB565 -ə çevirin
ffmpeg -i input.mp4 -vf "fps = 9, miqyas = -1: 176: bayraqlar = lanczos, məhsul = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps. rgb
Animasiya-g.webp
ffmpeg -i input.mp4 -vf "fps = 15, miqyas = -1: 176: bayraqlar = lanczos, məhsul = 220: in_h: (in_w -220)/2: 0, bölünmüş [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif
Motion JPEG formatına çevirin
ffmpeg -i input.mp4 -vf "fps = 30, miqyas = -1: 176: bayraqlar = lanczos, məhsul = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg
Qeyd:
FFmpeg çevrilmiş Animasiya GIF, bəzi veb vasitələri ilə daha da optimallaşdırıla bilər, birini tapmaq üçün-g.webp" />
Addım 5: Avadanlıqların Hazırlanması
ESP32 inkişaf lövhəsi
Hər iki cüt nüvəli ESP32 inkişaf etdirici lövhəsi yaxşı olmalıdır, bu dəfə TTGO ESP32-Micro istifadə edirəm.
Rəngli Ekran
Arduino_GFX dəstəyinin yaxşı olması lazım olan hər hansı bir rəngli ekran, bu dəfə SD kart yuvası olan ILI9225 qırılma lövhəsindən istifadə edirəm.
Github -da Arduino_GFX tərəfindən dəstəklənən rəngli ekran siyahısını tapa bilərsiniz:
github.com/moononournation/Arduino_GFX
SD Kart
Hər hansı bir SD kart yaxşı olmalıdır, bu dəfə SD adapterli SanDisk "normal sürət" 8 GB micro SD istifadə edirəm.
Səs
Yalnız qulaqlıq istifadə etmək istəyirsinizsə, qulaqlıq pinlərini 26 pininə bağlayın və GND səsi dinləyə bilər. Və ya dinamiklə səs çalmaq üçün kiçik bir gücləndiricidən istifadə edə bilərsiniz.
Digərləri
Bəzi çörək lövhələri və taxta telləri
Addım 6: SD Arayüzü
ILI9225 LCD qırılma lövhəsində bir SD crd yuvası qırma pinləri də var. SPI avtobusu və ya 1 bitlik SD avtobus kimi istifadə edilə bilər. Əvvəlki təlimatlarda qeyd edildiyi kimi, 1 bitlik SD avtobusdan istifadə etməyi üstün tuturam, buna görə də bu layihə 1 bitlik SD avtobusuna əsaslanacaq.
Addım 7: Birlikdə qoyun
Yuxarıdakı şəkillər bu layihədə istifadə etdiyim test platformasını göstərir. Ağ çörək taxtası 3D çapdır, hər yerdə yükləyə və çap edə bilərsiniz:
Həqiqi əlaqə, əlinizdə olan avadanlıqdan asılıdır.
Budur əlaqə xülasəsi:
ESP32
Vcc -> LCD Vcc GND -> LCD GND GPIO 2 -> SD D0/MISO -> 1k rezistor -> Vcc GPIO 14 -> SD CLK GPIO 15 -> SD CMD/MOSI GPIO 18 -> LCD SCK GPIO 19 -> LCD MISO GPIO 22 -> LCD LED GPIO 23 -> LCD MOSI GPIO 27 -> LCD DC/RS GPIO 33 -> LCD RST
İstinad:
Addım 8: Proqram
Arduino IDE
Hələ etməsəniz Arduino IDE -ni yükləyin və quraşdırın:
www.arduino.cc/en/main/software
ESP32 dəstəyi
Hələ etməsəniz ESP32 dəstəyi əlavə etmək üçün Quraşdırma Təlimatlarına əməl edin:
github.com/espressif/arduino-esp32
Arduino_GFX Kitabxanası
Ən son Arduino_GFX kitabxanalarını yükləyin: ("Klonla və ya Yüklə" -> "ZIP Yüklə" düyməsini basın)
github.com/moononournation/Arduino_GFX
Arduino IDE kitabxanalarını idxal edin. (Arduino IDE "Sketch" Menyu -> "Kitabxana Daxil et" -> "ZIP Kitabxana Əlavə et" -> endirilmiş ZIP faylını seçin)
ESP8266 Səs
Ən son ESP8266Audio kitabxanalarını yükləyin: ("Klonla və ya Yüklə" -> "ZIP Yüklə" düyməsini basın)
github.com/earlephilhower/ESP8266Audio
Arduino IDE kitabxanalarını idxal edin. (Arduino IDE "Sketch" Menyu -> "Kitabxana Daxil et" -> "ZIP Kitabxana Əlavə et" -> endirilmiş ZIP faylını seçin)
RGB565_video nümunə kodu
Ən son RGB565_video nümunə kodunu yükləyin: ("Klonla və ya Yüklə" -> "ZIP Yüklə" düyməsini basın)
github.com/moononournation/RGB565_video
SD Kart Məlumatları
Dönüştürülmüş faylları SD karta kopyalayın və LCD kart yuvasına daxil edin
Tərtib edin və Yükləyin
- Arduino IDE -də SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino açın
- ILI9225 istifadə etmirsinizsə, sinif adını düzəltmək üçün yeni sinif kodunu (35 -ci sətir ətrafında) dəyişdirin
- Arduino IDE "Yüklə" düyməsini basın
- Proqramı yükləyə bilmədinizsə, ESP32 GPIO 2 ilə SD D0/MISO arasındakı əlaqəni kəsməyə çalışın.
- İstiqamətin düzgün olmadığını görürsünüzsə, yeni sinif kodundakı "fırlanma" dəyərini (0-3) dəyişdirin
- Proqram yaxşı işləyirsə, SDMMC_* ilə digər nümunə başlanğıcını sınaya bilərsiniz.
- SD kart yuvanız yoxdursa və ya FFmpeg yüklü deyilsə, yenə də SPIFFS_* nümunəsini sınaya bilərsiniz.
Addım 9: Qiymətləndirmə
Fərqli video (220x176) və audio (44100 MHz) formatı üçün performans xülasəsi:
Format | Saniyədə kadr (saniyədə) |
MJPEG + PCM | 30 |
15 | |
RGB565 + PCM | 9 |
MJPEG + MP3 | 24 |
Qeyd:
- MJPEG + PCM daha yüksək kadr sürətinə çata bilər, ancaq 30 kadrdan çox kiçik bir ekranda lazımsız oynatma
- RGB565, deşifrləmə prosesi tələb etmir, lakin məlumat ölçüsü çox böyükdür və SD, 4-bit SD avtobus və daha sürətli SD kartdan məlumat yüklənərkən çox vaxt sərf edir və onu bir az da yaxşılaşdıra bilər (vəhşi tahmin təxminən 12 fps-ə çata bilər)
- MP3 deşifr etmə prosesi hələ optimallaşdırılmamışdır, indi MP3 deşifr etmək üçün 0 nüvəsini və video oynatmaq üçün 1 nüvəsini ayırır
Addım 10: Xoşbəxt Oyun
İndi ESP32 ilə video və audio oynaya bilərsiniz, bir çox imkanları açdı!
Düşünürəm ki, daha sonra kiçik bir vintage televizor hazırlayacağam …
Tövsiyə:
Wiimote ilə Idevice -də Nintendo Oyunlarını Pulsuz Oynayın !: 6 Addım
Pulsuz Wiimote ilə Idevice -də Nintendo Oyunlarını Oyna !: Heç vaxt Super Nintendo Oyunu almaq üçün app mağazasına getmisən, amma oynamaq üçün tapa bilmirsən. Yaxşı indi bu nintendo oyunlarını cydia'dan snes emulatoru ilə oynaya bilərsiniz. Bu emulator, fikirlərinizlə belə Nintendo oyunları oynamağa imkan verir
ESP32 ilə PWM - Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: 6 addım
ESP32 ilə PWM | Arduino IDE ilə ESP 32 -də PWM ilə LED Karartma: Bu təlimatlarda Arduino IDE istifadə edərək ESP32 ilə PWM siqnallarının necə yaradılacağını görəcəyik. PWM əsasən hər hansı bir MCU -dan analoq çıxışı yaratmaq üçün istifadə olunur və bu analog çıxış 0V ilə 3.3V arasında ola bilər (esp32 vəziyyətində) & dan
Arduino Uno və OLED 0.96 SSD1306 Ekranı ilə PONG Oyunu Oynayın: 6 addım
Arduino Uno və OLED 0.96 SSD1306 Ekranı ilə PONG Oyunu Oynayın: Salam uşaqlar bu gün Arduino ilə bir PONG Oyunu hazırlayacağıq. Oyunu göstərmək üçün adafruit -in 0.96 oled displeyindən istifadə edəcəyik. oyuna nəzarət etmək üçün düymələri basın
Skittlespider A.T.S Aka "The Contraption" ilə NES -dən Xbox -a qədər hər şeyi oynayın: 11 addım (şəkillərlə)
Skittlespider A.T.S Aka "The Contaption" ilə NES -dən Xbox -a qədər hər şeyi oynayın: Bu Təlimat, "Contraption" olaraq da bilinən Skittlespider A.T.S (Hamısı Birlikdə Sistem) üçündür. Bu layihə gözlədiyimdən daha çətin oldu. Bir neçə cəhətdən daha asan idi, buna görə ümumi və ya asan bir layihə olduğunu deyə bilmərəm
Wiimote ilə WoW oynayın: 4 addım
WioMote ilə WoW oynayın: Bu Təlimat kitabında World of Warcraft -ı Wiimote ilə necə tez və asanlıqla necə oynayacağınızı öyrənəcəksiniz. Bu siçan üçün tam əvəz deyil & hələ də klaviatura, ancaq ümumi zımpara yolunu daha asan və daha əyləncəli edir