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

جهاز استقبال ATtiny85 IR USB: 11 خطوة (بالصور)
جهاز استقبال ATtiny85 IR USB: 11 خطوة (بالصور)

فيديو: جهاز استقبال ATtiny85 IR USB: 11 خطوة (بالصور)

فيديو: جهاز استقبال ATtiny85 IR USB: 11 خطوة (بالصور)
فيديو: Arduino 10 Channels Wireless Transmitter Receiver | nrf24l01+| DIY 🔥 2024, يوليو
Anonim
ATtiny85 جهاز استقبال IR USB
ATtiny85 جهاز استقبال IR USB

تحذير ، هذا التعليمات أصبحت قديمة

تم تصميم مكتبة v-usb للعمل مع بروتوكول USB 1.1 الذي لا يكاد يوجد في الوقت الحاضر. مع وصول USB3 ، ستواجه أكثر من مجرد صداع في محاولة تشغيل أجهزة v-usb. بعد تغيير مركز الوسائط المتعددة الخاص بي ، واجهت العديد من مشكلات الاستقرار وعلى الرغم من عمل جهاز الاستقبال ، إلا أنه توقف عن العمل بعد فترة. لقد فشلت في محاولة إصلاحه. لقد صنعت أيضًا إصدارًا atmega328p ولكن هذا الإصدار كان لديه نفس المشكلات. لم يساعد استخدام مؤقت المراقبة لإعادة ضبط اللوحة بشكل دوري ، لذا استسلمت من v-usb.

اجعل لنفسك معروفًا ولا تمضي قدمًا في هذه التعليمات إلا إذا كانت للأغراض التعليمية. أوصي بدلاً من ذلك بشراء وحدة شريحة ATmega 32U4 التي دمجت بالفعل واجهة USB واتبع هذا الدليل:

www.sparkfun.com/tutorials/337

ثم قم برمي مستشعر الأشعة تحت الحمراء TSOP31238 وأنت على ما يرام.

مرحبا صناع! هذه تعليمات لبناء مستقبل USB IR يعمل باستخدام متحكم Attiny85 لقد بدأت هذا المشروع للتغلب على نقص الدعم (على الأقل الدعم الكامل) لبعض أجهزة التحكم عن بعد IR في نظام التشغيل GNU / Linux. باتباع هذه التعليمات ، يمكنك إنشاء مستقبل USB IR قابل للبرمجة يعمل مع أي جهاز تحكم عن بعد بالأشعة تحت الحمراء مقابل بضعة دولارات.

بادئ ذي بدء ، لن يكون هذا التوجيه موجودًا بدون العمل الجاد للأشخاص الذين أنشأوا المكتبات التي أستخدمها هنا:

  • David A. Mellis لجوهره اللطيف
  • برنامج Rowdy Dog لمكتبتهم TinyTuner
  • برنامج Rowdy Dog لأداة تحميل التشغيل الصغيرة الخاصة بهم
  • Rancidbacon (https://rancidbacon.com/) لمنفذ اردوينو الخاص به من مكتبة v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • راجع jaydee لمكتبة IR الخاصة به للنوى الصغيرة الموجودة في تعليقات كود https://www.instructables.com/id/Attiny-IR-librar… على https://www.instructables.com/id/Attiny-IR -مكتبة …

في بعض الأحيان ليس من السهل العثور على المالك المناسب لمكتبة ، لذلك في حالة ارتكاب خطأ ما ، يرجى ترك تعليق وسأقوم بحل المشكلة في أسرع وقت ممكن.

يوجد هذا الدليل لأنني لم أجد برنامجًا تعليميًا / دليلًا كاملاً يعمل خارج الصندوق (قد يكون موجودًا ، لكن لم أتمكن من العثور عليه) لذلك جمعت كل المعلومات المتاحة على الويب وبعد قدر كبير من التجارب و لقد توصلت إلى دليل كامل لإنشاء مستقبل USB IR يعمل بشكل جيد.

المصادر الرئيسية للمعلومات التي اتبعتها:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • https://forum.arduino.cc/index.php؟PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

الخطوة الأولى: بعض الاعتبارات

  • لا أمتلك مبرمج AVR ISP ولا أتخيل حقًا شراء واحد لذلك استخدمت Arduino لبرمجة attiny85
  • لا يهمني أي نظام تشغيل آخر غير GNU / Linux لذا لا أعرف ما إذا كان سيعمل بطريقة أخرى.
  • هناك مكتبات IR أخرى لكنني لم أتمكن من جعلها تعمل حتى مع اردوينو. ضع في اعتبارك أنني بدأت بمعرفة محدودة حول مكتبات IR. ربما يمكنني جعلهم يعملون الآن بعد الخبرة المكتسبة في التعامل مع قدر لا بأس به من القضايا. على أي حال ، كنت ضائعًا ويائسًا قبل أن أجد المكتبة التي قدمها Seejaydee واستخدمتها منذ ذلك الحين (شكرًا جزيلاً يا رجل!).
  • هناك تكوينات أخرى للأجهزة ، لكنني لم أستخدم سوى التكوينات التي تستخدم 5 فولت لتشغيل attiny85 واثنين من صمامات زينر 3.6 فولت 0.5 واط لضبط الجهد الكهربائي لخطوط البيانات ، فهي تعمل خارج الصندوق لذا لم أعبث بها تكوينات أخرى.
  • يمكنك استخدام بلورة 16 ميجا هرتز أو يمكنك استخدام مكتبة tinytuner لمعايرة الساعة الداخلية لـ attiny85. أنصح بشدة باستخدام الكريستال ، فهو أكثر ثباتًا وربما يوفر لك الكثير من الصداع.
  • أستخدم هنا محمل إقلاع مختلفين لـ attiny85:

أ) إصدار برنامج Rowdy Dog ، يحتوي على واجهة تسلسلية رائعة جدًا وصغيرة جدًا بحيث يكون لديك مساحة أكبر لبرنامجك والمكتبات الأخرى. تكمن المشكلة في أنه لبعض الأسباب على الرغم من أنه يعمل بشكل جيد ، فقد تم فصل جهاز USB بعد مرور بعض الوقت (يمكنك العثور على المشكلات المتعلقة بالأمر dmesg). لا أعرف ما إذا كانت هذه مشكلة أساسية أو مزيجًا مختلطًا من النواة بالإضافة إلى المكتبات المختارة ، لذلك قررت بعد فترة استخدام هذا النواة فقط لفك تشفير المفاتيح البعيدة ومعايرة الساعة (عند عدم استخدام 16 ميجا هرتز كريستال). بعد ذلك ، قمت فقط بنسخ أداة تحميل التشغيل Mellis وتحميل الرسم النهائي الذي لا يستخدم الواجهة التسلسلية.

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

الخطوة 2: لنبدأ بالأجهزة

لنبدأ بالأجهزة
لنبدأ بالأجهزة
لنبدأ بالأجهزة
لنبدأ بالأجهزة
لنبدأ بالأجهزة
لنبدأ بالأجهزة

الأدوات التي تحتاجها:

  • لوحة متوافقة مع اردوينو
  • محول تسلسلي إلى USB لفك تشفير المفاتيح البعيدة (فقط استخدم FT232RL)
  • جهاز كمبيوتر مثبت عليه GNU / Linux وتم تكوين Arduino IDE بشكل صحيح ، فأنا أستخدم arduino IDE 1.8.0
  • جهاز تحكم عن بعد يعمل بالأشعة تحت الحمراء لاختبار جهازك (حتى لو كان جهازًا سيئًا مثل الموجود في مجموعات بداية اردوينو سيعمل)
  • مقياس متعدد لتصحيح أخطاء اللوحة الخاصة بك (أتمنى ألا تحتاجها ، حظًا سعيدًا!)

قائمة المواد:

  • 1 أتيني 85
  • 2 مقاومات 68R
  • 1 1.5 كيلو المقاوم
  • 1 4.7 كيلو المقاوم
  • 1 16 ميجا هرتز الكريستال
  • 1 22pF مكثف
  • 1 0.1 فائق التوهج مكثف
  • 1 10 فائق التوهج مكثف
  • 2 3.6V 0.5W ثنائيات زينر
  • 1 منفذ USB من النوع A ذكر
  • 1 دبوس قطاع مع 6 دبابيس لبرمجة وتصحيح اللوحة.
  • 1 مستشعر الأشعة تحت الحمراء TSOP31238
  • الكثير من القهوة لإبقائك مستيقظًا

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

لتوصيل attiny85 بجهاز الكمبيوتر ، يستخدم التصميم النهائي موصل USB من النوع A ملحومًا باللوحة ، ولكن بالنسبة للنموذج الأولي ، ستحتاج إلى عمل كبل USB يمكنك توصيله بلوحة توصيل:

لحام في قطعة صغيرة من 4 دبابيس perfboard ، ثم قطع كبل USB قديم ولحام المسامير بأربعة من الأسلاك داخل كبل USB:

  • الأحمر هو VCC (5V)
  • الأسود هو GND
  • الأبيض هو D-
  • الأخضر هو D +

احتفظ بكل شيء مع الغراء الساخن.

نحتاج الآن إلى توصيل مبرمج ISP (Arduino) و USB بالمحول التسلسلي (FT232RL) ومستشعر الأشعة تحت الحمراء إلى attiny85.

يمكنك ترك الاتصال معًا حتى تتمكن من نسخ محمل الإقلاع المختلفة وتحميل الرسومات والتحقق من المنفذ التسلسلي دون تغيير الأسلاك ،

للقيام بذلك ، قم بتوصيل كل شيء باتباع الإرشادات التالية:

مبرمج ISP (Arduino): هذا يسمح لنا بحرق محمل الإقلاع وتحميل الرسومات

  • attiny85 PB0 (pin5) إلى pin11 (MOSI) في اردوينو
  • attiny85 PB1 (pin6) إلى pin12 (MISO) في اردوينو
  • attiny85 PB2 (pin7) إلى pin13 (SCK) في اردوينو
  • attiny85 RESET (pin1) مع pullup (4.6k إلى VCC) إلى pin10 في اردوينو
  • attiny85 VCC إلى 5 فولت في اردوينو
  • attiny85 GND إلى GND في اردوينو

محول USB إلى تسلسلي (FT232RL): هذا يسمح لنا بفحص المنفذ التسلسلي

  • attiny85 PB0 (pin5 RX) إلى TX في FT232RL
  • attiny85 PB2 (pin7 TX) إلى RX في FT232RL
  • attiny85 GND (pin4) إلى GND على FT232RL
  • نظرًا لأن attiny85 يتم تشغيله بالفعل بواسطة arduino ، فلن تحتاج إلى توصيل 5v على FT232RL ، وإلا قم بتوصيل: attiny85 VCC (pin8) إلى 5V على FT232RL

محول USB إلى تسلسلي (FT232RL) فقط لمعايرة الساعة (فقط لمحمل الإقلاع "ATtiny85 @ 8MHz (مذبذب داخلي ؛ BOD معطل)")

  • PB4 (pin3 RX) إلى TX في FT232RL attiny85
  • PB3 (pin2 TX) إلى RX في FT232RL attiny85
  • GND (pin4) إلى GND على FT232RL
  • نظرًا لأن attiny85 يتم تشغيله بالفعل بواسطة arduino ، فلن تحتاج إلى توصيل 5v على FT232RL ، وإلا قم بتوصيل: attiny85 VCC (pin8) إلى 5V على FT232RL

إذا كنت تستخدم بلورة 16 ميجا هرتز ، فقم بتوصيلها بدبابيس Attiny85 PB3 (pin2) و PB4 (pin3) وقم بتوصيل كل دبوس بـ GND أيضًا من خلال غطاء 22pF لكل منهما.

قم بتصفية Attiny85 VCC باستخدام مكثفات 0.1 فائق التوهج و 10 فائق التوهج تربطها بالتوازي مع GND

قم بتوصيل دبوس خرج مستشعر الأشعة تحت الحمراء بـ attiny85 PB1 (pin6) ، قم بتشغيله.

بناء وتوصيل واجهة USB:

  • GND (السلك الأسود): قم بتوصيله بـ GND المشترك (جميع الأسس متصلة ببعضها البعض)
  • D- (سلك أبيض) متصل بـ attiny85 PB0 (pin5) من خلال المقاوم 68R ، قم بتوصيله أيضًا بالأرض من خلال زنر 3.6V 0.5W وسحبه إلى VCC بمقاوم 1.5K
  • D + (السلك الأخضر) متصل بـ PB2 من خلال المقاوم 68R ، قم بتوصيله بالأرض من خلال 3.6V 0.5W zener
  • 5 فولت ، يمكنك تركه غير متصل لأن كل شيء يتم تشغيله بواسطة Arduino في هذه المرحلة ، وإلا قم بتوصيله بـ attiny85 VCC

ترتبط ثنائيات زينر بحيث ترتبط الأنودات بـ GND ويتم توصيل الكاثودات بخطوط البيانات D + و D-.

الخطوة الثالثة: التصميم النهائي

تصميم نهائي
تصميم نهائي
تصميم نهائي
تصميم نهائي
تصميم نهائي
تصميم نهائي

بالنسبة للتصميم النهائي ، يمكنك استخدام لوحة perfboard مع مكونات الفتحة أو حفر اللوحة الخاصة بك واستخدام مكونات smd. لمعرفة كيفية حفر لوحة ، فقط google it ، هناك دروس تعليمية رائعة متاحة على الإنترنت.

لقد قمت بحفر اللوح الخاص بي وأنا سعيد جدًا بالنتائج النهائية (لوحة صغيرة ومستقرة وقوية). نعم ، أعلم أن القطع تمتص ، لكنني لم أستطع استخدام أي أداة كهربائية في وقت متأخر من الليل وأنا فقط قص اللوح بمقص القصدير الخاص بي.

بالمناسبة ، الآثار الموجودة على الصور ليست نحاسية عارية ، فقد تمت معالجتها بمواد كيميائية سيئة تؤدي إلى تليين النحاس قليلاً (يُشتبه في أنها تسبب السرطان ، لذا استخدمها بحذر شديد ، وكرات اللاتكس وقناع الغبار):

استخدم المخططات المذكورة أعلاه لتصميم التخطيط الخاص بك أو يمكنك فقط استخدام بصمة ثنائي الفينيل متعدد الكلور لتحفر اللوحة الخاصة بك.

الخطوة 4: التعامل مع البرنامج

الدائرة في هذا المشروع سهلة للغاية ، وبدلاً من ذلك يتطلب البرنامج جهدًا أكبر.

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

نحتاج الآن إلى تثبيت وتكوين بعض المكتبات:

  • مكتبة v-usb لمكتبة اردوينو: تسمح هذه المكتبة بالتعرف على المتحكم الدقيق بواسطة الكمبيوتر كلوحة مفاتيح USB HID ، وسنستخدمها لإرسال ضغطات المفاتيح إلى جهاز الكمبيوتر. تحتاج هذه المكتبة إلى بعض التغييرات لتكون متوافقة مع attiny85
  • مكتبة tinytuner فقط إذا كنت لا تستخدم بلورة 16 ميجا هرتز. ستحتاج بعد ذلك إلى معايرة الساعة الداخلية للمتحكم الدقيق. هذه المكتبة تعمل خارج الصندوق.
  • مكتبة Attiny-IR للتفاعل مع مستشعر الأشعة تحت الحمراء. هذه المكتبة تعمل خارج الصندوق.

نحتاج أيضًا إلى محمل إقلاع:

  • إصدار برنامج الكلب ، مع توفر الواجهة التسلسلية. يحتاج برنامج bootloader هذا إلى قرص صغير للعمل مع attiny85 لأنه يستخدم timer1 لوظيفة millis () ولن يعمل مع مكتبة IR. نحتاج إلى تغيير المؤقت إلى timer0.
  • إصدار Mellis ، أداة تحميل التشغيل المستقرة التي سنستخدمها في المرحلة النهائية. هذا يعمل خارج الصندوق.

الخطوة 5: تثبيت وتكوين مكتبة V-usb

قم بتنزيل المكتبة من https://code.google.com/archive/p/vusb-for-arduin… فك ضغط الملف وانسخ مكتبات المجلد / UsbKeyboard في مجلد مكتبات كراسة الرسم.

أنت الآن بحاجة إلى تحرير ملفين ليكونا متوافقين مع ATtiny85 (تم تكوينه للعمل مع اردوينو):

أ) تحرير usbconfig.h:

تحت تغيير "تكوين الأجهزة":

#define USB_CFG_IOPORTNAME Dto ## حدد USB_CFG_IOPORTNAME ب

و

#define USB_CFG_DMINUS_BIT 4 إلى # حدد USB_CFG_DMINUS_BIT 0

تحت تغيير "تكوين الأجهزة الاختياري":

#define USB_CFG_PULLUP_IOPORTNAME Dto ## حدد USB_CFG_PULLUP_IOPORTNAME B

لإنشاء مواصفات "HID متوافقة مع التمهيد" كاملة (وإلا فلن تعمل مفاتيح الوسائط المتعددة) ، قم بتغيير أيضًا:

#define USB_CFG_INTERFACE_SUBCLASS 0 // Bootto # حدد USB_CFG_INTERFACE_SUBCLASS 0x01 // التمهيد

و

#define USB_CFG_INTERFACE_PROTOCOL 0 // Keyboardto # حدد USB_CFG_INTERFACE_PROTOCOL 0x01 // Keyboard

اختياريًا ، يمكنك أيضًا تغيير اسم الشركة المصنعة والجهاز في التعريفات التالية:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

ب) تحرير UsbKeyboard.h:

يتغيرون:

PORTD = 0 ؛ // TODO: فقط لدبابيس USB؟ DDRD | = ~ USBMASK ؛

إلى

بورتب = 0 ؛ // TODO: فقط لدبابيس USB؟ DDRB | = ~ USBMASK ؛

للسماح لرموز المفاتيح بأكثر من 101 تغيير أيضًا:

0x25، 0x65، // LOGICAL_MAXIMUM (101) إلى: 0x25، 0xE7، // LOGICAL_MAXIMUM (231)

و

0x29 ، 0x65 ، // USAGE_MAXIMUM (تطبيق لوحة المفاتيح) إلى: 0x29 ، 0xE7 ، // USAGE_MAXIMUM (تطبيق لوحة المفاتيح)

قد تحتاج أيضًا إلى تعديل هذه الملفات الثلاثة:

usbdrv.husbdrv.cUsbKeyboard.h

وفي كل مرة ترى PROGMEM تضيف "const" قبل اسم نوع المتغير (على سبيل المثال: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

إذا لم يكن هذا واضحًا ، فانتقل إلى

يمكنك تجنب كل هذه التغييرات إذا قمت فقط بتنزيل المكتبة المرفقة (لقد أجريت كل هذه التغييرات بنفسي) واستخرجها داخل مجلد مكتبات كراسة الرسم:

تم تكوين لوحة مفاتيح USB لـ Attiny85

تحرير: لقد اكتشفت مؤخرًا أن Alejandro Leiva (https://github.com/gloob) قد تم الاعتناء بهذه المكتبة ويبدو أنها تعمل بشكل جيد. يمكنك أيضًا تجربة نسخته مع التغييرات الضرورية التي أجريتها لجعلها تعمل مع Attiny ، لذلك إذا كنت تريد التحقق من ذلك ، فما عليك سوى استخراجه داخل مجلد مكتبات كراسة الرسم.

تم تكوين لوحة مفاتيح USB لـ attiny85 (إصدار أليخاندرو ليفا)

الخطوة 6: تركيب مكتبات Attiny-IR و Tinytuner

أ) مكتبة Attiny-IR:

قم بتنزيله من https://drive.google.com/open؟id=0B_w9z88wnDtFNHlq… ثم قم بفك ضغطه في مجلد مكتبات كراسة الرسم.

ب) مكتبة Tinytuner:

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

غير مقتنع بعد؟ حسنًا ، قم بتنزيل المكتبة من https://storage.googleapis.com/google-code-archive… ثم قم بفك ضغطها في مجلد مكتبات كراسة الرسم.

لقد انتهينا من المكتبات ، والآن ننتقل إلى تثبيت محمل الإقلاع.

الخطوة 7: تثبيت وتكوين محمل الإقلاع

سنقوم بتثبيت اثنين من محمل الإقلاع ، أحدهما Mellis وفقًا لتجربتي أكثر استقرارًا وسنستخدمه في الرسم النهائي. الآخر الذي طورته Rowdy Dog Software هو نواة رائعة وصغيرة جدًا وبواجهة تسلسلية متكاملة ، ولكن جهاز التحكم عن بعد الخاص بي قد تعطل بعد فترة من الوقت ، لذلك سنستخدم أداة تحميل التشغيل هذه فقط لمعايرة الساعة الداخلية attiny85 وفك شفرة جهاز التحكم عن بعد الخاص بنا. أزرار.

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

لنبدأ بالتثبيت:

أ) محمل الإقلاع Mellis:

ما عليك سوى فتح تفضيلات Arduino IDE وإضافة عناوين URL لمدير اللوحات الإضافية:

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

ثم افتح مدير لوحات Arduino IDE وابحث عن attiny وقم بتثبيت اللوحات من Mellis. الآن يجب أن ترى معرف Arduino لوحات ATtiny25 / 45/85 و ATtiny24 / 44/84.

ب) محمل الإقلاع الصغير Rowdy Dog Software:

قم بتنزيل أداة تحميل التشغيل من

قم بفك ضغط الملف وانسخ المجلد الصغير داخل دفتر الرسم / الجهاز (أنشئ هذا المجلد إذا لم يكن موجودًا بعد). ثم انتقل إلى المجلد sketchbook / Hardware / tiny / avr / و:

1) انسخ ملف Prospective Boards.txt إلى ملف board.txt

2) قم بتحرير الملف platform.txt وقم بإجراء بعض التغييرات:

قم بإلغاء التعليق على المتغير compiler.path واتركه يشير إلى مجلد Hardware / tools / avr / bin / داخل مجلد تثبيت اردوينو:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER} / Hardware / tools / avr / bin /

تغيير alsocompiler. Sflags = -c -g -assembler-with-cpptocompiler. Sflags = -c -g -x المجمع-with-cpp

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

tools.avrdude.cmd.path = {runtime.ide.path} / Hardware / tools / avr / bin / avrdude

tools.avrdude.config.path = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux = {runtime.ide.path} / Hardware / tools / avr / bin / avrdude

tools.avrdude.config.path.linux = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

3) قم بتحرير ملف النوى / tiny / core_build_options.h وقم بالتغيير:

#define TIMER_TO_USE_FOR_MILLIS 1 لتعريف TIMER_TO_USE_FOR_MILLIS 0

هذا مهم للغاية ، وإلا فإن جهاز استقبال الأشعة تحت الحمراء سيخرج أصفارًا لكل زر. تقوم هذه العبارة بتكوين timer0 لوظيفة millis () مما يترك المؤقت 1 متاحًا لمكتبة IR. سيعمل المخطط النهائي على تعطيل timer0 على أي حال ، لذا لن تتوفر لديك وظيفتا millis () و delay (). قد يكون لديك وظيفة delayMicroseconds () المتاحة بدلاً من ذلك.

محمل الإقلاع هذا ضئيل للغاية ، لكنه يتضمن دعمًا تسلسليًا للكائنات:

Attiny85 PB2 (pin7) هو TX و PB0 (pin5) هو RX

يمكنك الحصول على تكوين مع مبرمج ISP (اردوينو) والمحول التسلسلي إلى USB متصل في نفس الوقت حتى لا تحتاج إلى تغيير الأسلاك كثيرًا:

الآن لدينا كل من المكتبات ومحمل الإقلاع مثبتين ومهيئين بشكل صحيح ، اكتمل العمل الشاق ويمكننا البدء في اختبار الأشياء.

الخطوة 8: حرق محمل الإقلاع وتحميل الرسومات

أنصح بشدة بتنشيط الإخراج المطول ضمن تفضيلات Arduino IDE حتى تتمكن من اكتشاف أي مشكلة نهائية.

لنسخ محمل الإقلاع في Attiny85 ، تحتاج إلى تحميل مثال ISP على Arduino ثم تحديد المبرمج Arduino كـ ISP.

الآن ضع مكثفًا 10 فائق التوهج بين إعادة الضبط ودبابيس الأرض على اردوينو (ليس هناك حاجة لعملية الحرق ، ولكن لتحميل الرسومات إلى attiny85).

الآن أصبح Arduino جاهزًا لحرق برامج تحميل التشغيل وتحميل الرسومات. تحتاج فقط إلى تحديد اللوحة المناسبة المتوافقة مع احتياجاتك وحرقها.

لتحميل رسم تخطيطي في Attiny85 ، قم بتحميله في Arduino IDE وانقر فوق "تحميل باستخدام مبرمج".

هام: عند تحميل الرسم هناك 3 خطوات ، تجميع وكتابة وتحقق. إذا نجحت عملية التجميع والكتابة ، ولكن فشلت عملية التحقق ، فمن الممكن أن يعمل الرسم على أي حال.

الخطوة 9: معايرة ساعة Attiny85 الداخلية (تخطي هذا إذا كنت تستخدم الكريستال)

إذا قررت عدم استخدام الكريستال 16 ميجا هرتز ، فأنت بحاجة إلى معايرة ساعة attiny85 الخاصة بك ، لذلك سنحتاج إلى أداة تحميل التشغيل بواجهة تسلسلية متاحة وسنستخدم مكتبة tinytuner للحصول على المعايرة الصحيحة.

اتبع الخطوات التالية

  • حدد ضمن الأدوات Arduino كمبرمج ISP
  • حدد اللوحة "ATtiny85 @ 8MHz (مذبذب داخلي ؛ BOD معطل)"
  • أفترض أن لديك اتصال ISP جاهزًا كما هو موضح قبل الاتصال وإلا فقم بالاتصالات
  • حرق محمل الإقلاع
  • لقد قام محمل الإقلاع هذا بتكوين دبابيس مختلفة للواجهة التسلسلية ، استخدم هذا التكوين فقط لمحمل الإقلاع الحالي

- PB4 (pin3 RX) إلى TX في FT232RL attiny85 - PB3 (pin2 TX) إلى RX في FT232RL attiny85 - GND (pin4) إلى GND على FT232RL نظرًا لأن attiny85 يعمل بالفعل بواسطة arduino لا تحتاج إلى الاتصال 5v على FT232RL ، وإلا قم بتوصيل: attiny85 VCC (pin8) إلى 5V على FT232RL

  • قم بتحميل مثال tinytuner إلى attiny85
  • افتح برنامج الشاشة لمراقبة الاتصال التسلسلي: screen / dev / ttyUSB0 9600
  • إعادة تعيين attiny85 توصيل دبوس RESET (pin1) إلى GND (لحظة فقط) ، يجب أن تظهر رسالة ترحيب على نافذة الشاشة
  • استمر في إرسال أحرف 'x' مفردة (بدون حرف رجوع ؛ بدون تغذية سطر) حتى تنتهي المعايرة
  • علق في مكان ما على قيمة المعايرة (OSCCAL = 0 x). هذه هي القيمة التي ستحتاج إلى الإعلان عنها في الرسومات النهائية

الخطوة 10: فك تشفير الأزرار البعيدة

حان الوقت الآن لفك تشفير الأزرار البعيدة الخاصة بنا وتخصيصها لضربات مفاتيح معينة في جهاز الكمبيوتر ، للقيام بذلك ، اتبع الخطوات التالية:

  • حدد اللوحة "ATtiny85 @ 16MHz (PLL داخلي ؛ 4.3V BOD)" إذا كنت لا تستخدم بلورة ، "ATtiny85 @ 16 MHz (بلورة خارجية ؛ 4.3 V BOD" وإلا ، ثم احرقها
  • قم بتحميل الرسم التخطيطي:
  • إذا كنت لا تستخدم بلورة ، فقم بإلغاء التعليق الذي يحتوي على متغير OSCCAL وقم بتعيينه على القيمة التي وجدتها عندما قمت بمعايرة الساعة
  • أفترض أن المستشعر متصل كما هو موضح من قبل ، وإلا قم بتوصيله
  • أفترض أيضًا أن محول FT232RL التسلسلي إلى USB متصل ، وإلا قم بتوصيله
  • إعادة تعيين attiny85 توصيل دبوس إعادة تعيين (pin1) إلى GND (فقط لحظة)
  • اضغط بشكل متكرر على أزرار جهاز التحكم عن بُعد الخاص بك وقم بسحب نافذة الشاشة ، تحتاج إلى إضافة تعليق توضيحي على الرقم الأخير لكل سجل ، كل زر قد ينتج رقمين مختلفين

مثال:

تلقى D44 3396 تلقى 544 1348

علق 3396 و 1348 بالاقتران بالزر الذي تضغط عليه للتو ، ثم يجب أن تقرر ما تريد القيام به بهذا الزر. على سبيل المثال ، قد أرغب في أن يرسل هذا الزر رمز مفتاح الوسائط المتعددة "رفع مستوى الصوت" ، ثم أحتاج إلى العثور على المعرف لرمز المفتاح هذا. للقيام بذلك ، قم بتنزيل ملف PDF:

ابحث عن قسم "صفحة لوحة المفاتيح / لوحة المفاتيح" الصفحة 53 واستخدم الأرقام الموجودة في العمود معرّف الاستخدام (ديسمبر) لربط الأزرار البعيدة برموز لوحة المفاتيح. في مثالنا يمكننا أن نرى أن رمز مفتاح "رفع الصوت" هو: 128.

قم بتحرير الملف UsbKeyboard.h داخل مكتبة UsbKeyboard من حزمة v-usb التي قمنا بتثبيتها من قبل وقم بإضافتها إلى التعريفات الحالية إذا لم تكن موجودة بالفعل:

#define KEY_VOL_UP 128

عندما ننتهي من جميع أزرار جهاز التحكم عن بعد وجميع التعريفات الموجودة في الملف UsbKeyboard.h جاهزة ، يمكننا الانتقال إلى الخطوة الأخيرة.

الخطوة 11: تحميل الرسم النهائي و Hope for the Best

تحميل الرسم النهائي والأمل للأفضل!
تحميل الرسم النهائي والأمل للأفضل!
تحميل الرسم النهائي والأمل للأفضل!
تحميل الرسم النهائي والأمل للأفضل!

لدينا الآن جميع الأزرار البعيدة التي تم فك تشفيرها ، وملف UsbKeyboard.h مليء برموز المفاتيح الخاصة بنا ، لذلك يمكننا الآن تحميل الرسم النهائي في اردوينو IDE من:

github.com/venumz/ATtiny85-USB-IR-receiver…

هذا الملف هو الملف الدقيق الذي أستخدمه لجهاز الاستقبال الخاص بي ، وهو يعمل مع جهازي تحكم مختلفين ، لذا من الواضح أنك ستحتاج إلى تحديثه للعمل مع جهاز التحكم عن بُعد / أجهزة التحكم.

إذا كنت لا تستخدم بلورة ، فقم بإلغاء التعليق الذي يحتوي على متغير OSCCAL وقم بتعيينه على القيمة التي وجدتها عندما قمت بمعايرة الساعة

لاحظ أنه يوجد في دالة الحلقة الكثير من العبارات مثل هذه:

if (results.value == 3405 || results.value == 1357) {// سهم لأعلى

إذا (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP) ؛

}

يجب عليك إنشاء بياناتك الخاصة ، واحدة لكل زر في جهاز التحكم عن بُعد. في حالة "if" ، يجب أن تضع في results.value القيم التي وجدتها لفك تشفير جهاز التحكم عن بُعد وكوسيطة لطريقة UsbKeyboard.sendKeyStroke ، يجب عليك وضع أحد رموز المفاتيح المحددة بالفعل في الملف UsbKeyboard.h.

الشرط "if (lastStroke! = results.value)" مطلوب لأن بعض أجهزة التحكم عن بُعد ترسل نفس الرمز مرتين لكل نتيجة ، وهذا يمنع الضربة الثانية. لست متأكدًا تمامًا وقد يعتمد ذلك على بروتوكول الأشعة تحت الحمراء المبرمج في جهاز التحكم عن بُعد (لست خبيرًا في بروتوكولات الأشعة تحت الحمراء حقًا) ولكن وفقًا لتجربتي مع أجهزة التحكم عن بُعد الخاصة بي ، يمكن أن ينتج كل زر رمزين مختلفين و أثناء الضغط مع الاستمرار على الزر ، فإنه يرسل نفس الرمز ، ولكن إذا ضغطت على الزر مرة أخرى ، فإنه يرسل الرمز الآخر. لذلك يبدو أنه يتم إرسال الرموز بطريقة بديلة ، أعتقد أنه وضع قياسي لمعرفة عدد المرات التي تضغط فيها حقًا على الزر.

حسنًا ، لقد انتهينا تقريبًا ، ما عليك سوى تحميل الرسم النهائي وتوصيله بجهاز الكمبيوتر ومعرفة كيف ستسير الأمور.

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

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

هذا كل شيء ، اسمحوا لي أن أعرف إذا لاحظت أي أخطاء في هذه التعليمات واستمتع بجهاز استقبال IR USB الجديد الخاص بك!

موصى به: