تطوير البرامج الثابتة لكاميرا فيديو تناظرية EVR-Y2022F

في مقال سابق ، تم فحص جهاز كاميرا الفيديو التمثيلية بتفصيل كبير من أجل إنشاء البرامج الثابتة الخاصة به. كما ذكرنا من قبل ، تحتوي الكاميرا على متحكم مجهول المصدر. إنه أكثر ثراءً من AVRs المعتادة: لديه جهدان للإمداد 3.3V و 1.8V ، وأيضاً ، لديه وظيفة DSP. توصلت إلى هذا الاستنتاج عندما فكرت في تنفيذ خوارزمية ضبط تلقائي للصورة. ومع ذلك ، لم أكن أفضل أعضاء الكنيست المعقدين مثل STM32 وآخرين ، فقط لأنني لم أعمل معهم مطلقًا. لقد اتخذت بالتأكيد قرارًا بأنني سأستخدم أحد أدوات AVR MK لتنفيذ برنامجي الثابت. لذلك ، بدأت بالفعل في هذه المرحلة في إدراك أن تنفيذ وظيفة التركيز التلقائي لن يكون من السهل التعامل معها أو بالأحرى مستحيل.

وقع اختياري على ATmega128 MK ، لأنه هو الذي سقط في ذراعي. من الواضح أن ATmega8 MK لن يكون كافيًا من حيث عدد الاستنتاجات ، خاصة وأنني ، في حالة ، فقط قررت حجز منفذ MK كامل لإدخال دفق الفيديو الرقمي من معالج الفيديو. بادئ ذي بدء ، اكتشفت الوظائف التي ستكون في البرامج الثابتة الخاصة بي ، على وجه الخصوص ، الوظائف التي لم تكن في البرامج الثابتة الأصلية ، والوظائف التي يجب تجاهلها.

دعنا نفكر في متغير من خوارزمية التركيز التلقائي لتحليل دفق الفيديو الرقمي. تمكنت من معرفة أن بيانات دفق الفيديو هي بديل للبايتات المتزامنة مع نبضات "CK". تشفر وحدات بايت دفق الفيديو مستويات مكونات Y و Cr و Cb لإشارة الفيديو بتدرج 8 بت (256 مستوى). أي أن إخراج الفيديو الرقمي من معالج الفيديو لهذه الكاميرا متعدد المكونات. يتم تضمين معلومات عن السطوع (Y) في كل ثانية من دفق الفيديو ، والمعلومات عن اللون أقل مرتين. بمعنى ، يتم تضمين معلومات حول إشارة اختلاف اللون الأحمر Cr في كل بايت رابع ، بالإضافة إلى معلومات حول إشارة فرق اللون باللون الأزرق. وبالتالي ، يمثل الدفق التسلسل التالي: Cb0 ، Y0 ، Cr0 ، Y1 ، Cb2 ، Y2 ، Cr2 ، Y3 ، Cb4 ، Y4 ، Cr4 ، Y5 ، .... بمعنى آخر،في حين أن المعلومات حول سطوع كل بكسل تأتي بدون ثغرات ، فإن المعلومات حول لون البكسل تأتي بشكل تسلسلي. هذا الترقق يرجع إلى خصائص عدم الحساسية للون التفاصيل الصغيرة وانخفاض في نطاق اللون في إشارة الفيديو. يتم استخدام هذه الخصائص في التلفزيون التمثيلي ورقمنة الفيديو. نسبة "الضغط" المذكورة أعلاه (اختزال اللون) لها نسبة مكون 4: 2: 2.

لكي تعمل خوارزمية التركيز التلقائي ، يكفي تحليل مكون السطوع فقط ، والذي يسهل تحقيقه أيضًا عن طريق اعتراض دفق الفيديو "بايت بايت". إذا كان تردد CK حوالي 18 ميجاهرتز ، فإن CK / 2 هو 9 ميجاهرتز ، والذي يبدو أنه يمكن تحقيقه تمامًا لـ ATmega128 MK. تعمل نبضات المزامنة الأفقية والرأسية على تمكين وحدة التحكم من "حساب" وتحليل أي منطقة من الصورة. ربما ، بالنسبة لخوارزمية التركيز التلقائي ، يكفي تحليل مركز البيانات النقطية فقط. من الواضح أنه كلما كان التركيز أفضل ، كانت الصورة أكثر وضوحًا ، وبالتالي كلما كان نطاق تردد إشارة الفيديو أوسع (المزيد من مكونات الترددات اللاسلكية). أي أنه من الممكن (بل من الضروري) تطبيق خوارزمية تحويل فورييه السريع (FFT) على أجزاء من دفق فيديو رقمي وتحليل مكونات التردد اللاسلكي. في هذه الحالة ، تحتاج إلى تحريف التركيز البؤري في كل مرة ،باستخدام طريقة "نصف القسمة" كطريقة تحسين رياضية. وبالتالي ، يمكنك تحقيق أفضل نتيجة.

لم أكن منزعجًا من وظيفة التركيز التلقائي ، مع الأخذ في الاعتبار أنه كان من المستحيل على MK ببنية بسيطة ، على الرغم من أنني ، على أي حال ، حجزت منفذًا للفيديو الرقمي. بدلاً من التركيز التلقائي ، قررت تنفيذ عدد من الوظائف الأخرى التي لم تكن متوفرة في البرامج الثابتة الأصلية. ولكن لهذا ، يجب أن تقتصر كاميرا الفيديو على الظروف الثابتة ، وهو أمر نموذجي للمراقبة بالفيديو. من المفترض أن الكاميرا ستتمكن لاحقًا من الدوران في المستوى الأفقي والرأسي باستخدام آليات خاصة ، تلقائيًا ويدويًا. عندما تستهدف الكاميرا تلقائيًا كائنًا معينًا ، سيتم تخزين إحداثياته ​​الكروية مسبقًا في ذاكرة جهاز التحكم ، ستتغير أيضًا "إحداثيات" الزوم والتركيز ، والتي سيتم أيضًا اختيارها مسبقًا وتخزينها في الذاكرة.يمكن تنظيم الإدارة وفقًا لبروتوكول PELCO-D ، علاوة على ذلك ، في مواصفات هذا البروتوكول هناك فريق خاص لهذا العمل. وبالطبع ، سيتم "إقران" إحداثيات التكبير والتركيز لمسافة معينة. أي أن الكائن الذي سيتم تحديد موقعه على مسافة معينة سيتم التركيز عليه.

قبل أن تبدأ في كتابة برنامج برنامج ثابت ، تحتاج إلى التفكير في الأجهزة الطرفية لـ MK وما هي الاستنتاجات التي ستتضمنها. ثم تحتاج إلى التفكير في كيفية وضع اللوحة وإصلاحها باستخدام MK الخاص بها داخل الكاميرا. بحيث تكون مريحة وقابلة للصيانة قدر الإمكان. قررت استخدام لوحة مع عضو الكنيست ، سيتم توجيه استنتاجاتها بالكامل إلى اليسار واليمين. ستكون اللوحة في الجزء السفلي من الكاميرا ، حيث توجد مساحة صغيرة ، وسيتم تعليقها على اتصال قابل للفصل. في نفس الوقت ، سيكون هناك "دبابيس" للموصل على اللوحة نفسها ، وستكون هناك مقابس للتزاوج على جانبي الكاميرا. بالنسبة لمقابس الاستجابة ، قررت عمل لوحتين إضافيتين للمهايئ ، بحجم جانب الكاميرا. تصل صفائح هذه البطاقات إلى الجانب العلوي من الكاميرا ، مباشرة إلى اللوحة الرئيسية. من المفترض أن يتم توصيل كل صفيحة إلى النقطة المطلوبة على اللوحة الرئيسية للكاميرا.

أثناء تطوير اللوحة مع MK ، كانت لدي فكرة تكملة كاميرا الفيديو بساعة (RTC) ، وأبرزت خط I2C ، الموجود على لوحة RTC DS1307 (أعرف بالفعل ماذا بحق الجحيم) مع الكوارتز والبطارية ، وفي حالة ، EEPROM 24AA512 ، والتي كانت باليد. يوجد أيضًا على اللوحة في الحافة العلوية موصلات لتوصيل مبرمجي SPI و JTAG. على اللوحة الأم الأصلية ، تم تسجيل ساعة MK من الكوارتز MHz 12. نفس الشئ بالنسبة لي. بشكل عام ، من الأفضل وضع الكوارتز عند 11.0592 ميغاهرتز لتشغيل UART الواضح. المسافات بين "أمشاط" المفاصل القابلة للفصل التي قمت بحسابها مسبقًا بعناية. قررت أن أطعم عضو الكنيست من "Krenka" بجهد خمسة فولت ، والذي سيتم ثنيه على الإطار تحت اللوحة الرئيسية (سيعمل أيضًا بمثابة بالوعة حرارية). سيتم أخذ الطاقة من جهد الدخل 12 فولت مباشرة بعد المصهر FB801 ، كما هو موضح في الشكل.


تين. 1. إدارة الطاقة من متحكم.

أثناء رسم اللوحات في "SprintLayout" ، تساءلت عن الغرض من كل دبوس من MK ، والذي يتم إخراجه "خارج" إلى الموصل. والنتيجة هي مثل هذه الصورة.


تين. 2. اسكتشات لوحات الدوائر المطبوعة الإضافية.

لأقول لك الحقيقة ، رسمت اللوحات الجانبية (على طول الحواف) في مرحلة كتابة هذا المقال. لكن في الحقيقة ، لقد صنعتها بقص. اتضح أنه ليس الخيار الأكثر نجاحًا. والمجلس نفسه مع MK صنع بشكل منحرف. بطريقة ما ، قمت بربط الألواح المساعدة الجانبية على جانبي إطار الكاميرا ، ولحام صواميل التدفق إلى السطح النحاسي لثنائي الفينيل متعدد الكلور. والحقيقة هي أن هناك مساحة صغيرة جدًا على الجانبين ، وغطاء الكاميرا عمليًا "محكم" من الخلف إلى الخلف.

توضح الأشكال أدناه توزيع استنتاجات عضو الكنيست ، وكذلك الغرض منها.


تين. 3. الغرض من استنتاجات المتحكم.

هناك العديد من النقاط للتعليق عليها.

بالنسبة لمبرمج SPI (STK200 +) ، لم يكن الإخراج "PEN" ضروريًا. يتم التنشيط بواسطة "RESET" ، كالمعتاد. ولكن بدلاً من "MISO" و "MOSI" ، يمتلك MK واجهة منفصلة (PDI / PDO) ، ويتم دمج خط "CLK".

كجهد مرجعي لـ ADC ، اخترت نفس 5V ، والتي يتم تشغيل MK نفسه منها. حاولت الحصول على 3.3V بشكل منفصل (كما هو الحال في الدائرة الأصلية) ، ولكن في نفس الوقت كانت هناك مطبات. وللتحول إلى الجهد المرجعي 5V ، تحتاج إلى تغيير الدائرة قليلاً ، كما هو موضح في الشكل.


تين. 4. ترجمة الأزرار على الجهد المرجعي 5V.

بمعنى ، تحتاج إلى إلغاء تثبيت جانب واحد من المقاوم R505 من جانب الإمداد 3.3V ، وبدلاً من ذلك تطبيق 5V عليه من خط الطاقة MK.

من استنتاجات MK ، التي يتم استخدامها فقط داخل اللوحة المصممة ، هناك ثلاثة فقط متورطة. تصل إشارة نبضة 1 هرتز مع RTC إلى PB7 لتحديث الوقت. يتم تخصيص دبابيس PD0 و PD1 إلى ناقل I2C. سيتم تنفيذه برمجيًا باستخدام مكتبة CVAVR "i2c.h" ، على الرغم من حقيقة أن واجهة i2c (TWI) للأجهزة متصلة بهذه المخرجات.

يتم إخراج دبوس MC "RESET" ، ولكن إعادة تعيين MK ستحدث من تلقاء نفسها بدون سلسلة إعادة تعيين خارجية.

كان من المفهوم أن نبضات ساعة HD و VD ستصل إلى MK عبر منافذ المقاطعة الخارجية من أجل دقة قراءة مجال الفيديو. ومع ذلك ، باستثناء وظيفة التركيز التلقائي ، لم تعد هناك حاجة إليها. تأتي الإشارات من مفاتيح التكبير والتركيز إلى المنافذ المجاورة للمقاطعات الخارجية.

تم حجز منفذ "A" MK لدفق الفيديو الرقمي. تم حجز المنفذ "C" بالكامل لـ SD.

يستخدم دبوس PD4 لتبديل TX / RX RS-485. لم يكن هناك تبديل في الدائرة الأصلية: كانت الساقان الثانية والثالثة لشريحة MAX485 على الأرض. كان عضو الكنيست الأصلي قادرًا فقط على استقبال البيانات للتحكم في الكاميرا عبر PELCO-D. قررت إجراء ترقية صغيرة. كانت الفكرة هذه. إذا كانت كاميرا الفيديو معلقة بشكل مرتفع وفي غلاف مغلق ، فسيكون من المستحيل ببساطة تحديث البرنامج الثابت بسرعة. وستنشأ مثل هذه الحاجة بالتأكيد: التخلص من الأخطاء المختلفة وتحسين الوظائف سيصبح ممارسة منتظمة للمرة الأولى. لذلك ، توصلت إلى فكرة تنفيذ برنامج bootloader لـ MK ، واستخدامه بالفعل لتحديث البرامج الثابتة عن بعد عبر RS-485. وفي هذه الحالة ، يكون التبادل ثنائي الاتجاه مرغوبًا للغاية. حول محمل الإقلاع سيكون جزءًا منفصلاً من هذه المقالة. ولربط MAX485 (2 و 3 أرجل) بدبوس MK ،تحتاج إلى إجراء تغيير طفيف على اللوحة الأولى والثانية. يتم توصيل هذه اللوحات بواسطة كابل حلقة ، يوجد على موصلاتها جهة اتصال "IRL" غير مستخدمة للتحكم في الإضاءة الخلفية. في اللوحة الثانية (الرئيسية) ، تحتاج إلى إلغاء لحام المقاوم R520 وبدلاً من ذلك ، قم بلحام السلك الذي يمر عبر لوحة المحول إلى ATmega128 MK إلى الإخراج المقابل بدلاً من ذلك. وعلى اللوحة الأولى ، تحتاج إلى فك وتثبيتها 2 و 3 أرجل من U202 ، ولصقها معًا واسحبها من الأسلاك إلى الإخراج المجاني لموصل واحد J302. يوضح الشكل التالي هذه العمليات لتغيير الدائرة.والتي سوف تمر من خلال لوحة المحول إلى ATmega128 MK إلى الإخراج المقابل. وعلى اللوحة الأولى ، تحتاج إلى فك وتثبيتها 2 و 3 أرجل من U202 ، ولصقها معًا واسحبها من الأسلاك إلى الإخراج المجاني لموصل واحد J302. يوضح الشكل التالي هذه العمليات لتغيير الدائرة.والتي سوف تمر من خلال لوحة المحول إلى ATmega128 MK إلى الإخراج المقابل. وعلى اللوحة الأولى ، تحتاج إلى فك وتثبيتها 2 و 3 أرجل من U202 ، ولصقها معًا واسحبها من الأسلاك إلى الإخراج المجاني لموصل واحد J302. يوضح الشكل التالي هذه العمليات لتغيير الدائرة.


تين. 5. تنظيم خط TRX للتحكم في TX / RX MAX485.

هناك واجهات UART على متن ATmega128. في هذه الحالة ، يجب عليك استخدام الواجهة الثانية (الدبابيس 27 ، 28) ، حيث يتم دمج الواجهة الأولى على الدبابيس (الدبابيس 2 ، 3) مع واجهة مبرمج SPI.

على اللوحة ، يتم تضمين جميع استنتاجات عضو الكنيست تقريبًا. وتبين أن استنتاجات المنفذ "G" غير مستخدمة. بالمناسبة ، كان من الممكن تنفيذ الساعة برمجياً على أساس MK. يوفر وضع السكون مع استخدام البطارية لحساب الوقت عند انقطاع التيار الكهربائي الرئيسي. حتى أن هناك استنتاجات لربط الكوارتز منخفضة التردد منفصلة. ومع ذلك ، لم أزعجني بذلك ، صفع DS1307.

يوضح الشكل أدناه الغرض من كل إخراج للوحة مع MK. بالإضافة إلى ذلك ، يتم وضع علامة على ما هو مشروط على أي جانب من اللوحة الرئيسية سيتم لحام الأسلاك من كل دبوس. من الضروري أيضًا إبداء بعض التعليقات.


تين. 6. التنازل عن استنتاجات دفع إضافية مع عضو الكنيست.

لا تأتي الإشارات من مفاتيح حد التكبير والتركيز فقط إلى منافذ المقاطعة ، ولكن أيضًا إلى إدخالات ADC. والحقيقة هي أنه حتى في مرحلة دراسة SD ، لاحظت مثل هذه الميزة. إذا كانت آلية التكبير / التصغير عند "صفر" ، فيمكن أن تأخذ إشارة الخرج من المقطورة حالة "متوسطة". لالتقاط أفضل لهذه الحالات النادرة ، قررت استخدام ADC. بالطبع ، هذا ليس نهجًا عالي الكفاءة ، ولكن من خلال القيام بذلك ، سرعان ما خرجت من المشكلة التي ظهرت أحيانًا في مرحلة التهيئة في البرنامج الثابت للاختبار. وهكذا ، قمت بزيادة استقرار الخوارزمية.

يتم توصيل إشارات SDA / SCL من I2C فقط بالموصل ، في حالة عدم استخدامها ، ولا يتم استخدامها خارج هذه اللوحة.

يتم توقيع أسماء كل دبوس للتحكم في المعرف وفقًا للاتصال الفعلي. تم تصحيح ربط البيانات ، بالنظر إلى المستقبل ، أخيرًا في مرحلة التصحيح. كان هناك الكثير من الارتباك ، ولكن الأخطاء كانت فقط في تناوب المراحل بدقة في الاتجاه المعاكس ، وليس في ترتيبها. التبادلين "4-1-2-3" (للتكبير / التصغير) و "2-3-4-1" (للتركيز) هما نفس الشيء ، وكذلك "1-2-3-4" ، واتخذ كأساس.

في نهاية المقال (حتى لا تخزي) يتم تقديم صورتين. الأول هو العرض السفلي لكاميرا الفيديو مع عرض لوحة الدوائر الإضافية. والثاني هو منظر من الأعلى من الأعلى على اللوحة الرئيسية لكاميرا الفيديو مع MK قياسي مغلق (المعالج الدقيق ، على وجه الدقة) ، حفنة من وصلات الأسلاك وغيرها من المخاط.

كتبت البرنامج (البرامج الثابتة) مع اختباره الأولي في برنامج ISIS 7 Professional (Proteus).


تين. 7. عرض المشروع في Proteus.

بدلاً من الرقاقات الفريدة لمولد الأحرف ومعالج الفيديو (والتي ، بالطبع ، ليست في Proteus) ، قمت بتثبيت أدوات تصحيح أخطاء SPI. وبمساعدة منهم ، من السهل التحكم في وحدات البايت التي يرسلها MK بواسطة SPI. ولكن يتم التحكم في رد الفعل الحقيقي لهذه البايت مباشرة على الأجهزة. مع Proteus ، يمكنك مراقبة وتصحيح أوامر PELCO-D القادمة من DVR حقيقي. للقيام بذلك ، كخيار ، تحتاج إلى توصيل DVR بمنفذ COM للكمبيوتر من خلال أبسط محول أحادي الاتجاه RS485-> RS232.

ثم بدأت في التطوير والنمذجة. ساعد Excel كثيرًا في ذلك.

تحتاج أولاً إلى تحديد الموقتات وتكوينها. مؤقت واحد - لتحقيق دوران محرك السائر وتنفيذ العمليات المتكررة للأزرار أثناء الإمساك بها. عند الضغط على هذا الزر أو ذاك أثناء الإعدادات من خلال القائمة ، سيتم استبعاد تشغيل SD. وعندما تضغط على أحد أزرار التحكم في التكبير / التصغير أو التركيز خارج القائمة ، يتم تدوير SD مع معلمة الوقت المقابلة. وبالتالي ، لا توجد صراعات. خططت لاستخدام المؤقت الثاني لتطبيق PWM لـ SD ، ولكن بمرور الوقت قررت التخلي عنه. في الواقع ، في حالتي ، عندما لا يوجد ضبط تلقائي للصورة ، ليست هناك حاجة إلى PWM. علاوة على ذلك ، فإن آلية النقل لديها هيكل حلزوني ، وبالتالي ، في حالة الراحة ، لا يمكنك "الاحتفاظ" SD عن طريق التيار المباشر ، لن تتسلل الآلية إلى أي مكان.

ثم تحتاج إلى مراجعة أبجدية أحرف منشئ الأحرف ، وفقًا لورقة البيانات ، ومقارنتها مع الأبجدية القياسية ASCII. تتكون أبجدية مولد الأحرف من 128 حرفًا ، وهو نصف حجم الأخير. على سبيل المثال ، الأحرف السيريلية في مولد الأحرف غائبة تمامًا ، ولكن هناك أحرف خاصة مميزة لتطبيقه (الشمس ، الساعة الرملية ، الرجل الصغير ، الملاحظة ، الهاتف ، إلخ). لقد صنعت مجموعة من "smb [256]" من 256 عنصرًا ، وضعها في EEPROM MK. يشير الرمز smb [i] = adr إلى أنه في العنوان adr في منشئ الأحرف يوجد حرف برمز ASCII i. وإذا لم يكن الرمز i في الأبجدية لمولد الحرف ، فإن قيمة عنصر الصفيف تشير إلى "مسافة" بالعنوان 0x7E. أي أن ما يقرب من نصف العناصر في الصفيف لها قيمة "0x7E". يتم عرض هذا الصفيف في شكل جدول في الشكل أدناه.


. 8. ASCII PD6464A.

بعد ذلك ، عليك التفكير في كيفية معالجة الأزرار من خلال ADC. وفقًا لقانون أوم ، من السهل حساب قيم الجهد عند إدخال ADC عند النقر فوق زر. بعد ذلك ، من السهل حساب حدود الفواصل الزمنية ، والتي سيكون منتصفها نفس قيم الضغط. في المجموع ، يتم الحصول على ستة فترات: خمسة منها تتوافق مع كل زر وواحدة لعدم الضغط (لا يتم الضغط على زر). على مستوى الأجهزة ، يقوم ADC MK بشكل دوري بتحليل قيمة الجهد من الأزرار. يمكن تنفيذ مؤقت مكافحة الارتداد بناءً على حساب دورات ساعة ADC ، التي قمت بها. في مرحلة التصحيح ، كان لهذا الجزء من البرنامج عيوبه. أعتقد أنه لا يستحق كتابة التفاصيل. لتحقيق العمل الواضح لهذه الوظيفة ، كان عليّ أن العبث لفترة طويلة. يتم وضع وظيفة التعرف على الأزرار في قسم مقاطعة ADC ، وعلى إخراجها هو رقم الزر ،علم الاكتئاب وعلم الإصدار. تحدث المعالجة الإضافية للأزرار في دورة البرنامج الرئيسية. كان تردد اقتراع الزر (تردد ADC) 12000/128 = 93.75 (كيلو هرتز) ، حيث 128 هو الحد الأقصى الممكن.

ثم قمت بتشكيل مجموعة من قيم UART للتسجيل UBRR1 لتكوين UART ، اعتمادًا على قيمة واحدة أو أخرى لنسبة الجسم لـ PELCO-D ، والتي يمكن اختيارها من القائمة في الإعدادات عبر القائمة. يمكن حساب هذه القيم باستخدام الصيغة من ورقة البيانات على MK ، ويمكن أيضًا الحصول عليها باستخدام التكوين التلقائي لمعالج AVR.

ثم بدأت نمذجة القائمة. هذه هي المرحلة الرئيسية والمضيعة للوقت في كتابة برنامج. من حيث المبدأ ، لن أكرر قائمة البرامج الثابتة القياسية ، باستثناء هذا ، قررت تعقيدها إلى هيكل هرمي (القسم في القسم). فيما يلي وصف للنموذج وتعريفات القائمة التي قمت بإعدادها لنفسي.

لا تستطيع القراءة
.
.
.
.
«MENU».

«» .
«» «» .
«» .
«» .
( ) , .
« », .

:
— ;
— ;
— ;
— .

, , .
<>.
.
"<..>".
«».
, .
( ) .
"<..>" .
, .
.

.
.
.
"<•>" ( ).
"< >" ().
«».

.
.
«l*l» (, «l»).
«l l» (, «l»).
«».

, .
.
.
.
: «000», «00», «0».
.
: ": ".
— ( ) .
, , «» «».
«» 1.
«» 1.

.
.

وبالتالي ، فإن التنقل في القائمة يشبه إلى حد ما التنقل عبر الملفات والمجلدات من خلال "Total Commander". إن رمز تنفيذ نموذج القائمة هذا ليس معقدًا للغاية ، ولكنه مرهق جدًا. هناك متغيران رئيسيان: رقم الصفحة النشطة وعدد الموضع النشط على الصفحة. لكل من المتغيرين ، تعمل وظيفتان "حالة مفتاح التبديل" في بعضهما البعض. هذا الزوج من الوظائف متورط في عملية الضغط على الأزرار "اليسار" ، "اليمين" و "القائمة". يتم تسجيل إجراءات معينة في كل مكان (لكل زر وصفحة وبند حالي). تحتوي كل صفحة قائمة على وظيفة تنفذ عرض الصفحة على الشاشة مع جميع النقوش والمعلمات. قبل تنفيذ وظائف إخراج الصفحة ، قمت بنمذجها مسبقًا في Excel ، كما يقولون ، "حسب الخلايا".لذلك يتم تقديم إحداثيات خلايا كل رمز في حقل الشاشة بشكل أكثر وضوحًا ، وهذه المعلومات ضرورية في مرحلة البرمجة. في الشكل أدناه ، كمثال ، عرضت الصفحة 9 ، التي يتم تحديد باودرات PELCO-D من القائمة. عنصر الواجهة في الصفحة هو زر اختيار. بالإضافة إلى ذلك ، فإن الفقرة الأولى <..> هي الخروج من هذا القسم.


تين. 9. نمذجة OSD في Excel.

لقد قمت أيضًا بعمل مصفوفة تعكس عدد النقاط في كل صفحة. يتم استخدامه في معالجة الضغط على الزرين لأعلى ولأسفل. يتم ذلك لتقليل الكود وتجنب استخدام وظيفة صندوق التبديل.

يتم تنفيذ المطابع الافتراضية المتكررة أثناء الضغط على الأزرار في نص مقاطعة الموقت من خلال وظيفة "مفتاح الحالة" ، والتي تعمل على متغير صحيح ، وهو علم. تكون قيمة العلامة فريدة لكل إجراء زر في صفحة معينة وعنصر قائمة محدد. يتم تعيينه للعلامة كرقم تسلسلي فقط في تلك الأماكن التي تتطلب نقرات افتراضية. في الوقت نفسه ، يتم وضع نسخ من الوظائف التي تنفذ إجراءات الأزرار داخل وظيفة "مفتاح الحالة" (في جسم مقاطعة المؤقت). لتوفير الذاكرة ، كان من الممكن وضع "اختصارات" (روابط) على المكالمات العادية إلى وظيفة معالجة الأزرار. إنه أكثر معقولية ، ولكن في تلك اللحظة لم يكن لدي الصبر للتفكير في كيفية القيام بذلك بشكل أفضل ، لأنني أردت إنهاء المشروع في أقرب وقت ممكن. وتبين أن الذاكرة في ATmega128 كبيرة جدًا.

أخيرًا ، قمت بتطبيق "مكتبات" للعمل مع معالج فيديو ، ومُنشئ حرف ، و RTC DS1307 مع الوظائف الضرورية. بعد ذلك ، حددت عناوين EEPROM MK لتخزين هذه المعلومات أو تلك. تم حجز أول 32 بايت لتخزين معلومات إعدادات القائمة. 32 بايت التالية محفوظة لتخزين النص الذي يمكن عرضه على الشاشة أو تغييره باستخدام الأمر القياسي "Pelco-D Write Char. الى الشاشة. " يتم حجز 256 بايت التالية من منطقة EEPROM للأبجدية (تحويل حرف من ASCII إلى عنوان لمولد الأحرف ، كما ذكر أعلاه). أخيرًا ، تم حجز 128 بايت التالية لتخزين "القوالب" المسبقة (تكبير / تصغير). لقد قدمت هذه الميزة بسبب عدم وجود تركيز تلقائي. لقد كتبت عن هذا في بداية المقال. ما مجموعه 32 قوالب. يتم ترميز إحداثيات التكبير أو التركيز في وحدتي بايت.

بشكل منفصل ، يجدر الكتابة حول تنفيذ إدارة التنمية المستدامة. يتم تحقيق دوران SD عن طريق استدعاء الدالتين StepF () و StepZ () في كتلة مقاطعة المؤقت. يتم تحديد سرعة الدوران من خلال تكوين هذا المؤقت. وتنفيذ الوظائف المذكورة أعلاه ينفذ تعزيز التركيز أو التكبير (على التوالي) في خطوة دنيا. أثناء تدوير عدسة الزوم والتركيز ، يتم التحكم في مواضعها النهائية. يتم تمثيل موضع التركيز الأقصى وموضع التكبير الأدنى في البرنامج بواسطة الثوابت (280 و -600 ، على التوالي). لكن موضع الحد الأدنى للتركيز وموضع التكبير الأقصى - في شكل متغيرات F_min و Z_max (بتعبير أدق ، وظائف). تم تسهيل هذا النهج من خلال منطقة عمل غير مستطيلة مع قطع الزاوية اليمنى السفلى. لحساب قيم F_min و Z_max ، يتم استخدام الدالتين المعرّفتين بشكل مجزأ F_min (Z) و Z_max (F). الى جانب ذلك ،عندما يدور تكبير / تصغير SD في الاتجاه الموجب عند Z (إحداثيات التكبير / التصغير)> 500 ، يدور تركيز SD في نفس الوقت في نفس الاتجاه إذا كان للأخير إحداثيات <(- 180). أي أن الحد الأقصى لموضع الزووم ، من حيث المبدأ ، لا يقتصر على موضع التركيز الحالي ، ولكنه يقتصر على 600. ويحدث ببساطة أن اثنين من SDs تدور في وقت واحد عندما يتم الوصول إلى الحد الزاوي المقابل للمنطقة الخماسية ، وتتم الحركة في هذه المرحلة على طول "الجانب المقطوع" (إذا تم تفسيره بيانيًا) ) من وجهة نظر الميكانيكا ، هذا يعادل العملية الموصوفة في المقالة السابقة ، عندما ، في حالة عدم وجود SD وعند تحريك عقد التكبير والتركيز يدويًا ، تقوم عقدة التكبير في نهاية المسار "بسحب" عقدة التركيز. نظرًا لحقيقة أن إحداثيات التكبير / التصغير تسيطر على إحداثيات التركيز (ولهذا السبب أعتبر اعتماد F (Z) ،ولكن ليس العكس) ، لم أبدأ في تنفيذ إجراء مماثل "التمرير" في وظيفة Step_F ().

في البرامج الثابتة الأصلية ، كانت سرعة تغيير الزوم والتركيز ذات قيم ثابتة. هذا ليس مناسبًا دائمًا. في برنامجي الثابت ، قدمت أربع قيم لسرعات التكبير والتركيز (بشكل مستقل) ، والتي يمكن تحديدها من خلال القائمة واستخدام الأمر PELCO-D المعين لهذه الوظيفة. يتم تحديد هذه القيم الأربعة مسبقًا في مرحلة التصحيح بناءً على الراحة ، ثم يتم إدخالها في البرنامج الثابت.

هناك حاجة إلى وظيفة تهيئة BD init_MR () لربط آليات التكبير والتركيز بنظام الإحداثيات. يتم تنفيذه مرة واحدة في كل مرة تقوم فيها بتشغيل كاميرا الفيديو. خوارزمية عملها هي تقريبًا ما يلي. بادئ ذي بدء ، من المفترض أن التكبير / التصغير يكون عند نقطة الصفر ، وأن هناك محاولة لالتقاط ارتداد الإشارة من مفاتيح التبديل عن طريق وظائف المقاطعة الخارجية. سألاحظ على الفور أنه إذا كان التكبير / التصغير "عند الصفر" (عند حدود تقسيم المقطع الدعائي البصري) ، فإن الإشارة عند إخراج المقطع الدعائي تحتوي على حالة "وسيطة" بين المنطقي "0" و "1". مثل هذه الحالات غير محتملة للغاية ، ولكن لا يمكن استبعادها. ومع ذلك ، فإن وظيفة المقاطعة لا تفسر إشارة مثل الارتداد. هذا هو السبب في أنني جئت إلى استخدام ADC MK ، مما أدى إلى تشغيل إشارات من حدود الحد والتكبير على قناتيه المجانيتين. وبالتالي،الخطوة الأولى هي "رقمنة" الإشارات من المحولات الحدية بدقة 8 بت. يتم ذلك باستخدام تحويل واحد تناظري إلى رقمي. تجدر الإشارة إلى أن الجهد المرجعي في حالتنا هو 5V ، والمستوى المنطقي "1" من مفتاح الحد هو 3.3V. بالنسبة لـ "0" المنطقي ، ستكون قيمة ADC صفر ، ولقيمة "1" - 3.3 / 5 * 255 = 168. إذا كانت قيمة الإشارة من مقطع دعائي أو آخر تقع في النطاق ، على سبيل المثال ، من 2 إلى 165 (يتم أخذ فاصل زمني مشوش) ، فهذا يعني أن العقدة المقابلة تكون بالفعل "عند الصفر" ، ويمكن إيقاف إجراء التهيئة لهذه العقدة. خلاف ذلك ، من خلال القيمة المنطقية لإشارة المقطورة ("0" أو "1") ، تحتاج إلى تحديد الجزء (النصف) الذي توجد فيه العقدة. يعتمد اتجاه دوران SD على ذلك. بطريقة أو بأخرى ، يجب تدوير SD في هذا الاتجاه ،بحيث تتحرك العقدة المقابلة نحو "صفر" (مفتاح الحد). وبالتالي ، يتم بدء دوران محرك المحرك مع الحساب المتزامن لعدد الخطوات حتى يتم الوصول إلى مفتاح الحد. بمجرد الوصول إلى مفتاح الحد المقابل ، الذي يحدد وظيفة الانقطاع الخارجي وفقًا للاختلاف في المستوى المنطقي ، سيكون هناك دوران عكسي لمحرك المحرك. سوف يدور في الاتجاه المعاكس بنفس عدد الخطوات ، وبالتالي يعود إلى موضعه الأصلي. سيتم نسخ قيمة عدد الخطوات لكل BD مع العلامة المقابلة إلى المتغيرات المقابلة قبل الخروج من وظيفة التهيئة. يحدث الإجراء الموضح أعلاه بشكل مستقل للتركيز والتكبير / التصغير داخل نفس الوظيفة (وليس بدوره).يتم تحديد سرعة دوران محرك المحرك في مرحلة التهيئة بواسطة ثابت منفصل ويتوافق مع السرعة القصوى للدوران الصحيح والثقة ل SM.

ضع في اعتبارك المثال حيث ، قبل تشغيل قوة الكاميرا ، كان التكبير في المنطقة السلبية ، وكان التركيز في المنطقة الإيجابية. يوضح الشكل بشكل تخطيطي مسار النقطة (Z ؛ F) أثناء إجراء التهيئة لمحرك السائر.


تين. 10. عملية تهيئة التكبير والتركيز.

النقطة A هي الموضع الأولي للتكبير والتصغير. تحدث حركة العقدين في اتجاه "صفر" بنفس السرعة (سرعة التهيئة). عند النقطة B ، يصل التركيز إلى الصفر ، حيث كان أقرب إلى الصفر من الزوم. ثم يتم عكس التركيز. عند النقطة C ، يكمل التركيز عملية التهيئة ، ويعود إلى موقعه الأصلي. في الوقت نفسه ، لا يزال الزوم يتحرك نحو "صفر". عند النقطة D ، تصل إلى "صفر" وتعود إلى مكانها الأصلي (النقطة A).

بالإضافة إلى دالة التهيئة init_MR () ، توجد وظيفة goto_zf (z، f). استنادًا إلى الاسم ، الغرض منه هو التبديل من إعداد مسبق إلى آخر ، والذي كتبت عنه في بداية المقالة. سرعة دوران محرك السائر أثناء الانتقال هي نفسها أثناء التهيئة. يتم تنفيذ عملية الانتقال في التكبير والتركيز في وقت واحد. أي ، إذا كان مطلوبًا الانتقال من النقطة (z1 ؛ f1) إلى النقطة (z2 ؛ f2) ، فسيبدأ الدوران المتزامن لاثنين من بطاقات SD. إذا ، على سبيل المثال ، | f2-f1 | <| z2-z1 | ، فسيتوقف التركيز البؤري SD في وقت أبكر. هذا موضح في الشكل أدناه.


تين. 11. عملية تغيير الزوم والتركيز عند اختيار الضبط المسبق.

طوال وقت التشغيل الكامل لمحرك السائر أثناء مرور محدد علامة الصفر ، يتم إحداثيات الإحداثيات المقابلة. وهذا على الرغم من حقيقة أنه لا يمكن القيام بذلك نظريًا. ومع ذلك ، في الممارسة العملية ، لا يزال هناك خطأ من خطوتين إلى SD.

تجدر الإشارة إلى أنه ، على عكس البرامج الثابتة الأصلية ، في حالتي ، عند التحكم في التكبير والتركيز (من الأزرار ومن خلال PELCO-D) ، قدمت إمكانية الحركة خطوة بخطوة. يعمل هذا على النحو التالي. عند النقر فوق أي من الأزرار الأربعة للتحكم في التكبير / التصغير أو التركيز ، يتم تدوير SD المطابق خطوة واحدة ، وبالتالي تقليل حركة الزوم أو عقدة التركيز. إذا لم تقم بتحرير الزر ، فسيبدأ الدوران العادي لمحرك السائر بعد فترة زمنية قصيرة. يتم تحديد هذا التأخير مسبقًا تجريبيًا. هذه الميزة تشبه الضغطات الافتراضية المتكررة أثناء الضغط على الزر. بفضل هذه الميزة ، يتم القضاء على مشكلة "لصق" الزر عند التحكم في التكبير أو التركيز على جهاز التحكم عن بعد PELCO-D عبر اتصال إنترنت ضعيف. بتعبير أدق ، تبرز الفرصة كقح ،وضبط الزوم أو التركيز.

