מערכת מעקב אחר רכב הופכת לחשובה מאוד בימים אלה, במיוחד במקרה של רכבים גנובים. אם ברכב שלך מותקנת מערכת GPS, תוכל לעקוב אחר מיקום הרכב שלך, וזה עוזר למשטרה לעקוב אחר הרכבים הגנובים. בעבר בנינו פרויקט דומה בו נשלחים קואורדינטות מיקום של רכב בטלפון הסלולרי, בדוק כאן 'מעקב אחר כלי רכב מבוסס ארדואינו באמצעות GPS ו- GSM.
כאן אנו בונים גרסה מתקדמת יותר של מערכת מעקב אחר רכב, בה תוכל לעקוב אחר הרכב שלך במפות Google. בפרויקט זה, אנו נשלח את קואורדינטות המיקום לשרת המקומי ועליך רק לפתוח 'דף אינטרנט' במחשב או בנייד שלך, שם תמצא קישור למפות Google עם קואורדינטות המיקום של כלי הרכב שלך. כאשר אתה לוחץ על קישור זה, הוא לוקח אותך במפות Google ומציג את מיקום הרכב שלך. במערכת מעקב אחר רכב זו באמצעות מפות Google, מודול GPS משמש להשגת קואורדינטות מיקום, מודול Wi-Fi לשמירת שליחת נתונים למחשב או לנייד באמצעות Wi-Fi וארדואינו משמש כדי לגרום ל- GPS ו- Wi-Fi לדבר זה עם זה..
איך זה עובד:
כדי לעקוב אחר הרכב, עלינו למצוא את הקואורדינטות של הרכב באמצעות מודול GPS. מודול GPS מתקשר ברציפות עם הלוויין לקבלת קואורדינטות. אז אנחנו צריכים לשלוח את הקואורדינטות האלה מ- GPS לארדואינו שלנו באמצעות UART. ואז Arduino מחלץ את הנתונים הנדרשים מהנתונים שהתקבלו באמצעות GPS.
לפני כן, Arduino שולח פקודה למודול ה- Wi-Fi ESP8266 לתצורה וחיבור לנתב וקבלת כתובת ה- IP. לאחר מכן ארדואינו אתחול GPS לקבלת קואורדינטות ו- LCD מציג 'הודעה רענון עמוד'. כלומר, המשתמש צריך לרענן את דף האינטרנט. כאשר המשתמש מרענן את דף האינטרנט, Arduino מקבל את קואורדינטות ה- GPS ושולח אותו לדף האינטרנט (שרת מקומי) באמצעות Wi-Fi, עם מידע נוסף וקישור למפות גוגל. כעת על ידי לחיצה על קישור זה המשתמש מפנה אל מפות Google באמצעות הקואורדינטות ואז הוא / היא יקבלו את מיקום הרכב הנוכחי בנקודה האדומה במפות Google. התהליך כולו מוצג כראוי בסרטון בסוף.
רכיבים נדרשים:
- ארדואינו UNO
- מודול Wi-Fi ESP8266
- מודול GPS
- כבל יו אס בי
- חוטי חיבור
- מחשב נייד
- ספק כוח
- LCD בגודל 16x2
- לוח לחם
- נתב Wi-Fi
הסבר מעגל:
המעגל ל'מעקב אחר רכב באמצעות פרויקט מפות גוגל ' הוא פשוט מאוד ואנחנו זקוקים בעיקר לארדואינו UNO, מודול GPS ומודול Wi-Fi ESP8266. יש LCD בגודל 16x2 המחובר אופציונלי להצגת המצב. LCD זה מחובר ב- 14-19 (A0-A5) סיכות של Arduino.
כאן סיכת ה- Tx של מודול ה- GPS מחוברת ישירות לסיכה הדיגיטלית מספר 10 של Arduino. על ידי שימוש בספרייה הסדרתית של התוכנה כאן, אפשרנו תקשורת טורית בסיכה 10 ו- 11, והפכנו אותם ל- Rx ו- Tx בהתאמה והשאירנו את סיכת ה- Rx של מודול ה- GPS פתוח. כברירת מחדל פין 0 ו- 1 של Arduino משמשים לתקשורת טורית אך באמצעות ספריית SoftwareSerial אנו יכולים לאפשר תקשורת טורית על פינים דיגיטליים אחרים של Arduino. מתאם 12 וולט משמש להפעלת מודול ה- GPS. עבור כאן בכדי ללמוד "כיצד להשתמש ב- GPS עם ארדואינו" ולקבל את הקואורדינטות.
מודול ה- Wi-Fi של ה- VP וסיכות GND של ESP8266 מחובר ישירות ל -3.3 וולט ו- GND של Arduino ו- CH_PD מחובר גם ל -3.3 וולט. סיכות Tx ו- Rx של ESP8266 מחוברות ישירות לסיכה 2 ו- 3 של Arduino. הספרייה הסדרתית של התוכנה משמשת כאן גם כדי לאפשר תקשורת טורית בסיכה 2 ו- 3 של Arduino. כבר כיסינו את ממשק ה- Wi-Fi ESP8266 ל- Arduino בפירוט, אנא עברו על "כיצד לשלוח נתונים מארדואינו לדף אינטרנט באמצעות WiFi" לפני ביצוע פרויקט זה. להלן התמונה של ESP8266:
ל- ESP8266 שני נוריות, האחת אדומה, לציון כוח והשנייה היא כחולה שהיא נורית תקשורת נתונים. נורית LED כחולה מהבהבת כאשר ESP שולח נתונים באמצעות פין ה- Tx שלה. כמו כן, אל תחבר ESP לאספקת +5 וולט אחרת המכשיר שלך עלול להזיק. כאן בפרויקט זה בחרנו קצב שידור 9600 לכל תקשורת ה- UART.
המשתמש יכול גם לראות את התקשורת בין מודול ה- Wi-Fi ESP8266 לבין Arduino, בצג הסידורי, בקצב השידור של 9600:
בדוק גם את הסרטון בסוף פרויקט זה, לקבלת תהליך עבודה מפורט.
המרת GPS של דקה עד עשרונית של קואורדינטות:
מודול GPS מקבל קואורדינטות מלווין בפורמט דקה תואר (ddmm.mmmm) וכאן אנו זקוקים לפורמט תואר עשרוני כדי לחפש את המיקום במפות Google. אז ראשית עלינו להמיר קואורדינטות מתבנית דקת תואר לפורמט תואר עשרוני באמצעות הנוסחה הנתונה.
נניח ש- 2856.3465 (ddmm.mmmm) הוא קו הרוחב שאנו מקבלים מהמודול GPS. כעת שני המספרים הראשונים הם מעלות והנותרים הם דקות.
אז 28 זה תואר ו -56.3465 זה דקה.
עכשיו, אין צורך להמיר את חלק התואר (28), אלא רק צריך להמיר את החלק הדקה לתואר עשרוני על ידי חלוקת 60:
תיאום תואר עשרוני = תואר + דקה / 60
תיאום תואר עשרוני = 28 + 56.3465 / 60
תיאום תואר עשרוני = 28 + 0.94
תיאום תואר עשרוני = 28.94
אותו תהליך ייעשה עבור נתוני האורך. הפכנו קואורדינטות מדקה תואר לתואר עשרוני על ידי שימוש בנוסחאות לעיל בשרטוט Arduino:
צף דקה = lat_minut.toFloat (); דקה = דקה / 60; תואר צף = lat_degree.toFloat (); קו רוחב = תואר + דקה; דקה = long_minut.toFloat (); דקה = דקה / 60; דרגה = long_degree.toFloat (); רוחב = תואר + דקה;
הסבר על תכנות:
בקוד זה השתמשנו בספריית SerialSoftware לממשק ESP8266 ומודול GPS עם Arduino. לאחר מכן הגדרנו סיכות שונות עבור שניהם ואתחל את UART עם קצב שידור 9600. כללה גם ספריית LiquidCrystal לממשק LCD עם Arduino.
#לִכלוֹל
אחריה, עלינו להגדיר או להכריז על משתנה ומחרוזת למטרה אחרת.
דף אינטרנט מחרוזת = ""; int i = 0, k = 0; int gps_status = 0; שם מחרוזת = "
1. שם: שמך
"; // 22 מחרוזת dob ="2. תאריך לידה: 12 בפברואר 1993
"; // 21 מספר מחרוזת ="4. מספר רכב: RJ05 XY 4201
"; // 29 מחרוזת cordinat ="קואורדינטות:
"; // 17 מחרוזת רוחב =" "; מחרוזת logitude =" "; מחרוזת gpsString =" "; char * test =" $ GPGGA ";ואז ביצענו כמה פונקציות למטרות שונות כמו:
פונקציה לקבלת נתוני GPS עם קואורדינטות:
בטל gpsEvent () {gpsString = ""; בעוד (1) {while (gps.available ()> 0) {char inChar = (char) gps.read (); gpsString + = inChar; אם (i <7) {if (gpsString! = test) {i = 0;……………….
פונקציה לחילוץ נתונים ממחרוזת GPS ולהמרת הנתונים לתבנית עשרונית מתבנית הדקה העשרונית, כמוסבר לעבר.
בטל coordinate2dec () {String lat_degree = ""; עבור (i = 18; i <20; i ++) lat_degree + = gpsString; מחרוזת lat_minut = ""; עבור (i = 20; i <28; i ++) lat_minut + = gpsString;……………….
פונקציה לשליחת פקודות ל- ESP8266 לקביעת התצורה והחיבור שלה ל- WIFI.
בטל connect_wifi (מחרוזת cmd, int t) {int temp = 0, i = 0; בעוד (1) {Serial.println (cmd); Serial1.println (cmd); בעוד (Serial1.available ()> 0)……………….
פונקציה void show_coordinate () להצגת קואורדינטות בצג ה- LCD והצג הסידורי ופונקציה void get_ip () לקבלת כתובת IP.
פונקציה Void Send () ליצירת מחרוזת מידע שיש לשלוח לדף אינטרנט באמצעות ESP8266 וביטול פונקציה sendwebdata () לשליחת מחרוזת מידע לדף אינטרנט באמצעות UART.
בשנת לולאת חלל פונקצית Arduino לחכות ברציפות אינטרנט טופס בקשה (דף אינטרנט רענון).
לולאה בטלה () {k = 0; Serial.println ("אנא רענן את דף Ur"); lcd.setCursor (0,0); lcd.print ("אנא רענן"); lcd.setCursor (0,1); lcd.print ("דף האינטרנט שלך.."); בעוד (k <1000)……………….
בדוק את הקוד המלא שלהלן.