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

נופל ב- Stm32: שלט רחוק למרכז המדיה הביתי: 4 שלבים (עם תמונות)
נופל ב- Stm32: שלט רחוק למרכז המדיה הביתי: 4 שלבים (עם תמונות)

וִידֵאוֹ: נופל ב- Stm32: שלט רחוק למרכז המדיה הביתי: 4 שלבים (עם תמונות)

וִידֵאוֹ: נופל ב- Stm32: שלט רחוק למרכז המדיה הביתי: 4 שלבים (עם תמונות)
וִידֵאוֹ: Arduino Interrupt 2024, נוֹבֶמבֶּר
Anonim
נופל ב- Stm32: שלט רחוק למרכז המדיה הביתי
נופל ב- Stm32: שלט רחוק למרכז המדיה הביתי

זהו אב טיפוס מלא לשלט רחוק מרכז מדיה ביתי המבוסס על בקר מיקרו smt32, stm32f103c8t6 המכונה לוח 'bluepill'. נניח שאתה משתמש במחשב מחשב מרכז ביתי. זהו פתרון גמיש מאוד, המאפשר לך להכניס ספריית וידיאו ענקית לכונן הקשיח הפנימי, או שתוכל להפעיל וידאו מהרשת, למשל יוטיוב או כך, אין לך בעיה עם רכיבי רכיב רכיבי codec או הפעלת וידאו כלל, מכיוון שזה מאוד קל לעדכן את נגן התוכנה בכל עת. החיסרון העיקרי של פתרון זה הוא שעליך להשתמש בעכבר ובמקלדת כדי לשלוט בהפעלה שלך. שלט ה- IR הוא מצב נוח מאוד לכך.

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

שלב 1: הרעיון

הרעיון
הרעיון
הרעיון
הרעיון

הרעיון המרכזי הוא פשוט מאוד: הלוח הכחול הטביע יציאת usb ויכול לשמש כמקלדת USB HID. אם נחבר את מקלט ה- IR ללוח, הוא יכול לתרגם את הפקודה משלט רחוק ה- IR שלך ללחיצת מקשים של המקלדת הווירטואלית. אין צורך בנהגים נוספים!

ישנם הרבה פרוטוקולי IR בעולם סביבנו. לכל טלוויזיה של ספק VCS יש פרוטוקול IR משלו. אבל לכל הפרוטוקולים האלה יש משהו משותף: הם משתמשים באפנון דופק כדי לקודד את האות. בדרך כלל, יש איזשהו מבוא: דחף ארוך לפני הקטע הראשון בחבילה. אז בקרת IR משדרת את כל החבילה עם 0 ו -1 ומסיימת את השידור עם דופק ארוך לסיים. כדי לפענח את הסיביה עלינו למדוד את דופק האורך ואת אורך השיא. בדרך כלל, אורך השיא של ההיגיון 0 וההיגיון 1 זהים, ההבדל הוא באורך הדופק המלא.

בקרי המיקרו stm32 כוללים תכונה מוטמעת ללכידת אות PWM. כמעט בכל טיימר של בקר המיקרו ניתן להכניס את 'לכידת אות PWM יותר' כאשר משתני הערוץ של הטיימר שומרים את אורך הדופק הכולל ואורך השיא שלו. כאן עלי להדגיש את הפרט הקטן: כאשר מקלט IR תופס את האות, המתח על סיכת העבודה שלו הופך ל -0 ובמצב סרק המתח בסיכת העבודה הוא 5 או 3.3 וולט תלוי במתח אספקת מקלט ה- IR. כלומר, המקלט 'הופך' את האות.

עם מצב לכידת PWM ניתן להפוך את בקר המיקרו stm32 בקלות למתרגם IR מרחוק משלט IR לקודי המקלדת. לאחר מכן תוכל להפעיל את תוכנת ההדמיה המועדפת עליך, למשל Kodi של VLC להפעלת הסרט האהוב עליך במרכז המדיה.

שלב 2: יצירת הבקר

יצירת הבקר
יצירת הבקר
יצירת הבקר
יצירת הבקר
יצירת הבקר
יצירת הבקר
יצירת הבקר
יצירת הבקר

כדי לתכנת בקר מיקרו stm32 אני רוצה להמליץ על התוכנה החינמית מ- STM: שולחן עבודה במערכת (aka ac6) וכלי התצורה של הלוח cubeMX. כדי להעלות את התוכנה לבקר המיקרו ניתן להשתמש בשיבוט השבבים של מתאם ST-Link V2. קבצי פרוייקט שולחן העבודה של המערכת המצורפים לשלב זה, קובץ F1-IR_remote.zip.

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

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

  • צור פרויקט חדש ובחר לוח stm32f103c8
  • בחר 'קריסטל/מהוד קרמי' עבור הפריט 'שעון מהיר (HSE)' בתפריט RCC.
  • בחר 'חוט סידורי' עבור הפריט 'איתור באגים' בתפריט SYS.
  • הגדר את הטיימר מס '2 (תפריט TIM2) במצב צילום PWM כפי שמוצג בתמונה:

    • מצב עבדים -> מצב איפוס
    • מקור ההפעלה -> TI1FP1
    • מקור השעון -> שעון פנימי
    • ערוץ 1 -> קלט לכידת מצב ישיר
  • הגדר את תיבת הסימון 'התקן (FS) בתפריט USB
  • בחר את רכיב התפריט הנפתח 'מחלקת התקן ממשק אנושי (HID)' בפריט 'Class of FS IP' בתפריט USB_DEVICE
  • בלוח תצורת השעון, הקפד לספק 72 מגה -הרץ לטיימר מספר 2 מכיוון שאנו זקוקים לספירת טיימר בכל 1 מ"ק.
  • בלוח התצורה הגדר התקן USB כפי שמוצג בתמונה
  • בלוח התצורה הגדר את הטיימר מס '2 כדלקמן:

    • מכשיר Prescaller - 71 (מ -0 עד 71) - 1 מיקרו שנייה קרצית!
    • מצב מונה - למעלה
    • תקופת נגד - 39999 (אנחנו אמורים להיות מסוגלים למדוד את הדופק הארוך)
    • ערוץ לכידת קלט 1 - Falling Edge (זכור כי האות ממקלט IR הפוך)

במצב לכידת PWM הטיימר מספר 2 יעבוד כדלקמן:

כאשר החזית הנופלת זוהתה, מונה הטיימר יישמר ברשם ערוץ 1 ומונה הטיימר יתאפס עם 0. ואז הטיימר ימשיך לספור את הכיוון. כך שנוכל למדוד בקלות את אורך הדופק במיקרו שניות.

כברירת מחדל מחלקת STM32 USB HID מדמה את עכבר ה- USB. כאן תוכל למצוא את ההוראה להפוך את הבקר למקלדת.

שלב 3: התאמת הבקר

הפרויקט עובד עם שלט רחוק של פנסוניק ומרכז המדיה של קודי. כדי להתאים את הפרויקט לבקר משלך, עליך להוסיף את מערך הקוד לשלט הרחוק שלך כפי שעשיתי לשלט רחוק של panasonic (panasonicCode) לכותרת Inc/code.h. כפי שאתה יכול לראות, לכל פקודה יש מזהה ייחודי (במסמך IRcommmand). הפרויקט מזהה 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_chub_info, IR_it, IR_info, IR_info, IR_info, 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 (). טיעוני הפונקציה הם:

  • מספר הביטים בחבילה
  • אורך הכותרת של המנה
  • אורך סיביות 'אפס'
  • אורך 'אחד'
  • מצביע למערך הקוד
  • רכיבי מספר של המערך

void IRcmd:: init (void) {addRemote (48, 5252, 902, 1755, panasonicCode, sizeof (panasonicCode)/sizeof (uint32_t));

}

כמו כן הקובץ מכיל טבלה נוספת להמרת פקודות לקודי מקלדת. מערך kbdr_kodi מכיל את קודי המפתח עבור מרכז המדיה של Kodi. אתה יכול להוסיף מערך נוסף לתוכנית מרכז המדיה שלך, למשל, נגן vlc. אם תוסיף טבלת יישומים נוספת של מרכז המדיה, תיצור אובייקט KBD אחר ותאתחל אותה ב- main.cpp.

שלב 4: כלים לפשט את החייטות

כלים לפשט את החייטות
כלים לפשט את החייטות
כלים לפשט את החייטות
כלים לפשט את החייטות

ישנם שני פרויקטים נוספים במאגר

  • IR onderzoek - מאפשר למדוד את פרמטרי התזמון של האותות של השלט שלך.
  • IR_capture - מאפשר ללכוד את קודי HEX של השלט הרחוק שלך.

פשוט טען את פרוייקט החקירה של IR וחבר את יציאת ה- USB של לוח הכחולה למחשב שלך. לאחר מכן הפעל כל תוכנית מסוף בהתקן היציאה הווירטואלית הווירטואלית, המתאימה ללוח stm32. בזמן שאתה לוחץ על הלחצנים בשלט הרחוק שלך, התוכנית הייתה מודדת את הפולסים שהתקבלו ומדפיסה את זמני הממוצע לדופק שונה. זה צריך לפשט לזהות את אורך הדופק לכותרת המנה, אפס וביטים אחד.

בפרויקט לחקור IR הטיימר מספר 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};

מוּמלָץ: