جدول المحتويات:

الوقوع في Stm32: جهاز التحكم عن بعد لمركز الوسائط المنزلية: 4 خطوات (بالصور)
الوقوع في Stm32: جهاز التحكم عن بعد لمركز الوسائط المنزلية: 4 خطوات (بالصور)

فيديو: الوقوع في Stm32: جهاز التحكم عن بعد لمركز الوسائط المنزلية: 4 خطوات (بالصور)

فيديو: الوقوع في Stm32: جهاز التحكم عن بعد لمركز الوسائط المنزلية: 4 خطوات (بالصور)
فيديو: Умная электронная игрушка для кота, своими руками 2024, ديسمبر
Anonim
الوقوع في Stm32: جهاز التحكم عن بعد لمركز الوسائط المنزلية
الوقوع في Stm32: جهاز التحكم عن بعد لمركز الوسائط المنزلية

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

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

الخطوة 1: الفكرة

الفكرة
الفكرة
الفكرة
الفكرة

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

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

تحتوي وحدات التحكم الصغيرة stm32 على ميزة مدمجة لالتقاط إشارة PWM. يمكن وضع كل عداد مؤقت لوحدة التحكم الصغيرة في "التقاط إشارة PWM أكثر" عندما تحفظ متغيرات القناة للمؤقت الطول الإجمالي للنبضة وطول الذروة. هنا يجب أن أسلط الضوء على التفاصيل الصغيرة: عندما يلتقط مستقبل الأشعة تحت الحمراء الإشارة ، يصبح الجهد على دبوس العمل الخاص به 0 وفي حالة الخمول ، يكون الجهد في دبوس العمل 5 أو 3.3 فولت اعتمادًا على جهد إمداد مستقبل الأشعة تحت الحمراء. أي أن جهاز الاستقبال "يعكس" الإشارة.

مع وضع الالتقاط PWM ، يمكن بسهولة تحويل وحدة التحكم الصغيرة stm32 إلى مترجم عن بعد بالأشعة تحت الحمراء من جهاز التحكم عن بعد بالأشعة تحت الحمراء إلى رموز لوحة المفاتيح. ثم يمكنك بدء برنامج التصور المفضل لديك ، على سبيل المثال Kodi of VLC لتشغيل فيلمك المفضل في مركز الوسائط.

الخطوة 2: إنشاء وحدة التحكم

إنشاء وحدة التحكم
إنشاء وحدة التحكم
إنشاء وحدة التحكم
إنشاء وحدة التحكم
إنشاء وحدة التحكم
إنشاء وحدة التحكم
إنشاء وحدة التحكم
إنشاء وحدة التحكم

لبرمجة وحدة التحكم الصغيرة stm32 ، أود أن أوصي بالبرنامج المجاني من STM: طاولة عمل النظام (المعروفة أيضًا باسم ac6) وأداة تكوين اللوحة cubeMX. لتحميل البرنامج في وحدة التحكم الدقيقة ، يمكن استخدام استنساخ رقاقة محول ST-Link V2. ملفات مشروع طاولة عمل النظام المرفقة بهذه الخطوة ، ملف F1-IR_remote.zip.

تعمل أداة تكوين اللوحة على تبسيط عملية التكوين الأولي للأجهزة لوحدة التحكم الدقيقة الخاصة بنا.

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

  • قم بإنشاء مشروع جديد وحدد اللوحة stm32f103c8
  • حدد "مرنان كريستال / سيراميك" لعنصر "الساعة عالية السرعة (HSE)" في قائمة RCC.
  • حدد "Serial Wire" لعنصر "التصحيح" في قائمة SYS.
  • قم بتكوين المؤقت رقم 2 (قائمة TIM2) في وضع التقاط PWM كما هو موضح في الصورة:

    • وضع الرقيق -> وضع إعادة التعيين
    • مصدر الزناد -> TI1FP1
    • مصدر الساعة -> الساعة الداخلية
    • القناة 1 -> وضع التقاط الإدخال المباشر
  • قم بتعيين خانة الاختيار "Device (FS)" في قائمة USB
  • حدد عنصر القائمة المنسدلة "فئة جهاز الواجهة البشرية (HID)" في عنصر "فئة FS IP" في قائمة USB_DEVICE
  • في لوحة تكوين الساعة ، تأكد من توفير 72 ميجاهرتز للمؤقت رقم 2 لأننا نحتاج إلى عدد الموقت في كل 1 mks.
  • في لوحة التكوين ، قم بتكوين جهاز USB كما هو موضح في الصورة
  • في لوحة التكوين ، قم بتكوين المؤقت رقم 2 على النحو التالي:

    • Prescaller - 71 (من 0 إلى 71) - علامة ثانية دقيقة واحدة!
    • وضع العداد - لأعلى
    • فترة العداد - 39999 (يجب أن نكون قادرين على قياس النبض الطويل)
    • قناة التقاط الإدخال 1 - حافة الهبوط (تذكر أن الإشارة من مستقبل الأشعة تحت الحمراء معكوسة)

في وضع الالتقاط PWM ، يعمل المؤقت رقم 2 على النحو التالي:

عندما يتم الكشف عن الجبهة الساقطة ، سيتم حفظ عداد المؤقت في سجل القناة 1 وسيتم إعادة تعيين عداد المؤقت مع 0. ثم سيستمر المؤقت في العد التصاعدي للاتجاه. لذلك يمكننا بسهولة قياس طول النبضة بالثواني الدقيقة.

بشكل افتراضي ، تحاكي فئة STM32 USB HID ماوس USB. هنا يمكنك العثور على التعليمات الخاصة بتحويل وحدة التحكم إلى لوحة مفاتيح.

الخطوة الثالثة: تصميم وحدة التحكم

يعمل المشروع مع جهاز التحكم عن بعد Panasonic ومركز Kodi الإعلامي. لتخصيص المشروع لوحدة التحكم الخاصة بك ، يجب عليك إضافة مصفوفة الكود لجهاز التحكم عن بُعد كما فعلت مع جهاز التحكم عن بُعد من باناسونيك (رمز باناسونيك) إلى رأس Inc / code.h. كما ترى ، كل أمر له معرّف فريد (في IRcommmand enum). هناك 24 أمرًا (0-23) يتعرف عليها المشروع. يتم فرز الأمر حسب الصلة.

typedef enum {IR_play = 0، IR_stop، IR_pause، IR_forward، IR_rewind، IR_last_channel، IR_OSD، IR_prevous_menu، IR_left، IR_right، IR_up، IR_down، IR_enter، IR_chapter_next، IR_chapter_previous، IRslist_info، IR_chapter_previous ، IR_power ، IR_unknown} أوامر IR ؛

CONST uint16_t kbrd_kodi = {HID_KEY_P، HID_KEY_X، HID_KEY_SPACE، HID_KEY_F، HID_KEY_R، HID_KEY_0، HID_KEY_M، HID_KEY_BACKSPACE، HID_KEY_LEFT، HID_KEY_RIGHT، HID_KEY_UP، HID_KEY_DOWN، HID_KEY_ENTER، HID_KEY_DOT، HID_KEY_COMMA، HID_KEY_S، HID_KEY_I، HID_KEY_T، HID_KEY_L، (uint16_t (HID_LEFT_CTRL) << 8) | HID_KEY_T ، HID_KEY_V ، HID_KEY_Z ، HID_KEY_W ، HID_KEY_C} ،

CONST uint32_t panasonicCode = {0xd00505d، 0xd00000d، 0xd00606d، 0xd00525f، 0xd00929f، 0x100eced، 0xd00101d، 0x1002b2a، 0x1007273، 0x100f2f3، 0x1005253، 0x100d2d3، 0x1009293، 0x1002c2d، 0x100acad، 0x1009c9d، 0x1008e8f، 0x1004e4f، 0x100cecf، 0x1000e0f، 0x180c041، 0x1801091 ، 0x180a021 ، 0xd00bcb1} ؛

ثم يجب عليك إضافة جهاز التحكم عن بعد الخاص بك في طريقة init () في IR.cpp مع وظيفة addRemote (). وسيطات الدالة هي:

  • عدد البتات في الحزمة
  • طول رأس الحزمة
  • طول البت "صفر"
  • طول بت "واحد"
  • المؤشر إلى مجموعة التعليمات البرمجية
  • عدد عناصر المصفوفة

باطل IRcmd:: init (void) {addRemote (48، 5252، 902، 1755، panasonicCode، sizeof (panasonicCode) / sizeof (uint32_t))؛

}

كما يحتوي الملف على جدول آخر لتحويل الأوامر إلى رموز لوحة المفاتيح. تحتوي مجموعة kbdr_kodi على الرموز الرئيسية لمركز وسائط Kodi. يمكنك إضافة مصفوفة أخرى لبرنامج مركز الوسائط الخاص بك ، على سبيل المثال ، مشغل vlc. إذا كنت تريد إضافة جدول تطبيق مركز وسائط آخر ، فيمكنك إنشاء كائن KBD آخر ، وتهيئته في main.cpp.

الخطوة 4: أدوات لتبسيط الخياطة

أدوات لتبسيط الخياطة
أدوات لتبسيط الخياطة
أدوات لتبسيط الخياطة
أدوات لتبسيط الخياطة

هناك مشروعان آخران في المستودع

  • فحص الأشعة تحت الحمراء - يسمح بقياس معلمات التوقيت لإشارات جهاز التحكم عن بُعد.
  • IR_capture - السماح بالتقاط رموز HEX لجهاز التحكم عن بُعد.

ما عليك سوى تحميل مشروع فحص الأشعة تحت الحمراء وتوصيل منفذ USB بلوحة bluepill بجهاز الكمبيوتر الخاص بك. ثم قم بتشغيل أي برنامج طرفي على جهاز المنفذ التسلسلي الظاهري ، المطابق للوحة stm32. أثناء الضغط على الأزرار الموجودة على جهاز التحكم عن بُعد ، سيقيس البرنامج النبضات المستلمة ويطبع متوسط الأوقات لنبضات مختلفة. يجب تبسيط الكشف عن طول النبضة لرأس الحزمة ، صفر وبتة واحدة.

في مشروع فحص الأشعة تحت الحمراء ، يعمل المؤقت رقم 2 في وضع التقاط PWM بقناتين: القناة الأولى تلتقط طول النبضة بالكامل وتلتقط القناة 2 طول الذروة. عند اكتشاف حافة الإشارة الساقطة ، يتم حفظ قيمة المؤقت في سجل القناة الأولى وإعادة تعيين المؤقت بـ 0. عند اكتشاف الحافة الصاعدة للإشارة ، يتم حفظ عداد المؤقت في سجل القناة 2.

لالتقاط رموز أزرار جهاز التحكم عن بعد الخاص بك ، يمكن استخدام مشروع IR_capture. في ملف main.c ، يجب إضافة التعريف البعيد مثل هذا:

IRcode panasonic = {.hdr = 5252،.bits = 48،.zero = 902،.one = 1755،.dev = 60} ؛

  • .hdr - طول الرأس في mks
  • .bits - عدد البتات في الحزمة
  • .zero - طول بت الصفر
  • .one - الطول واحد بت واحد
  • .dev - الانحراف (الفرق في الأوقات التي يمكن قبولها). عادة ما يكون 1/10 من أصغر طول.

ثم أضف جهاز التحكم عن بُعد إلى قائمة أجهزة التحكم عن بُعد المدعومة:

const IRcode * remote [2] = {& panasonic، & pioneer}؛

موصى به: