GPS – מיקום של דברים בזמן אמת

מודול עקיבה בזמן אמת עבור חפצים/אנשים/בעלי חיים/מכוניות.

הפרויקט שמוצג כאן הוא לצורך "בדיקת היתכנות" של מודול עקיבה GPS באמצעות שרת WEB. כל מה שמוצג כאן הוא על אחריות המשתמש ואין לאתר או למחבר הפוסט שום אחריות למוצג כאן כולל לכל נזק שייגרם. המשך הקריאה על אחריותכם בלבד!
כמו כן במדריך זה אין כל התייחסות לנושא אבטחת מידע וסייבר. הוא לצורך "בדיקת היתכנות" בלבד (POC) קבצי השרת פגיעים וכל מי שירצה יהיה לו גישה אליהם.כמו כן התקשורת בין החבילה לשרת ובין הלקוח לשרת לא מוצפנת וזמינה לכל. בחלק הבא תהיה התייחסות גם לנושא זה.

1.היחידה אחריה נעקוב (להלן החבילה) תהיה מורכבת מ:

  • בקר (ארדואינו)
  • מודול GPS ע"מ לדעת מיקום (SIM808)
  • מודול GSM לצורך התקשרות עם שרת WEB ע"מ לדווח לו את המיקום.(SIM808)

2.היישום בענן/שרת אינטרנט יהיה מורכב מקובץ PHP שאליו החבילה תדווח על מיקומה ,המיקום ישמר ולקוח שירצה מידע על מיקום החבילה יקבל זאת בצורת JSON.

3.הלקוח זה דף HTML עם מפות של גוגל שמתעדכן כל כמה שניות ע"י JSON עם פרטי מיקום החבילה אותו הוא מבקש מהשרת/ענן.

gps-tracker

בציור:

שלב 1 – החבילה מזהה מיקום באמצעות GPS.

שלב 2 – החבילה מדווחת מיקום לשרת.

שלב 3 – לקוח מבקש מידע על המיקום של החבילה מהשרת , מקבל אותו ומציג אותו ע"ג מפה.

רכיבים:

  1. מגן SIM808
  2. ארדואינו אונו
  3. כבל לארדואינו
  4. סוללה להטענת טלפון נייד(אופציונאלי).

shield

sim808-arduino

בנוסף יש צורך בשרת שיכול להריץ PHP ושזמין מהאינטרנט (לא יכוסה במדריך זה).

נחבר את המגן לארדואינו ונחבר את הארדואינו למחשב עם הכבל – בצורה כזאת גם ה SIM808 מקבל מתח.

הקוד:

רכיב ה SIM808 מתקשר עם הארדואינו בממשק סיריאלי – UART – וע"י פקודות AT. היצרן של הרכיב מספק קובץ מפורט איזה פקודות AT מפעילות את האופציות השונות , לדוגמה פקודות לשליחת SMS , להוצאת שיחה וכו'.

אנו נעשה שימוש בסיפריה Adafruit_FONA שמפשטת וחושפת פונקציות פשוטות ופקודות הAT נעשות כבר בתוך הסיפרייה.

כמו כן נעשה שימוש בסיפריה – SoftwareSerial על מנת שנוכל לדבג את התוכנית בערוץ UART החומרתי.

בנוסף בסיפריה ישנו קובץ בשם Adafruit_fona.cpp שם נצטרך לשנות את שם הAPN לאחד שיתאים למפעיל הסלולארי שעם הסים שלו אנו משתמשים.

וכמובן בקוד עצמו יש לשנות את שם השרת אליו נדווח מ yourserver.com לשם של השרת שלכם.

החבילה מבצעת

"GET" request

לשרת עם הפרמטרים של – latitude ו longitude , הקובץ בשרת בשם report.php מקבל את הבקשה ויוצר קובץ JSON עם הערכים הללו.
דף HTML עם מפה של גוגל מוטמעת בו פונה בAJAX כל כמה שניות לשרת בבקשה לספק לו את קובץ ה JSON שהשרת יצר,ואחרי שהוא מקבל את הקובץ הוא מציג את המיקום על גבי המפה שלצורך זה יש לקבל מגוגל KEY ולהוסיף אותו בקובץ tracker.html בשורה 15:

tracker-map
כל הקבצים שבפרוייקט מצורפים:

gps

TL-WR703N OpenWrt Arduino

tl-wr703n_arduino

בפוסט הזה ארחיב כיצד לתקשר עם ארדואינו ב WIFI באמצעות ה TL-WR703N .

רכיבים:

  • ארדואינו כלשהו עם מתאם USB כלשהו (זה יכול להיות UNO R3 או פרו מיני עם מתאם מבוסס ftdi או cp2102 או pl2303 וכו') כל ה USB TO TTL  הנפוצים נתמכים.
  • ראוטר TL-WR703N .

קוד מאוד פשוט לצורך בדיקת תקשורת אותו יש להעביר לארדואינו :

 

הקוד פשוט קורא מהפורט הסיריאלי ובמידה והמחרוזת היא  "miki"  הוא מדפיס את הקלט לפורט הסיריאלי כך שהקוד יאפשר לנו לבדוק קישוריות דו כיוונית.

אני אחבר ארדואינו אונו R3 לראוטר.

יש להוריד להתקין Putty   בשדה הכתובת לשים את כתובת הIP של הראוטר:

putty

 

לאחר שנקבל מסך טרמינל בשם המשתמש נקיש root ואת הסיסמה שהגדרנו:

putty2+

לפני שחיברנו את הארדואינו לראוטר דרך USB נריץ את הפקודות הבאות  (נעבור לתיקיית dev):

רשימה של כל קבצי המודולים המחוברים למכונת לינוקס :

(רשימה של כל קבצי המודולים המחוברים למכונת לינוקס )

תפתח בפנינו רשימה ונשים לב שאותה פקודת ls אחרי הכנסת הארדואינו תתן רשימה עם מודול אחד נוסף וכך נוכל לדעת את המבואה הסריאלית אליה אנו אמורים להאזין ולשלוח פקודות ע"מ לדבר עם הארדואינו:

putty3

נריץ את הפקודה הבאה (יש בעיה של auto reset עם הארדואינו, יש הרבה חומר על הנושא בפורומים שונים זה הסיכום שהגעתי מנבירה בפורומים וחקירה למידע נוסף):

לאחר מכן נריץ את הפקודה (תאזין על פורט ttyACM0 ושזה יהיה ברקע – "&") :

ולאחריה (כתוב לפורט הנ"ל את הקלט "miki" ותתעלם מתו שורה חדשה):

נראה שכל פעם שנכתוב את פקודת ה "echo" נקבל את הפלט "miki" כל קלט אחר לא יודפס:

putty5

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