- דרישות קדם
- תרשים מעגל
- זרימת תהליכים לעכבר האוויר
- תכנות את Arduino לעכבר אוויר
- סקריפט מנהל התקן של פייתון
- בדיקת עכבר האוויר של ארדואינו
שאלתי את עצמך פעם איך העולם שלנו נע לעבר המציאות הסוחפת. אנו מוצאים ללא הרף דרכים ושיטות חדשות ליצור אינטראקציה עם הסביבה שלנו באמצעות מציאות מדומה, מציאות מעורבת, מציאות רבודה וכו 'מכשירים חדשים יוצאים מדי יום עם טכנולוגיות הקצב המהיר הללו כדי להרשים אותנו בטכנולוגיות האינטראקטיביות החדשות שלהם.
נעשה שימוש בטכנולוגיות סוחפות אלו במשחקים, פעילויות אינטראקטיביות, בידור ויישומים רבים אחרים. במדריך זה, אנו הולכים לדעת על שיטה אינטראקטיבית כזו אשר נותנת לך דרך חדשה לתקשר עם המערכת שלך במקום להשתמש בעכבר משעמם. גיקים המשחקים שלנו חייבים לדעת שכמה שנים אחורה נינטנדו חברת משחקים מוכרת רעיון של שיטה אינטראקטיבית תלת ממדית כדי לקיים אינטראקציה עם הקונסולות שלהם בעזרת בקר כף יד המכונה בקר Wii. הוא משתמש במד התאוצה כדי לאתר את המחוות שלך למשחק ולשלוח אותו למערכת באופן אלחוטי. אם אתה רוצה לדעת יותר על טכנולוגיה זו תוכל לבדוק את הפטנט שלהם EP1854518B1, זה ייתן לך מושג מלא על האופן שבו הטכנולוגיה הזו עובדת.
בהשראת הרעיון הזה אנו הולכים ליצור "עכבר אוויר", לקיים אינטראקציה עם מערכות רק על ידי הזזת הקונסולה באוויר, אך במקום להשתמש בהפניות קואורדינטות תלת מימדיות, אנו נשתמש רק בהפניות קואורדינטות דו מימדיות אנו יכולים לחקות את הפעולות של עכבר המחשב מכיוון שהעכבר עובד בשני הממדים X ו- Y.
הרעיון שמאחורי עכבר אוויר אלחוטי תלת-ממדי זה פשוט מאוד, נשתמש במד תאוצה כדי לקבל את ערך האצת הפעולות והתנועות של "עכבר האוויר" לאורך ציר ה- X ו- Y, ואז על סמך הערכים של מד התאוצה נשלוט על סמן העכבר ונבצע פעולות מסוימות בעזרת מנהלי ההתקן של תוכנת הפיתון הפועלים במחשב.
דרישות קדם
- ארדואינו ננו (כל דגם)
- מד תאוצה ADXL335
- מודול Bluetooth HC-05
- ללחוץ על כפתורים
- מחשב מותקן של פייתון
כדי ללמוד עוד אודות התקנת פיתון במחשב, עקוב אחר ההדרכה הקודמת בנושא בקרת LED Arduino-Python.
תרשים מעגל
כדי לשלוט על המחשב שלך בתנועות היד שלך אתה צריך מד תאוצה המספק את התאוצה לאורך ציר ה- X ו- Y וכדי להפוך את כל המערכת לאלחוט, משתמשים במודול Bluetooth להעברת האות באופן אלחוטי למערכת שלך.
כאן משתמשים במד תאוצה ADXL335, זהו מודול ציר משולש מבוסס MEMS המוציא את התאוצה לאורך ציר ה- X, Y ו- Z, אך כפי שנאמר בעבר לשליטה בעכבר נזדקק לתאוצה רק לאורך ציר ה- X וה- Y. למידע נוסף על שימוש במד תאוצה ADXL335 עם Arduino עם הפרויקטים הקודמים שלנו:
- מערכת התראת תאונות רכב מבוסס Arduino באמצעות GPS, GSM ומאיץ
- משחק פינג פונג באמצעות Arduino ו- Accelerometer
- רובוט נשלט על ידי תנועת תאוצה מבוסס תאוצה באמצעות ארדואינו
- אזעקת גלאי רעידות אדמה באמצעות Arduino
כאן מחברים את סיכת ה- Xout ו- Yout של מד התאוצה לסיכות האנלוגיות, A0 ו- A1 של Arduino ולהעברת האותות מה- Arduino למערכת מודול בלוטות 'HC-05 משמש כאן, מכיוון ש- Bluetooth עובד על ה- Tx ו- Rx חיבורי פינים, ולכן אנו משתמשים בסיכות סדרתיות D2 ו- D3. הוא מחובר באמצעות תוכנה טורית מכיוון שאם נחבר את ה- Bluetooth לסידורי החומרה ונתחיל לקבל את הקריאות על גבי קונסולת הפיתון זה יראה שגיאות בקצב השידור הלא-תואם מכיוון ש- Bluetooth היה מתקשר עם הפיתון בקצב השידור האישי שלו. למידע נוסף על שימוש במודול Bluetooth על ידי מעבר על פרויקטים שונים מבוססי Bluetooth באמצעות מיקרו-בקרים שונים כולל ארדואינו.
כאן השתמשנו בשלושה כפתורי לחיצה - אחד להפעלת עכבר האוויר, ושניים אחרים ללחיצה שמאלית וימינה כפי שמוצג בתמונה למטה:
זרימת תהליכים לעכבר האוויר
תרשים הזרימה מראה את זרימת התהליך של עכבר אוויר מבוסס Arduino:
1. המערכת בודקת ברציפות את הדק המכני ללחיצה עד שלא נלחץ עליו אנו יכולים להתאמן כרגיל בעזרת עכבר המחשבים.
2. כאשר המערכת מזהה לחיצת כפתור, הפקד לעכבר הועבר לעכבר האוויר.
3. כאשר לוחצים על כפתור ההדק המערכת מתחילה להעביר את קריאות העכבר למחשב. קריאת המערכת מורכבת מקריאות מד התאוצה, והקריאות עבור לחיצה שמאלית וימינה.
4. קריאות המערכת מורכבות מזרם הנתונים של בת אחד או 8 סיביות, שבהן שלוש הסיביות הראשונות מורכבות מקואורדינטות ה- X, שנייה שלוש סיביות מורכבות מקואורדינטות Y, הסיבית השנייה האחרונה היא סיבית המצב לקבלת הסטטוס של לחיצת העכבר השמאלית והסיבית האחרונה היא סיבית הסטטוס לקבלת הסטטוס של קליק ימני.
5. הערך של שלושת הביטים הראשונים כלומר קואורדינטה X יכול לנוע בין 100 <= Xcord <= 999, ואילו הערך עבור קואורדינטה Y יכול לנוע בין 100 <= Ycord <= 800. הערכים של קליק ימני וקליק שמאלי הם הערכים הבינאריים או 0 או 1 בהם 1 מציין שהקליק נעשה ו -0 שהקליק לא נעשה על ידי המשתמש.
6. כדי לא להקפיץ את הכפתור להשפיע על מיקום הסמן, נשמר עיכוב ידוע של 4 שניות לאחר כל לחיצה על כפתור ההדק של העכבר.
7. ללחיצה הימנית והשמאלית בעכבר האוויר, עלינו ללחוץ תחילה על כפתור הלחצן השמאלי או הימני, ולאחר מכן עלינו ללחוץ על כפתור ההדק כדי לעבור למיקום עכבר האוויר היכן שנרצה.
תכנות את Arduino לעכבר אוויר
יש לתכנת את הארדואינו לקרוא את ערכי התאוצה בציר ה- X ו- Y. תוכנית מלאה ניתנת בסוף, להלן קטעים חשובים מהקוד.
הגדרת המשתנים הגלובליים
כאמור, אנו נחבר את מודול ה- Bluetooth לסיכות התוכנה. אז כדי להגדיר את סדרת התוכנה עלינו להכריז על ספריית התוכנה סדרתית ולהגדיר את הפינים עבור Tx ו- Rx. בארדואינו ננו ואונו פין 2 ו -3 יכולים לעבוד כסדרת תוכנה. לאחר מכן, אנו מכריזים על אובייקט ה- Bluetooth מהספרייה הסדרתית של התוכנה כדי להגדיר את הסיכה ל- Tx ו- Rx.
#לִכלוֹל
הגדרת בטל ()
ב התקנת הפונקציה, אנחנו הולכים להגדיר את המשתנים לספר את התכנית אם הם יפעלו כקלט או פלט. כפתור ההדק יוגדר כמשוך קלט, והלחיצות השמאליות והימניות מוכרזות כקלט ומוגדרות כגבוהות כדי לגרום להן לשמש כמשכיות קלט.
הגדר גם את קצב השידור עבור תקשורת טורית ו- Bluetooth ל- 9600.
הגדרת חלל () { pinMode (x, INPUT); pinMode (y, INPUT); pinMode (trigger, INPUT_PULLUP) pinMode (lclick, INPUT); pinMode (rclick, INPUT); pinMode (led, OUTPUT); digitalWrite (lclick, HIGH); digitalWrite (rclick, HIGH); Serial.begin (9600); bluetooth.begin (9600); }
לולאה בטלה ()
כפי שהיינו צריכים כפתור ההדק כדי לדעת מתי אנחנו צריכים לשלוח את מערכת זרם הנתונים, כך הקמנו את כל הקוד בתוך בעוד לולאה אשר ברציפות תפקח המדינה הדיגיטלית של ההדק למשוך למעלה, כפי שהוא הולך נמוך זה יהיה העבירו אותו הלאה לצורך העיבוד.
כפי שצירפנו LED כדי ליידע אותנו למעמד של המערכת עבור כאשר כפתור ההדק נלחץ, בתחילה אנחנו להגדיר את הובילה נמוך מחוץ בעוד לולאה כתנאי וגבוה ברירת המחדל של אותו בתוך בעוד לולאה אשר מאירים את LED בכל פעם שלוחצים על כפתור ההדק.
כדי לקרוא את הסטטוס של לחצן הלחיצה השמאלי והימני, הכרזנו באופן גלובלי על שני משתנים lclick ו- rclick שערכיהם הוגדרו בתחילה ל 0.
ובסופו של לולאה , להגדיר את הערך של אלה משתנים בהתאם למצב דיגיטלי של כפתור לחיצה שמאלה וימינה כדי לבדוק אם נלחץ או לא.
היינו קוראים את הערכים של סיכות ה- X ו- Y החוצה של מד התאוצה באמצעות הפונקציה analogRead ונמפה את הערכים הללו לגודל המסך כדי להעביר את מצביע העכבר על פני כל המסך. מכיוון שגודל המסך הוא הפיקסלים במסך, עלינו להגדיר אותו בהתאם וכפי שאנחנו צריכים שער הפלט יהיה שלוש ספרות הגדרנו בכוונה את הטווח עבור ה- X כ- 100 <= X <= 999 וכדומה ערך ל- Y כ- 100 <= Y <= 800. זכור, הפיקסלים נקראים מהפינה השמאלית העליונה כלומר בפינה השמאלית העליונה יש את הערך (0,0), אך מכיוון שהכרזנו שלוש ספרות עבור ה- x ו- y הערכים שלנו נקראו מהנקודה (100,100).
יתר על כן, הדפיסו את ערך הקואורדינטות ואת סטטוס הלחיצה על הסידורי וה- Bluetooth בעזרת פונקציות Serial.print ו- bluetooth.print שעוזרות לקבל את הערכים על הצג הסדרתי ומעל המערכת שלכם באמצעות Bluetooth.
לבסוף, עקב הקפצת כפתור ניתן לחזור על ערך יחיד שיגרום לסמן עכבר להתעכב על מיקום יחיד, אז כדי להיפטר מכך עלינו להוסיף את העיכוב הזה.
loop loop () { digitalWrite (led, LOW); בעוד (digitalRead (trigger) == LOW) { digitalWrite (led, HIGH); lstate = digitalRead (lclick); rstate = digitalRead (rclick); xh = analogRead (x); yh = analogRead (y); xcord = מפה (xh, 286,429,100,999); ycord = מפה (yh, 282,427,100,800); Serial.print (xcord); Serial.print (ycord); אם (lstate == LOW) Serial.print (1); אחר Serial.print (0); אם (rstate == LOW) Serial.print (1); אחר Serial.print (0); bluetooth.print (xcord); bluetooth.print (ycord); אם (lstate == LOW) Bluetooth.print (1); אַחֵר bluetooth.print (0); אם (rstate == LOW) Bluetooth.print (1); אחר bluetooth.print (0); עיכוב (4000); }}
סקריפט מנהל התקן של פייתון
נכון לעכשיו, השלמנו עם החומרה וחלק הקושחה שלה, עכשיו כדי לגרום לעכבר האוויר לעבוד צריך להיות לנו סקריפט דרייבר שיכול לפענח את האותות מעכבר האוויר לתנועות הסמן, אז בשביל זה, בחרנו פִּיתוֹן. פייתון היא שפת סקריפטים ועל ידי סקריפט כאן אנו מתכוונים שזה עוזר לנו לקבל את השליטה על התוכנית האחרת, שכן כאן אנו שולטים על סמן העכבר.
אז פתח את מעטפת הפיתון שלך והתקן את הספריות הבאות באמצעות הפקודות הבאות:
PIP להתקין סדרתי PIP להתקין pyautogui
סדרתי היא ספריית פיתון אשר עוזרת לנו לקבל את נתון ממשקי סדרתי כגון יציאות com וגם מאפשר לנו לתפעל אותו בעוד pyautogui היא ספריית פייתון כדי לקבל שליטה על התכונות הגרפיות, במקרה זה, עכבר.
עכשיו בואו נגיע לקוד עבור מנהלי ההתקנים, הדבר הראשון שעלינו לעשות הוא לייבא את הספריות הטוריות והספריות pyautogui, ואז מהספרייה הסדרתית עלינו להגדיר את יציאת ה- com לתקשורת בקצב שידור של 9600, זהה ל- Bluetooth. serial פועל ב. בשביל זה אתה צריך לחבר את מודול ה- Bluetooth למערכת שלך ואז בהגדרות המערכת אתה צריך לבדוק לאיזו יציאת רשת הוא מחובר.
הדבר הבא הוא לקרוא את התקשורת הטורית מה- Bluetooth למערכת ולשמור עליה ברציפות לשמור על שאר הקוד בלולאה רציפה בעזרת זמן תוך 1.
כפי שנאמר בעבר שארדואינו שולח 8 ביטים, הראשון 6 לקואורדינטות והשניים האחרונים למצב כפתורי הלחיצה. אז קרא את כל הביטים בעזרת ser.read והגדר את אורכו ל- 8 ביטים.
לאחר מכן, חלק את הסיביות עבור קואורדינטות הסמן ולחיצות על ידי חיתוך עליהן ואז פרוס עוד יותר את סיביות הסמן לקואורדינטות X ו- Y בנפרד. כנ"ל לגבי לחיצה שמאלית וימינה.
כעת מהתקשורת אנו מקבלים מחרוזת בתים ועלינו להמיר אותה למספר שלם כדי שהם יוכלו להשתלב בקואורדינטות, אנו עושים זאת על ידי פענוח אותם ואז הקלד אותם למספרים שלמים.
כעת כדי להזיז את הסמן אנו משתמשים בפונקציה pyautogui moveto, שלוקחת כארגומנטים את אותם קואורדינטות שלמות ומעבירה את הסמן למיקום זה.
בדוק אחר הקליקים, אנו עושים זאת באמצעות שני הביטים האחרונים ופונקציית הקליק של pyautogui, קליק ברירת המחדל שלה נותר אחד, אולם אנו יכולים להגדיר אותו ימינה על ידי הצהרת ערך כפתור ימינה, אנו יכולים גם להגדיר את מספר הקליקים אליו הגדר אותו ללחיצה כפולה על ידי הגדרת פרמטר הקליקים ל -2.
להלן קוד הפייתון המלא להפעלה במחשב:
ייבא ייבוא סדרתי pyautogui ser = סידורי. סידורי ('com3', 9600) ואילו 1: k = ser.read (8) סמן = k לחץ = k x = סמן y = סמן l = לחץ על r = לחץ על xcor = int (x.decode ('utf-8')) ycor = int (y.decode ('utf-8')) pyautogui.moveTo (xcor, ycor) אם l == 49: pyautogui.click (קליקים = 2) elif r = = 49: pyautogui.click (כפתור = 'נכון', קליקים = 2)
בדיקת עכבר האוויר של ארדואינו
אז להפעלת עכבר האוויר חבר אליו מקור כוח. זה יכול להיות מחריץ ה- Arduino Nano USB או מאספקת החשמל המווסתת 5V באמצעות 7805 IC. לאחר מכן הפעל את סקריפט מנהל ההתקן של הפיתון על ידי הגדרת יציאת ה- com שאליה מחובר ה- Bluetooth שלך. כאשר התסריט פועל היית רואה איחור בזמן מהבהב של ה- Bluetooth זה אומר שהוא מחובר למערכת שלך. ואז להפעלתו לחץ על לחצן ההדק ותראה שהמיקום של הקואורדינטות ישתנה ואם ברצונך ללחוץ על שמאל או ימין, ואז לחץ תחילה על כפתור כפתור שמאל או ימין וכפתור ההדק יחד, תראה את פעולת הלחיצה ב מיקום שונה של הסמן.
בדוק את סרטון העבודה המפורט להלן.