ESP8266 واجهة تلفزيون البث التناظرية
ربط هوائي يصل إلى GPIO3/RX ، قم بضبط التلفزيون التناظري إلى القناة 3. قم بتشغيل ESP ON!
يستخدم هذا ناقل I2S بنفس الطريقة التي يقوم بها مشروع ESP8266WS2812I2S. الفرق هل يرفرف باود الإخراج إلى 80 ميغاهيرتز. قمنا بإعداد المخازن المؤقتة DMA ودعنا وحدة المعالجة المركزية تملأها أثناء مرورها عبر سطر واحد في وقت واحد. تملأ مقاطعة DMA في المخازن المؤقتة كلمة واحدة في وقت واحد. تنقل حافلة I2S تلك المخازن المؤقتة إلى 80 ميغاهيرتز!
قد تقول "لكن Nyquist يقول إنه لا يمكنك نقل أو تلقي الترددات بأكثر من 1/2 معدل العينة (40 ميغاهيرتز في هذه الحالة). إلى حد صحيح. اعتقد بعض الناس أنه قد يكون نغمات ، ولكن ما يحدث في الواقع ، يحدث شيء غريب. هذا ليس مثاليًا.
نقوم بتخزين نمط قليلا في صفيف "precodustued_table". يحتوي هذا على BitStreams لإشارات مختلفة ، مثل مستوى "Sync" أو مستوى "ColorBust" ، أو أي من الألوان المرئية. This table's length of 1408 bits per color was chosen so that when sent out one bit at a time at 80 MHz, it works out to an even multiplier of the NTCS chroma frequency of 315.0/88.0 MHz, or 3.579545455 MHz. يمكنك حساب هذا عن طريق أخذ 1408/80MHz = 17.6us * 3.579545 MHz = 63 دورة ، بالضبط. مريح ، يعمل أيضًا على مضاعف حتى 61.25 ميجاهرتز ، مركز LUMA للقناة 3. 17.6us * 61.25 ميغاهيرتز = 1078 دورات ، بالضبط! عندما تقوم بتعديل الترددات التعسفية ، تخرج الدورات في بعض الأحيان غير متساوية.
من أجل توليد LUMA (الجزء بالأبيض والأسود) نقوم بتعديل 61.25 ميغاهيرتز. إذا قمنا بإنشاء إشارة قوية ، يُنظر إليها على أنها "مظلمة" للغاية ، وإشارة ضعيفة "مشرقة" للغاية. هذا يعني أنه عندما نريد إرسال نبض المزامنة ، فإننا نقوم بتعديله بصوت عالٍ قدر الإمكان ... عندما نريد تعديل اللون الأبيض ، نضع أي إشارة على الإطلاق. شيء واحد ستلاحظه هو DOT POBR. هذا لأن الإشارة التي نرسلها فظيعة للغاية. إشارة Chroma قذرة للغاية ولها نمط شدة تكرار. بينما يصطف Chroma حتى التكرار التكراري على مستوى 1408 بت ، فإن العدد الإجمالي للبكسل على الشاشة لا. هذا يسبب الأنماط التي تم إنشاؤها لتدوير الشاشة.
من أجل توليد اللون ، نحتاج إلى تعديل في إشارة Chroma ، 3.579 ميجا هرتز فوق النطاق الأساسي. تتم مزامنة Chroma بواسطة colorburst في بداية كل سطر. هذا يضع أيضا مستوى Chroma. بعد ذلك ، أثناء الخط ، يمكننا إما اختيار "لون" له معامل عالي على مستوى Chroma ، أو معامل منخفض. هذا يحدد مدى حيوية اللون. يمكننا تغيير المرحلة لتغيير لون اللون.
هذا هو في الأساس DAC 1 بت ، يعمل على تردد أسفل Nyquist ، في محاولة لترميز LUMA واللون في نفس الوقت. لا تفاجأ أن الجودة فظيعة.
يتم (إنشاء/تخزين/تخزين؟) في maycbtables.h/c ، والجداول المماثلة لإنشاء ترميز إشارة السلك في Synthtables.c.
وظائف لإعداد عمليات نقل DMA ، وإعادة ملء المخازن المؤقتة عندما تصبح فارغة ، وتغيير نوع الخط الذي يجب إرساله بناءً على محتويات FrameBuffer في video_broadcast.c. هذه الوظائف تتعامل مع كل التعديل. هذا يضع DMA ، ومقاطعة تسمى عندما تنتهي DMA كتلة (تساوي سطر واحد). عند الانتهاء ، يستخدم CBTable لتحديد الوظيفة التي يجب الاتصال بها لملء الخط. تملأ المقاطعة الخط التالي لـ DMA الذي يستمر.
يتم تحديث FrameBuffer بواسطة شاشات تجريبية مختلفة موجودة في user_main.c.
يحتوي Custom_Commands.c على الأوامر المخصصة المستخدمة للجوانب الخاصة بـ NTSC. باستخدام واجهة WebSockets الشائعة ، هناك أمران إضافيان. وتشمل هذه "CO" و "CV" التي ضبط وضع التشغيل (CO) وتسمح للمستخدمين بتغيير جدول التعديل من واجهة الويب (CV).
تتوفر الشاشات التجريبية التالية. عادة ما يعلمون من خلال واحدة تلو الأخرى (باستثناء تلك بعد 10) ، ما لم يعط المستخدم هذا في متصفح الويب.
تقوم واجهة الويب باستعارة واجهة الويب من ESP8266WS2812I2S. الطاقة على ESP ، قم بتوصيلها ، ثم ، قم بإشارة متصفح الويب الخاص بك إلى http://192.168.4.1. يحتوي على زر جديد "NTSC". يمنحك هذا الخيار للسماح للتواصل التجريبي بالاستمرار من الشاشة إلى الشاشة ، أو التجميد على شاشة معينة. يمكنك تحديد الشاشة. بالإضافة إلى ذلك ، لاختبار RF ، يمكنك التشويش على اللون. كلما تم ضبط مربى اللون على شيء 0 أو أعلى ، فإنه يؤدي إلى إيقاف كل منطق رسم الخط ، ويؤدي ببساطة إلى إخراج اللون بشكل مستمر. سيمنع هذا مجموعات التلفزيون من رؤيتها ، ومع ذلك ، يمكنك رؤيته على معدات RF الأخرى.
كما أنه يحتوي على نظام Webworker التفاعلي JavaScript يتيح لك كتابة التعليمات البرمجية لصنع لون جديد! يمكنك إنشاء bitstream جديد سيتم نقله عند ضرب لون معين. يمكنك تحرير الكود وهو فعال أثناء الكتابة. تقوم تلقائيًا بإعادة تشغيل عامل الويب في كل مرة تقوم فيها بتغييره.
يجب عليك فقط إخراج -1 أو +1 لأن كل ما يمكن أن يخرجه ESP. سيتم بعد ذلك تشغيل DFT مع نافذة عشوائية على منطقة تردد تختارها. قم بزيادة نافذة DFT ، وسوف تزيد من Q (أو الدقة). انخفاض ، فإنه يقلل من Q. هذا للمساعدة في معرفة كيفية فهم أجهزة الاستقبال مثل التلفزيون حقًا للإشارة والمساعدة في توضيح مدى هذا الغربي.
يمكنك تجربته في متصفحك الخاص باستخدام هذا الرابط: http://cnlohr.github.io/channel3/web/page/index.html انقر فوق NTSC وانتقل إلى المدينة.
لجميع النص ثلاثي الأبعاد والنص ، أستخدم إصدارًا معدّلًا جديدًا من مكتبة "RawDraw" (http://github.com/cnlohr/rawdraw) لأرقام ثلاثية الأبعاد ، أستخدم أرقام نقاط ثابتة ، مع 256 كقيمة الوحدة ، والأسفل 8 بت هي المكون الكسري.
للسماح للبث PAL ، تم تعديل توقيتات الفيديو (NTSC_Broadcast سابقًا). نظرًا لأنني أردت فقط استخدام هذا مع تلفزيون أبيض أسود ، ولون PAL معقد للغاية في الواقع رقميًا ، لم أقم بتعديل Broadcast_Tables (synthtables.c). لذا ، تبث المكتبة بنيًا متوافقًا مع معلومات ملونة NTSC (مثل NTSC50).
لتمكين البث PAL ، تحتاج إلى تمكين OPTS += -DPAL
في user.cfg.
إليك مقطع فيديو YouTube الأصلي في هذا المشروع:
هنا هو الفيديو الجديد (مع اللون):