Სარჩევი:

ვიდეოს დაკვრა ESP32– ით: 10 ნაბიჯი (სურათებით)
ვიდეოს დაკვრა ESP32– ით: 10 ნაბიჯი (სურათებით)

ვიდეო: ვიდეოს დაკვრა ESP32– ით: 10 ნაბიჯი (სურათებით)

ვიდეო: ვიდეოს დაკვრა ESP32– ით: 10 ნაბიჯი (სურათებით)
ვიდეო: ESP8266 Diesel Injector Purging Station - PWM NodeMCU pump flow Control (Subtittled) 2024, ივლისი
Anonim
ვიდეოს დაკვრა ESP32– ით
ვიდეოს დაკვრა ESP32– ით

ეს ინსტრუქცია აჩვენებს რაღაცას ვიდეო და აუდიოს დაკვრის შესახებ ESP32– ით.

ნაბიჯი 1: ESP32 მახასიათებლები და შეზღუდვები

მახასიათებლები

  • 4 SPI ავტობუსი, 2 SPI ავტობუსი ხელმისაწვდომია მომხმარებლისთვის, ისინი არიან SPI2 და SPI3 ან ეწოდება HSPI და VSPI. ორივე SPI ავტობუსს შეუძლია გაუშვას მაქსიმუმ 80 MHz. თეორიულად მას შეუძლია 320x240 16 ბიტიანი ფერადი პიქსელი დააყენოს SPI LCD– ზე 60 კადრი / წმ სიჩქარით, მაგრამ მას ჯერ არ აქვს დათვლილი ვიდეო მონაცემების წაკითხვისა და დეკოდირებისათვის საჭირო დრო.
  • 1-ბიტიან / 4-ბიტიან SD ავტობუსს შეუძლია SD ბარათის დაკავშირება მშობლიურ პროტოკოლში
  • I2S შიდა DAC აუდიო გამომავალი
  • 100 კბ -ზე მეტი ოპერატიული მეხსიერება ხელმისაწვდომია ვიდეო და აუდიო ბუფერისთვის
  • საკმაოდ სამართლიანი დამუშავების ძალა JPEG- ის (დაკვრა Motion JPEG) და LZW მონაცემების შეკუმშვისათვის (ანიმაციური GIF- ის დაკვრა)
  • ორმაგ ბირთვულ ვერსიას შეუძლია SD ბარათის მონაცემების წაკითხვა, დეკოდირება და SPI LCD– ზე გადატანა პარალელურ მრავალ ამოცანად და გაზარდოს დაკვრის შესრულება

შეზღუდვები

  • არ არის საკმარისი შიდა ოპერატიული მეხსიერება, რომ ჰქონდეს ორმაგი ჩარჩო ბუფერი 320x240 16 ბიტიან ფერში, მან შეზღუდა მრავალფუნქციური სამუშაოების დიზაინი. მას შეუძლია ოდნავ გადალახოს გარე 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– ს არ სჭირდება ინტერფეისის პროგნოზირების გამოთვლების ინტენსიური ტექნიკა, ყველა ჩარჩო დამოუკიდებელია. ასე რომ, ეს მოითხოვს ნაკლებ რესურსს კოდირებისა და დეკოდირებისთვის.

მითითება.:

en.wikipedia.org/wiki/List_of_monochrome_a…

en.wikipedia.org/wiki/GIF

en.wikipedia.org/wiki/Motion_JPEG

ნაბიჯი 3: აუდიო ფორმატი

PCM

ციფრული აუდიოსთვის მონაცემთა უხეში ფორმატი. ESP32 DAC იყენებს 16 ბიტიან სიღრმეს, რაც იმას ნიშნავს, რომ თითოეული 16 ბიტიანი მონაცემი წარმოადგენს ციფრული სინჯის ანალოგურ სიგნალს. ვიდეო და სიმღერების უმეტესობა ჩვეულებრივ იყენებს ნიმუშის სიხშირეს 44100 MHz, რაც ნიშნავს 44100 სინჯის ანალოგურ სიგნალს ყოველ წამს. ასე რომ, 1 წუთიანი მონო აუდიო PCM ნედლეულის მონაცემები იქნება ზომა: 16 * 44100 * 60 = 42336000 ბიტი = 5292000 ბაიტი ან 5 მბ -ზე მეტი. სტერეო აუდიოს ზომა იქნება ორმაგი, ანუ 10 მბ -ზე მეტი

MP3

MPEG Layer 3 არის შეკუმშული აუდიო ფორმატი, რომელიც ფართოდ გამოიყენება 1990 -იანი წლებიდან. მას შეუძლია მკვეთრად შეამციროს ფაილის ზომა ნედლი PCM ფორმატის მეათედზე

მითითება.:

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

en.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: flags = lanczos, crop = 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: flags = lanczos, crop = 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: flags = lanczos, crop = 220: in_h: (in_w -220)/2: 0" -q: v 9 220_30fps.mjpeg

Შენიშვნა:

FFmpeg მოაქცია ანიმაციური-g.webp" />

ნაბიჯი 5: აპარატურის მომზადება

აპარატურის მომზადება
აპარატურის მომზადება

ESP32 Dev დაფა

ნებისმიერი ორმაგი ბირთვიანი ESP32 dev დაფა უნდა იყოს კარგი, ამ დროს მე ვიყენებ TTGO ESP32-Micro- ს.

ფერადი ჩვენება

ნებისმიერი ფერის ჩვენება, რომელსაც Arduino_GFX მხარს უჭერს, კარგი უნდა იყოს, ამჯერად მე ვიყენებ ILI9225 გარღვევის დაფას SD ბარათის სლოტით.

თქვენ შეგიძლიათ იპოვოთ Arduino_GFX მხარდაჭერილი ფერის ჩვენების სია Github– ში:

github.com/moononournation/Arduino_GFX

SD ბარათი

ნებისმიერი SD ბარათი უნდა იყოს კარგი, ამ დროს მე ვიყენებ SanDisk "ნორმალური სიჩქარით" 8 GB მიკრო SD SD ადაპტერით.

აუდიო

თუ გსურთ გამოიყენოთ მხოლოდ ყურსასმენი, უბრალოდ დაუკავშირეთ ყურსასმენის ქინძისთავები პინ 26 – ს და GND– ს შეუძლია აუდიოს მოსმენა. ან შეგიძლიათ გამოიყენოთ პატარა გამაძლიერებელი აუდიო სპიკერის დასაკრავად.

სხვა

ზოგიერთი breadboard დაფები და breadboard მავთულები

ნაბიჯი 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/en/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 MHz) ფორმატის შესრულების შეჯამება:

ფორმატი კადრი წამში (კადრი / წმ)
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– ით, მან გახსნა მრავალი შესაძლებლობა!

ვფიქრობ, მოგვიანებით გავაკეთებ პატარა რთველის ტელევიზიას …

გირჩევთ: