תוכן עניינים:

מקלט USB ATtiny85 IR: 11 שלבים (עם תמונות)
מקלט USB ATtiny85 IR: 11 שלבים (עם תמונות)

וִידֵאוֹ: מקלט USB ATtiny85 IR: 11 שלבים (עם תמונות)

וִידֵאוֹ: מקלט USB ATtiny85 IR: 11 שלבים (עם תמונות)
וִידֵאוֹ: Lost Dongle of Wireless Mouse & Keyboard Logitech? (Different Replacement Logitech Usb Receiver) 2024, יולי
Anonim
מקלט USB ATtiny85 IR
מקלט USB ATtiny85 IR

אזהרה, הוראה זו הפכה למיסודה

ספריית v-usb מיועדת לעבודה עם פרוטוקול USB 1.1 שכמעט ואינו קיים כיום. עם הגעת ה- USB3 יהיה לך יותר מכאב ראש בניסיון לגרום להתקני v-usb לעבוד. לאחר שינוי מרכז המולטימדיה שלי, יש לי בעיות יציבות רבות ולמרות שהמקלט עובד, לאחר זמן מה הוא מפסיק לפעול. לא הצלחתי לנסות לתקן את זה. יצרתי גם גרסה atmega328p אבל זו הייתה בעלת אותן בעיות. שימוש בטיימר של כלב שמירה לאיפוס הלוח מעת לעת גם לא עזר אז אני מוותר על v-usb.

עשה לעצמך טובה ואל תמשיך עם ההנחיות האלה אלא אם כן זה למטרות חינוכיות. אני ממליץ במקום זאת לקנות מודול שבב ATmega 32U4 שכבר שילב את ממשק ה- USB ופעל לפי המדריך הזה:

www.sparkfun.com/tutorials/337

אז זרוק חיישן IR TSOP31238 ואתה מוכן ללכת.

שלום יצרנים! זוהי הוראה לבניית מקלט IR פועל באמצעות מיקרו -בקר Attiny85. התחלתי בפרויקט זה כדי להתגבר על חוסר התמיכה (לפחות תמיכה מלאה) עבור כמה שלטי IR במערכת ההפעלה GNU/Linux. בהתאם להוראות אלה תוכל לבנות מקלט IR לתכנות USB שעובד עם כל שלט IR בכמה דולרים.

קודם כל, ההנחיה הזו לא הייתה קיימת בלי העבודה הקשה של האנשים שיצרו את הספריות שבהן אני משתמש כאן:

  • דיוויד א 'מליס על ליבתו העדינה
  • תוכנת Rowdy Dog לספריית TinyTuner שלהם
  • תוכנת Rowdy Dog למטען האתחול הזעיר שלהם
  • Rancidbacon (https://rancidbacon.com/) ליציאת הארדואינו שלו בספריית v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee לספריית ה- IR שלו ליבות קטנטנות שנמצאו בהערות קוד https://www.instructables.com/id/Attiny-IR-librar… להוראה ב https://www.instructables.com/id/Attiny-IR -ספרייה…

לפעמים לא קל למצוא את הבעלים הנכון של ספרייה, כך שאם טעיתי, אנא השאר הערה והייתי פותר את הבעיה בהקדם האפשרי.

מדריך זה קיים מכיוון שלא מצאתי הדרכה/מדריך מלא שעובד מחוץ לקופסה (יתכן שקיים אך לא הצלחתי למצוא אותו) אז אספתי את כל המידע הקיים באינטרנט ולאחר כמות ניסיונות טובה ו שגיאות המצאתי מדריך מלא לבניית מקלט IR פועל USB שלמעשה עובד די טוב.

מקורות המידע העיקריים בהם עקבתי:

  • 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…

שלב 1: כמה שיקולים

  • אין ברשותי מתכנת AVR ISP ולא ממש בא לי לקנות אחד אז השתמשתי בארדואינו כדי לתכנת את attiny85
  • לא אכפת לי ממערכת הפעלה אחרת מלבד GNU/Linux אז אני לא יודע אם זה יעבוד אחרת.
  • ישנן ספריות IR אחרות אך לא יכולתי לגרום להן לעבוד אפילו עם ארדואינו. קח בחשבון שהתחלתי בידע מוגבל על ספריות IR. אולי אוכל לגרום להם לעבוד כעת לאחר הניסיון שנרכש בהתמודדות עם לא מעט נושאים. בכל אופן, הלכתי לאיבוד ומייאש לפני שמצאתי את הספרייה שסיפקה סיג'אידי והשתמשתי בה מאז (תודה רבה גבר!).
  • ישנן תצורות חומרה אחרות, אך השתמשתי רק בזו שמשתמשת 5V כדי להניע את attiny85 ושתי דיודות זנר של 0.5W כדי לסגור את המתח של קווי הנתונים, זה עובד מחוץ לקופסה כך שלא התעסקתי עם תצורות אחרות.
  • אתה יכול להשתמש בקריסטל של 16Mhz או שאתה יכול להשתמש בספריית tinytuner כדי לכייל את השעון הפנימי של attiny85 שלך. אני מייעץ בחום לשימוש בקריסטל, הוא הרבה יותר יציב וכנראה יחסוך לך הרבה כאבי ראש.
  • אני משתמש כאן בשני מטענים שונים עבור attiny85:

א) גרסת תוכנת Rowdy Dog, היא שילבה ממשק טורי שהוא מאוד מגניב וקטנה מאוד כך שיש לך יותר מקום לתוכנית ולספריות אחרות. הבעיה היא שמסיבות מסוימות למרות שזה עובד די טוב, לאחר זמן מה התקן ה- USB נותק (אתה יכול למצוא את הבעיות עם הפקודה dmesg). אני לא יודע אם זו בעיה של הליבה או שילוב מעורב של הליבה בתוספת הספריות שנבחרו אז לאחר זמן מה החלטתי להשתמש בליבה זו רק כדי לפענח את המקשים המרוחקים ולכייל את השעון (כאשר לא משתמשים ב- 16Mhz גָבִישׁ). לאחר מכן, אני פשוט שורף את מטען האתחול של Mellis ומעלה את המערכון הסופי שאינו משתמש בממשק הטורי.

ב) גרסת Mellis, מטען אתחול יציב, השתמשתי בזה בפרויקטים רבים. תמיד הייתי משתמש במטען האתחול הזה אם הוא היה כולל ממשק טורי. אני משתמש בליבה זו במערכון הסופי לאחר פענוח כל המפתחות בשלטים שלי.

שלב 2: נתחיל בחומרה

נתחיל בחומרה
נתחיל בחומרה
נתחיל בחומרה
נתחיל בחומרה
נתחיל בחומרה
נתחיל בחומרה

כלים שאתה צריך:

  • לוח תואם ארדואינו
  • מתאם סידורי ל- USB לפענוח המפתחות המרוחקים שלך (פשוט השתמש ב- FT232RL)
  • מחשב עם GNU/Linux מותקן ומזהה arduino המוגדר כהלכה, אני משתמש ב- arduino IDE 1.8.0
  • שלט IR לבדיקת המכשיר שלך (אפילו מחורבן כמו אלה המצויים בערכות המתנע של ארדואינו יעבוד)
  • מולטימטר לניפוי באגים בלוח שלך (אני מקווה שלא תזדקק לו, בהצלחה!)

רשימת החומרים:

  • 85
  • 2 נגדים 68R
  • נגד 1.5K
  • נגד 4.7K
  • 1 קריסטל 16 מגה -הרץ
  • 1 קבל 22pF
  • קבל 0.1uF
  • קבל 10uF
  • 2 דיודות זנר של 3.6V 0.5W
  • מחבר זכר מסוג USB אחד
  • סיכה אחת עם 6 סיכות לתכנות ולוחות הבאגים.
  • חיישן IR 1 TSOP31238
  • הרבה קפה כדי להשאיר אותך ער

לפני הלחמת הלוח הסופי, סביר להניח שתרצה להכין אב טיפוס ללוח למטרות בדיקה, בהתאם לסכימה המצורפת להוראה זו אמורה להספיק לבנייתו.

כדי לחבר את attiny85 למחשב האישי, העיצוב הסופי משתמש במחבר מסוג USB A המולחם לתוך הלוח, אך עבור אב הטיפוס תצטרך ליצור כבל USB אותו תוכל לחבר ללוח לחם:

הלחמה לחתיכה קטנה של 4 סיכות של perfboard, ולאחר מכן חתוך כבל USB ישן והלחם את הסיכות ל -4 מהחוטים שבתוך כבל ה- USB:

  • אדום הוא VCC (5V)
  • שחור הוא GND
  • לבן הוא D-
  • ירוק הוא D+

שמור הכל יחד עם דבק חם.

כעת עלינו לחבר את מתכנת ISP (Arduino), המתאם ה- USB למערך הטורי (FT232RL) ואת חיישן ה- IR ל- attiny85.

אתה יכול להשאיר את כולם מחוברים יחד כדי שתוכל לשרוף מטענים שונים, לטעון סקיצות ולבדוק את היציאה הטורית מבלי להחליף חוטים, לשם כך, חבר הכל לפי ההוראות הבאות:

מתכנת ספקי שירותי אינטרנט (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 עד 5V בארדואינו
  • attiny85 GND ל- GND בארדואינו

מתאם USB לטורי (FT232RL): זה מאפשר לנו לבדוק את היציאה הטורית

  • attiny85 PB0 (pin5 RX) ל- TX ב- FT232RL
  • attiny85 PB2 (pin7 TX) ל- RX ב- FT232RL
  • attiny85 GND (pin4) ל- GND ב- FT232RL
  • מכיוון שה- attiny85 כבר מופעל על ידי הארדואינו אין צורך לחבר את ה -5 וולט ב- FT232RL, אחרת חבר: attiny85 VCC (pin8) ל- 5V ב- FT232RL

מתאם USB לטוריאלי (FT232RL) רק לכיול השעון (רק עבור מטען האתחול "ATtiny85 @ 8MHz (מתנד פנימי; BOD מושבת)")

  • PB4 (pin3 RX) ל- TX ב- FT232RL attiny85
  • PB3 (pin2 TX) ל- RX ב- attiny85 FT232RL
  • GND (pin4) ל- GND ב- FT232RL
  • מכיוון שה- attiny85 כבר מופעל על ידי הארדואינו אין צורך לחבר את ה -5 וולט ב- FT232RL, אחרת חבר: attiny85 VCC (pin8) ל- 5V ב- FT232RL

אם אתה משתמש בגביש 16 מגה -הרץ, חבר אותו ל- Attiny85 פינים PB3 (pin2) ו- PB4 (pin3) וחבר כל סיכה ל- GND גם כן באמצעות מכסה של 22pF כל אחד.

מסנן Attiny85 VCC עם קבלים של 0.1uF ו- 10uF המחברים אותם במקביל ל- GND

חבר את סיכת הפלט של חיישן ה- IR ל- 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
  • 5V, אתה יכול להשאיר אותו מחובר מכיוון שהכל מופעל על ידי Arduino בשלב זה, אחרת חבר אותו ל- attiny85 VCC

דיודות הזנר מחוברות כך שהאנודות נקשרות ל- GND והקטודות מחוברות לקווי הנתונים D+ ו- D-.

שלב 3: עיצוב סופי

עיצוב סופי
עיצוב סופי
עיצוב סופי
עיצוב סופי
עיצוב סופי
עיצוב סופי

עבור העיצוב הסופי אתה יכול להשתמש ב- perfboard עם רכיבי חורים דרך או לחרוט לוח משלך ולהשתמש ברכיבי smd. כדי ללמוד כיצד לחרוט לוח, פשוט חפש אותו בגוגל, ישנן הדרכות מדהימות הזמינות באינטרנט.

חרטתי לוח משלי ואני מאוד שמח מהתוצאות הסופיות (לוח קטן, יציב וחזק).כן, אני יודע שהחתך מבאס, אבל לא יכולתי להשתמש בשום כלי חשמלי כל כך מאוחר בלילה ואני פשוט גזור את הלוח עם מספריים של פח שלי.

אגב, העקבות בתמונות אינן נחושת חשופה, הן טופלו בחומר כימי מגעיל הדוחה מעט את הנחושת (יש חשד שהוא גורם לסרטן, לכן השתמש בו בזהירות רבה, גלוביות לטקס ומסכת אבק):

השתמש בתרשימים שלמעלה לעיצוב הפריסה שלך או שאתה יכול פשוט להשתמש בטביעת הרגל של ה- PCB שלי כדי לחרוט את הלוח שלך.

שלב 4: התמודדות עם התוכנה

המעגל בפרויקט זה קל מאוד, התוכנה במקום זאת דורשת מאמץ גדול יותר.

אנחנו צריכים לפחות 2 ספריות (עוד אחת אם אתה לא משתמש בגביש) ועוד 2 מעמיסי אתחול כדי לגרום לזה לעבוד. כשהתחלתי את הפרויקט הזה בדקתי כמה ספריות, לפעמים הן לא עבדו ופעמים רבות הן פשוט לא הוגדרו לעבודה עם Attiny85 מחוץ לקופסה (לא ידעתי זאת עדיין). ואז מצאתי בעיות עם הספריות / מעמיסי האתחול החופפים. לבסוף נאלצתי להתמודד עם כמות לא מבוטלת של שגיאות כאשר חיברתי את המעגל הסופי למחשב האישי שלי. אבל לא היה לי את המדריך הזה, אז אני חושב שיהיה בסדר, פשוט בצע את השלבים במדריך זה, אם אתה עושה את זה בלי לטעות אתה אמור להסתדר:)

כעת עלינו להתקין ולהגדיר כמה ספריות:

  • v-usb לספריית arduino: ספרייה זו מאפשרת לזהות המחשב הבקר כמחשב מקלדת USB HID, ואנו נשתמש בה כדי לשלוח משיכות מקשים למחשב. ספרייה זו זקוקה לכמה שינויים כדי להיות תואם ל- attiny85
  • ספריית tinytuner רק אם לא תשתמש בגביש של 16 מגה -הרץ. לאחר מכן יהיה עליך לכייל את השעון הפנימי של הבקר. ספרייה זו פועלת מחוץ לקופסה.
  • ספריית Attiny-IR לאינטראקציה עם חיישן ה- IR. ספרייה זו פועלת מחוץ לקופסה.

אנחנו צריכים גם 2 מטענים לאתחול:

  • גרסת תוכנת כלב, עם הממשק הטורי זמין. מטעין אתחול זה זקוק לצבוט קטן לעבודה עם attiny85 מכיוון שהוא משתמש בטיימר 1 עבור הפונקציה millis () ולא יעבוד עם ספריית ה- IR. עלינו לשנות את הטיימר לטיימר 0.
  • גרסת Mellis, מטען אתחול יציב בו נשתמש בשלב האחרון. זה עובד מחוץ לקופסה.

שלב 5: התקנה ותצורה של ספריית V-usb

הורד את הספרייה מ- https://code.google.com/archive/p/vusb-for-arduin… פתח את הקובץ והעתק את ספריות התיקיות/UsbKeyboard לתיקיית ספריות הסקיצות שלך.

כעת עליך לערוך כמה קבצים כדי שיהיו תואמים ל- ATtiny85 (הוא מוגדר לעבודה עם arduino):

א) ערוך usbconfig.h:

תחת שינוי "הגדרת חומרה":

#הגדר USB_CFG_IOPORTNAME D ל ## הגדר USB_CFG_IOPORTNAME B

ו

#הגדר USB_CFG_DMINUS_BIT 4 ל#הגדר USB_CFG_DMINUS_BIT 0

תחת "הגדרת חומרה אופציונלית":

#הגדר USB_CFG_PULLUP_IOPORTNAME D##הגדר USB_CFG_PULLUP_IOPORTNAME B

כדי ליצור מפרט "HID תואם אתחול" מלא (אחרת שום מפתחות מולטימדיה לא יעבדו), שנה גם:

#הגדר USB_CFG_INTERFACE_SUBCLASS 0 // באטו#הגדר USB_CFG_INTERFACE_SUBCLASS 0x01 // אתחול

ו

#הגדר USB_CFG_INTERFACE_PROTOCOL 0 // מקלדת#להגדיר USB_CFG_INTERFACE_PROTOCOL 0x01 // מקלדת

אופציונלי תוכל גם לשנות את היצרן ואת שם המכשיר בהגדרות הבאות:

#הגדר USB_CFG_VENDOR_NAME

#הגדר USB_CFG_DEVICE_NAME

ב) ערוך UsbKeyboard.h:

שינוי:

PORTD = 0; // TODO: רק לסיכות USB? DDRD | = ~ USBMASK;

ל

PORTB = 0; // TODO: רק לסיכות USB? DDRB | = ~ USBMASK;

כדי לאפשר קוד מפתחות מעבר ל -101 לשנות גם:

0x25, 0x65, // LOGICAL_MAXIMUM (101) עד: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

ו

0x29, 0x65, // USAGE_MAXIMUM (יישום מקלדת) עד: 0x29, 0xE7, // USAGE_MAXIMUM (יישום מקלדת)

ייתכן שיהיה עליך לערוך גם את 3 הקבצים הבאים:

usbdrv.husbdrv.cUsbKeyboard.h

ובכל פעם שאתה רואה PROGMEM הוסף "const" לפני שם סוג המשתנה (למשל: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

אם זה לא ברור בקר בכתובת

אתה יכול להימנע מכל השינויים האלה אם רק תוריד את הספרייה המצורפת (ביצעתי את כל השינויים האלה בעצמי) ופשוט חילץ אותה בתיקיית ספריות הסקיצות שלך:

UsbKeyboard הוגדר עבור attiny85

עריכה: לאחרונה גיליתי שאלחנדרו לייבה (https://github.com/gloob) טופל בספרייה זו ונראה שהוא עובד היטב גם כן. אתה יכול גם לנסות את הגירסה שלו עם השינויים הדרושים שביצעתי כדי לגרום לזה לעבוד עם הקובץ, אז אם אתה רוצה לבדוק את זה, פשוט חלץ אותו בתיקיית ספריות הסקיצות שלך.

UsbKeyboard הוגדר עבור 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: התקנה ותצורה של מטעי האתחול

אנו הולכים להתקין שני מעמיסי אתחול, אחד מליס לפי הניסיון שלי יציב יותר ואנו נשתמש בו במערכון הסופי. השני שפותח על ידי תוכנת Rowdy Dog הוא ליבה מדהימה, קטנה מאוד ועם ממשק סידורי משולב זמין, אבל השלט שלי התרסק לאחר זמן מה איתו, כך נשתמש במטען האתחול הזה רק לכיול השעון הפנימי attiny85 ולפענוח השלט הרחוק שלנו כפתורים.

אני יודע שישנן ספריות זמינות להעניק את היכולות הטוריות attiny85, אך אז יהיה עליך לשנות את הספריות המשתמשות באובייקט הטורי … אני אוהב יותר את ההליך הזה.

נתחיל בהתקנה:

א) מטעין האתחול של Mellis:

פשוט פתח את העדפות Arduino IDE והוסף את כתובות אתרים נוספות של מנהל לוחות:

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

לאחר מכן פתח את מנהל הלוחות של Arduino IDE וחפש אטני, התקן את הלוחות ממליס. עכשיו אתה אמור לראות את מזהה Arduino את הלוחות ATtiny25/45/85 ו- ATtiny24/44/84.

ב) מטען אתחול זעיר של Rowdy Dog Software:

הורד את מטען האתחול מ

פתח את הקובץ והעתק את התיקייה הזעירה בתוך ספר הסקיצות/החומרה שלך (צור תיקייה זו אם היא עדיין לא קיימת). לאחר מכן עבור לספר התיקיות/חומרה/זעיר/avr/ו:

1) העתק את הקובץ Prospective Boards.txt לתוך boards.txt הקבצים

2) ערוך את קובץ platform.txt ובצע מספר שינויים:

בטל את התגובה של משתנה compiler.path והשאיר אותו מצביע על חומרת התיקייה/כלים/avr/bin/בתוך תיקיית ההתקנה של arduino:

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

שנה alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembler-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 ושנה:

#הגדר TIMER_TO_USE_FOR_MILLIS 1 עד#הגדר TIMER_TO_USE_FOR_MILLIS 0

זה מאוד חשוב, אחרת מקלט ה- IR יפיק אפסים לכל כפתור. משפט זה מגדיר את הטיימר 0 עבור הפונקציה millis () ומשאיר את הטיימר 1 זמין לספריית ה- IR. הסקיצה הסופית תשבית את הטיימר 0 בכל מקרה כך שלא יהיו לך פונקציות מילי () ועיכוב (). ייתכן שתמצא במקום זאת פונקציה delayMicroseconds () זמינה.

מטעין האתחול הזה הוא מינימלי, אך כלל תמיכה באובייקט סידורי:

Attiny85 PB2 (pin7) הוא TX ו- PB0 (pin5) הוא RX

תוכל לקבל תצורה עם מתכנת ספק האינטרנט (ארדואינו) והמתאם הסידורי ל- usb מחובר בו זמנית, כך שלא תצטרך להחליף חוטים לעתים קרובות מדי:

כעת יש לנו את הספריות וגם את מטעי האתחול מותקנים ומוגדרים כהלכה, העבודה הקשה ביותר מסתיימת ונוכל להתחיל לבדוק את העניינים.

שלב 8: צריבה של מטעי אתחול והעלאת סקיצות

אני ממליץ בחום להפעיל את הפלט המילולי תחת העדפות ה- Arduino IDE, כך שתוכל להבין כל בעיה.

כדי לצרוב מטען אתחול ל- Attiny85 עליך להעלות את דוגמת ספק האינטרנט ל- Arduino ולאחר מכן לבחור את מתכנת Arduino כ- ISP.

כעת הנח קבל 10uF בין סיכות האיפוס והארקה על הארדואינו (אין צורך בתהליך הצריבה, אך הוא צריך להעלות סקיצות ל- attiny85).

כעת הארדואינו מוכן לשרוף מטענים אתחול ולהעלות סקיצות. אתה רק צריך לבחור את הלוח המתאים להתאמה שלך ולשרוף אותו.

כדי לטעון שרטוט ל- Attiny85, טען אותו ב- arduino IDE ולחץ על "העלה באמצעות מתכנת".

חשוב: בעת העלאת הסקיצה ישנם 3 שלבים, אוסף, כתיבה ואימות. אם האוסף והכתיבה אכן הצליחו, אך תהליך האימות נכשל, ייתכן שהשרטוט יעבוד בכל מקרה.

שלב 9: כייל את השעון הפנימי Attiny85 (דלג על זה אם אתה משתמש בגביש)

במקרה שתחליט לא להשתמש בגביש 16Mhz אתה צריך לכייל את השעון attiny85 שלך, אז נזדקק לאתחול עם ממשק טורי זמין ונשתמש בספריית tinytuner כדי לקבל את הכיול הנכון.

בצע את השלבים הבאים

  • בחר תחת כלים את Arduino כמתכנת ISP
  • בחר את הלוח "ATtiny85 @ 8MHz (מתנד פנימי; BOD מושבת)"
  • אני מניח שיש לך את חיבור ספק האינטרנט מוכן כפי שתואר לפני התחבר אחרת עשה את החיבורים
  • לשרוף מטעין אתחול
  • מטעין אתחול זה הגדיר סיכות שונות לממשק הטורי, השתמש בתצורה זו רק עבור מטען האתחול הנוכחי

- PB4 (pin3 RX) ל- TX ב- FT232RL attiny85 - PB3 (pin2 TX) ל- RX ב- FT232RL attiny85 - GND (pin4) ל- GND ב- FT232RL מכיוון שה attiny85 כבר מופעל על ידי הארדואינו אין צורך לחבר אותו 5v ב- FT232RL, אחרת חבר: attiny85 VCC (pin8) ל- 5V ב- FT232RL

  • העלה את הדוגמה tinytuner ל- attiny85
  • פתח את תוכנית המסך כדי לעקוב אחר התקשורת הסדרתית: screen /dev /ttyUSB0 9600
  • אפס את attiny85 המחבר את סיכת RESET (pin1) ל- GND (רק רגע), אמורה להופיע הודעת קבלת פנים בחלון המסך
  • המשך לשלוח תווים 'x' בודדים (ללא החזרת עגלה; ללא הזנת שורה) עד לסיום הכיול
  • הוסף איפשהו את ערך הכיול (OSCCAL = 0x). זהו הערך שתצטרך להצהיר על הרישומים האחרונים

שלב 10: פענח את הכפתורים המרוחקים שלך

כעת הגיע הזמן לפענח את הלחצנים המרוחקים שלנו ולהקצות אותם למשיכות מקשים ספציפיות במחשב האישי, לשם כך בצע את השלבים הבאים:

  • בחר את הלוח "ATtiny85 @ 16MHz (PLL פנימי; 4.3V BOD)" אם אינך משתמש בקריסטל, "ATtiny85 @ 16 MHz (קריסטל חיצוני; 4.3 V BOD" אחרת, לאחר מכן צרוב אותו
  • טען את הסקיצה:
  • אם אינך משתמש בגביש, בטל את התגובה של השורה המכילה את משתנה OSCCAL והקצה אותה לערך שמצאת כאשר ביצעת את כיול השעון
  • אני מניח שהחיישן מחובר כמתואר קודם, אחרת חבר אותו
  • אני מניח שגם המתאם הסידורי ל- FT232RL מחובר, אחרת חבר אותו
  • אפס את attiny85 המחבר את סיכת RESET (pin1) ל- GND (רק רגע)
  • ללחוץ שוב ושוב על כפתורי השלט ולבדוק את חלון המסך, עליך להוסיף את המספר האחרון לכל רשומה, כל כפתור עשוי לייצר 2 מספרים שונים

דוגמא:

התקבל D44 3396 התקבל 544 1348

ציין את 3396 ו- 1348 בשיתוף עם הכפתור שהרגע לוחץ עליו, ואז עליך להחליט מה אתה רוצה לעשות עם הכפתור הזה. לדוגמה, אני יכול לרצות שהכפתור הזה ישלח את קוד המפתח של המולטימדיה "עוצמת קול מוגברת", ואז אני צריך למצוא את המזהה של קוד המפתח הזה. לשם כך, הורד את קובץ ה- PDF:

חפש את הסעיף "דף מקלדת/לוח מקשים" עמוד 53 והשתמש במספרים בעמודה מזהה שימוש (דצמבר) כדי לאגד את הכפתורים המרוחקים שלך לקודי מקלדת. בדוגמה שלנו אנו יכולים לראות שקוד המפתח של "הגברת עוצמת הקול" הוא: 128.

ערוך את הקובץ את הקובץ UsbKeyboard.h בתוך ספריית UsbKeyboard מתוך חבילת v-usb שהתקנו קודם והוסף להגדרות הקיימות אם הוא עדיין לא קיים:

#הגדר KEY_VOL_UP 128

כשנסיים עם כל כפתורי השלט/ים וכל ההגדרות בקובץ UsbKeyboard.h מוכנים נוכל לעבור לשלב האחרון.

שלב 11: טעינת המערכון הסופי ותקווה לטוב

טוען את המערכון הסופי ומקווה לטוב!
טוען את המערכון הסופי ומקווה לטוב!
טוען את המערכון הסופי ומקווה לטוב!
טוען את המערכון הסופי ומקווה לטוב!

כעת פענחנו את כל הכפתורים המרוחקים, הקובץ UsbKeyboard.h מלא בקודי המפתחות שלנו, כך שעכשיו נוכל לטעון ל- IDE של arduino את הסקיצה הסופית מתוך:

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

קובץ זה הוא הקובץ המדויק שבו אני משתמש עבור המקלט שלי, והוא פועל עבור 2 שלטים שונים, כך שברור שתצטרך לעדכן אותו על מנת לעבוד עם השלט/ים שלך.

אם אינך משתמש בגביש, בטל את התגובה של השורה המכילה את משתנה OSCCAL והקצה אותה לערך שמצאת כאשר ביצעת את כיול השעון

שימו לב שבפונקציית הלולאה יש הרבה הצהרות כמו זו:

אם (results.value == 3405 || results.value == 1357) {// חץ למעלה

if (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

עליך ליצור הצהרות משלך, אחת לכל כפתור בשלט. בתנאי "אם" עליך להכניס את result.valid לערכים שמצאת פענוח השלט שלך וכארגומנט של שיטת UsbKeyboard.sendKeyStroke עליך להכניס את אחד ממקשי המפתחות שהוגדרו כבר בקובץ UsbKeyboard.h.

יש צורך בתנאי "if (lastStroke! = Results.value)" מכיוון שחלק מהשלטים שולחים את אותו קוד פעמיים לכל להיט, וזה מונע את הפגיעה השנייה. אני לא בטוח וזה עשוי להיות תלוי בפרוטוקול ה- IR שתוכנת בשלט שלך (אני לא ממש מומחה בפרוטוקולי IR) אבל לפי הניסיון שלי עם שלטים משלי, כל כפתור יכול לייצר 2 קודים שונים בזמן שאתה לוחץ לחיצה ממושכת על הכפתור, הוא שולח את אותו הקוד, אך אם אתה לוחץ שוב על הכפתור הוא שולח את הקוד השני. אז נראה שהקודים נשלחים בצורה חלופית, אני מניח שזה מצב סטנדרטי לדעת כמה פעמים אתה באמת לוחץ על הכפתור.

אוקיי, כמעט סיימנו, פשוט העלה את הסקיצה הסופית, חבר אותה למחשב האישי ותראה איך הולך.

עבור שלב זה, עדיף אם תנתק את הארדואינו ואת מתאם ה- USB למתאם סידורי ורק לאחר מכן, חבר את ה- USB ליציאת המחשב האישי שלך (במקרה שמשהו ישתבש יהיה קל יותר לאתר באגים את המעגל שלך).

אם הכל עבד בסדר, כשאתה פותח מסוף ושולח את הפקודה dmesg אתה אמור לראות משהו דומה לתמונה הראשונה בשלב זה. אם היו בעיות, אמורות להיות לך שגיאות כמו אלה שנמצאות בתמונה השנייה ועליך להתחיל לאתר באגים במעגל שלך ו/או בתוכנה. אחד המקורות לשגיאות הראשוניות שהיו לי היה רכזת USB שלא תעבוד עם מקלט ה- IR שלי (אחרים עבדו) … אז עדיף בשלב האחרון לחבר את מקלט ה- IR ישירות ליציאת המחשב האישי שלך. טעויות בסופו של דבר עשויות להיות קשות לאיתור, אך בסופו של דבר, כמוני, היית לומד הרבה והמחיר לשלם שווה את זה, אני מבטיח לך.

זה הכל אנשים, יידעו אותי אם אתם מבחינים בשגיאות במדריך זה ותיהנו ממקלט ה- USB החדש שלכם!

מוּמלָץ: