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

מתאם Arduino PS/2 ל- USB: 7 שלבים (עם תמונות)
מתאם Arduino PS/2 ל- USB: 7 שלבים (עם תמונות)

וִידֵאוֹ: מתאם Arduino PS/2 ל- USB: 7 שלבים (עם תמונות)

וִידֵאוֹ: מתאם Arduino PS/2 ל- USB: 7 שלבים (עם תמונות)
וִידֵאוֹ: Leap Motion SDK 2024, נוֹבֶמבֶּר
Anonim
מתאם Arduino PS/2 ל- USB
מתאם Arduino PS/2 ל- USB
מתאם Arduino PS/2 ל- USB
מתאם Arduino PS/2 ל- USB

האם אי פעם רצית להשתמש במקלדת PS/2 הישנה שלך עם המחשב הנייד או מחשב שולחני חדש וגילית שאין להם יותר יציאות PS/2? ואז במקום לקנות מתאם PS/2 ל- USB זול כמו שאדם רגיל היה עושה, רצה להשתמש בארדואינו שלך כמתאם PS/2 ל- USB. אז הגעת למקום הנכון:)

אזהרה הוגנת לפני שנכנס לזה. כשאתה משתמש ב- UNO/Mega שלך כמכשיר USB-HID (לא מוגבל רק למקלדת, זה יכול להיות אפילו עכבר, ג'ויסטיק וכו ') אתה תאבד זמנית את תפקידיו כארדואינו. בכך אני מתכוון שאינך יכול להשתמש בתקשורת הסידרית ואינך יכול לתכנת אותה מחדש באמצעות ה- USB. הסיבה לכך היא שנכתוב יותר מדי את הקושחה על שבב ממשק ה- USB שלה (בחור קטן ליד יציאת ה- USB Atmega8U2 ו- 16U2 בהתאם לגרסה). אבל אל תדאג אתה לא באמת יכול לבנות את ה- UNO/Mega שלך בכך שתמיד זה הפיך.

גם במקרה אם יש לך ארדואינו שכבר יש לו יכולת USB-HID (Arduino Pro Micro או לאונרדו וכו 'בצע חיפוש בגוגל) אתה יכול לשכוח שההוראה הזאת הייתה קיימת ישירות לכאן כדי להציל את עצמך מעולם של צרות, רק צוחק!

אספקה

  • חוּמרָה

    • Arduino UNO או מגה
    • מקלדת PS/2
    • לחלופין, ארדואינו או כל סוג של מתכנת USB (USBasp וכו ') עשוי להועיל.
  • תוֹכנָה

    • אטמל FLIP
    • ספריית PS2Key מתקדמת עבור Arduino IDE

שלב 1: חיווט והתקנה

חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה
חיווט והתקנה

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

מקלדת _ ארדואינו

+5V (VCC) _+5V

GRUND_GND

שעון _ סיכה 2 **

נתונים _ PIN3*

*אתה יכול לשנות את סיכת DATA למה שאתה רוצה אבל זכור לעדכן את הסקיצה.

** יש לחבר את השעון לסיכת הפסקה ב- Arduino שיכולה להיות PIN 2 או 3 בלבד (זכור לעדכן את הסקיצה) ב- UNO. למידע נוסף ותצורות לוח שונות אתה יכול לבדוק את סעיף ההערות בדוגמאות הספרייה של PS2KeyAdvanced.

שלב 2: בדיקת מקלדת

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

כאן צירפתי גרסה שונה של ה- SimpleTest.ino מדוגמאות הספרייה PS2KeyAdvanced עם שעון וסיכות נתונים מעודכנים וגם ייצוג "עשה" ו"שבירה ". להלן הסבר לתפוקה.

  • מערכת ה- "make" ו- "break" scancode ו- "Code" שהיא הסקודה המבודדת (c & 0xFF) של לחיצה על מקשים או שחרור מקשים ממלאים תפקיד חשוב בהמרת PS/2 ל- USB ואני ממליץ לך ללמוד 2 הדוגמאות הנוספות המצורפות לספרייה כדי להבין טוב יותר אם אתה מתכנן לשפר או לשנות (לשנות את המפתחות לפריסות שונות) את הסקיצה הסופית. כמו כן, תוכל לקבל רשימה מלאה של scancodes PS/2 מהספרייה על ידי פתיחת קבצי 'PS2KeyAdvanced.h' או 'PS2KeyCode.h' מתוך '\ Documents / Arduino / libraries / PS2KeyAdvanced / src \'
  • "סיביות סטטוס" מתייחס למפתחות שינוי (Ctrl, Alt, Windows, Shift/Caps) ותראה שעם כל מקש שינוי נוסף, ערך זה משתנה בעוד שה"קוד "הראשי של המקש הרגיל (ללא שינוי) אינו משתנה. אבל במערכון הסופי התעלמתי משיטה זו ויישמתי את מקשי השינוי האלה כלחיצות מקשים פשוטות (תראה שלמקשי השינוי האלה יש גם scancode "make" ו- "break" ללא תלות במפתחות רגילים בין אם נלחץ על מספר מקשים ובין אם לאו.) כי זה מקל על העניינים באמצעות פרוטוקול USB-HID.

שלב 3: תצוגה מקדימה של המרות PS/2 ל- USB

לפני עדכון Atmega8U2 או 16U2 (UNO Rev3) לזיהוי ה- Arduino שלנו כמקלדת USB עלינו לוודא שכל חומרי ההמרה פועלים כהלכה והמערכון הסופי מועלה או אחרת זה יהיה כאב גדול להמשיך ולכתוב יתר על המידה קושחה שוב ושוב בין קבצי ה- hex המקוריים למקלדת ה- USB רק כדי שתוכל להעלות את הסקיצה הנכונה. זה נהיה נכון במיוחד אם אין לך מתכנת חיצוני כמו USBasp או Arduino אחר לשימוש כספק אינטרנט. אז כאן נעלה גרסת 'DEBUG' של המערכון הסופי עם פלט קריא לאדם (דרך הצג הטורי) לבדיקת הדברים.

הפלט שאתה רואה יעוצב כך כאשר כל מפתח ישוחרר, 00 00 00 00 00 00 00 00

להלן הסבר בסיסי לתפוקה הצפויה,

עבור כל לחיצה על מקש חדש לשינוי מרובים אתה צריך לקבל שורה חדשה עם ערכים שונים עבור 'xx'. לבסוף כשאתה משחרר כל מפתחות השינוי 'xx' אמורים להפוך ל -00

xx 00 00 00 00 00 00 00

עבור כל לחיצה על מקשים רגילים חדשים (לדוגמא נלחץ הן על מקש היפותטי a, מקש b והן על מקש c עם הערכים 'xx', 'yy' ו- 'zz' בסדר הזה) אתה אמור לקבל רציף (לא חובה) קווים חדשים כמו אלה,

00 00 xx y z z 00 00 00

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

00 00 xx 00 zz 00 00 00

ואם תלחץ על מקש d חדש עם הערך 'nn' מבלי לשחרר מקש a או מקש b הפלט שלך אמור להשתנות ל,

00 00 xx nn zz 00 00 00

ולבסוף לחזור לזה כאשר כל מפתח משתחרר,

00 00 00 00 00 00 00 00

ולבסוף אם תלחץ על Caps Lock, Num Lock או Scroll Lock אתה אמור לקבל משהו כזה עם מספר שורות בו זמנית,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

אם הכל קורה כאן אתה מוזהב להמשיך!

שלב 4: הסבר טכני

הסבר טכני
הסבר טכני
הסבר טכני
הסבר טכני

אם תרצה תוכל לדלג על שלב זה. זהו רק הסבר לתפוקות הקודמות. מערך הפלט של 8 בתים שראית מעוצב על פי האיור לעיל. תוכל ללמוד עוד על כך וגם כיצד כתוב מצב הסטט של מפתחות השינוי מוויקי זה על USB-HID. בעצם מה שהקוד שלי עושה הוא בכל פעם שלוחצים על מקש חדש (פרוטוקול PS/2 מתייחס לזה כאל "עשה") הוא עובר בין 6 הבייטים האחרונים של המערך המשמשים ללחיצות מקשים רגילות וממלאים את הראשון בית ריק שהוא מוצא עם ה- 'HID scancode' הרלוונטי (מוצג בתרשים 2 כמו כן תוכל למצוא רשימה מלאה מתוך ה- PDF המצורף) עבור ה- 'PS/2 scancode' שהתקבל. ולבסוף כאשר המפתח הרלוונטי ישוחרר (פרוטוקול PS/2 מתייחס לזה כ- 'הפסקה') הקוד יחזור במערך הבייטים הנוכחי וינקה רק את הבייט הרלוונטי.

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

שלב 5: העלאת הסקיצה הסופית

אז לפני שאתם סוף סוף מעדכנים את הקושחה של Atmega8U2 או 16U2 (UNO Rev3) כדי לזהות את ה- Arduino שלנו כמקלדת USB עלינו להעלות את הסקיצה הסופית. לאחר שתעלה את זה, אם תלך לצג הטורי תראה שהוא מדפיס זבל בכל לחיצה על מקש חדש זה סימן טוב שהכל פועל כמתוכנן ונוכל להמשיך לשלב האחרון. יש!!!

שלב 6: עדכון הקושחה

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

  1. עקוב אחר מדריך זה מאת arduino.cc אודות 'עדכון ה- Atmega8U2 ו- 16U2 ב- Uno או Mega2560 באמצעות DFU' אך במקום להשתמש ב- 'Arduino-usbserial-uno.hex' השתמש בסימני 'Arduino-keyboard-0.3.hex'
  2. ב- FLIP זכור לבחור את מכשיר היעד כ- Atmega8U2 או 16U2 תלוי בך Arduino, ובחר מתוך אמצעי התקשורת בחר USB ולבסוף טען את קובץ ה- hex הנכון לפני בחירת הפעלה.
  3. אם נתקלת בשגיאת מנהל התקן, עבור אל מנהל ההתקנים של Windows ובחר לחפש את מנהל ההתקן הלא ידוע בתוך ספריית ההתקנה של FLIP '\ Program Files (x86) Atmel \'
  4. אם נתקלת בשגיאות בעת עדכון הקושחה מ- FLIP מספר פעמים, סגור את FLIP והפעל את 'אפס העדפות' מתוך 'תפריט התחל / FLIP \' ולאחר מכן הפעל מחדש את FLIP ובצע את שלבי התצורה לפני שתנסה שוב בדרך כלל זה עובד בשבילי.
  5. אם אתה רוצה להחזיר לך את Arduino למצבו המקורי פשוט פעל לפי המדריך של arduino.cc לעיל עד האות מבלי להשתמש בקובץ ה- hex הזה.

שלב 7: תהנה ……

תהנה……
תהנה……

עכשיו תהנה מהמקלדת החדשה שלך ל- PS/2 ל- USB…. נ.ב. מדריך זה נכתב במלואו ממקלדת PS/2 חיצונית המחוברת למחשב הנייד שלי דרך ה- Arduino:)

מוּמלָץ: