2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-23 12:53
تشغيل الفيديو مع ESP32
تعرض Instructables شيئًا ما حول تشغيل الفيديو والصوت باستخدام ESP32.
الخطوة 1: ميزات وقيود ESP32
سمات
4 ناقل SPI ، ناقل 2 SPI متاح لمساحة المستخدم ، هما SPI2 و SPI3 أو يطلق عليهما HSPI و VSPI. يمكن لكلا ناقلتي SPI العمل بسرعة 80 ميجاهرتز على الأكثر. من الناحية النظرية ، يمكنها دفع 320x240 بكسل ملون 16 بت إلى SPI LCD بسرعة 60 إطارًا في الثانية ، لكنها لم تحسب بعد الوقت الزائد المطلوب لقراءة بيانات الفيديو وفك تشفيرها.
يمكن لناقل SD 1 بت / 4 بت توصيل بطاقة SD بالبروتوكول الأصلي
خرج الصوت الداخلي I2S DAC
أكثر من 100 كيلوبايت من ذاكرة الوصول العشوائي المتاحة لمخزن الفيديو والصوت
قوة معالجة عادلة كافية لفك تشفير JPEG (تشغيل Motion JPEG) وضغط بيانات LZW (تشغيل-g.webp" />
يمكن للإصدار ثنائي النواة تقسيم البيانات المقروءة من بطاقة SD ، وفك التشفير والدفع إلى SPI LCD إلى مهام متعددة متوازية وتعزيز أداء التشغيل
محددات
لا توجد ذاكرة وصول عشوائي داخلية كافية للحصول على مخزن مؤقت للإطار المزدوج لـ 320 × 240 بلون 16 بت ، فقد حد من تصميم المهام المتعددة. يمكنه التغلب قليلاً مع PSRAM الخارجي على الرغم من أنه أبطأ من ذاكرة الوصول العشوائي الداخلية
لا توجد قوة معالجة كافية لفك تشفير فيديو mp4
لا تحتوي كل إصدارات ESP32 على نواة ثنائية ، فإن العينة متعددة المهام تستفيد فقط من الإصدار ثنائي النواة
المرجع:
الخطوة 2: تنسيق الفيديو
RGB565
أو يسمى لون 16 بت هو تنسيق بيانات خام يستخدم بشكل شائع في الاتصال بين MCU والشاشة الملونة. يتم تمثيل كل بكسل لوني بقيمة 16 بت ، ويكون أول 5 بت هو قيمة حمراء ، ويتبع 6 بت قيمة خضراء ثم قيمة زرقاء 5 بت. يمكن لقيمة 16 بت أن تجعل 65536 تباينًا في اللون لذلك تسمى أيضًا ألوان 64 كيلو. لذلك ، 1 دقيقة 320x240 @ 30 fps سيتم تغيير حجم الفيديو: 16 * 320 * 240 * 30 * 60 = 2211840000 بت = 276480000 بايت أو أكثر من 260 ميجا بايت
هذا تنسيق ملف شائع على الويب منذ التسعينيات. يحد من تباين اللون لكل شاشة حتى 256 لونًا ولا يكرر تخزين البكسل بنفس لون الإطار السابق. لذلك يمكن أن يقلل حجم الملف كثيرًا ، خاصةً عندما لا يغير كل إطار للرسوم المتحركة الكثير من التفاصيل. تم تصميم ضغط LZW بحيث يمكن فك تشفيره بواسطة كمبيوتر تسعينيات القرن الماضي ، لذا فإن ESP32 يتمتع أيضًا بقدرة معالجة كافية لفك تشفيره في الوقت الفعلي.
Motion 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 ميجاهرتز ، وهذا يعني 44100 إشارة تناظرية مأخوذة من العينات لكل ثانية. لذلك ، سيتم تحديد حجم البيانات الأولية PCM الصوتية أحادية الدقيقة: 16 * 44100 * 60 = 42336000 بت = 5292000 بايت أو أكثر من 5 ميجابايت. سيتضاعف حجم صوت الاستريو ، أي أكثر من 10 ميغا بايت
MP3
MPEG Layer 3 هو تنسيق صوتي مضغوط يستخدم على نطاق واسع لضغط الأغاني منذ التسعينيات. يمكنه تقليل حجم الملف بشكل كبير إلى أقل من عُشر تنسيق PCM الخام
المرجع:
en.wikipedia.org/wiki/Pulse-code_modulatio…
en.wikipedia.org/wiki/MP3
الخطوة 4: تنسيق التحويل
يستخدم هذا المشروع FFmpeg لتحويل الفيديو إلى تنسيق ESP32 قابل للقراءة.
يرجى تنزيل FFmpeg وتثبيته على موقعهم الرسمي إن لم يكن بعد:
يجب أن تكون أي لوحة تطوير ثنائية النواة ESP32 على ما يرام ، هذه المرة أستخدم TTGO ESP32-Micro.
شاشة ملونة
يجب أن تكون أي شاشة ملونة تدعم Arduino_GFX على ما يرام ، هذه المرة أستخدم لوحة اندلاع ILI9225 مع فتحة بطاقة SD.
يمكنك العثور على قائمة عرض الألوان المدعومة من Arduino_GFX في Github:
github.com/moononournation/Arduino_GFX
بطاقة الذاكرة
يجب أن تكون أي بطاقة SD على ما يرام ، هذه المرة أنا أستخدم SanDisk "السرعة العادية" 8 جيجا بايت micro SD مع محول SD.
صوتي
إذا كنت تريد استخدام سماعة الرأس فقط ، فما عليك سوى توصيل دبابيس سماعة الرأس بالدبوس 26 ويمكن لـ GND الاستماع إلى الصوت. أو يمكنك استخدام مضخم صوت صغير لتشغيل الصوت مع مكبر الصوت.
آحرون
بعض الألواح وأسلاك اللوح
الخطوة 6: واجهة SD
واجهة SDواجهة SD
تضمنت لوحة الفصل ILI9225 LCD أيضًا دبابيس فتحة SD crd. يمكن استخدامه كناقل SPI أو ناقل SD 1 بت. كما هو مذكور في التعليمات السابقة الخاصة بي ، أفضل استخدام ناقل SD 1 بت ، لذلك سيعتمد هذا المشروع على ناقل SD 1 بت.
الخطوة 7: ضعها معًا
ضعها معًاضعها معًاضعها معًا
تُظهر الصور أعلاه منصة الاختبار التي أستخدمها في هذا المشروع. لوحة التجارب البيضاء مطبوعة ثلاثية الأبعاد ، يمكنك تنزيلها وطباعتها من موقع thingiverse:
اتبع تعليمات التثبيت لإضافة دعم ESP32 إذا لم تقم بذلك بعد:
github.com/espressif/arduino-esp32
مكتبة Arduino_GFX
تنزيل أحدث مكتبات Arduino_GFX: (اضغط على "Clone or Download" -> "Download ZIP")
github.com/moononournation/Arduino_GFX
مكتبات الاستيراد في Arduino IDE. (قائمة Arduino IDE "Sketch" -> "Include Library" -> "Add. ZIP Library" -> حدد ملف ZIP الذي تم تنزيله)
صوت
تنزيل أحدث مكتبات ESP8266Audio: (اضغط على "Clone or Download" -> "Download ZIP")
github.com/earlephilhower/ESP8266
مكتبات الاستيراد في Arduino IDE. (قائمة Arduino IDE "Sketch" -> "Include Library" -> "Add. ZIP Library" -> حدد ملف ZIP الذي تم تنزيله)
نموذج رمز RGB565_video
قم بتنزيل أحدث نموذج كود RGB565_video: (اضغط على "Clone or Download" -> "Download ZIP")
github.com/moononournation/RGB565_video
بيانات بطاقة SD
انسخ الملفات المحولة إلى بطاقة SD وأدخلها في فتحة بطاقة LCD
ترجمة وتحميل
افتح SDMMC_MJPEG_video_PCM_audio_dualSPI_multitask.ino في Arduino IDE
إذا كنت لا تستخدم ILI9225 ، فقم بتغيير رمز الفئة الجديد (حول السطر 35) لتصحيح اسم الفئة
اضغط على زر Arduino IDE "تحميل"
إذا فشلت في تحميل البرنامج ، فحاول فصل الاتصال بين ESP32 GPIO 2 و SD D0 / MISO
إذا وجدت أن الاتجاه غير صحيح ، فقم بتغيير قيمة "الدوران" (0-3) في كود الفصل الجديد
إذا كان البرنامج يعمل بشكل جيد ، يمكنك تجربة نموذج آخر يبدأ بـ SDMMC_ *
إذا لم يكن لديك فتحة بطاقة SD أو لم يكن لديك FFmpeg مثبتًا ، فلا يزال بإمكانك تجربة SPIFFS_ * مثال
الخطوة 9: المعيار
المعيار
فيما يلي ملخص الأداء لمقاطع الفيديو المختلفة (220 × 176) وتنسيق الصوت (44100 ميجاهرتز):
صيغة
إطار في الثانية (fps)
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 ، فقد فتح العديد من الاحتمالات!
الشروع في استخدام ESP32 CAM | دفق الفيديو باستخدام ESP CAM عبر Wifi | مشروع كاميرا الأمان ESP32: سنتعلم اليوم كيفية استخدام لوحة ESP32 CAM الجديدة هذه وكيف يمكننا ترميزها واستخدامها ككاميرا أمنية والحصول على دفق فيديو عبر wifi
الحديث اردوينو | تشغيل ملف MP3 باستخدام Arduino بدون أي وحدة | تشغيل ملف MP3 من Arduino باستخدام PCM: في هذه التعليمات ، سنتعلم كيفية تشغيل ملف mp3 باستخدام اردوينو دون استخدام أي وحدة صوتية ، وهنا سنستخدم مكتبة PCM لـ Arduino التي تقوم بتشغيل 16 بت PCM بتردد 8 كيلو هرتز ، لذلك دعونا نفعل ذلك
كيفية تشغيل / إيقاف تشغيل Wifi باستخدام موجه الأوامر !!: سيوضح لك هذا Instructable كيفية تشغيل wifi على جهاز الكمبيوتر الخاص بك أو إيقاف تشغيله باستخدام موجه الأوامر ، يرجى الاشتراك في قناتي شكرًا
تشغيل / إيقاف تشغيل تلقائي عن بُعد باستخدام مقبس MIC في كاميرا الفيديو / مرحل الحالة الصلبة منخفض الجهد: نظرة عامة: استخدمنا مقبس MIC الخاص بكاميرا الفيديو لاكتشاف وقت تشغيل كاميرا الفيديو. قمنا ببناء مرحل الحالة الصلبة منخفض الجهد لاكتشاف مقبس MIC وتشغيل وإيقاف تشغيل جهاز بعيد في نفس الوقت مثل كاميرا الفيديو. الحالة الصلبة
كيفية تشغيل الفيديو المركب وبيانات الشبكة عبر كابل إيثرنت: كنت بحاجة إلى تشغيل الفيديو والصوت في جزء آخر من منزلي. كانت المشكلة ، لم يكن لدي الكثير من كبلات الصوت والصورة ، ولا الوقت والمال للقيام بتثبيت جيد. ومع ذلك ، كان لدي الكثير من كبلات Cat 5 Ethernet. هذا هو ما خطرت لي