- Πως δουλεύει:
- Απαιτούμενα στοιχεία:
- Επεξήγηση κυκλώματος:
- Συνοπτικές συντεταγμένες Πτυχίο GPS σε Λεπτό έως Δεκαδικό
- Επεξήγηση προγραμματισμού:
Το σύστημα παρακολούθησης οχημάτων γίνεται πολύ σημαντικό σήμερα, ειδικά σε περίπτωση κλεμμένων οχημάτων. Εάν έχετε εγκαταστήσει σύστημα GPS στο όχημά σας, μπορείτε να παρακολουθείτε την τοποθεσία του οχήματος και βοηθά την αστυνομία να παρακολουθεί τα κλεμμένα οχήματα. Προηγουμένως είχαμε κατασκευάσει παρόμοιο έργο στο οποίο οι συντεταγμένες τοποθεσίας του οχήματος αποστέλλονται σε κινητό τηλέφωνο, ελέγξτε εδώ το Arduino Vehicle Tracker με χρήση GPS και GSM.
Εδώ χτίζουμε μια πιο προηγμένη έκδοση του συστήματος παρακολούθησης οχημάτων στην οποία μπορείτε να παρακολουθείτε το όχημά σας στους Χάρτες Google. Σε αυτό το έργο, θα στείλουμε τις συντεταγμένες τοποθεσίας στον Τοπικό διακομιστή και θα πρέπει απλώς να ανοίξετε μια «ιστοσελίδα» στον υπολογιστή ή το κινητό σας, όπου θα βρείτε έναν σύνδεσμο προς τους Χάρτες Google με τις Συντεταγμένες τοποθεσίας οχημάτων Όταν κάνετε κλικ σε αυτόν τον σύνδεσμο, σας μεταφέρει στους Χάρτες Google, δείχνοντας την τοποθεσία των οχημάτων σας. Σε αυτό το σύστημα παρακολούθησης οχημάτων που χρησιμοποιεί τους Χάρτες Google, το GPS Module χρησιμοποιείται για τη λήψη των Συντεταγμένων τοποθεσίας, η μονάδα Wi-Fi για τη διατήρηση δεδομένων αποστολής σε υπολογιστή ή κινητό μέσω Wi-Fi και το Arduino χρησιμοποιείται για να κάνει το GPS και το Wi-Fi να μιλούν μεταξύ τους.
Πως δουλεύει:
Για να παρακολουθήσουμε το όχημα, πρέπει να βρούμε τις Συντεταγμένες του Οχήματος χρησιμοποιώντας τη μονάδα GPS Η μονάδα GPS επικοινωνεί συνεχώς με τον δορυφόρο για τη λήψη συντεταγμένων. Τότε πρέπει να στείλουμε αυτές τις συντεταγμένες από το GPS στο Arduino μας χρησιμοποιώντας το UART. Και έπειτα το Arduino εξάγει τα απαιτούμενα δεδομένα από τα ληφθέντα δεδομένα μέσω GPS.
Πριν από αυτό, το Arduino στέλνει εντολή στο Wi-Fi Module ESP8266 για διαμόρφωση & σύνδεση με το δρομολογητή και λήψη της διεύθυνσης IP. Μετά από αυτό, το Arduino προετοιμάζει το GPS για τη λήψη συντεταγμένων και η οθόνη LCD εμφανίζει ένα «μήνυμα Ανανέωσης σελίδας». Αυτό σημαίνει ότι ο χρήστης πρέπει να ανανεώσει την ιστοσελίδα. Όταν ο χρήστης ανανεώνει την ιστοσελίδα, το Arduino λαμβάνει τις συντεταγμένες GPS και στέλνει το ίδιο στην ιστοσελίδα (τοπικός διακομιστής) μέσω Wi-Fi, με ορισμένες πρόσθετες πληροφορίες και έναν σύνδεσμο χαρτών Google. Τώρα, κάνοντας κλικ σε αυτόν τον σύνδεσμο, ο χρήστης ανακατευθύνει στους Χάρτες Google με τη συντεταγμένη και, στη συνέχεια, θα πάρει την τρέχουσα θέση οχήματος στο Κόκκινο σημείο στους Χάρτες Google. Η όλη διαδικασία εμφανίζεται σωστά στο βίντεο στο τέλος.
Απαιτούμενα στοιχεία:
- Arduino UNO
- Μονάδα Wi-Fi ESP8266
- Μονάδα GPS
- Καλώδιο USB
- Σύνδεση καλωδίων
- ΦΟΡΗΤΟΣ ΥΠΟΛΟΓΙΣΤΗΣ
- Παροχή ηλεκτρικού ρεύματος
- LCD 16x2
- Πίνακας ψωμιού
- Δρομολογητής Wi-Fi
Επεξήγηση κυκλώματος:
Το κύκλωμα για αυτό το « Vehicle Tracking using Google Maps project» είναι πολύ απλό και χρειαζόμαστε κυρίως ένα Arduino UNO, GPS Module και ESP8266 Wi-Fi module. Υπάρχει μια οθόνη LCD 16x2 προαιρετικά συνδεδεμένη για εμφάνιση της κατάστασης. Αυτή η οθόνη LCD συνδέεται στις ακίδες 14-19 (A0-A5) του Arduino.
Εδώ η καρφίτσα Tx της μονάδας GPS συνδέεται απευθείας με τον ψηφιακό αριθμό pin 10 του Arduino. Χρησιμοποιώντας εδώ το λογισμικό Serial Library, επιτρέψαμε τη σειριακή επικοινωνία στους ακροδέκτες 10 και 11, και τους κάναμε Rx και Tx αντίστοιχα και αφήσαμε τον ακροδέκτη Rx του GPS Module ανοιχτό. Από προεπιλογή, τα Pin 0 και 1 του Arduino χρησιμοποιούνται για σειριακή επικοινωνία, αλλά χρησιμοποιώντας τη βιβλιοθήκη SoftwareSerial, μπορούμε να επιτρέψουμε τη σειριακή επικοινωνία σε άλλες ψηφιακές καρφίτσες του Arduino. Ο προσαρμογέας 12 Volt χρησιμοποιείται για την τροφοδοσία της μονάδας GPS. Πηγαίνετε εδώ για να μάθετε "Πώς να χρησιμοποιήσετε το GPS με το Arduino" και να λάβετε τις συντεταγμένες.
Οι καρφίτσες Vcc και GND της μονάδας Wi-Fi ESP8266 συνδέονται άμεσα με 3.3V και το GND του Arduino και το CH_PD συνδέονται επίσης με 3.3V. Οι ακίδες Tx και Rx του ESP8266 συνδέονται απευθείας με τους ακροδέκτες 2 και 3 του Arduino. Το λογισμικό Serial Library χρησιμοποιείται επίσης εδώ για να επιτρέπει τη σειριακή επικοινωνία στους ακροδέκτες 2 και 3 του Arduino. Έχουμε ήδη καλύψει λεπτομερώς τη διασύνδεση της μονάδας Wi-Fi ESP8266 στο Arduino, επίσης παρακαλούμε μεταβείτε στο "Πώς να στείλετε δεδομένα από το Arduino στην ιστοσελίδα χρησιμοποιώντας WiFi" πριν κάνετε αυτό το έργο Παρακάτω είναι η εικόνα του ESP8266:
Το ESP8266 έχει δύο LED, ένα είναι Κόκκινο, για ένδειξη Ισχύς και το δεύτερο είναι Μπλε που είναι LED Επικοινωνίας Δεδομένων. Το μπλε LED αναβοσβήνει όταν το ESP στέλνει ορισμένα δεδομένα μέσω του πείρου Tx. Επίσης, μην συνδέετε το ESP σε τροφοδοσία +5 volt διαφορετικά η συσκευή σας ενδέχεται να προκαλέσει ζημιά. Εδώ σε αυτό το έργο, έχουμε επιλέξει 9600 baud rate για όλες τις επικοινωνίες UART.
Ο χρήστης μπορεί επίσης να δει την επικοινωνία μεταξύ της μονάδας Wi-Fi ESP8266 και του Arduino, στο Serial Monitor, με ρυθμό baud 9600:
Ελέγξτε επίσης το βίντεο στο τέλος αυτού του έργου, για λεπτομερή διαδικασία εργασίας.
Συνοπτικές συντεταγμένες Πτυχίο GPS σε Λεπτό έως Δεκαδικό
Το GPS Module λαμβάνει συντεταγμένες από δορυφόρο σε μορφή Degree Minute (ddmm.mmmm) και εδώ χρειαζόμαστε μορφή Decimal Degree για αναζήτηση της τοποθεσίας στους Χάρτες Google. Πρώτα λοιπόν πρέπει να μετατρέψουμε τις συντεταγμένες από τη μορφή λεπτού βαθμού σε μορφή δεκαδικού βαθμού χρησιμοποιώντας τον δεδομένο τύπο.
Ας υποθέσουμε ότι το 2856.3465 (ddmm.mmmm) είναι το Latitude που λαμβάνουμε από τη μονάδα GPS. Τώρα οι δύο πρώτοι αριθμοί είναι βαθμοί και οι υπόλοιποι είναι λεπτά.
Οπότε το 28 είναι βαθμός και το 56,3465 είναι λεπτό.
Τώρα εδώ, δεν χρειάζεται να μετατρέψετε το μέρος βαθμού (28), αλλά χρειάζεται μόνο να μετατρέψετε το τμήμα λεπτού σε δεκαδικό βαθμό διαιρώντας το 60:
Συντεταγμένος δεκαδικού βαθμού = Βαθμός + Λεπτό / 60
Συντεταγμένος δεκαδικού βαθμού = 28 + 56.3465 / 60
Συντεταγμένος δεκαδικού βαθμού = 28 + 0,94
Συντεταγμένος δεκαδικού βαθμού = 28,94
Η ίδια διαδικασία θα γίνει για τα δεδομένα γεωγραφικού μήκους. Έχουμε μετατρέψει τις συντεταγμένες από το Degree Minute σε Decimal Degree χρησιμοποιώντας τους παραπάνω τύπους στο Arduino Sketch:
float minut = lat_minut.toFloat (); minut = minut / 60; float degree = lat_degree.toFloat (); γεωγραφικό πλάτος = βαθμός + λεπτό; minut = long_minut.toFloat (); minut = minut / 60; βαθμό = long_degree.toFloat (); λογικότητα = βαθμός + λεπτό;
Επεξήγηση προγραμματισμού:
Σε αυτόν τον κώδικα, χρησιμοποιήσαμε τη βιβλιοθήκη SerialSoftware για τη διασύνδεση της μονάδας ESP8266 και GPS με το Arduino. Στη συνέχεια, έχουμε ορίσει διαφορετικές ακίδες και για τα δύο και αρχικοποιούμε το UART με 9600 baud rate Περιλαμβάνεται επίσης βιβλιοθήκη LiquidCrystal για διασύνδεση LCD με Arduino.
#περιλαμβάνω
Μετά από αυτό, πρέπει να ορίσουμε ή να δηλώσουμε μεταβλητή και συμβολοσειρά για διαφορετικό σκοπό.
Συμβολοσειρά ιστοσελίδας = ""; int i = 0, k = 0; int gps_status = 0; Όνομα συμβολοσειράς = "
1. Όνομα: Το όνομά σας
"; // 22 String dob ="2. DOB: 12 Φεβρουαρίου 1993
"; // 21 Αριθμός συμβολοσειράς ="4. Αριθμός οχήματος: RJ05 XY 4201
"; // 29 κορδόνι κορδονιού ="Συντεταγμένες:
"; // 17 String latitude =" "; String logitude =" "; String gpsString =" "; char * test =" $ GPGGA ";Στη συνέχεια, έχουμε κάνει κάποιες λειτουργίες για διαφορετικούς σκοπούς όπως:
Λειτουργία για τη λήψη δεδομένων GPS με συντεταγμένες:
void gpsEvent () {gpsString = ""; while (1) {while (gps.available ()> 0) {char inChar = (char) gps.read (); gpsString + = inChar; if (i <7) {if (gpsString! = test) {i = 0;……………….
Λειτουργία για εξαγωγή δεδομένων από συμβολοσειρά GPS και μετατροπή αυτών των δεδομένων σε μορφή δεκαδικού βαθμού από τη μορφή δεκαδικού λεπτού, όπως εξηγείται στο ακουστικό.
void coordinate2dec () {String lat_degree = ""; για (i = 18; i <20; i ++) lat_degree + = gpsString; Συμβολοσειρά lat_minut = ""; για (i = 20; i <28; i ++) lat_minut + = gpsString;……………….
Λειτουργία για την αποστολή εντολών στο ESP8266 για διαμόρφωση και σύνδεση με WIFI.
void connect_wifi (συμβολοσειρά cmd, int t) {int temp = 0, i = 0; ενώ (1) {Serial.println (cmd); Serial1.println (cmd); ενώ (Serial1.available ()> 0)……………….
λειτουργία void show_coordinate () για εμφάνιση συντεταγμένων στην οθόνη LCD και Serial Monitor καιλειτουργία get_ip () για λήψη διεύθυνσης IP.
Λειτουργία Void Send () για τη δημιουργία μιας συμβολοσειράς πληροφοριών που πρόκειται να αποσταλεί στην ιστοσελίδα χρησιμοποιώντας ESP8266 και void sendwebdata () Λειτουργία για την αποστολή συμβολοσειρών πληροφοριών στην ιστοσελίδα χρησιμοποιώντας το UART.
Σε λειτουργία void loop , το Arduino περιμένει συνεχώς την ιστοσελίδα φόρμας αιτήματος (Ανανέωση ιστοσελίδας).
κενός βρόχος () {k = 0; Serial.println ("Παρακαλώ ανανεώστε τη σελίδα σας"); lcd.setCursor (0,0); lcd.print ("Παρακαλώ ανανέωση"); lcd.setCursor (0,1); lcd.print ("Η ιστοσελίδα σας.."); ενώ (k <1000)……………….
Ελέγξτε τον Πλήρες κωδικό παρακάτω.