يتم إجراء مترجم أوامر PELCO-D بنفس القياس كما في الجهاز لتبديل الأحمال عبر PTZ. لقد كرست في وقت سابق مقالة صغيرة منفصلة عن حبري لهذا الجهاز البسيط. على عكس البرامج الثابتة الأصلية ، تشير أوامر التحكم في التكبير / التصغير والتركيز بشكل كامل إلى الضغط على الأزرار المقابلة. أي أنه من الممكن "تسلق" القائمة باستخدام زري التكبير والتركيز PELCO-D. ومن أجل استدعاء القائمة عن بعد من خلال PELCO-D ، أو بالأحرى ، الضغط على زر "MENU" ، قارنت زر فتح الفتحة به ، لأن هذه الوظيفة غير مستخدمة في طراز الكاميرا هذا. وبالتالي ، هناك خمسة أوامر PELCO-D أساسية للضغط ، بالإضافة إلى خمسة أوامر أساسية لتحرير الأزرار. بالإضافة إلى ذلك ، كما كتبت بالفعل عرضًا خلال المقالة ، تتم معالجة أوامر إضافية: "Set Preset" ، "Clear Preset" ،"Go to Preset"، "Write Char. إلى الشاشة "،" مسح الشاشة "،" تعيين سرعة التكبير "،" ضبط سرعة التركيز ".

يتم عرض التاريخ والوقت مع RTC في الزاوية اليسرى السفلية من الصورة عن طريق القياس مع كاميرات VHS القديمة ، إذا تم تنشيط هذا الخيار في القائمة. بالإضافة إلى ذلك ، في القائمة ، يمكنك تحديد تنسيق الإخراج ، الذي قدمته أيضًا مسبقًا. أيضا على الشاشة بجانب التاريخ والوقت من الممكن عرض يوم من أيام الأسبوع. بالإضافة إلى الساعة ، يتم عرض الإحداثيات الحالية للتكبير والتصغير على الشاشة كمعلومات إضافية. هذا الخيار مطلوب بشكل أساسي في مرحلة التصحيح.

سأخبرك عن وظائف القائمة التي قمت بتنفيذها. بمرور الوقت ، إذا لزم الأمر ، ستتم مراجعة القائمة: يمكن إزالة بعض الوظائف ، وإضافة بعض الوظائف الأخرى. يظهر الشكل أدناه هيكل القائمة الذي رسمته في SPlan ، مع مشاهدات الصفحة. السهام الحمراء - أدخل القسم. السهام الزرقاء - الخروج من القسم. لم أرسم الأسهم الزرقاء في كل صفحة من القائمة ، لقد رسمت اثنين فقط على سبيل المثال.


تين. 12. هيكل القائمة التي تظهر على الشاشة.

بعض أقسام قائمتي تشبه إلى حد ما أقسام النص الأصلي. بادئ ذي بدء ، هذه أول قسمين: توازن اللون الأبيض والتعرض. في القسم الثالث ، يمكنك تحديد عنوان كاميرا PELCO-D وتحديد معدل الباود من القائمة. القسم الرابع مخصص للتاريخ والوقت. يمكنك تعيين التاريخ والوقت ويوم الأسبوع واختيار أحد تنسيقات العرض الأربعة واختيار طريقة العرض. القسم الخامس - العمل مع الإعدادات المسبقة (قوالب) من التكبير والتركيز ، حيث يمكنك الاتصال به عن طريق الرقم ، وكذلك محو أو الكتابة فوق. أيضًا في هذا القسم من القائمة ، يمكنك اختيار واحدة من أربع سرعات لتغيير التركيز أو التكبير. يسمح لك القسم الخامس بتحرير معلمات معالج الفيديو الموجود في البايت 9 من الفئة 3. هذا هو مستوى وانعكاس مكون الاندفاع لإشارة الفيديو ، والنسخ المطابق للفيديو. القسم الأخير من القائمة هو لتصحيح الأخطاء.باستخدامه ، يمكنك الكتابة إلى معالج الفيديو أي قيمة لأي بايت في أي فئة. يمكن تعيين القيمة في كل من العشري والثنائي.

الآن سأقول بضع كلمات حول محمل الإقلاع. كما كتبت بالفعل ، هناك حاجة إلى أداة تحميل التشغيل لتحديث الكاميرا عن بعد عبر RS-485. في البداية ، فكرت في تنفيذ أداة تحميل التشغيل بالكامل بنفسي. ومع ذلك ، من أجل توفير الوقت ، قررت أن أفعل مع أحد التنزيلات الجاهزة التي تم تنفيذها بالفعل والتي يمكن العثور عليها على الإنترنت. علاوة على ذلك ، لم أستخدمها مطلقًا ، ولدي فكرة عنها فقط على المستوى النظري. يعد دعم RS-485 أحد المعايير المهمة لاختيار أداة تحميل التشغيل. عادةً ، تعمل أدوات تنزيل AVR على UART RS-232. ويختلف محمل الإقلاع مع دعم RS-485 فقط في أنه يتم تخصيص خرج إضافي على جانب MK لتحويل جهاز الإرسال والاستقبال RS-485 (على سبيل المثال ، MAX485) أثناء نقل البيانات من MK إلى الكمبيوتر الشخصي. عند وميض MK ، ينقل محمّل التمهيد معلومات حول التسجيل الناجح أو غير الناجح إلى الكمبيوتر. محمل الإقلاع الأولالذي وجدته يسمح لك بتسجيل ليس فقط ذاكرة FLASH لـ MK مع البرامج الثابتة ، ولكن أيضًا EEPROM. بالإضافة إلى الكتابة ، يمكنك أيضًا قراءة البيانات. لكن هذا المشروع مع شفرة المصدر المجمعة كان مربكًا للغاية ولم أفهمه. علاوة على ذلك ، كان التركيز الرئيسي لمحمّل التمهيد هذا يهدف إلى القدرة على وميض أجهزة متعددة بشكل فردي ، دون فصلها عن شبكة RS-485 ، والوصول إلى كل جهاز على عنوان تم توصيله به مسبقًا. لست بحاجة إلى هذه الميزات الوظيفية ، حيث إنني أستخدم طوبولوجيا مختلفة لشبكة RS-485 ، ومن الممكن تبديل كاميرا الفيديو بسرعة من DVR إلى الكمبيوتر. أداة تحميل التشغيل الثانية هي Chip45 الألمانية. كود المصدر ليس في المجال العام ، يمكن شراؤه من المؤلف. بدلاً من ذلك ، هناك عدة مئات من ملفات HEX لمختلف واجهات AVR MK ، وواجهات UART مختلفة (إذا كان هناك العديد ، كما في حالتي) ،RS-485 أو RS-232 للاختيار من بينها. باختصار ، لجميع المناسبات. في الوقت نفسه ، يشير المؤلف إلى أنه في حالة RS-485 ، يتم تثبيت دبوس التحويل TX / RX ويتوافق مع دبوس XCK UART لواجهة التحكم ، والذي لا يستخدم عمليًا في UART. في حالتي ، فإن دبوس 30 من XCK لواجهة UART الثانية لـ Atmega128 MK هو PORTD.5 ​​ويستخدم لتنشيط مفاتيح حد التكبير والتركيز. من حيث المبدأ ، هذه الوظيفة ليست ضرورية ، لأنه ، كما أظهرت الدراسات ، تكون مفاتيح الحد دائمًا نشطة ، كما كتبت بالفعل. وإذا لزم الأمر ، يمكنك نقل هذه الوظيفة إلى أي MK آخر الإخراج الحر. ولكن ، على أي حال ، لم يعجبني محمل التمهيد هذا أيضًا ، خاصة وأنني صادفت محمل إقلاع أكثر إثارة للاهتمام يسمى "AVR Universal Bootloader" من التصميم الصيني. مثل Chip45 ، يمكن فقط الكتابة وفقط في ذاكرة FLASH لـ MK.لكن لديه عدد كبير من الاحتمالات ، ولذلك قررت بشدة أن أبقى على ذلك. يأتي كمشروع AVR Studio مع رمز مصدر C. نظرًا لحقيقة أنني أعمل في CodeVisionAVR ، كان علي تثبيت AVR Studio مع WinAVR. من أجل الحصول على ملف HEX للبرنامج الثابت لبرنامج bootloader ، تحتاج إلى تجميع المشروع عن طريق إجراء تغييرات أولية على شفرة المصدر للتهيئة الخاصة بجهازك وتحتاج إلى تكوينك الخاص. يتكون تجميع المشروع من إطلاق ملف خفاش (ملف دفعي) ، حيث يتم كتابة أوامر التجميع. وبالتالي ، لا يلزم فتح مشروع في AVR Studio. يمكن إجراء التغييرات في شفرة المصدر يدويًا (على مستوى المبرمج) ، أو باستخدام أداة التهيئة. دور هذا الأخير هو نافذة إضافية للأداة المساعدة التي تعمل مع محمل الإقلاع ، والتي يتم إرفاقها أيضًا.في أداة التهيئة ، يمكنك تحديد دبوس MK للتبديل TX / RX RS-485 ، ودبوس MK للتحكم في وميض LED ، ودبوس MK لإدخال محمل التمهيد ، وطريقة إدخال محمل التمهيد ، واسم MK وتردده ، إلخ. بالإضافة إلى ذلك ، يمكن أن يعمل برنامج HyperTerminal القياسي القياسي كأداة مساعدة لتحميل برنامج مستخدم في MK ، أي للعمل مع برنامج bootloader ، ويستخدم بروتوكول Xmodem لتنزيل البرامج الثابتة. ومن أجل العمل بشكل ملائم وبصري مع أداة تحميل التشغيل من خلال طرف النص ، يتم توفير الوظيفة الخاصة "وضع Verbose" في أداة التهيئة. ولكن على الرغم من جاذبية hyperterminal ، قررت استخدام الأداة المساعدة التي تأتي مع محمل الإقلاع. والحقيقة هي أنه من خلال وظيفة Verbose المريحة التي تم تنشيطها في المكوِّن ، والتي تعمل من خلال المحطة الطرفية ، واجهت الموقف التالي.يحدث ذلك أحيانًا عندما "تصادم" مرور البيانات في الخط (كلا الجهازين في وضع TX) ، ونتيجة لذلك أصبح MAX485 في كاميرا الفيديو ساخنًا جدًا وفشل ، أو بالأحرى ليس تمامًا ، ولكن فقط قسم RX (نقل البيانات عبر RS-485 إلى الكاميرا) . وبسبب هذا ، تخليت عن HyperTerminal. وهناك إزعاج آخر. لا يعمل HyperTerminal مع الملفات النصية HEX ولا يقبل سوى ملف ثنائي. لذلك ، سيتعين علي تطبيق تحويل إضافي من سداسي إلى سلة. بعد أن تم إنشاء ملف HEX الخاص ببرنامج bootloader ، قمت بخياطته في MK باستخدام برنامج PonyProg ومبرمج SPI المعتاد. ونتيجة لذلك ، يعمل محمل الإقلاع على النحو التالي. عند تشغيل كاميرا الفيديو ، يتم تنشيط أداة تحميل التشغيل على الفور. ينتظر اتصالًا من الأداة المساعدة لمدة ثانية واحدة ، ثم تبدأ البرامج الثابتة الرئيسية في العمل. إذا تم تأسيس الاتصال بنجاح ،ثم تبدأ عملية التفليش. في الوقت نفسه ، يجب فصل الطرف الآخر من خط RS-485 مسبقًا عن DVR وتوصيله بالكمبيوتر عبر محول RS485 <-> RS232 أو RS485 <-> USB. بالمناسبة ، حول المحولات. نشأ السؤال عن كيفية صنع هذا المحول بنفسك ، لأن المحولات المشتراة باهظة الثمن. بدت على الإنترنت ، وجدت دائرة محول RS485 <-> RS232 بسيطة. هو مبين في الشكل أدناه. وتتكون بشكل أساسي من دوائر دقيقة جدًا MAX232 و MAX485 ، ويتم تبديل TX / RX عن طريق الإشارة من الإخراج الثالث لموصل منفذ COM للكمبيوتر من خلال دائرة الصمام الثنائي الزينر. بمعنى ، يتم تبديل MAX485 بواسطة حركة مرور البيانات التي يرسلها الكمبيوتر. كل شيء بسيط وبارع.RS232 أو RS485 <-> USB. بالمناسبة ، حول المحولات. نشأ السؤال عن كيفية صنع هذا المحول بنفسك ، لأن المحولات المشتراة باهظة الثمن. بدت على الإنترنت ، وجدت دائرة محول RS485 <-> RS232 بسيطة. هو مبين في الشكل أدناه. وتتكون بشكل أساسي من دوائر دقيقة جدًا MAX232 و MAX485 ، ويتم تبديل TX / RX عن طريق الإشارة من الإخراج الثالث لموصل منفذ COM للكمبيوتر من خلال دائرة الصمام الثنائي الزينر. بمعنى ، يتم تبديل MAX485 بواسطة حركة مرور البيانات التي يرسلها الكمبيوتر. كل شيء بسيط وبارع.RS232 أو RS485 <-> USB. بالمناسبة ، حول المحولات. نشأ السؤال عن كيفية صنع هذا المحول بنفسك ، لأن المحولات المشتراة باهظة الثمن. بدت على الإنترنت ، وجدت دائرة محول RS485 <-> RS232 بسيطة. هو مبين في الشكل أدناه. وتتكون بشكل أساسي من دوائر دقيقة جدًا MAX232 و MAX485 ، ويتم تبديل TX / RX عن طريق الإشارة من الإخراج الثالث لموصل منفذ COM للكمبيوتر من خلال دائرة الصمام الثنائي الزينر. بمعنى ، يتم تبديل MAX485 بواسطة حركة مرور البيانات التي يرسلها الكمبيوتر. كل شيء بسيط وبارع.وتتكون بشكل أساسي من دوائر دقيقة جدًا MAX232 و MAX485 ، ويتم تبديل TX / RX عن طريق الإشارة من الإخراج الثالث لموصل منفذ COM للكمبيوتر من خلال دائرة الصمام الثنائي الزينر. بمعنى ، يتم تبديل MAX485 بواسطة حركة مرور البيانات التي يرسلها الكمبيوتر. كل شيء بسيط وبارع.وتتكون بشكل أساسي من دوائر دقيقة جدًا MAX232 و MAX485 ، ويتم تبديل TX / RX عن طريق الإشارة من الإخراج الثالث لموصل منفذ COM للكمبيوتر من خلال دائرة الصمام الثنائي الزينر. بمعنى ، يتم تبديل MAX485 بواسطة حركة مرور البيانات التي يرسلها الكمبيوتر. كل شيء بسيط وبارع.


. 13. RS-232 <-> RS-485.

بعد إتقان أداة تحميل التشغيل ، في وقت فراغي ، قررت البحث في بصريات كاميرا الفيديو. بتعبير أدق ، أصبح من المثير للاهتمام بالنسبة لي مجموعات قيم التكبير والتركيز التي ستنتج صورًا مركزة على مسافات مختلفة من العدسة إلى الهدف. اسمحوا لي أن أذكركم بأن المنطقة ذات القيم المتبادلة المختلفة للتكبير والتصغير يتم وصفها بواسطة منطقة خماسية (تقريبًا مستطيلة). على سبيل المثال ، خذ المسافة من العدسة إلى الهدف 10 سم. الوسيطة (على طول محور الخراج) للزوم لها مجموعة من القيم من -600 إلى 600. من الضروري تحديد قيمة التركيز عند كل قيمة تكبير يكون فيها الهدف أمام العدسة في صورة الفيديو. ثم تحتاج إلى عمل طاولة. بالطبع ، ليس من المنطقي فرز جميع قيم التكبير / التصغير 1200 ، يكفي أخذ بضع عشرات من القيم بخطوة متساوية معينة. على هذا النحو ، اخترت القيمة 50.في كل قيمة تكبير مع هذه الخطوة (-600 ، -550 ، -500 ، ...) اخترت قيمة التركيز وسجلت نتائج القياس. لقد قمت بإجراء مماثل مع مسافات أخرى من العدسة إلى الهدف: 50 سم ، 1 م ، 10 م ، 100 م. وكانت النتيجة مجموعة من المنحنيات التي عرضتها في Excel.


. 14. Z-F .

بالنظر إلى الرسوم البيانية ، أريد أن أقدم الكثير من التعليقات. عند التكبير / التصغير الأدنى ، تكون قيم التركيز أقل قليلاً من "الوسط" (صفر) لأي مسافة تقريبًا. ينتهي المنحنى الوردي لمسافة 10 سم بقيمة تكبير تبلغ حوالي 250 ، والتي تتوافق مع الحد الأدنى لقيمة التركيز. هذا المنحنى له شخصية متناقصة ومحدبة لأعلى. المنحنى الأحمر لمسافة 1 م له شكل مختلف تمامًا. أولاً ، إنها ليست رتيبة ، وثانياً ، فيما يتعلق بخاصية التحدب ، هناك نقطة انعطاف. المنحنيات لمسافات 10 م و 100 م متشابهة الطبيعة ، بالمناسبة ، هذا الأخير يتطابق عمليًا ، والذي كنت أعرفه مسبقًا مسبقًا. لذلك ، المسافات التي تم قياسها من 10 و 100 متر ، بالطبع ، أخذت تقريبًا. ما يتأرجح المنحنى الأزرق لمسافة نصف متر - في البداية لم أقم بأخذ القياسات عليه.لقد اخترت هذه المسافة تقريبًا استنادًا إلى مبدأ أنه أقرب ما يمكن مع جزء من المنحنى المقابل يقترب من حدود الزاوية للمنطقة (قطع). وهكذا حدث: هذه الحدود تلمس عمليا جزء من المنحنى. بشكل عام ، تجدر الإشارة إلى أنه لا يتم استخدام النصف العلوي من المنطقة (قيم التركيز الإيجابي) عمليًا. الاستثناء على مسافة كبيرة من الهدف إلى العدسة وأكبر تكبير. ومع ذلك ، بالنسبة لجميع المسافات تقريبًا (باستثناء الأقرب ، أقل من نصف متر) ، عند التكبير / التصغير المنخفض (150 أو أقل) ، تكون قيم التركيز هي نفسها تقريبًا. بشكل عام ، يجب أن يكون لجميع وقائع القياس المذكورة تفسيرًا نظريًا ، بناءً على قوانين البصريات. لكن في الوقت الحالي ، ليس لدي أي فكرة عن أجهزة العدسات من هذا النوع. أقصى،ما واجهته في مجال البصريات هو بناء تلسكوب منكسر بسيط ذو عدستين. وفي حالة كاميرا الفيديو هذه - لم أفهم ميكانيكا البصريات. عند الإخراج ، لا تتوفر عقدين متحركين فقط: عقدة التركيز (المسؤولة عن التركيز) وعقدة التكبير. ولا أعرف كم عدد العدسات الداخلية. أفترض أن اثنين متصلان بهذه العقد المتحركة. تجدر الإشارة أيضًا إلى أنه عند ضبط التركيز ، يتغير الزوم أيضًا بشكل مرئي قليلاً ، حتى إذا تم إصلاح العقدة المقابلة.متصلة بهذه العقد المتحركة. تجدر الإشارة أيضًا إلى أنه عند ضبط التركيز ، يتغير الزوم أيضًا بشكل مرئي قليلاً ، حتى إذا تم إصلاح العقدة المقابلة.متصلة بهذه العقد المتحركة. تجدر الإشارة أيضًا إلى أنه عند ضبط التركيز ، يتغير الزوم أيضًا بشكل مرئي قليلاً ، حتى إذا تم إصلاح العقدة المقابلة.

في نهاية المقال ، ننتقل إلى الاختبار العملي لكاميرا الفيديو. قررت عدم التقاط الكثير من الصور الثابتة ، ولكن على الفور تحميل الفيديو بأكمله. لقد سجلت التقاط الفيديو من خلال الجهاز ، تمت كتابة الصوت بشكل منفصل إلى مسجل الصوت. تبلغ الدقة الأصلية 720 × 576. بعد تحميل الفيديو على YouTube ، تغيرت جودته بشكل ملحوظ.


عند تشغيل الكاميرا ، فإن أول ما يحدث هو تهيئة محركات السائر من الزوم والتركيز على خلفية صورة الفيديو. هذه الصورة باللونين الأبيض والأسود وبدون AGC ، نظرًا لأن إجراء تهيئة معالج الفيديو لم يمر بعد. في أسفل اليسار ، سيعرض التاريخ والوقت الحاليان تاريخ ووقت تجميع البرنامج الثابت الحالي للكاميرا. في رمز مصدر البرنامج الثابت ، قمت بإنشاء المتغيرات المقابلة الموجودة في العناوين الثابتة في رمز HEX. من المفترض أنه في مرحلة التجميع ، وبشكل أدق بعد ذلك ، سيتم تنفيذ برنامج تلقائيًا يأخذ قيم المتغيرات من وقت النظام ويدرجها في ملف HEX في العناوين المطلوبة. بالإضافة إلى ذلك ، لا تزال هناك حاجة لإعادة فرز المجموع الاختباري. ربما هناك طريقة أبسط. في المثال في الفيديو ، هذه المتغيرات تساوي صفر ، لأنني لم أقم بتنفيذ هذه الوظيفة بعد.

بعد تهيئة SD ، تتم تهيئة معالج الفيديو ويتم عرض رسالة ترحيب فورًا على خلفية صورة الفيديو. عند ضبط الزوم والتركيز ، يتم عرض إحداثياتهم في أسفل اليمين. في الفيديو ، أوضح استخدام وظيفة حفظ واستدعاء القوالب (الإعدادات المسبقة) للتكبير والتركيز في أجزاء مختلفة من الصورة. عند مسح إعداد مسبق ، تكتسب المتغيرات المقابلة القيمة 0xFFFF ، والتي تتوافق مع القيمة -1. هذه الوظيفة ، من حيث المبدأ ، غير ضرورية ، ويمكن استبعادها.

في القسم الأخير من القائمة ، والذي يستخدم لتصحيح الأخطاء ، أشرح سجل الفئة 9 بايت 3. الوظائف المقابلة لهذا البايت موجودة في القسم السابق من القائمة ، كتبت عنها عدة مرات. نظرًا لأن الحالة الحالية للبايت لا تتم قراءتها من معالج الفيديو ، قمت بتعيينها يدويًا على "48" كواحدة من الحالات المقبولة. بعد ذلك ، أقوم بتغيير البتات الفردية لهذا البايت ، وبالتالي إظهار وظائف "Mirror" و "Inverse Burst".

عند ضبط مستوى "الاندفاع" في القسم قبل الأخير من القائمة ، ستلاحظ وجود خطأ صغير في البرنامج الثابت يسهل إصلاحه. من أوجه القصور الأخرى - في بعض الأحيان ، عند تحديث الوقت ، تحدث فجوات في الشخصيات. أعتقد أن هذا يرجع إلى التثبيت "المعوج" للإلكترونيات داخل كاميرا الفيديو.

بشكل عام ، عند تشغيل الكاميرا ، تم العثور على مضايقات طفيفة مرتبطة بتنقل القائمة. لذلك ، من الممكن أن تتم المراجعة اللازمة بمرور الوقت.

نعم ، لقد نسيت تقريبا. كما وعدت ، أحمل صورتين لما تحول إليه ملء كاميرا الفيديو بعد التطوير.


تين. 15. عرض محدث لكاميرا الفيديو داخل القاع.


تين. 16. عرض محدث لكاميرا الفيديو داخل الجزء العلوي.


All Articles