- רכיבים נדרשים:
- מודול GPS ועבודתו:
- הכנת ה- Raspberry Pi לתקשורת עם GPS:
- חיבורים לממשק GPS של Raspberry Pi:
- בדיקה לפני סקריפט פייתון:
אחת הפלטפורמות המוטבעות הכי מגניבות כמו Arduino נתנה ליצרנים ולעושי DIY אפשרות לקבל נתוני מיקום בקלות באמצעות מודול GPS ובכך לבנות דברים שמסתמכים על מיקום. עם כמות הכוח שארז ה- Raspberry Pi, זה בהחלט יהיה מדהים לבנות פרויקטים מבוססי GPS עם אותם מודולי GPS זולים וזה מוקד ההודעה. היום בפרויקט זה נתממש את מודול ה- GPS עם Raspberry Pi 3.
המטרה של פרויקט זה היא לאסוף נתוני מיקום (קו אורך ורוחב) באמצעות UART ממודול GPS ולהציג אותם על גבי LCD בגודל 16x2, כך שאם אינכם מכירים את האופן שבו LCD 16x2 עובד עם ה- Raspberry Pi, זה עוד הזדמנות נהדרת ללמוד.
רכיבים נדרשים:
- פטל פי 3
- מודול GPS Neo 6m v2
- 16 x 2 LCD
- מקור כוח עבור ה- Raspberry Pi
- כבל LAN לחיבור ה- pi למחשב שלך במצב ללא ראש
- כבלי לוח לחם ומגשרים
- נגד / פוטנציומטר ל- LCD
- כרטיס זיכרון 8 או 16 ג'יגה-בתים המריץ את ג'סי Raspbian
מלבד זאת עלינו להתקין ספריית GPS Daemon (GPSD), ספריית Adafruit LCD 16x2, אותה אנו מתקינים בהמשך במדריך זה.
כאן אנו משתמשים ב- Raspberry Pi 3 עם Raspbian Jessie OS. בעבר דנו בכל דרישות החומרה והתוכנה הבסיסיות, תוכלו לחפש זאת במבוא לפטל.
מודול GPS ועבודתו:
GPS מייצג מערכת מיקום גלובלית ומשמשת לזיהוי קו רוחב ואורך של כל מקום על פני כדור הארץ, עם זמן UTC מדויק (זמן מתואם אוניברסלי). מודול GPS הוא המרכיב העיקרי בפרויקט מערכת מעקב הרכב שלנו. מכשיר זה מקבל את הקואורדינטות מהלוויין לכל שנייה ושנייה, עם זמן ותאריך.
מודול GPS שולח את הנתונים הקשורים למיקום המעקב בזמן אמת, והוא שולח כל כך הרבה נתונים בפורמט NMEA (ראה צילום המסך למטה). פורמט NMEA מורכב מכמה משפטים, בהם אנו זקוקים למשפט אחד בלבד. משפט זה מתחיל מ- $ GPGGA ומכיל את הקואורדינטות, הזמן ומידע שימושי אחר. זה GPGGA נקרא Data תקן מערכת מיקום גלובלית. למידע נוסף על קריאת נתוני GPS ומיתריו כאן.
אנו יכולים לחלץ קואורדינטות ממחרוזת $ GPGGA על ידי ספירת הפסיקים במחרוזת. נניח שאתה מוצא מחרוזת $ GPGGA ושומר אותו במערך, ואז ניתן למצוא את Latitude לאחר שתי פסיקים ואת קו האורך ניתן למצוא אחרי ארבע פסיקים. כעת ניתן להכניס קווי רוחב ואורך אלו למערכים אחרים.
להלן מחרוזת $ GPGGA, יחד עם תיאורו:
$ GPGGA, 104534.000,7791.0381, N, 06727.4434, E, 1,08,0.9,510.4, M, 43.9, M,, * 47
$ GPGGA, HHMMSS.SSS, קו רוחב, N, קו אורך, E, FQ, NOS, HDP, גובה, M, גובה, M,, נתוני בדיקה
מזהה |
תיאור |
$ GPGGA |
נתונים לתיקון מערכת מיקום גלובלית |
HHMMSS.SSS |
זמן בפורמט של דקה שעה שניות ומילישניות. |
קו רוחב |
קו רוחב (קואורדינטות) |
נ |
כיוון N = צפון, S = דרום |
קו אורך |
קו אורך (קואורדינטות) |
ה |
כיוון E = מזרח, W = מערב |
FQ |
תקן נתוני איכות |
NOS |
מספר לוויינים בשימוש |
HPD |
דילול אופקי של דיוק |
גוֹבַה |
גובה מגובה פני הים |
M |
מטר |
גוֹבַה |
גוֹבַה |
סכום בדיקה |
נתוני בדיקת בדיקה |
אתה יכול לבדוק את פרויקטי ה- GPS האחרים שלנו:
- גשש רכב מבוסס ארדואינו המשתמש ב- GPS ו- GSM
- מערכת התראת תאונות רכב מבוסס Arduino באמצעות GPS, GSM ומאיץ
- כיצד להשתמש ב- GPS עם Arduino
- עקוב אחר רכב במפות Google באמצעות Arduino, ESP8266 ו- GPS
הכנת ה- Raspberry Pi לתקשורת עם GPS:
אוקיי אז כדי לקפוץ פנימה, אז זה לא ישעמם, אניח שאתה כבר יודע הרבה על ה- Raspberry Pi, מספיק כדי להתקין את מערכת ההפעלה שלך, להשיג את כתובת ה- IP, להתחבר לתוכנת מסוף כמו מרק ודברים אחרים על פאי. אם יש לך בעיה כלשהי לעשות את הדברים שצוינו לעיל, היכה אותי בסעיף ההערות ואשמח לעזור.
הדבר הראשון שעלינו לעשות בכדי להתחיל את הפרויקט הזה הוא להכין את ה- Raspberry Pi 3 שלנו כדי להיות מסוגל לתקשר עם מודול ה- GPS באמצעות UART, האמינו לי, זה די מסובך ולקח את הניסיון להשיג את זה נכון, אבל אם תעקבו המדריך שלי בזהירות תקבל את זה בבת אחת, זה החלק הקשה למדי בפרויקט. כאן השתמשנו במודול GPS Neo 6m v2.
כדי לצלול פנימה, הנה הסבר קטן על איך עובד ה- Raspberry Pi 3 UART.
ל- Raspberry Pi שני UARTs מובנים, PL011 ו- UART mini. הם מיושמים באמצעות גושי חומרה שונים כך שיש להם מאפיינים שונים במקצת. על פטל pi 3 לעומת זאת, מודול האלחוטי / בלוטות 'מחובר ל- PLO11 UART, בעוד ש- UART מיני משמש למוצא הקונסולה של לינוקס. תלוי איך אתה רואה את זה, אני אגדיר את ה- PLO11 כטוב ביותר מבין שני ה- UART בשל רמת היישום שלו. לכן עבור פרויקט זה נשבית את מודול ה- Bluetooth מ- PLO11 UART באמצעות שכבת-על הזמינה בגרסה הנוכחית המעודכנת של ג'סי Raspbian.
שלב 1: עדכון ה- Raspberry Pi:
הדבר הראשון שאני אוהב לעשות לפני שאני מתחיל כל פרויקט הוא עדכון ה- pi pberry. אז בואו לעשות את הרגיל ולהפעיל את הפקודות למטה;
sudo apt-get עדכון
ואז אתחל מחדש את המערכת באמצעות;
אתחול סודו
שלב 2: הגדרת ה- UART ב- Raspberry Pi:
הדבר הראשון שנעשה תחת זה הוא לערוך את הקובץ /boot/config.txt . לשם כך, הפעל את הפקודות הבאות:
sudo nano /boot/config.txt
בתחתית הקובץ config.txt, הוסף את השורות הבאות
dtparam = spi = ב- dtoverlay = pi3-disable-bt core_freq = 250 enable_uart = 1 force_turbo = 1
Ctrl + x ליציאה ולחץ על y והזן כדי לשמור.
ודא שאין שגיאות הקלדה או שגיאות על ידי בדיקה כפולה כי שגיאה עם זה עשויה למנוע את אתחול ה- pi שלך.
מהן הסיבות לפקודות אלה, כוח_טורבו מאפשר ל- UART להשתמש בתדר הליבה המרבי שאנו קובעים במקרה זה להיות 250. הסיבה לכך היא להבטיח עקביות ושלמות הנתונים הסידוריים שהתקבלו. חשוב לציין בשלב זה ששימוש בכוח_טורבו = 1 יבטל את האחריות על פי הפטל שלך, אך מלבד זאת, זה די בטוח.
ה- dtoverlay = pi3-disable-bt מנתק את ה- Bluetooth מה- ttyAMA0 , זה כדי לאפשר לנו גישה להשתמש בכוח ה- UART המלא הזמין באמצעות ttyAMAO במקום ה- UART ttyS0 המיני.
השלב השני תחת סעיף הגדרת UART זה הוא עריכת ה- boot / cmdline.txt
אני אציע לך ליצור עותק של ה- cmdline.txt ולשמור תחילה לפני העריכה כדי שתוכל לחזור אליו מאוחר יותר במידת הצורך. ניתן לעשות זאת באמצעות;
אתחול sudo cp / אתחול cmdline.txt / cmdline_backup.txt sudo nano /boot.cmdline.txt
החלף את התוכן ב;
dwc_otg.lpm_enable = 0 קונסולה = tty1 שורש = / dev / mmcblk0p2 rootfstype = ext4 מעלית = מועד אחרון fsck.repair = כן שורש להתיז שקט plymouth.ignore-serial-consoles
שמור וצא.
עם זאת, נצטרך לאתחל את המערכת שוב כדי לבצע שינויים ( אתחול מחדש של סודו ).
שלב 3: השבתת שירות ה- Getty Serial Raspberry Pi
השלב הבא הוא להשבית את סדרת ה- Pi של שירות ה- Getty , הפקודה תמנע ממנו להתחיל מחדש בהפעלה מחדש:
sudo systemctl להפסיק [email protected] sudo systemctl להשבית [email protected]
ניתן להשתמש בפקודות הבאות כדי לאפשר זאת שוב במידת הצורך
sudo systemctl הפעל [email protected] sudo systemctl התחל [email protected]
אתחל את המערכת מחדש.
שלב 4: הפעלת ttyAMAO:
השבתנו את ttyS0, הדבר הבא הוא שנאפשר את ttyAMAO .
sudo systemctl להפעיל [email protected]
שלב 5: התקן את Minicom ו- pynmea2:
נהיה מיניקום להתחבר למודול ה- GPS ולהבין את הנתונים. זה גם אחד הכלים בהם נשתמש כדי לבדוק האם מודול ה- GPS שלנו עובד בסדר. אלטרנטיבה ל- minicom היא תוכנת ה- daemon GPSD.
sudo apt-get להתקין minicom
כדי לנתח את הנתונים שהתקבלו בקלות, נשתמש בספריית pynmea2 . ניתן להתקין אותו באמצעות;
sudo pip להתקין pynmea2
תיעוד הספרייה ניתן למצוא כאן
שלב 6: התקנת ספריית LCD:
לצורך הדרכה זו נשתמש בספריית AdaFruit. הספריה עוצבה עבור מסכי AdaFruit אך עובדת גם עבור לוחות תצוגה באמצעות HD44780. אם התצוגה שלך מבוססת על זה, היא אמורה לעבוד ללא בעיות.
אני מרגיש שעדיף לשכפל את הספרייה ופשוט להתקין ישירות. לשכפל לרוץ;
שיבוט git
עבור לספרייה המשובטת והתקן אותה
cd./Adafruit_Python_CharLCD sudo python setup.py להתקין
בשלב זה, אני מציע להפעיל מחדש אתחול מחדש, כך שאנחנו מוכנים להמשיך לחיבור הרכיבים.
חיבורים לממשק GPS של Raspberry Pi:
חבר את מודול ה- GPS ואת ה- LCD ל- Raspberry Pi, כפי שמוצג בתרשים המעגלים שלהלן.
בדיקה לפני סקריפט פייתון:
אני חושב שזה חשוב לבדוק את חיבור מודול ה- GPS לפני שתמשיך לסקריפט הפיתון. אנו נשתמש במיניקום בשביל זה. הפעל את הפקודה:
sudo minicom -D / dev / ttyAMA0 -b9600
כאשר 9600 מייצג את קצב השידור שבו מתקשר מודול ה- GPS. זה עשוי לשמש פעם אחת אנו בטוחים בתקשורת נתונים בין ה- GPS ל- RPI, שהגיע הזמן לכתוב את סקריפט הפיתון שלנו.
ניתן לבצע את הבדיקה גם באמצעות חתול
סודו חתול / dev / ttyAMA0
בחלון תוכלו לראות משפטים של NMEA עליהם דנו קודם.
סקריפט Python עבור מדריך GPS זה של Raspberry Pi ניתן להלן בסעיף קוד.
עם כל מה שנאמר, הגיע הזמן לבדוק את כל המערכת. חשוב שתבטיח שה- GPS שלך יקבל תיקון טוב, על ידי הוצאתו, רוב ה- GPS דורש בין שלושה ל -4 לוויינים כדי לקבל תיקון, למרות ששלי עבד בתוך הבית.
עובד נכון? כן…
יש לך שאלות או הערות? זרוק אותם בסעיף ההערות.
סרטון ההדגמה ניתן להלן, שם הראינו את המיקום בקו רוחב ואורך על LCD באמצעות GPS ו- Raspberry Pi.