- התקנת חבילות נדרשות לתקשורת Bluetooth:
- התאמת מכשירים עם Raspberry Pi באמצעות Bluetooth:
- בחירת מכונית הצעצוע:
- תרשים מעגל והסבר:
- שליטה ברכב מרחוק עם אפליקציית אנדרואיד BlueTerm:
- תכנות פיתון:
Raspberry Pi פופולרי מאוד עבור פרויקטים של IoT בגלל יכולתו החלקה של תקשורת אלחוטית דרך האינטרנט. Raspberry Pi 3 כולל Wi-Fi ו- Bluetooth מובנים, ו- Bluetooth הוא פרוטוקול תקשורת אלחוטי אלחוטי פופולרי מאוד. היום אנו הולכים לבנות מכונית נשלטת מרחוק באמצעות Raspberry Pi 3 ו- Bluetooth, כאן נשתמש בטלפון החכם כשלט לשליטה במכונית. בנינו בעבר יצרנו מכונית RC זו באמצעות Arduino.
כאן אנו משתמשים ב- Raspberry Pi 3 עם Bluetooth מובנה, כך שאיננו צריכים להשתמש בשלט USB Bluetooth חיצוני. כאן אנו משתמשים בפרוטוקול Bluetooth RFCOMM לתקשורת אלחוטית.
תכנות ל- Bluetooth בפייתון עוקב אחר מודל תכנות השקעים והתקשורת בין מכשירי ה- Bluetooth נעשית דרך שקע RFCOMM. RFCOMM (תקשורת תדרים רדיו) הוא פרוטוקול Bluetooth אשר סיפק יציאות טוריות של RS-232 ונקרא גם הדמיית יציאה טורית. פרופיל יציאה טורית של Bluetooth מבוסס על פרוטוקול זה. RFCOMM פופולרי מאוד ביישומי Bluetooth בגלל התמיכה הרחבה וה- API הזמין לציבור. זה קשור לפרוטוקול L2CAP.
אם יש לך Raspberry Pi 2, עליך להשתמש בפלאג Bluetooth חיצוני או במודול Bluetooth HC-06. בדוק את הפרויקטים הקודמים שלנו לשימוש במכשירי Bluetooth חיצוניים אלה: שליטה על Raspberry Pi GPIO באמצעות Android App באמצעות Bluetooth ו- Raspberry Pi מכשירי חשמל ביתיים.
התקנת חבילות נדרשות לתקשורת Bluetooth:
לפני שמתחילים עלינו להתקין תוכנה כלשהי להגדרת תקשורת Bluetooth ב- Raspberry Pi. אתה צריך שיהיה לך כרטיס זיכרון מותקן של Raspbian Jessie עם Raspberry Pi. עיין במאמר זה כדי להתקין את מערכת ההפעלה Raspbian ולהתחיל לעבוד עם Raspberry Pi. אז עכשיו ראשית עלינו לעדכן את ה- Raspbian באמצעות הפקודות הבאות:
sudo apt-get עדכון
אז עלינו להתקין כמה חבילות הקשורות ל- Bluetooth:
sudo apt-get להתקין
ואז אתחל את ה- Raspberry Pi:
אתחול סודו
BlueZ הוא פרויקט קוד פתוח וערימת רשמי פרוטוקול Bluetooth של Linux. הוא תומך בכל פרוטוקולי הליבה של Bluetooth וכעת הופך לחלק מליבת הלינוקס הרשמית.
Blueman מספק את ממשק שולחן העבודה לניהול ובקרה של התקני Bluetooth.
לבסוף אנו זקוקים לספריית פיתון לתקשורת Bluetooth כדי שנוכל לשלוח ולקבל נתונים דרך RFCOMM באמצעות שפת פייתון:
sudo apt-get להתקין פייתון
התקן גם את ספריות התמיכה של GPIO עבור Raspberry Pi:
sudo apt-get install python-rpi.gpio
כעת סיימנו להתקין חבילות נדרשות לתקשורת בלוטות 'ב- Raspberry Pi.
התאמת מכשירים עם Raspberry Pi באמצעות Bluetooth:
התאמת מכשירי Bluetooth, כמו טלפון נייד, עם פטל פי היא קלה מאוד. כאן התאמנו את הטלפון החכם אנדרואיד שלנו עם פטל פי. בעבר התקנו את BlueZ ב- Pi, המספק כלי שורת פקודה בשם "bluetoothctl" לניהול התקני ה- Bluetooth שלנו.
עכשיו פתח את כלי השירות bluetoothctl לפי הפקודה הבאה:
סודו
אתה יכול לבדוק את כל הפקודות של כלי השירות bluetoothctl על ידי הקלדת 'עזרה' . לעת עתה עלינו להזין להלן פקודות בסדר נתון:
# הפעלה # סוכן מופעל # ניתנת לזיהוי # התאמה # סריקה פועלת
לאחר הפקודה האחרונה "סרוק", תראה את מכשיר ה- Bluetooth שלך (טלפון נייד) ברשימה. וודא שהמכשירים הסמוכים שלך מופעלים באמצעות Bluetooth, וגלויים להם. לאחר מכן העתק את כתובת ה- MAC של המכשיר שלך והתאם אותה באמצעות הפקודה הנתונה:
זוג
לאחר מכן תתבקש להזין קוד גישה או להצמד במסוף המסוף שלך ואז להקליד שם קוד גישה ולחץ על Enter. לאחר מכן הקלד את אותו סיסמה בטלפון הנייד שלך כאשר תתבקש ועכשיו אתה מותאם בהצלחה ל- Raspberry Pi. הסברנו גם את כל התהליך הזה בסרטון שפורסם בהדרכת השליטה הקודמת ב- GPIO. הנה הקישור הישיר ל- YouTube.
כפי שנאמר קודם, אתה יכול גם להשתמש בממשק שולחן העבודה כדי להתאים את הטלפון הנייד. לאחר התקנת Blueman, תראה סמל Bluetooth בצד ימין של שולחן העבודה של Raspberry Pi, כפי שמוצג להלן, ובאמצעותו תוכל לבצע את ההתאמה בקלות.
בחירת מכונית הצעצוע:
בכך פרויקט רכב פטל Pi המבוקר השתמשנו מכונית צעצוע ההפגנה. כאן בחרנו מכונית צעצוע RF עם תכונת היגוי נע שמאלה ימינה. לאחר רכישת מכונית זו החלפנו את מעגל ה- RF שלה במעגל הפטל שלנו. למכונית זו שני מנועי DC, אחד לסובב שני גלגל קדמי ואחד הוא לסובב שני גלגלים אחוריים. מנוע צד קדמי משמש למתן כיוון לרכב פירושו פנייה שמאלה או ימינה (כמו תכונת היגוי רכב אמיתית). ומנוע צד אחורי משמש לנהיגה במכונית בכיוון קדימה ואחורה. Bluetooth של פטל משמש לקבלת פיקוד אלחוטי מטלפון אנדרואיד לשליטה במכונית.
אתה יכול להשתמש בכל מכונית צעצוע עם שני מנועי DC לסיבוב גלגלים קדמיים ואחוריים.
תרשים מעגל והסבר:
במכונית נשלטת מרחוק זו, עלינו לחבר רק את Raspberry Pi עם שני מנועים באמצעות מודול L293D. להפעלת ה- Raspberry Pi ולמכונית השתמשנו בבנק כוח נייד. בנק הכוח הנייד מספיק בכדי להניע את ה- Raspberry Pi והמנועים של המכונית, אך כאשר אנו מניחים את בנק הכוח על המכונית אז בגלל המשקל הרב של מכונית בנק כוח ניידת לא יוכלו לנוע כראוי. לכן אנו ממליצים להשתמש באספקת החשמל במשקל נמוך או בסוללות ליתיום להפעלת המערכת. כל החיבורים מוצגים בתרשים המעגל להלן. עיין גם במדור הרובוטיקה שלנו כדי ללמוד עוד על שליטה במנועים בטכנולוגיות שונות.
הערה: אל תכניסו יותר מ- 5 v לפטל הפטל.
מעגל זה נוצר על לוח Perf עבור פרויקט זה, כך שיש פחות משקל על המכונית.
שליטה ברכב מרחוק עם אפליקציית אנדרואיד BlueTerm:
כעת לאחר שהגדרנו את כל הדברים וניסינו בהצלחה לנתב את הטלפון החכם באמצעות Bluetooth, עלינו להתקין אפליקציית Android לתקשורת עם Raspberry Pi באמצעות מתאם סידורי Bluetooth, כדי שנוכל לשלוט בסיכות ה- GPIO של Raspberry Pi. כפי שנאמר קודם לכן פרוטוקול RFCOMM / SPP מחקה תקשורת טורית באמצעות Bluetooth, לכן התקנו כאן את אפליקציית BlueTerm התומכת בפרוטוקול זה.
אתה יכול גם להשתמש בכל יישום מסוף Bluetooth אחר התומך בתקשורת באמצעות שקע RFCOMM.
כעת לאחר הורדת ההתקנה של אפליקציית BlueTerm, הפעל את תוכנית ה- Python הנתונה למטה מהטרמינל וחבר את מכשיר ה- raspberrypi המותאם מאפליקציית BlueTerm בו זמנית.
לאחר חיבור מוצלח תראה מחובר: raspberrypi בפינה הימנית העליונה של האפליקציה כמוצג להלן:
עכשיו אתה יכול פשוט להזין את הפקודות הבאות מאפליקציית BlueTerm כדי לגרום למכונית לנוע בכיוון הרצוי. לחץ על 'q' כדי לצאת מהתוכנית. אתה יכול להשתמש במקלדת הקלדה של Google כדי לשלוט במכונית זו באמצעות הקול שלך. בדוק את ההדגמה המלאה בסרטון שניתן בסוף.
פקודות:
F - מעבר קדימה
B - מעבר לאחור
S - עצור
L - קדימה מהלך שמאלה
R - קדימה מהלך ימינה
א - מהלך שמאלה לאחור
P - מהלך ימינה אחורה
ש - צא
תכנות פיתון:
תוכנית פייתון לשליטה ב- Raspberry Pi GPIO עם אפליקציית Android היא מאוד פשוטה ומובנת מאליה. רק עלינו ללמוד מעט על הקוד הקשור לתקשורת RFCOMM עם Bluetooth. אחרת זה כמו לשלוט בכל רובוט או מכונית על ידי הפיכת סיכת המנוע לגובה גבוה או נמוך. התוכנית המלאה מוצגת להלן בסעיף הקוד.
ראשית, עלינו לייבא את ספריית שקעי ה- Bluetooth המאפשרת לנו לשלוט ב- Bluetooth עם שפת פייתון; התקנו את הספרייה עבור אותה בחלק הקודם.
ייבא Bluetooth
ואז כללנו עוד כמה קבצי כותרת והגדרנו סיכות למנועים והציבו אותם כברירת מחדל.
ייבוא זמן ייבוא Bluetooth ייבוא RPi.GPIO כ- GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.set אזהרות (שקר) GPIO.setmode (GPIO.BCM) GPIO.setup (m11, GPIO.OUT) GPIO.setup (m12, GPIO.OUT) GPIO.setup (m21, GPIO.OUT) GPIO.setup (m22, GPIO.OUT) GPIO.output (m11, 0) GPIO.output (m12, 0) GPIO.output (m21, 0) פלט GPIO. (m22, 0)
להלן הקוד האחראי לתקשורת Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) port = 1 server_socket.bind (("", port)) server_socket.listen (1) client_socket, address = server_socket.accept () הדפס "חיבור מקובל מ-", כתובת
כאן נוכל להבין אותם שורה אחר שורה:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): יצירת שקע לתקשורת RFCOMM עם Bluetooth.
server_socket.bind (("", port): - השרת קושר את הסקריפט במארח 'ליציאה.
server_socket.listen (1): השרת מקשיב לקבל חיבור אחד בכל פעם.
client_socket, address = server_socket.accept (): השרת מקבל את בקשת החיבור של הלקוח ומקצה את כתובת ה- mac לכתובת המשתנה, client_socket הוא שקע הלקוח
אחרי זה יצרנו כמה פונקציות האחראיות להנעת מכונית בכיוון הרצוי: def שמאל_צד_קדימה (), def ימני_צד_קדימה (), def קדימה (), def שמאל_צד_פוך (), def ימני_צד_פוך (), def הפוך () def stop (). פונקציות אלה ייקראו בהתאמה כאשר אנו לוחצים על L, R, F, A, P, B, S מהאפליקציה Mobile blueTerm הניידת והמכונית תנוע בהתאם.
data = "" בעוד ש- 1: data = client_socket.recv (1024) הדפס "קיבל:% s"% data if (data == "F"): קדימה () elif (data == "L"): left_side_forward () elif (נתונים == "R"): צד_ימני_קדימה () elif (נתונים == "B"): הפוך () elif (נתונים == "A"): שמאל_צד_הפוך () elif (נתונים == "P"): הימני () נתונים elif == "S": עצור () elif (נתונים == "Q"): הדפס ("צא") הפסקה client_socket.close () server_socket.close ()
data = client_socket.recv (1024): קבל נתונים דרך שקע הלקוח client_socket והקצה אותם לנתונים המשתנים. ניתן לקבל מקסימום 1024 תווים בכל פעם.
לבסוף, לאחר כל התכנות, סגור את חיבור הלקוח והשרת באמצעות הקוד שלהלן:
client_socket.close () server_socket.close ()