Բովանդակություն:

Տեսանյութ նվագարկել ESP32- ով ՝ 10 քայլ (նկարներով)
Տեսանյութ նվագարկել ESP32- ով ՝ 10 քայլ (նկարներով)

Video: Տեսանյութ նվագարկել ESP32- ով ՝ 10 քայլ (նկարներով)

Video: Տեսանյութ նվագարկել ESP32- ով ՝ 10 քայլ (նկարներով)
Video: ESP32 Tutorial 14 - Playing Custom Music Note Using SunFounder ESP32 IoT Learnig kit 2024, Նոյեմբեր
Anonim
Տեսանյութը նվագարկեք ESP32- ով
Տեսանյութը նվագարկեք ESP32- ով

Այս Instructables- ը ինչ -որ բան ցույց է տալիս 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 ԿԲ RAM հասանելի է վիդեո և աուդիո բուֆերի համար
  • JPEG (խաղալ Motion JPEG) և LZW տվյալների սեղմում (խաղալ Animated GIF) վերծանման բավականաչափ մշակման հզորություն
  • Երկմիջուկ տարբերակը կարող է SD քարտից կարդալ տվյալները բաժանել, վերծանել և մղել դեպի SPI LCD զուգահեռ բազմակողմանի առաջադրանքների և բարձրացնել նվագարկման կատարումը

Սահմանափակումներ

  • ոչ բավարար ներքին RAM ՝ 1620 բիթանոց 320x240 համար կրկնակի շրջանակային բուֆեր ունենալու համար, այն սահմանափակեց բազմակողմանի դիզայնը: Այն կարող է մի փոքր հաղթահարել արտաքին PSRAM- ով, չնայած այն ավելի դանդաղ է, քան ներքին RAM- ը
  • ոչ բավարար մշակման հզորություն ՝ mp4 տեսանյութը վերծանելու համար
  • ESP32- ի ոչ բոլոր տարբերակներն ունեն 2 միջուկ, բազմաֆունկցիոնալ նմուշը օգուտ է բերում միայն երկմիջուկ տարբերակին

Հղում ՝

Քայլ 2: Տեսանյութի ձևաչափ

RGB565

Կամ 16-բիթանոց գույնը տվյալների հում ձևաչափ է, որը սովորաբար օգտագործվում է MCU- ի և գունավոր ցուցադրման միջև հաղորդակցության համար: Յուրաքանչյուր գունային պիքսել ներկայացված է 16-բիթանոց արժեքով, առաջին 5-բիթը կարմիր է, 6-բիթին հաջորդում է կանաչ արժեքը, այնուհետև 5-բիթ կապույտ արժեքը: 16-բիթանոց արժեքը կարող է կատարել 65536 գույնի տատանում, այնպես որ այն կոչվում է նաև 64K գույն: Այսպիսով, 1 րոպեանոց 320x240@30 fps տեսանյութի չափը կլինի ՝ 16 * 320 * 240 * 30 * 60 = 2211840000 բիթ = 276480000 բայթ կամ ավելի քան 260 ՄԲ

Անիմացիոն GIF

Սա 1990 -ականներից համացանցում տարածված ֆայլի ձևաչափ է: Այն սահմանափակում է գույնի տատանումները յուրաքանչյուր էկրանի համար մինչև 256 գույն և չի կրկնում պիքսելների պահպանումը նույն գույնի, ինչ նախորդ շրջանակը: Այսպիսով, դա կարող է շատ նվազեցնել ֆայլի չափը, հատկապես, երբ յուրաքանչյուր անիմացիոն շրջանակ չափազանց շատ մանրամասներ չի փոխում: LZW սեղմումը նախագծված է 1990 -ականների համակարգչով ունակ վերծանման համար, այնպես որ ESP32- ն ունի նաև բավականաչափ մշակման հզորություն `այն իրական ժամանակում վերծանելու համար:

Շարժման JPEG

Կամ կոչվում է M-JPEG / MJPEG ՝ տեսագրման սեղմման սովորական ձևաչափ ՝ տեսագրման սարքավորումների համար ՝ մշակման սահմանափակ հզորությամբ: Իրականում դա պարզապես դեռ JPEG շրջանակների միացում է: Համեմատեք MPEG- ի կամ MP4- ի հետ, Motion JPEG- ը կարիք չունի միջշրջանակային կանխատեսման հաշվարկային ինտենսիվ տեխնիկայի, յուրաքանչյուր շրջանակ անկախ է: Այսպիսով, այն պահանջում է ավելի քիչ ռեսուրս ՝ կոդավորելու և վերծանելու համար:

Հղում ՝

hy.wikipedia.org/wiki/List_of_monochrome_a…

hy.wikipedia.org/wiki/GIF

hy.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 ձևաչափի մեկ տասներորդը

Հղում ՝

hy.wikipedia.org/wiki/Pulse-code_modulatio…

hy.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, scale = -1: 176: դրոշներ = lanczos, բերք = 220: in_h: (in_w -220)/2: 0" -c: v rawvideo -pix_fmt rgb565be 220_9fps rgb

Փոխարկեք անիմացիոն GIF- ին

ffmpeg -i input.mp4 -vf "fps = 15, scale = -1: 176: դրոշներ = lanczos, բերք = 220: in_h: (in_w -220)/2: 0, պառակտում [s0] [s1]; [s0] palettegen [p]; [s1] [p] paletteuse "-loop -1 220_15fps.gif

Փոխարկեք շարժման JPEG- ին

ffmpeg -i input.mp4 -vf "fps = 30, scale = -1: 176: դրոշներ = lanczos, բերք = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg

Նշում:

FFmpeg- ի փոխակերպված անիմացիոն GIF- ը կարող է հետագայում օպտիմալացվել որոշ վեբ գործիքների միջոցով, մեկը գտնելու համար կարող եք որոնել GIF- ի օպտիմալացուցիչ:

Քայլ 5: Սարքավորման պատրաստում

Սարքավորման պատրաստում
Սարքավորման պատրաստում

ESP32 Dev տախտակ

Dualանկացած երկմիջուկ ESP32 dev տախտակ պետք է լավ լինի, այս անգամ ես օգտագործում եմ TTGO ESP32-Micro:

Գունավոր ցուցադրում

Arduino_GFX- ի աջակցած ցանկացած գունավոր էկրան պետք է լավ լինի, այս անգամ ես օգտագործում եմ ILI9225 կոտրիչ տախտակ ՝ SD քարտի բնիկով:

Arduino_GFX- ի աջակցությամբ գունավոր ցուցադրման ցուցակը կարող եք գտնել Github- ում ՝

github.com/moononournation/Arduino_GFX

SD քարտ

SDանկացած SD քարտ պետք է լավ լինի, այս անգամ ես օգտագործում եմ SanDisk «նորմալ արագությամբ» 8 ԳԲ միկրո SD ՝ SD ադապտերով:

Աուդիո

Եթե ցանկանում եք օգտագործել միայն ականջակալներ, պարզապես միացրեք ականջակալների կապում 26 -րդ կապին, իսկ GND- ն կարող է լսել ձայնը: Կամ դուք կարող եք օգտագործել փոքր ուժեղացուցիչ ՝ բարձրախոսով աուդիո նվագարկելու համար:

Մյուսները

Որոշ տախտակներ և տախտակի լարեր

Քայլ 6: SD ինտերֆեյս

SD ինտերֆեյս
SD ինտերֆեյս
SD ինտերֆեյս
SD ինտերֆեյս

ILI9225 LCD ճեղքման տախտակը ներառում էր նաև SD crd բնիկի ճեղքման կապում: Այն կարող է օգտագործվել որպես SPI ավտոբուս կամ 1-բիթանոց SD ավտոբուս: Ինչպես նշվեց իմ նախորդ հրահանգներում, ես նախընտրում եմ օգտագործել 1-բիթանոց SD ավտոբուս, այնպես որ այս նախագիծը հիմնված կլինի 1-բիթանոց SD ավտոբուսի վրա:

Քայլ 7: Դրեք այն միասին

Դրեք այն միասին
Դրեք այն միասին
Դրեք այն միասին
Դրեք այն միասին
Դրեք այն միասին
Դրեք այն միասին

Վերոնշյալ նկարները ցույց են տալիս փորձարկման հարթակը, որը ես օգտագործում եմ այս նախագծում: Սպիտակ տախտակը 3D տպագրված է, կարող եք ներբեռնել և տպել այն thingiverse կայքում ՝

Իրական կապը կախված է նրանից, թե որ սարքավորումն եք ձեռքին:

Ահա կապի ամփոփագիրը.

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 -> LCD MISO GPIO 22 -> LCD LED GPIO 23 -> LCD MOSI GPIO 27 -> LCD DC/RS GPIO 33 -> LCD RST

Հղում ՝

Քայլ 8: րագիր

Ծրագիրը
Ծրագիրը

Arduino IDE

Ներբեռնեք և տեղադրեք Arduino IDE- ն, եթե դեռ դա չեք անում.

www.arduino.cc/hy/main/software

ESP32 աջակցություն

Հետևեք տեղադրման հրահանգներին ՝ ESP32 աջակցություն ավելացնելու համար, եթե դեռ դա չեք անում.

github.com/espressif/arduino-esp32

Arduino_GFX գրադարան

Ներբեռնեք Arduino_GFX- ի վերջին գրադարանները. (Սեղմեք «Կլոնավորել կամ ներբեռնել» -> «Ներբեռնել ZIP»)

github.com/moononournation/Arduino_GFX

Ներմուծեք գրադարաններ Arduino IDE- ում: (Arduino IDE «Էսքիզ» ընտրացանկ -> "Ներառել գրադարանը" -> "Ավելացնել. ZIP գրադարան" -> ընտրել ներբեռնված ZIP ֆայլ)

ESP8266 Աուդիո

Ներբեռնեք վերջին ESP8266 Աուդիո գրադարանները. (Սեղմեք "Կլոնավորել կամ ներբեռնել" -> "Ներբեռնել ZIP")

github.com/earlephilhower/ESP8266Audio

Ներմուծեք գրադարաններ Arduino IDE- ում: (Arduino IDE «Էսքիզ» ընտրացանկ -> "Ներառել գրադարանը" -> "Ավելացնել. ZIP գրադարան" -> ընտրել ներբեռնված ZIP ֆայլ)

RGB565_video Նմուշի կոդ

Ներբեռնեք RGB565_video- ի վերջին նմուշի կոդը ՝ (սեղմեք «Կլոնավորել կամ ներբեռնել» -> «Ներբեռնել ZIP»)

github.com/moononournation/RGB565_video

SD քարտի տվյալներ

Փոխարկված ֆայլերը պատճենեք SD քարտի մեջ և տեղադրեք LCD քարտի բնիկի մեջ

Կազմել և վերբեռնել

  1. Բացեք SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino Arduino IDE- ում
  2. Եթե դուք չեք օգտագործում ILI9225, փոխեք դասի նոր ծածկագիրը (տող 35 -ի մոտ) `դասի անունը շտկելու համար
  3. Կտտացրեք Arduino IDE «Վերբեռնում» կոճակը
  4. Եթե չհաջողվեց վերբեռնել ծրագիրը, փորձեք անջատել կապը ESP32 GPIO 2 -ի և SD D0/MISO- ի միջև:
  5. Եթե գտնում եք, որ կողմնորոշումը ճիշտ չէ, նոր դասի կոդի մեջ փոխեք «պտույտի» արժեքը (0-3)
  6. Եթե ծրագիրը լավ է աշխատում, կարող եք փորձել այլ օրինակ սկսել SDMMC_* - ով
  7. Եթե չունեք 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 վերծանման գործընթացը դեռ օպտիմիզացված չէ, այն այժմ հատկացված է առանցքային 0 -ին MP3 վերծանման համար և 1 -ին ՝ տեսահոլովակ նվագարկելու համար

Քայլ 10: Ուրախ խաղ:

Երջանիկ խաղ
Երջանիկ խաղ

Այժմ կարող եք տեսանյութ և աուդիո նվագարկել ձեր ESP32- ով, այն բացեց բազմաթիվ հնարավորություններ:

Կարծում եմ, որ մի փոքր խաղողի բերքահավաք հեռուստատեսություն կանեմ ավելի ուշ…

Խորհուրդ ենք տալիս: