שְׁאֵלָה:
ארדואינו כ- USB HID
Anomaly
2014-02-27 20:37:49 UTC
view on stackexchange narkive permalink

האם ניתן לבנות מכשיר HID (כמו מקלדת) באמצעות Uno Arduino?

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

  • האם אכתוב מנהל התקן חלון חדש?
  • האם אצור תוכנה שכבה שעשויה לקחת את הנתונים הסידוריים שלי ולשנות חלונות לקרוא אותם כקלט HID?
  • האם יש דרך טובה יותר להשיג זאת, אם זה בכלל אפשרי?
אני אולי טועה, אבל זה לא ממש קשור לארדואינו. זה בערך על פיתוח מנהל התקן צד של חלון.
תשובה ראשונה בגוגל: http://mitchtech.net/arduino-usb-hid-keyboard/ ... אבל לא ציינת איזה ארדואינו. על לאונרדו הוא בנוי, והנהג המתאים כבר קיים (ראה http://arduino.cc/en/Reference/MouseKeyboard).
אני משתמש ב- Uno, אבל אני אסתכל על מה שפרסמת כי בפעם האחרונה שקלנו את עדכון ה- DFU, אבל אנחנו די מפחדים מביצים מכיוון שהרכיבים אינם זמינים וזולים באזורי כמו ברוב מקומות.
@AsheeshR ובכן, עכשיו הוספת מידע נוסף לגיבוי התביעה שלך, אבל זה רק קישור. אז מדוע לא פרסמתם גרסה משוכללת יותר של אותה תגובה כתשובה (שלא להיחשב כתשובת קישור) וחיכיתם להצביעים? זה היה הרבה יותר בונה מאשר הצבעה לסגירתו.
@AsheeshR נושא זה נמצא ב meta כעת: http://meta.arduino.stackexchange.com/q/102/46
ובכן, זה בהחלט אפשרי, מכיוון שה- Arduino Uno כולל Atmega16u2 כשבב מנהל התקן USB, המשתמש יכול להשתמש ב- DFU או ב- ICSP מהבהב כדי לדחוף את המכשיר לקושחה קרובה לליאונרדו, מה שיגרום לארדואינו להתנהג כמקלדת HID. אין פיתוח חלונות מעורב, ואין נהג שייבנה מכיוון שמכשירי USB / HID מזוהים כברירת מחדל. כלומר יש לפתוח מחדש את השאלה הזו.
שתיים תשובות:
#1
+16
zmo
2014-03-01 22:15:12 UTC
view on stackexchange narkive permalink

האם ניתן לבנות מכשיר HID (כמו מקלדת) באמצעות Uno Arduino?

כן זה! ויש הדרכה נהדרת כיצד לעשות זאת מעל כאן

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

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

  void triggerKey (uint8_t mod, uint8_t chr) {uint8_t buf [8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; // לחץ על מקש Serial.write (buf, 8); // לחקות עיכוב עיכוב בלחיצת מקשים (10); buf [1] = 0x00; // מפתח מפתח שחרור Serial.write (buf, 8);}  

מה שאתה עושה כאן, הוא לשלוח מאירועי המיקרו-בקר העיקריים שלך בארדואינו מעל הקו הסדרתי למיקרו-בקר הקטן יותר שמטפל ב- USB תִקשׁוֹרֶת. אותו מיקרו-בקר ייקח את אותם "מאגרי" המפתח ויעביר אותם כאשר מקש USB HID מקלדת לוחץ על USB. USB שנשלח שמתפרש על ידי מנהל ההתקן של ה- USB HID שלך, ואז מתרגם אותו לדמות אמיתית באמצעות הפריסה הנוכחית שהגדרת עבור המקלדת שלך.

התו mod הוא אחד מקשי השינויים שיש לך על המקלדת (shift, control, alt ...), 0x00 אינם שום שינוי.

  • שאכתוב חלון חדש מנהל התקן?

לא, אתה לא צריך! עם שדרוג ה- DFU, הארדואינו שלך ייראה כמקלדת USB על ידי חלונות.

  • האם אני אצור שכבת תוכנה שתוכל לקחת את הנתונים הסידוריים שלי ולחלון לקרוא אותם כקלט HID?

אינך צריך לעשות זאת, וזה למעשה רעיון רע מאוד מסיבות רבות:

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

אני משתמש ב- Uno, אבל אני אסתכל על מה שפרסמת כי בפעם האחרונה שקלנו את עדכון ה- DFU אבל אנחנו די מפחדים מחומר לבנים

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

הערה: אין שום סיכוי ' לבנות 'את המכשיר בשיטה זו. תמיד ניתן לעדכן את קושחת ה- Bootloader של Arduino באמצעות פרוטוקול DFU! באמצעות ארדואינו אחר או מתכנת atmel באמצעות 6 הפינים ליד תקע ה- USB.

בסופו של דבר דעו כי ה רק / חזקה> הדרך לבנה AVR, ובכך גם Arduino, היא לשחק עם הנתיכים ולאפס את נתיכי התכנות. וגם אז, תוכל להשתמש ב- HVSP כדי לשמור את המכשיר שלך, אם כי לעתים קרובות פחות בעיות פשוט לקחת שבב חדש.

תודה על כל המידע השימושי, בסופו של דבר הצלחנו להשיג זאת.
ובכן, הדרך הנכונה לבנות AVR היא עם זרם יתר / מתח יתר. ואז זה יהיה קלוי ...
אבל אז, זה לא נקרא לבנים, אלא טיגון, או כמו שאומרים קלייה. שים 15 רמפס דרך ה- MCU, ואני מתערב שתראה אותו קופץ דרך החדר ;-)
כיצד לשחרר מפתח ספציפי? אני רוצה לחקות מקש HOLD ואז לשחרר. וגם בקישור, הדמות עוברת למערך [2] ואילו כאן עוברת ל [1]. למה?
ובכן, כפי שמוצג בדוגמה שלי, אתה עושה את זה בשני שלבים, קודם אתה לוחץ על המקש, ואז יש את העיכוב ואז משחרר אותו. ובכן, אז תצטרך להרצות לעצמך כיצד פועל יישום מקלדת החומרה, זה לא טבעי, ולכל ערך של המערך יש משמעות. סליחה על כך שאין לי קישור לשיתוף כספומט, אך בכל פעם שתמצא משהו שמחפש באינטרנט, אנא פרסם תגובה חדשה ☺
רק כדי להיות ברור. יכולת זו תלויה ב- Atmega16u2, כך למשל זה לא אפשרי עם Arduino ננו?
#2
+8
user3486
2014-08-07 07:13:24 UTC
view on stackexchange narkive permalink

יצרתי פרויקט שמחליף לחלוטין את ה- Bootloader של Arduino. אתה יכול להעלות סקיצות ולהשתמש בהן כ- HID. ראה פרויקט HID ב- Github: https://github.com/NicoHood/HID

ברוך הבא ל- Arduino SE! האם אתה יכול להוסיף קצת על השימוש בספרייה שלך? תודה!
קרא את הקריאה ונסה את הדוגמאות? הכל שם, אין צורך לרמות את הכל כאן. הכל ב- Github מעודכן :)
סליחה אחי, זה נראה כמו ספרייה מגניבה, אבל התיעוד שלך חסר מטורף. אין הוראות התקנה אמיתיות עד כמה שיכולתי לדעת, ונושאים שלמים בוויקי שלך פשוט אומרים "TODO" (במיוחד נושא ה- gamepad ריק לחלוטין ככה). : - /
למעשה יש צורך להציג כאן תיאור בסיסי: התשובות נדרשות להיות משמעותיות גם בלי הקישור החיצוני, שעלול למות. וזה לא.


שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...