Ο ιχνηλάτης GPS με βάση το GY-NEO6M φτιάχνετε μόνοι σας είναι εύκολος. Σύντομη περιγραφή του παραθύρου ρυθμίσεων του Arduino GPS tracker Hatire Arduino

Μετά από αρκετά πειράματα με το Arduino, αποφάσισα να φτιάξω έναν απλό και όχι πολύ ακριβό ιχνηλάτη GPS με συντεταγμένες που αποστέλλονται μέσω GPRS στον διακομιστή.
Μεταχειρισμένο Arduino Mega 2560 ( Arduino Uno), SIM900 - Μονάδα GSM/GPRS (για αποστολή πληροφοριών στον διακομιστή), δέκτης GPS SKM53 GPS.

Τα πάντα αγοράστηκαν στο ebay.com, για συνολικά περίπου 1500 ρούβλια (περίπου 500 ρούβλια για το arduino, λίγο λιγότερα για τη μονάδα GSM, λίγο περισσότερα για το GPS).

Δέκτης GPS

Πρώτα πρέπει να καταλάβετε πώς να εργάζεστε με το GPS. Η επιλεγμένη ενότητα είναι μία από τις φθηνότερες και απλούστερες. Ωστόσο, ο κατασκευαστής υπόσχεται μια μπαταρία για την εξοικονόμηση δορυφορικών δεδομένων. Σύμφωνα με το δελτίο δεδομένων, μια κρύα εκκίνηση θα πρέπει να διαρκέσει 36 δευτερόλεπτα, ωστόσο, στις δικές μου συνθήκες (10ος όροφος από το περβάζι, χωρίς κτίρια κοντά) χρειάστηκε έως και 20 λεπτά. Η επόμενη εκκίνηση όμως είναι ήδη 2 λεπτά.

Μια σημαντική παράμετρος των συσκευών που συνδέονται με το Arduino είναι η κατανάλωση ενέργειας. Εάν υπερφορτώσετε τον μετατροπέα Arduino, μπορεί να καεί. Για τον δέκτη που χρησιμοποιείται, η μέγιστη κατανάλωση ενέργειας είναι 45mA @ 3,3v. Το γιατί η προδιαγραφή πρέπει να υποδεικνύει την ισχύ του ρεύματος σε τάση διαφορετική από την απαιτούμενη (5V) είναι για μένα ένα μυστήριο. Ωστόσο, ο μετατροπέας Arduino θα αντέξει 45 mA.

Σύνδεση
Το GPS δεν ελέγχεται, αν και έχει pin RX. Για ποιο σκοπό είναι άγνωστο. Το κύριο πράγμα που μπορείτε να κάνετε με αυτόν τον δέκτη είναι να διαβάσετε δεδομένα μέσω του πρωτοκόλλου NMEA από τον ακροδέκτη TX. Επίπεδα - 5V, μόνο για Arduino, ταχύτητα - 9600 baud. Συνδέω VIN σε VCC του arduino, GND σε GND, TX σε RX του αντίστοιχου σειριακού. Διάβασα τα δεδομένα πρώτα χειροκίνητα και μετά χρησιμοποιώντας τη βιβλιοθήκη TinyGPS. Παραδόξως, όλα είναι ευανάγνωστα. Μετά τη μετάβαση στο Uno, έπρεπε να χρησιμοποιήσω το SoftwareSerial και μετά άρχισαν τα προβλήματα - ορισμένοι από τους χαρακτήρες του μηνύματος χάθηκαν. Αυτό δεν είναι πολύ κρίσιμο, καθώς το TinyGPS κόβει μη έγκυρα μηνύματα, αλλά είναι αρκετά δυσάρεστο: μπορείτε να ξεχάσετε τη συχνότητα 1Hz.

Μια γρήγορη σημείωση για το SoftwareSerial: δεν υπάρχουν θύρες υλικού στο Uno (εκτός από αυτή που είναι συνδεδεμένη στο USB Serial), επομένως πρέπει να χρησιμοποιήσετε λογισμικό. Έτσι, μπορεί να λάβει δεδομένα μόνο σε μια καρφίτσα στην οποία η πλακέτα υποστηρίζει διακοπές. Στην περίπτωση του Uno, αυτά είναι 2 και 3. Επιπλέον, μόνο μία τέτοια θύρα μπορεί να λαμβάνει δεδομένα κάθε φορά.

Έτσι μοιάζει ο «πάγκος δοκιμών».

Δέκτης/πομπός GSM


Τώρα έρχεται το πιο ενδιαφέρον κομμάτι. Μονάδα GSM - SIM900. Υποστηρίζει GSM και GPRS. Ούτε το EDGE, ούτε ειδικά το 3G, δεν υποστηρίζονται. Για τη μετάδοση δεδομένων συντεταγμένων, αυτό είναι πιθανώς καλό - δεν θα υπάρχουν καθυστερήσεις ή προβλήματα κατά την εναλλαγή μεταξύ των λειτουργιών, ενώ το GPRS είναι πλέον διαθέσιμο σχεδόν παντού. Ωστόσο, για ορισμένες πιο σύνθετες εφαρμογές αυτό μπορεί να μην είναι αρκετό.

Σύνδεση
Η μονάδα ελέγχεται επίσης μέσω της σειριακής θύρας, με την ίδια στάθμη - 5V. Και εδώ θα χρειαστούμε και RX και TX. Το module είναι shield, δηλαδή είναι εγκατεστημένο στο Arduino. Επιπλέον, είναι συμβατό τόσο με το mega όσο και με το uno. Η προεπιλεγμένη ταχύτητα είναι 115200.

Το συναρμολογούμε στο Mega και εδώ μας περιμένει η πρώτη δυσάρεστη έκπληξη: η καρφίτσα TX του module πέφτει στην 7η καρφίτσα του Mega. Οι διακοπές δεν είναι διαθέσιμες στην 7η ακίδα του mega, πράγμα που σημαίνει ότι θα πρέπει να συνδέσετε την 7η ακίδα, ας πούμε, στην 6η ακίδα, στην οποία είναι πιθανές διακοπές. Έτσι, θα σπαταλήσουμε μια καρφίτσα Arduino. Λοιπόν, για ένα μέγα δεν είναι πολύ τρομακτικό - τελικά, υπάρχουν αρκετές καρφίτσες. Αλλά για το Uno αυτό είναι ήδη πιο περίπλοκο (σας υπενθυμίζω ότι υπάρχουν μόνο 2 ακίδες που υποστηρίζουν διακοπές - 2 και 3). Ως λύση σε αυτό το πρόβλημα, μπορούμε να προτείνουμε να μην εγκαταστήσετε τη μονάδα στο Arduino, αλλά να τη συνδέσετε με καλώδια. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το Serial1.

Μετά τη σύνδεση, προσπαθούμε να "μιλήσουμε" στη μονάδα (μην ξεχάσετε να την ενεργοποιήσετε). Επιλέγουμε την ταχύτητα θύρας - 115200 και είναι καλό αν όλες οι ενσωματωμένες σειριακές θύρες (4 στο mega, 1 στο uno) και όλες οι θύρες λογισμικού λειτουργούν με την ίδια ταχύτητα. Με αυτόν τον τρόπο μπορείτε να επιτύχετε πιο σταθερή μεταφορά δεδομένων. Δεν ξέρω γιατί, αν και μπορώ να μαντέψω.

Έτσι, γράφουμε πρωτόγονο κώδικα για την προώθηση δεδομένων μεταξύ σειριακών θυρών, στέλνουμε Atz και λαμβάνουμε σιωπή ως απάντηση. Τι συνέβη? Α, διάκριση πεζών-κεφαλαίων. ATZ, είμαστε εντάξει. Ούρα, η ενότητα μπορεί να μας ακούσει. Θα πρέπει να μας τηλεφωνήσετε από περιέργεια; ATD +7499... Χτυπάει το σταθερό τηλέφωνο, βγαίνει καπνός από το arduino, το laptop σβήνει. Ο μετατροπέας Arduino κάηκε. Ήταν κακή ιδέα να το τροφοδοτήσω 19 βολτ, αν και γράφεται ότι μπορεί να λειτουργήσει από 6 έως 20 V, προτείνονται 7-12 V. Το φύλλο δεδομένων για τη μονάδα GSM δεν αναφέρει πουθενά για την κατανάλωση ενέργειας υπό φορτίο. Λοιπόν, το Mega πάει στην αποθήκη ανταλλακτικών. Με κομμένη την ανάσα ανοίγω το laptop που λάμβανε +19V μέσω της γραμμής +5V από USB. Λειτουργεί και ακόμη και το USB δεν κάηκε. Ευχαριστούμε τη Lenovo που μας προστατεύει.

Αφού κάηκε ο μετατροπέας, έψαξα για κατανάλωση ρεύματος. Άρα, κορυφή - 2Α, τυπική - 0,5Α. Αυτό ξεπερνά σαφώς τις δυνατότητες του μετατροπέα Arduino. Απαιτεί ξεχωριστό φαγητό.

Προγραμματισμός
Η μονάδα παρέχει εκτεταμένες δυνατότητες μεταφοράς δεδομένων. Ξεκινώντας από φωνητικές κλήσεις και SMS και τελειώνοντας με το ίδιο το GPRS. Επιπλέον, για το τελευταίο είναι δυνατή η εκτέλεση Αίτημα HTTPχρησιμοποιώντας εντολές AT. Θα χρειαστεί να στείλετε πολλά, αλλά αξίζει τον κόπο: δεν θέλετε πραγματικά να δημιουργήσετε ένα αίτημα με μη αυτόματο τρόπο. Υπάρχουν μερικές αποχρώσεις με το άνοιγμα ενός καναλιού μετάδοσης δεδομένων μέσω GPRS - θυμάστε το κλασικό AT+CGDCONT=1, "IP", "apn"; Άρα, το ίδιο χρειάζεται και εδώ, αλλά λίγο πιο πονηρό.

Για να αποκτήσετε μια σελίδα σε μια συγκεκριμένη διεύθυνση URL, πρέπει να στείλετε τις ακόλουθες εντολές:
AT+SAPBR=1,1 //Ανοικτή εταιρεία κινητής τηλεφωνίας (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //τύπος σύνδεσης - GPRS AT+SAPBR=3,1,"APN","internet" //APN, για Megafon - internet AT+HTTPINIT //Initialize HTTP AT+HTTPPARA="CID",1 //Carrier ID για χρήση. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Η πραγματική διεύθυνση URL, μετά το sprintf με συντεταγμένες AT+HTTPACTION=0 // Ζητήστε δεδομένα χρησιμοποιώντας τη μέθοδο GET //περιμένετε για απάντηση AT+HTTPTERM //διακοπή HTTP

Ως αποτέλεσμα, εάν υπάρχει σύνδεση, θα λάβουμε απάντηση από τον διακομιστή. Δηλαδή, στην πραγματικότητα, γνωρίζουμε ήδη πώς να στέλνουμε δεδομένα συντεταγμένων εάν ο διακομιστής τα λάβει μέσω GET.

Θρέψη
Δεδομένου ότι η τροφοδοσία της μονάδας GSM από έναν μετατροπέα Arduino, όπως ανακάλυψα, είναι κακή ιδέα, αποφασίστηκε να αγοράσω έναν μετατροπέα 12v->5v, 3A στο ίδιο ebay. Ωστόσο, στη μονάδα δεν αρέσει η παροχή ρεύματος 5 V. Ας πάμε για ένα hack: συνδέστε 5V στον ακροδέκτη από τον οποίο προέρχονται τα 5V από το arduino. Στη συνέχεια, ο ενσωματωμένος μετατροπέας της μονάδας (πολύ πιο ισχυρός από τον μετατροπέα Arduino, MIC 29302WU) θα κάνει από 5V αυτό που χρειάζεται η μονάδα.

Υπηρέτης

Ο διακομιστής έγραψε ένα πρωτόγονο - αποθήκευση συντεταγμένων και σχεδίαση στο Yandex.maps. Στο μέλλον, είναι δυνατή η προσθήκη διαφόρων χαρακτηριστικών, όπως υποστήριξη για πολλούς χρήστες, κατάσταση «οπλισμένου/άοπλου», κατάσταση των συστημάτων του οχήματος (ανάφλεξη, προβολείς κ.λπ.) και πιθανώς ακόμη και έλεγχος των συστημάτων του οχήματος. Φυσικά, με την κατάλληλη υποστήριξη για τον ιχνηλάτη, ο οποίος μετατρέπεται ομαλά σε ένα πλήρες σύστημα συναγερμού.

Δοκιμές πεδίου

Έτσι φαίνεται η συναρμολογημένη συσκευή, χωρίς τη θήκη:

Μετά την εγκατάσταση του μετατροπέα ισχύος και την τοποθέτησή του στη θήκη από ένα νεκρό μόντεμ DSL, το σύστημα μοιάζει με αυτό:

Κόλλησα τα καλώδια και αφαίρεσα αρκετές επαφές από τα μπλοκ Arduino. Μοιάζουν με αυτό:

Συνέδεσα 12 V στο αυτοκίνητο, οδήγησα στη Μόσχα και πήρα την πίστα:


Τα σημεία της πίστας είναι αρκετά μακριά το ένα από το άλλο. Ο λόγος είναι ότι η αποστολή δεδομένων μέσω GPRS διαρκεί σχετικά μεγάλο χρονικό διάστημα και κατά τη διάρκεια αυτής της περιόδου οι συντεταγμένες δεν διαβάζονται. Αυτό είναι ξεκάθαρο σφάλμα προγραμματισμού. Αντιμετωπίζεται, πρώτον, με την άμεση αποστολή ενός πακέτου συντεταγμένων με την πάροδο του χρόνου και, δεύτερον, με ασύγχρονη εργασία με τη μονάδα GPRS.

Ο χρόνος αναζήτησης για δορυφόρους στη θέση του συνοδηγού ενός αυτοκινήτου είναι μερικά λεπτά.

συμπεράσματα

Η δημιουργία ενός ιχνηλάτη GPS στο Arduino με τα χέρια σας είναι δυνατή, αν και δεν είναι μια ασήμαντη εργασία. Το κύριο ερώτημα τώρα είναι πώς να κρύψετε τη συσκευή στο αυτοκίνητο ώστε να μην εκτίθεται σε επιβλαβείς παράγοντες (νερό, θερμοκρασία), να μην καλύπτεται με μέταλλο (το GPS και το GPRS θα θωρακίζονται) και να μην είναι ιδιαίτερα αισθητή. Προς το παρόν απλώς βρίσκεται στην καμπίνα και συνδέεται με την υποδοχή του αναπτήρα.

Λοιπόν, πρέπει επίσης να διορθώσουμε τον κώδικα για ένα πιο ομαλό κομμάτι, αν και το πρόγραμμα παρακολούθησης εκτελεί ήδη την κύρια εργασία.

Μεταχειρισμένες συσκευές

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • GSM/GPRS Shield με βάση SIM900
  • Μετατροπέας DC-DC 12v->5v 3A

Προσωπικοί πομποί GPS

Σήμερα, η πρόοδος προχωρά με τέτοιο ρυθμό που οι συσκευές που προηγουμένως ήταν ογκώδεις, ακριβές και εξαιρετικά εξειδικευμένες χάνουν γρήγορα μέγεθος, βάρος και τιμή, αλλά αποκτούν πολλές νέες λειτουργίες.

Έτσι οι συσκευές που βασίζονται στην τεχνολογία GPS έφτασαν σε gadget τσέπης και εγκαταστάθηκαν σταθερά εκεί, δίνοντας στους ανθρώπους νέες ευκαιρίες. Αξίζει ιδιαίτερα να επισημανθούν μεμονωμένοι πομποί GPS.

Ουσιαστικά, αυτοί είναι οι ίδιοι ιχνηλάτες GPS, σχεδιασμένοι μόνο για χρήση όχι σε όχημα, αλλά από άτομο στην καθημερινή ζωή.

Ανάλογα με το μοντέλο, πολλά διάφορες συσκευές. Στην απλούστερη μορφή του, είναι απλά ένα μικρό κουτί χωρίς οθόνη, το οποίο σας επιτρέπει να ελέγχετε τις κινήσεις παιδιών, ζώων ή κάποιων άλλων αντικειμένων, πάνω στο οποίο είναι στερεωμένο.

Στο εσωτερικό του βρίσκεται Μονάδα GPS, που καθορίζει τις συντεταγμένες στο έδαφος, μια μονάδα GSM/GPRS που μεταδίδει πληροφορίες και λαμβάνει εντολές ελέγχου, καθώς και μια πηγή ενέργειας που εξασφαλίζει αυτόνομη λειτουργία για μεγάλο χρονικό διάστημα.

Λειτουργικότητα πομπών GPS

Καθώς η λειτουργικότητα αυξάνεται, εμφανίζονται οι ακόλουθες δυνατότητες της συσκευής:


Επιλογές για πομπούς GPS

Ανάλογα με τη διαμόρφωση, τα περιβλήματα του πομπού ενδέχεται να διαφέρουν σημαντικά. Διάφορα μοντέλαέχουν εκτελέσεις στη μορφή κινητά τηλέφωνα, κλασικούς πλοηγούς ή ακόμα και ρολόγια χειρός.

Ο πολύχρωμος σχεδιασμός των ειδικών εκδόσεων και οι χρήσιμες προσθήκες επιτρέπουν στα παιδιά να αντιμετωπίζουν αυτές τις συσκευές όχι ως «γονικούς κατασκόπους», αλλά ως μοντέρνα και πρακτικά gadget.

Ως πλεονέκτημα, αξίζει να αναφέρουμε το γεγονός ότι πολλές εκδόσεις της συσκευής μπορούν να κάνουν χωρίς ποσό συνδρομήςγια τις υπηρεσίες εξειδικευμένων χειριστών και όλες οι απαραίτητες πληροφορίες αποστέλλονται στον πελάτη απευθείας μέσω Διαδικτύου ή μηνυμάτων SMS, γεγονός που επιτρέπει σημαντική εξοικονόμηση πόρων στη συντήρηση αυτού του εξοπλισμού.

Άρθρα σχετικά με τους ιχνηλάτες GPS

Σε αυτό το άρθρο θα δείξω πώς να χρησιμοποιήσετε μια μονάδα gsm με το arduino χρησιμοποιώντας το sim800L ως ​​παράδειγμα. Οι ίδιες οδηγίες είναι αρκετά κατάλληλες για τη χρήση οποιωνδήποτε άλλων μονάδων gsm, για παράδειγμα, sim900, κ.λπ., επειδή όλες οι μονάδες λειτουργούν περίπου με τον ίδιο τρόπο - αυτή είναι η ανταλλαγή εντολών AT μέσω της θύρας.

Θα δείξω τη χρήση της μονάδας με το arduino χρησιμοποιώντας το παράδειγμα ενός ρελέ SMS, το οποίο μπορεί να χρησιμοποιηθεί για τον απομακρυσμένο έλεγχο της συσκευής μέσω εντολών SMS. Αυτό μπορεί να χρησιμοποιηθεί σε συνδυασμό με συναγερμούς αυτοκινήτων κ.λπ.

Η μονάδα συνδέεται με το Arduino μέσω της διεπαφής UART μιας σειριακής θύρας λογισμικού που λειτουργεί σε 2 και 3 ψηφιακές ακίδες του Arduino nano.

Εργασία με Arduino με μονάδες GSM

Για να τροφοδοτήσετε τη μονάδα, απαιτείται τάση στην περιοχή από 3,6 V έως 4,2 V, αυτό σημαίνει ότι θα πρέπει να χρησιμοποιήσετε έναν πρόσθετο σταθεροποιητή τάσης, καθώς το Arduino έχει εγκατεστημένο σταθεροποιητή 3,3 volt, ο οποίος δεν είναι κατάλληλος για την τροφοδοσία της μονάδας , ο δεύτερος λόγος για να εγκαταστήσετε έναν πρόσθετο σταθεροποιητή είναι ότι η μονάδα GSM είναι σοβαρό φορτίο, καθώς έχει έναν αδύναμο πομπό που παρέχει σταθερή σύνδεσημε κυψελοειδές σταθμό. Η ισχύς για το Arduino nano παρέχεται στον ακροδέκτη VIN - αυτός είναι ένας σταθεροποιητής ενσωματωμένος στο Arduino που διασφαλίζει ότι η μονάδα λειτουργεί σε μεγάλο εύρος τάσης (6-10V). Η μονάδα ρελέ συνδέεται σύμφωνα με το δεδομένο κείμενο του προγράμματος στην ακίδα 10 του Arduino nano και μπορεί εύκολα να αλλάξει σε οποιαδήποτε άλλη που λειτουργεί ως ψηφιακή έξοδος.

Λειτουργεί ως εξής: εγκαταστήστε μια κάρτα SIM στη μονάδα GSM, ενεργοποιήστε την τροφοδοσία και στείλτε ένα SMS με το κείμενο "1" στον αριθμό κάρτες SIMγια να ενεργοποιήσουμε το ρελέ μας, για να το απενεργοποιήσουμε στέλνουμε SMS με το κείμενο «0».

#περιλαμβάνω
SoftwareSerial gprsSerial(2, 3); // ορίστε τις ακίδες 2 και 3 για τη θύρα λογισμικού
int LedPin = 10; // για ρελέ

void setup()
{
gprsSerial.begin(4800);
pinMode(LedPin, OUTPUT);

// ρύθμιση λήψης μηνύματος

gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
καθυστέρηση (500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
καθυστέρηση (500); // καθυστέρηση για την επεξεργασία εντολών
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
καθυστέρηση (700);
}

String currStr = "";
// εάν αυτή η γραμμή είναι μήνυμα, τότε η μεταβλητή θα λάβει την τιμή True
boolean isStringMessage = false;

void loop()
{
if (!gprsSerial.available())
ΕΠΙΣΤΡΟΦΗ;

char currSymb = gprsSerial.read();
αν ('\r' == currSymb) (
if (isStringMessage) (
// αν η τρέχουσα γραμμή είναι μήνυμα, τότε...
if (!currStr.compareTo("1")) (
digitalWrite (LedPin, HIGH);
) αλλιώς εάν (!currStr.compareTo("0")) (
digitalWrite (LedPin, LOW);
}
isStringMessage = false;
) άλλο (
if (currStr.startsWith("+CMT")) (
// εάν η τρέχουσα γραμμή ξεκινά με "+CMT", τότε το επόμενο μήνυμα
isStringMessage = true;
}
}
currStr = "";
) αλλιώς εάν ('\n' != currSymb) (
currStr += String(currSymb);
}
}

Έκδοση βίντεο του άρθρου:

Ετικέτες: #Arduino, #SIM800L

Το σήμα σας:

Προϊόντα που χρησιμοποιούνται σε αυτό το άρθρο:

← Καταγραφέας GPS στο arduino | Έλεγχος ρελέ μέσω θύρας COM →

Σαρωτής GSM σε RTL-SDR

| Σπίτι| Αγγλικά | Ανάπτυξη | FAQ |

Κύρια χαρακτηριστικά του σαρωτή

Ο σαρωτής GSM σαρώνει κανάλια κατερχόμενης ζεύξης GSM και εμφανίζει πληροφορίες σχετικά με την ισχύ του σήματος και την ιδιοκτησία καναλιού ενός από τους τρεις κύριους χειριστές κυψελοειδείς επικοινωνίες MTS, Beeline και Megafon. Με βάση τα αποτελέσματα της εργασίας του, ο σαρωτής σάς επιτρέπει να αποθηκεύσετε μια λίστα αναγνωριστικών σταθμούς βάσης MCC, MNC, LAC και CI για όλα τα σαρωμένα κανάλια.
Ένας σαρωτής GSM μπορεί να χρησιμοποιηθεί για την αξιολόγηση του επιπέδου σήματος GSM και τη σύγκριση της ποιότητας του σήματος διαφορετικούς χειριστές, αξιολογήσεις ραδιοκάλυψης, κατά τη λήψη απόφασης για την εγκατάσταση ενισχυτών κυψελοειδούς σήματος και την προσαρμογή των παραμέτρων τους, για εκπαιδευτικούς σκοπούς κ.λπ.
Ο σαρωτής λειτουργεί με Windows και χρησιμοποιεί έναν απλό και φθηνό δέκτη - RTL-SDR. Μπορείτε να διαβάσετε για το RTL-SDR στο:
RTL-SDR (RTL2832U) και ραδιοφωνικές ειδήσεις και έργα που καθορίζονται από λογισμικό,
RTL-SDR – OsmoSDR,
RTL-SDR στα ρωσικά.
Οι παράμετροι RTL-SDR καθορίζουν τα κύρια χαρακτηριστικά του σαρωτή. Φυσικά, ένας σαρωτής GSM δεν αντικαθιστά τον κανονικό εξοπλισμό μέτρησης.
Ο σαρωτής διανέμεται δωρεάν, χωρίς περιορισμούς στη χρήση.
Τρέχουσα έκδοσηυποστηρίζει τη ζώνη GSM 900 και δεν υποστηρίζει GSM 1800. Αυτό καθορίζεται από το γεγονός ότι η συχνότητα λειτουργίας του RTL-SDR με τον δέκτη R820T περιορίζεται στα 1760 MHz. Υπάρχει ελπίδα ότι η χρήση του πειραματικού προγράμματος οδήγησης RTL-SDR θα επιτρέψει τη λειτουργία σε τουλάχιστον μέρος της περιοχής των 1800 MHz.

Εκκίνηση του σαρωτή

Μπορείτε να κατεβάσετε την πιο πρόσφατη έκδοση του σαρωτή από αυτόν τον σύνδεσμο. Απλώς αποσυμπιέστε το αρχείο σε μια βολική τοποθεσία και εκτελέστε το gsmscan.exe.
ΠΡΟΗΓΟΥΜΕΝΕΣ ΕΚΔΟΣΕΙΣσαρωτή, ένας σύνδεσμος προς το αποθετήριο με πηγές και άλλες πληροφορίες που σχετίζονται με την ανάπτυξη βρίσκονται στη σελίδα ανάπτυξης.
Για να λειτουργήσει ο σαρωτής, απαιτείται η εγκατάσταση προγραμμάτων οδήγησης RTL-SDR· εάν δεν έχουν ήδη εγκατασταθεί, αυτό μπορεί να γίνει εύκολα χρησιμοποιώντας το πρόγραμμα Zadig για να περιγράψει τη διαδικασία εγκατάστασης.

Χρήση του σαρωτή

Ακολουθεί μια προβολή του παραθύρου του προγράμματος σαρωτή:

Ο οριζόντιος άξονας εμφανίζει τον αριθμό καναλιού GSM με τη μορφή ARFCN ή σε MHz και ο κατακόρυφος άξονας δείχνει το επίπεδο σήματος σε dBm. Το ύψος της γραμμής δείχνει την ισχύ του σήματος.

Επικοινωνία μονάδας GSM NEOWAY M590 με Arduino

Εάν τα αναγνωριστικά BS έχουν αποκωδικοποιηθεί με επιτυχία και αντιστοιχούν στα αναγνωριστικά των τριών μεγάλων τηλεπικοινωνιακών φορέων, οι γραμμές βάφονται στα αντίστοιχα χρώματα.
Οι αναπτυσσόμενες λίστες στο επάνω μέρος της οθόνης σάς επιτρέπουν να επιλέξετε έναν δέκτη SDR, εάν είναι συνδεδεμένοι πολλοί, εύρος Δουλειά GSM 900 ή GSM 1800 και μονάδες οριζόντιου άξονα ARFCN ή MHz.
Τα κουμπιά σάς επιτρέπουν να αποθηκεύσετε μια αναφορά για τη λειτουργία του σαρωτή με τη μορφή λίστας αποκωδικοποιημένων σταθμών βάσης, να διαγράψετε τα αποτελέσματα της αποκωδικοποίησης BS και να λάβετε πληροφορίες σχετικά με το πρόγραμμα.

Αρχές και χαρακτηριστικά της εργασίας.

Κατά τη λειτουργία, το πρόγραμμα σαρώνει το εύρος συχνοτήτων λειτουργίας με βήμα 2,0 MHz (10 κανάλια GSM) και ψηφιοποιεί το σήμα με συχνότητα δειγματοληψίας 2,4 MHz. Η διαδικασία σάρωσης αποτελείται από ένα γρήγορο πέρασμα σε όλο το εύρος για τη μέτρηση της ισχύος του σήματος και ένα αργό πέρασμα για την αποκωδικοποίηση των αναγνωριστικών BS.

Εκτελείται ένα βήμα αποκωδικοποίησης μετά τη διέλευση ολόκληρου του εύρους για τη μέτρηση της ισχύος. Έτσι, στο εύρος του GSM 900, το επίπεδο σήματος ενημερώνεται περίπου μία φορά κάθε 2 δευτερόλεπτα και ένα πλήρες πέρασμα αποκωδικοποίησης διαρκεί περίπου 1 λεπτό.
Λόγω της κακής ποιότητας του σήματος που λαμβάνεται από το RTL-SDR, η πιθανότητα σωστής αποκωδικοποίησης των πληροφοριών συστήματος (SI) του καναλιού ελέγχου εκπομπής BS (BCCH) δεν είναι υψηλή. Οι διακυμάνσεις της στάθμης του σήματος ως αποτέλεσμα της πολλαπλής διάδοσης μειώνουν επίσης την πιθανότητα αποκωδικοποίησης πληροφοριών συστήματος. Για αυτούς τους λόγους, για να αποκτήσετε αναγνωριστικά BS, είναι απαραίτητο ο σαρωτής να συγκεντρώνει πληροφορίες σε διάστημα περίπου 10 λεπτών. Αλλά ακόμα και σε αυτήν την περίπτωση, δεν παρέχουν όλα τα κανάλια αυτό το μέροςεπαρκής στάθμη και ποιότητα σήματος για αποκωδικοποίηση ακόμη και από τον ιδανικότερο δέκτη. Επιπλέον, δεν χρησιμοποιούνται όλα τα κανάλια GSM για λειτουργία Πρότυπο GSM, όπως φαίνεται στο παραπάνω σχήμα, τα κανάλια 975 - 1000 καταλαμβάνονται από τη Megafon για να εργαστούν Πρότυπο UMTS.
Κατά τη λειτουργία, ο σαρωτής προσθέτει πληροφορίες συστήματος για νέα αποκωδικοποιημένα κανάλια στη γενική σειρά πληροφοριών των καναλιών. Ωστόσο, οι πληροφορίες σχετικά με τα προηγουμένως αποκωδικοποιημένα κανάλια δεν διαγράφονται όταν οι πληροφορίες συστήματος δεν αποκωδικοποιούνται σε αυτό το βήμα και παραμένουν στη συστοιχία. Για να διαγράψετε αυτές τις πληροφορίες, χρησιμοποιήστε το κουμπί για να διαγράψετε τα αποτελέσματα αποκωδικοποίησης BS.
Όταν κάνετε κλικ στο κουμπί αποθήκευσης αναφοράς, τα συσσωρευμένα αποτελέσματα αποθηκεύονται αρχείο κειμένουμε ένα όνομα που αποτελείται από το όνομα του προγράμματος, την ημερομηνία και την ώρα αποθήκευσης των δεδομένων. Παρακάτω είναι ένα παράδειγμα τμήματος του αρχείου αναφοράς:
Ο σαρωτής έχει σχεδιαστεί για να λειτουργεί σε Windows 7, 8.1 και 10. Η εργασία δοκιμάστηκε με τρία αντίγραφα του RTL-SDR με τον δέκτη R820T· άλλοι τύποι δεκτών δεν δοκιμάστηκαν.
Μια ειδική έκδοση του προγράμματος έχει μεταγλωττιστεί για να λειτουργεί στα Windows XP· εκτελείται αρκετές φορές πιο αργά από την τυπική έκδοση.

Ανάπτυξη.

Το πρόγραμμα σαρωτή παρέχεται ως έχει, χωρίς καμία εγγύηση ή ευθύνη. Εάν έχετε λογικές ιδέες για το πώς να επεκτείνετε τη λειτουργικότητα ή να βελτιώσετε την απόδοση του σαρωτή, είμαστε έτοιμοι να συζητήσουμε τη δυνατότητα υλοποίησής τους.
Μπορείτε να συμμετάσχετε στην ανάπτυξη του σαρωτή· για να το κάνετε αυτό, επισκεφτείτε τη σελίδα ανάπτυξης.
Σχεδιάζεται περαιτέρω ανάπτυξη του σαρωτή GSM, πιθανώς με τη συμμετοχή σας.

Μετά από αρκετά πειράματα με το Arduino, αποφάσισα να φτιάξω έναν απλό και όχι πολύ ακριβό ιχνηλάτη GPS με συντεταγμένες που αποστέλλονται μέσω GPRS στον διακομιστή.
Μεταχειρισμένο Arduino Mega 2560 (Arduino Uno), SIM900 - μονάδα GSM/GPRS (για αποστολή πληροφοριών στον διακομιστή), δέκτης GPS SKM53 GPS.

Τα πάντα αγοράστηκαν στο ebay.com, για συνολικά περίπου 1500 ρούβλια (περίπου 500 ρούβλια για το arduino, λίγο λιγότερα για τη μονάδα GSM, λίγο περισσότερα για το GPS).

Δέκτης GPS

Πρώτα πρέπει να καταλάβετε πώς να εργάζεστε με το GPS. Η επιλεγμένη ενότητα είναι μία από τις φθηνότερες και απλούστερες. Ωστόσο, ο κατασκευαστής υπόσχεται μια μπαταρία για την εξοικονόμηση δορυφορικών δεδομένων. Σύμφωνα με το δελτίο δεδομένων, μια κρύα εκκίνηση θα πρέπει να διαρκέσει 36 δευτερόλεπτα, ωστόσο, στις δικές μου συνθήκες (10ος όροφος από το περβάζι, χωρίς κτίρια κοντά) χρειάστηκε έως και 20 λεπτά. Η επόμενη εκκίνηση όμως είναι ήδη 2 λεπτά.

Μια σημαντική παράμετρος των συσκευών που συνδέονται με το Arduino είναι η κατανάλωση ενέργειας. Εάν υπερφορτώσετε τον μετατροπέα Arduino, μπορεί να καεί. Για τον δέκτη που χρησιμοποιείται, η μέγιστη κατανάλωση ενέργειας είναι 45mA @ 3,3v. Το γιατί η προδιαγραφή πρέπει να υποδεικνύει την ισχύ του ρεύματος σε τάση διαφορετική από την απαιτούμενη (5V) είναι για μένα ένα μυστήριο. Ωστόσο, ο μετατροπέας Arduino θα αντέξει 45 mA.

Σύνδεση

Το GPS δεν ελέγχεται, αν και έχει pin RX. Για ποιο σκοπό είναι άγνωστο. Το κύριο πράγμα που μπορείτε να κάνετε με αυτόν τον δέκτη είναι να διαβάσετε δεδομένα μέσω του πρωτοκόλλου NMEA από τον ακροδέκτη TX. Επίπεδα - 5V, μόνο για Arduino, ταχύτητα - 9600 baud. Συνδέω VIN σε VCC του arduino, GND σε GND, TX σε RX του αντίστοιχου σειριακού. Διάβασα τα δεδομένα πρώτα χειροκίνητα και μετά χρησιμοποιώντας τη βιβλιοθήκη TinyGPS. Παραδόξως, όλα είναι ευανάγνωστα. Μετά τη μετάβαση στο Uno, έπρεπε να χρησιμοποιήσω το SoftwareSerial και μετά άρχισαν τα προβλήματα - ορισμένοι από τους χαρακτήρες του μηνύματος χάθηκαν. Αυτό δεν είναι πολύ κρίσιμο, καθώς το TinyGPS κόβει μη έγκυρα μηνύματα, αλλά είναι αρκετά δυσάρεστο: μπορείτε να ξεχάσετε τη συχνότητα 1Hz.

Μια γρήγορη σημείωση για το SoftwareSerial: δεν υπάρχουν θύρες υλικού στο Uno, επομένως πρέπει να χρησιμοποιήσετε το λογισμικό. Έτσι, μπορεί να λάβει δεδομένα μόνο σε μια καρφίτσα στην οποία η πλακέτα υποστηρίζει διακοπές. Στην περίπτωση του Uno, αυτά είναι 2 και 3. Επιπλέον, μόνο μία τέτοια θύρα μπορεί να λαμβάνει δεδομένα κάθε φορά.

Έτσι μοιάζει ο «πάγκος δοκιμών».


Δέκτης/πομπός GSM


Τώρα έρχεται το πιο ενδιαφέρον κομμάτι. Μονάδα GSM - SIM900. Υποστηρίζει GSM και GPRS. Ούτε το EDGE, ούτε ειδικά το 3G, δεν υποστηρίζονται. Για τη μετάδοση δεδομένων συντεταγμένων, αυτό είναι πιθανώς καλό - δεν θα υπάρχουν καθυστερήσεις ή προβλήματα κατά την εναλλαγή μεταξύ των λειτουργιών, ενώ το GPRS είναι πλέον διαθέσιμο σχεδόν παντού. Ωστόσο, για ορισμένες πιο σύνθετες εφαρμογές αυτό μπορεί να μην είναι αρκετό.

Σύνδεση

Η μονάδα ελέγχεται επίσης μέσω της σειριακής θύρας, με την ίδια στάθμη - 5V. Και εδώ θα χρειαστούμε και RX και TX. Το module είναι shield, δηλαδή είναι εγκατεστημένο στο Arduino. Επιπλέον, είναι συμβατό τόσο με το mega όσο και με το uno. Η προεπιλεγμένη ταχύτητα είναι 115200.

Το συναρμολογούμε στο Mega και εδώ μας περιμένει η πρώτη δυσάρεστη έκπληξη: η καρφίτσα TX του module πέφτει στην 7η καρφίτσα του Mega. Οι διακοπές δεν είναι διαθέσιμες στην 7η ακίδα του mega, πράγμα που σημαίνει ότι θα πρέπει να συνδέσετε την 7η ακίδα, ας πούμε, στην 6η ακίδα, στην οποία είναι πιθανές διακοπές. Έτσι, θα σπαταλήσουμε μια καρφίτσα Arduino. Λοιπόν, για ένα μέγα δεν είναι πολύ τρομακτικό - τελικά, υπάρχουν αρκετές καρφίτσες. Αλλά για το Uno αυτό είναι ήδη πιο περίπλοκο (σας υπενθυμίζω ότι υπάρχουν μόνο 2 ακίδες που υποστηρίζουν διακοπές - 2 και 3). Ως λύση σε αυτό το πρόβλημα, μπορούμε να προτείνουμε να μην εγκαταστήσετε τη μονάδα στο Arduino, αλλά να τη συνδέσετε με καλώδια. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε το Serial1.

Μετά τη σύνδεση, προσπαθούμε να "μιλήσουμε" στη μονάδα (μην ξεχάσετε να την ενεργοποιήσετε). Επιλέγουμε την ταχύτητα θύρας - 115200 και είναι καλό αν όλες οι ενσωματωμένες σειριακές θύρες (4 στο mega, 1 στο uno) και όλες οι θύρες λογισμικού λειτουργούν με την ίδια ταχύτητα. Με αυτόν τον τρόπο μπορείτε να επιτύχετε πιο σταθερή μεταφορά δεδομένων. Δεν ξέρω γιατί, αν και μπορώ να μαντέψω.

Έτσι, γράφουμε πρωτόγονο κώδικα για την προώθηση δεδομένων μεταξύ σειριακών θυρών, στέλνουμε Atz και λαμβάνουμε σιωπή ως απάντηση. Τι συνέβη? Α, διάκριση πεζών-κεφαλαίων. ATZ, είμαστε εντάξει. Ούρα, η ενότητα μπορεί να μας ακούσει. Θα πρέπει να μας τηλεφωνήσετε από περιέργεια; ATD +7499... Χτυπάει το σταθερό τηλέφωνο, βγαίνει καπνός από το arduino, το laptop σβήνει. Ο μετατροπέας Arduino κάηκε. Ήταν κακή ιδέα να το τροφοδοτήσω 19 βολτ, αν και γράφεται ότι μπορεί να λειτουργήσει από 6 έως 20 V, προτείνονται 7-12 V. Το φύλλο δεδομένων για τη μονάδα GSM δεν αναφέρει πουθενά για την κατανάλωση ενέργειας υπό φορτίο. Λοιπόν, το Mega πάει στην αποθήκη ανταλλακτικών. Με κομμένη την ανάσα ανοίγω το laptop που λάμβανε +19V μέσω της γραμμής +5V από USB. Λειτουργεί και ακόμη και το USB δεν κάηκε. Ευχαριστούμε τη Lenovo που μας προστατεύει.


Αφού κάηκε ο μετατροπέας, έψαξα για κατανάλωση ρεύματος. Άρα, κορυφή - 2Α, τυπική - 0,5Α. Αυτό ξεπερνά σαφώς τις δυνατότητες του μετατροπέα Arduino. Απαιτεί ξεχωριστό φαγητό.

Προγραμματισμός

Η μονάδα παρέχει εκτεταμένες δυνατότητες μεταφοράς δεδομένων. Ξεκινώντας από φωνητικές κλήσεις και SMS και τελειώνοντας με το ίδιο το GPRS. Επιπλέον, για το τελευταίο είναι δυνατό να εκτελεστεί ένα αίτημα HTTP χρησιμοποιώντας εντολές AT. Θα χρειαστεί να στείλετε πολλά, αλλά αξίζει τον κόπο: δεν θέλετε πραγματικά να δημιουργήσετε ένα αίτημα με μη αυτόματο τρόπο. Υπάρχουν μερικές αποχρώσεις με το άνοιγμα ενός καναλιού μετάδοσης δεδομένων μέσω GPRS - θυμάστε το κλασικό AT+CGDCONT=1, "IP", "apn"; Άρα, το ίδιο χρειάζεται και εδώ, αλλά λίγο πιο πονηρό.

Για να αποκτήσετε μια σελίδα σε μια συγκεκριμένη διεύθυνση URL, πρέπει να στείλετε τις ακόλουθες εντολές:

AT+SAPBR=1,1 //Ανοικτή εταιρεία κινητής τηλεφωνίας (Carrier) AT+SAPBR=3,1,"CONTYPE","GPRS" //τύπος σύνδεσης - GPRS AT+SAPBR=3,1,"APN","internet" //APN, για Megafon - internet AT+HTTPINIT //Initialize HTTP AT+HTTPPARA="CID",1 //Carrier ID για χρήση. AT+HTTPPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Η πραγματική διεύθυνση URL, μετά το sprintf με συντεταγμένες AT+HTTPACTION=0 // Ζητήστε δεδομένα χρησιμοποιώντας τη μέθοδο GET //περιμένετε για απάντηση AT+HTTPTERM //διακοπή HTTP

Ως αποτέλεσμα, εάν υπάρχει σύνδεση, θα λάβουμε απάντηση από τον διακομιστή. Δηλαδή, στην πραγματικότητα, γνωρίζουμε ήδη πώς να στέλνουμε δεδομένα συντεταγμένων εάν ο διακομιστής τα λάβει μέσω GET.

Θρέψη

Δεδομένου ότι η τροφοδοσία της μονάδας GSM από έναν μετατροπέα Arduino, όπως ανακάλυψα, είναι κακή ιδέα, αποφασίστηκε να αγοράσω έναν μετατροπέα 12v->5v, 3A στο ίδιο ebay. Ωστόσο, στη μονάδα δεν αρέσει η παροχή ρεύματος 5 V. Ας πάμε για ένα hack: συνδέστε 5V στον ακροδέκτη από τον οποίο προέρχονται τα 5V από το Arduino. Στη συνέχεια, ο ενσωματωμένος μετατροπέας της μονάδας (πολύ πιο ισχυρός από τον μετατροπέα Arduino, MIC 29302WU) θα κάνει από 5V αυτό που χρειάζεται η μονάδα.

Υπηρέτης

Ο διακομιστής έγραψε ένα πρωτόγονο - αποθήκευση συντεταγμένων και σχεδίαση στο Yandex.maps. Στο μέλλον, είναι δυνατή η προσθήκη διαφόρων χαρακτηριστικών, όπως υποστήριξη για πολλούς χρήστες, κατάσταση «οπλισμένου/άοπλου», κατάσταση των συστημάτων του οχήματος (ανάφλεξη, προβολείς κ.λπ.) και πιθανώς ακόμη και έλεγχος των συστημάτων του οχήματος. Φυσικά, με την κατάλληλη υποστήριξη για τον ιχνηλάτη, ο οποίος μετατρέπεται ομαλά σε ένα πλήρες σύστημα συναγερμού.

Δοκιμές πεδίου

Έτσι φαίνεται η συναρμολογημένη συσκευή, χωρίς τη θήκη:


Μετά την εγκατάσταση του μετατροπέα ισχύος και την τοποθέτησή του στη θήκη από ένα νεκρό μόντεμ DSL, το σύστημα μοιάζει με αυτό:

Κόλλησα τα καλώδια και αφαίρεσα αρκετές επαφές από τα μπλοκ Arduino. Μοιάζουν με αυτό:

Συνέδεσα 12 V στο αυτοκίνητο, οδήγησα στη Μόσχα και πήρα την πίστα:


Η πίστα αποδεικνύεται σκισμένη. Ο λόγος είναι ότι η αποστολή δεδομένων μέσω GPRS διαρκεί σχετικά μεγάλο χρονικό διάστημα και κατά τη διάρκεια αυτής της περιόδου οι συντεταγμένες δεν διαβάζονται. Αυτό είναι ξεκάθαρο σφάλμα προγραμματισμού. Αντιμετωπίζεται, πρώτον, με την άμεση αποστολή ενός πακέτου συντεταγμένων με την πάροδο του χρόνου και, δεύτερον, με ασύγχρονη εργασία με τη μονάδα GPRS.

Διάγραμμα έργου:

Γεια σας φίλοι, έχουμε έναν μεγάλο αριθμό διαφορετικών διαστημικών σκαφών που πετούν πάνω από τα κεφάλια μας. Ανάμεσά τους είναι περίπου 90 εξαιρετικά χρήσιμοι δορυφόροι πλοήγησης από το αμερικανικό σύστημα GPS, το ρωσικό GLONASS, το ευρωπαϊκό Galileo και το κινεζικό BeiDou. Και σήμερα θα πάρουμε σήμα από αυτούς.

Πρώτον, μια μικρή θεωρία: Ένα σύστημα δορυφορικής πλοήγησης είναι ένα δίκτυο διαστημικών σκαφών που πετούν κατά μήκος προηγουμένως γνωστών διαδρομών, παρατηρώντας με ακρίβεια την τροχιά και την τροχιά τους ή βρίσκονται σε ένα γνωστό ακίνητο σημείο σε μια γεωστατική ή γεωσύγχρονη τροχιά. Οι δορυφόροι πετούν κατά μέσο όρο σε υψόμετρο περίπου 20 χιλιομέτρων και ο καθένας είναι ένα εξαιρετικά ακριβές ατομικό ρολόι που εκπέμπει συνεχώς την ώρα του σε ολόκληρο τον πλανήτη. τρέχουσα ώρα.

Ένα ραδιοφωνικό σήμα που διαδίδεται με την ταχύτητα του φωτός φτάνει στη Γη με καθυστέρηση 60 έως 90 χιλιοστών του δευτερολέπτου, αυτό εξαρτάται από την απόσταση του δορυφόρου. Γνωρίζοντας την ακριβή θέση της πηγής ραδιοφωνικού σήματος από τη χρονική καθυστέρηση της διάδοσής της, μπορείτε να μάθετε την ακριβή απόσταση από τον δορυφόρο. Και στη συνέχεια, τριγωνίζοντας αποστάσεις από πολλά γνωστά αντικείμενα, μπορείτε να μάθετε πού βρίσκεστε στο διάστημα.

Φανταστείτε ότι αυτή η μπλε μπάλα είναι ο πλανήτης μας. Τρεις δορυφόροι πετούν πάνω από αυτό σε υψόμετρο 20 χιλιάδων χιλιομέτρων. Κατά τη μέτρηση της απόστασης από τον πρώτο, θα λάβετε πληροφορίες ότι βρίσκεστε κάπου σε αυτόν τον κύκλο - προς το παρόν αυτό δεν είναι πολύ κατατοπιστικό. Το σήμα από τον δεύτερο δορυφόρο θα αποσαφηνίσει τη θέση σας σε δύο σημεία τομής χωρίς αναφορά στο υψόμετρο. Το σήμα από τον τρίτο δορυφόρο πλοήγησης θα υποδείξει το ύψος αυτών των σημείων πάνω από την επιφάνεια και θα λύσει επίσημα την εξίσωση πλοήγησης, μειώνοντας την τοποθεσία σας σε δύο πιθανές τοποθεσίες. Στην πραγματικότητα, μία από αυτές τις συντεταγμένες έχει απίστευτα χαρακτηριστικά και απορρίπτεται, λύνοντας πλήρως το πρόβλημα. Το σήμα από τον τέταρτο δορυφόρο κάνει το ίδιο πράγμα - ήδη λύνει αναμφίβολα με ακρίβεια την εξίσωση πλοήγησης.

Η μέτρηση των αποστάσεων από κάθε επόμενο δορυφόρο αυξάνει την ακρίβεια εντοπισμού θέσης και σήμερα κυμαίνεται από 1 έως 3 μέτρα με τυπική ορατότητα περίπου 10 δορυφόρων πλοήγησης.

Τακτοποιήσαμε τη θεωρία, ας προχωρήσουμε στην πράξη. Σήμερα, διαφορετικές μονάδες πλοήγησης πωλούνται χωριστά. Οι πιο απλοί και παλαιότεροι υποστηρίζουν μόνο σήματα από το αμερικανικό σύστημα παρατήρησης GPS, κατά μέσο όρο 5-7 δορυφόρους. Πιο προηγμένες μονάδες μπορούν επίσης να λαμβάνουν σήματα από τον ρωσικό αστερισμό GLONASS, αυξάνοντας τον συνολικό αριθμό των δορυφόρων που παρατηρούνται κατά μέσο όρο δύο φορές. Υπάρχουν επίσης μονάδες προς πώληση που συνδυάζονται με πυξίδα· χρησιμοποιούνται για ακριβή πλοήγηση και συντήρηση πορείας.

Οι δορυφόροι διαφορετικών συστημάτων πλοήγησης είναι ορατοί στην οθόνη του τηλεφώνου μου. Οι κύκλοι είναι GPS, τα τρίγωνα είναι GLONASS και τα αστέρια είναι το κινέζικο BeiDou. Έτσι το τηλέφωνό μου υποστηρίζει τρία διαφορετικά συστήματα πλοήγησηςκαι ο συνδυασμός σημάτων από αυτά, αυξάνει την ακρίβεια του προσδιορισμού θέσης. Τώρα υπάρχουν 28 δορυφόροι πάνω από το κεφάλι μου, και το σήμα είναι διαθέσιμο μόνο από 7. Δηλαδή. Το τηλέφωνό μου γνωρίζει ήδη εκ των προτέρων πού βρίσκεται κάθε δορυφόρος. Και το σήμα που λείπει από 21 δορυφόρους σημαίνει ότι είναι εκτός οπτικού πεδίου. Το σήμα πλοήγησης είναι πολύ αδύναμο, από τη λέξη VASCHE, σχεδόν δεν αντανακλάται, μπλοκάρεται από το έδαφος, τα κτίρια, την οροφή ενός αυτοκινήτου - οποιοδήποτε μέταλλο πάνω από το κεφάλι σας ή στο πλάι. Ακόμη και το χιόνι που πέφτει έξω από το παράθυρο παρεμποδίζει την καλή λήψη.

Για την υλοποίηση του έργου, θα χρειαστείτε μια σειρά ηλεκτρονικών μονάδων: μια προγραμματιζόμενη πλατφόρμα Arduino Nano, μια οθόνη OLED 128 επί 32 σημεία (συνδέεται μέσω του διαύλου I2C), μια μονάδα GPS για σύνδεση μέσω UART, οποιαδήποτε μπαταρία λιθίουμε χωρητικότητα άνω των 200 milliamps, προστατευτική μονάδα φόρτισης λιθίου και μετατροπέα ενίσχυσης για λήψη 5 βολτ. Έχω τρεις διαφορετικούς τύπους εδώ, ο καθένας θα κάνει. Σχεδίαζα επίσης να χρησιμοποιήσω ένα έγχρωμο LED RGB για να υποδείξω την κατάσταση, αλλά το εγκατέλειψα καθώς προχωρούσε το έργο.

Συνδέουμε την οθόνη με το Arduino και συναντάμε την πρώτη δυσκολία. Τυπική ΒιβλιοθήκηΗ οθόνη OLED καταλαμβάνει 20 kB, που είναι το 70% της μνήμης του μικροελεγκτή και ουσιαστικά δεν αφήνει χώρο για το πρόγραμμα. Προηγουμένως, συναρμολογούσα ένα υψόμετρο και αντιμετώπισα το γεγονός ότι οποιαδήποτε νέα γραμμή κώδικα οδηγεί σε υπερχείλιση μνήμης και ο μικροελεγκτής παγώνει κατά τη λειτουργία. Ως εκ τούτου, θα χρησιμοποιήσω πολύ περισσότερα φωτεινή βιβλιοθήκη. Δεν λειτουργεί με γραφικά και εμφανίζει κείμενο μόνο σε οθόνη OLED και καταλαμβάνει μόνο 1 KB μνήμης.

Συνδέω ξεχωριστά τη μονάδα GPS στον πίνακα ελέγχου και βλέπω τα πρώτα δεδομένα πλοήγησης - ένα σήμα από το διάστημα έχει συλληφθεί και υποβληθεί σε επεξεργασία. Τώρα εμφανίζω πληροφορίες στην οθόνη. Τάξη! Βλέπει 4 δορυφόρους, τώρα 3, και ξανά 4, ήδη 5! Για καλύτερη λήψη GPS, η μονάδα κρέμεται έξω από το παράθυρο σε ένα καλώδιο.

Κατά την ανάπτυξη του έργου χρησιμοποίησα μονάδες GPS ΔΙΑΦΟΡΕΤΙΚΟΙ ΤΥΠΟΙ. Απλό GPS και συνδυασμένο GPS με Glonass. Έπρεπε να πραγματοποιήσουμε μια σειρά πειραμάτων πολλών ωρών για να ελέγξουμε τη σταθερότητα της λειτουργίας. Οι ενότητες αποδείχθηκε ότι λειτουργούσαν, αλλά με βιβλιοθήκες λογισμικούΈπρεπε να τσιμπήσω. Δοκίμασε αρκετά διαφορετικές βιβλιοθήκεςκαι το TinyGPS+ ήταν το μόνο που δούλευε με όλες τις μονάδες GPS ταυτόχρονα.

Γενικά, η βιβλιοθήκη αναλύει το πρωτόκολλο NMEA· απλώς αναλύει τα δεδομένα που η μονάδα GPS εκπέμπει δύο φορές το δευτερόλεπτο. Έτσι μοιάζει μια μη επεξεργασμένη ροή δεδομένων.

Ως αποτέλεσμα, το υλικολογισμικό μου σάς επιτρέπει να συνδέετε σχεδόν οποιαδήποτε μονάδα GPS μέσω UART με το πρωτόκολλο μεταφοράς δεδομένων NMEA. Στην πραγματικότητα, αυτές είναι η πλειονότητα των μονάδων που έχουν καρφίτσες RX και TX. Συνιστώ να πάρετε τη μονάδα GPS από το Glonass, βλέπει περισσότερους δορυφόρους, επομένως η ακρίβειά της είναι μεγαλύτερη. Οι σύνδεσμοι προς όλα τα στοιχεία και τις ενότητες βρίσκονται στην περιγραφή αυτού του βίντεο.

Το breadboard έδειξε την πλήρη λειτουργικότητα του συστήματος, τώρα μπορείτε να συναρμολογήσετε τα πάντα σε υλικό. Θα χρησιμοποιήσω μια μπαταρία λιθίου ως τροφοδοσία, θα συνδεθεί στην προστατευτική πλακέτα με φόρτιση. Σε αυτήν την πλακέτα, η κάτω αντίσταση R3 ρυθμίζει το ρεύμα φόρτισης της μπαταρίας, η προεπιλογή είναι 1 αμπέρ, αυτό είναι πολύ για μικρές μπαταρίες, επομένως η αντίσταση πρέπει να αντικατασταθεί. Στην οθόνη βλέπετε μια πλάκα με τιμές αντίστασης για διαφορετικά ρεύματα φόρτισης. Εάν η μπαταρία σας έχει χωρητικότητα 500 milliamp ώρες, τότε πρέπει να ρυθμίσετε το ρεύμα φόρτισης όχι υψηλότερο από αυτήν την τιμή. Εκείνοι. μπορείτε να ρυθμίσετε 200 ή 300 milliamps και να μην υπερβείτε τα 500.

Στη συνέχεια, πρέπει να αυξηθεί η τάση· η οθόνη και η μονάδα GPS τροφοδοτούνται από 5 βολτ. Θα το κάνουμε αυτό χρησιμοποιώντας έναν μετατροπέα τάσης ώθησης. Αυτά εγκαθίστανται συνήθως σε power banks για να ανεβάσουν την τάση από 3,7 σε 5 βολτ. Θα χρησιμοποιήσω τη μικρή πράσινη μονάδα, μπορεί να δώσει έξοδο έως και 300 mA και είναι υπεραρκετή για αυτό το έργο.

Έχω ενημερώσει το υλικολογισμικό, τώρα κατά τη φόρτωση της κύριας οθόνης εμφανίζει την τρέχουσα ακριβή ώρα από δορυφόρους, τον αριθμό των ορατών δορυφόρων και την τρέχουσα ταχύτητα του ιχνηλάτη, μεταπηδά επειδή υπάρχει σφάλμα στον προσδιορισμό της τοποθεσίας. Όταν πατάτε το κουμπί, η οθόνη αλλάζει. Εδώ εμφανίζονται η τρέχουσα τιμή ταχύτητας και η μέγιστη τιμή για την περίοδο παρατήρησης. Σε μια άλλη οθόνη υπάρχει η τρέχουσα απόσταση από το σημείο μηδέν, η μέγιστη καταγεγραμμένη απόσταση από αυτό και ο χιλιομετρητής.

Μετράω τα μεγέθη όλων των μονάδων και προσπαθώ να τα τακτοποιήσω όσο το δυνατόν πιο συμπαγή. Όμως όσο κι αν προσπάθησα, η λεπτή οθόνη δεν ταίριαζε με τη φαρδιά. Δέκτης GPSωμ Ως εκ τούτου, αποφάσισα να αντικαταστήσω την οθόνη με ένα άλλο OLED 128x64 pixel. Αυτό το καθιστά πιο εργονομικό και επιτρέπει ένα μεγαλύτερο κουμπί. Οι οθόνες OLED είναι πλήρως συμβατές και απαιτούν ελάχιστη διόρθωση κώδικα, επομένως το υλικολογισμικό θα είναι διαθέσιμο και για τις δύο εκδόσεις της συσκευής με μικρή και μεγάλη οθόνη.

Το διάγραμμα συναρμολόγησης είναι απλό. Πρέπει να συνδέσετε την οθόνη στο δίαυλο I2C, αυτές είναι οι ακίδες A4 και A5, η μονάδα gps είναι συνδεδεμένη στη σειριακή θύρα λογισμικού στις ακίδες D3 και D4. Κουμπί στον πείρο D7. Τροφοδοσία μπαταρίας μέσω προστατευτική μονάδασύρετέ το στον διακόπτη, μετά στον μετατροπέα ενίσχυσης και συνδέστε το Arduino στα 5 βολτ.

Για βολική τοποθέτηση των εξαρτημάτων, θα χρησιμοποιήσω ένα πράσινο breadboard 7 επί 3 εκατοστά. Για να μην κρέμεται η οθόνη στον σύνδεσμο, την τοποθετώ σε πλαστικές βάσεις με αποστάτες 5 mm. Θα υπάρχει ένας δέκτης GPS μεταξύ της οθόνης και του κουμπιού. Στο πίσω μέρος της πλακέτας θα υπάρχει ένα χειριστήριο Arduino, μια μπαταρία και μια προστατευτική πλακέτα. Η μπαταρία θα χρησιμοποιεί λεπτό λιθίου 350 milliamps, αν δεν κάνω λάθος, χρησιμοποιούνται στα ηλεκτρονικά τσιγάρα, αλλά όπως είπα, μπορείτε να χρησιμοποιήσετε οποιαδήποτε μπαταρία λιθίου.

Μετράω τα πάντα ξανά, τα μετρώ και ετοιμάζω ένα σχέδιο για το περίβλημα για εκτύπωση σε εκτυπωτή 3D. Κυριολεκτικά 15 λεπτά στον ιστότοπο του TinkerCAD και το έργο είναι έτοιμο για εκτύπωση. Μεταφέρω το αρχείο σε μια μονάδα flash, το εκκινώ και φεύγουμε. Ο χρόνος εκτύπωσης είναι περίπου 40 λεπτά, αυτό είναι το πρώτο όργανο ανίχνευσης για να δοκιμάσετε την τοποθέτηση των μονάδων.

Η πλακέτα και το κουμπί ταιριάζουν στη θέση τους, αλλά η οθόνη ήταν κυριολεκτικά ένα χιλιοστό κοντή και η εσωτερική βάση ήταν εμπόδιο. Και έτσι όλα ταιριάζουν και εγκαθίστανται στη θέση τους. Τέλεια, επεξεργάζομαι το έργο και εκτυπώνω τελική έκδοσηπορτοκαλί περίβλημα. Αφού ολοκληρώσετε την εκτύπωση, πρέπει να δώσετε χρόνο στο τραπέζι να κρυώσει και μόνο τότε να αποκόψετε το εξάρτημα, τότε η μπροστινή πλευρά θα είναι λεία και δεν θα μετακινηθεί.

Σπάω και καθαρίζω την άκρη στερέωσης του πλαστικού. Εφόσον χρησιμοποίησα πλαστικό ABS, υπόκειται σε μετεπεξεργασία με ασετόν. Το απλώνω με πινέλο, οι στρώσεις κολλάνε επιπλέον μεταξύ τους και το σώμα γίνεται πιο δυνατό και αποκτά γυαλάδα.

Η πλακέτα εφαρμόζει τέλεια στο εσωτερικό της θήκης, οι σύνδεσμοι είναι ευθυγραμμισμένοι, το κουμπί δεν κολλάει. Στο ένα άκρο υπάρχει μια τρύπα για την υποδοχή Arduino Nano και στην άλλη πλευρά για τη φόρτιση της μπαταρίας. Αποδείχθηκε ότι ήταν λίγο πιο στενό, οπότε το επεκτείνω με ένα νυστέρι.

Η πλακέτα φόρτισης έχει προεξοχές κατά μήκος των άκρων, εμποδίζουν την εμβάθυνση του βύσματος, οπότε τις τρίβω με μια λίμα βελόνας. Τώρα το ταμπλό είναι καλά στη θέση του.

ΣΕ γενική εικόναη συσκευή θα μοιάζει με αυτό. Το περίβλημα βρίσκεται στην κορυφή. Κάτω από αυτό θα υπάρχει ένας μικροδιακόπτης, ένα breadboard με οθόνη, μια μονάδα GPS και ένα κουμπί. Στο πλάι υπάρχει επίσης ένας μετατροπέας ισχύος.

Ξεχωριστά για τον διακόπτη έκοψα μια τρύπα στη θήκη με νυστέρι, πάνω από το κουμπί. Είναι εσοχή στο σώμα και δεν θα παρεμβαίνει.

Ήρθε η ώρα για συγκόλληση. Συγκολλώ την πρώτη επαφή της οθόνης στην πλακέτα, τη δοκιμάζω - όλα είναι σωστά και μπορείτε να κολλήσετε τις υπόλοιπες τρεις επαφές. Τώρα το κουμπί. Και φροντίστε να καθαρίσετε τη ροή με μια βούρτσα. Συγκολλώ τα καλώδια στη μονάδα προστασίας της μπαταρίας.

Κατά τη σύνδεση, φροντίστε να δώσετε προσοχή στο χρώμα των καλωδίων. Τα λανθασμένα χρώματα προέρχονται περιστασιακά από την Κίνα. Σε αυτή την περίπτωση, αποφάσισα να αποκολλήσω τον σύνδεσμο και να κολλήσω απευθείας τα καλώδια καλύτερη επαφή. Η διαδικασία είναι πολύπλοκη και απαιτεί ακρίβεια και προσοχή κατά τη συγκόλληση. Επιπλέον, γεμίζω τις επαφές με ζεστή κόλλα, αυτό θα προστατεύσει τις ράγες και το σύρμα από τυχαίο τράβηγμα. Και γεμίζουμε αμέσως ολόκληρη τη μονάδα GPS σε συρρίκνωση θερμότητας· αυτό δεν είναι απαραίτητο, αλλά θα προστατεύσει επιπλέον μηχανική βλάβηκαι βραχυκυκλώματα όταν τοποθετούνται σε breadboard.

Τυλίγουμε επίσης τον μετατροπέα ενίσχυσης σε θερμοσυστελλόμενο. Για τη στερέωση των μονάδων χρησιμοποιώ ταινία διπλής όψης. Κατά την εγκατάσταση της πλακέτας, αποδείχθηκε ότι δεν υπήρχε αρκετός χώρος για τα καλώδια, έτσι άνοιξα τρύπες στο κέντρο και έβαλα τα καλώδια τροφοδοσίας από εκεί.

Παρεμπιπτόντως, προτείνω ένα δροσερό τρυπάνι μπαταρίας. Λειτουργεί με μία μπαταρία 18650 και σας επιτρέπει να ανοίγετε γρήγορα παρόμοιες τρύπες σε πλακέτες και θήκες. Παλαιότερα, για τέτοια εργασία, έπρεπε να βγάλω το Dremel από τη θήκη και να το συνδέσω σε μια πρίζα, αλλά τώρα έχω πάντα αυτό το τρυπάνι στο χέρι.

Το πάνω μέρος της σανίδας είναι συναρμολογημένο, τα καλώδια έχουν σπείρωμα και τώρα πρέπει να εγκαταστήσετε τον διακόπτη. Για να γίνει αυτό, δαγκώνουμε τα επιπλέον πόδια σε αυτό· χρειάζονται μόνο δύο για την τροφοδοσία και τη διακοπή της παροχής ρεύματος. Συγκολλάμε το σύρμα πάνω τους και, ως συνήθως, συρρικνώνουμε τα πάντα θερμικά. Στη συνέχεια, μπορείτε να εγκαταστήσετε τον διακόπτη στη θέση του και να τον γεμίσετε με ζεστή κόλλα. Τώρα θα είναι βολικό να ενεργοποιείτε και να απενεργοποιείτε τον ιχνηλάτη.

Τοποθετώ την πλακέτα στη θήκη και τη στερεώνω με τέσσερις μικρές βίδες. Οι αντίστοιχες οπές υπάρχουν ήδη στα στηρίγματα του περιβλήματος. Όταν αφαίρεσα την προστατευτική μεμβράνη από την οθόνη, παρατήρησα ένα μεγάλο κενό μεταξύ της οθόνης και του σώματος. Ως εκ τούτου, πήρα ένα κομμάτι διαφανούς συσκευασίας από κάποια ηλεκτρονικά και έκοψα γυαλί για να ταιριάζει στο μέγεθος του παραθύρου. Και το κόλλησα με ασετόν στο πλαστικό της θήκης.

Πραγματοποιούμε τη συναρμολόγηση σύμφωνα με το σχέδιο, δεν υπάρχουν δυσκολίες ή αποχρώσεις εδώ. Απλώς δώστε προσοχή, συν στο συν, μείον στο μείον. Συνδέουμε τον διακόπτη απευθείας στην έξοδο της μονάδας φόρτισης. Αυτό θα απενεργοποιήσει ολόκληρο το κύκλωμα τροφοδοσίας και θα αποτρέψει την αποστράγγιση της μπαταρίας.

Αφού κολλήσετε όλα τα καλώδια στις μονάδες, καλύψτε την κάτω σανίδα με μπλε ηλεκτρική ταινία. Το χειριστήριο Arduino με φόρτιση θα είναι από πάνω και χωρίς μόνωση υπάρχει πιθανότητα βραχυκυκλώματος κάτι.

Συγκολλώ την προστατευτική μονάδα και τη στερεώνω στη θέση της με ζεστή κόλλα.

Τυλίγω τις επαφές της μπαταρίας και κολλάω γρήγορα το καλώδιο σε αυτές για να μην υπερθερμανθεί η μπαταρία. Από τη μια και από την άλλη. Μετά από αυτό πρέπει να συνδεθείτε micro USBκαλώδιο και παροχή ρεύματος στην προστατευτική μονάδα, αυτό θα ενεργοποιήσει τη λειτουργία της.

Έγινε, τώρα πρέπει να ανεβάσετε το υλικολογισμικό. Συνδέουμε το Arduino στον υπολογιστή, πηγαίνουμε στη σελίδα του έργου, ένας σύνδεσμος για αυτό βρίσκεται στην περιγραφή του βίντεο. Κατεβάστε το αρχείο, αποσυσκευάστε τα αρχεία, εγκαταστήστε τις βιβλιοθήκες, ανοίξτε την απαιτούμενη έκδοση υλικολογισμικού για την οθόνη 32 ή 64 σημείων και φορτώστε την στον ελεγκτή. Όλα λειτούργησαν την πρώτη φορά! Δεδομένα από τη ράβδο GPS. Δροσερός!

Τοποθετώ το χειριστήριο στη θέση του, ανοίγω το αυτόνομο τροφοδοτικό... iiiiiiii... τίποτα. Το LED τροφοδοσίας στο Arduino είναι αναμμένο, αλλά η οθόνη δεν ανάβει. Και έτσι έγινε το tryndets, τον λόγο για τον οποίο ακόμα δεν ξέρω. Μου πήρε αρκετές ώρες δουλειάς για να λειτουργήσει αυτόνομα το tracker από την ενσωματωμένη μπαταρία.

Στην αρχή νόμιζα ότι ο μικρός μετατροπέας ισχύος ήταν ο ένοχος. Αλλά ο έλεγχος με ένα πολύμετρο έδειξε σταθερά 5 βολτ. Στη συνέχεια, σύνδεσα μια αυτόνομη μονάδα ισχύος που μου είχε μείνει από άλλο έργο, είναι χτισμένη σε έναν μεγάλο μετατροπέα ενίσχυσης - και ιδού, ο ιχνηλάτης ξεκίνησε, αλλά πάγωσε μετά από λίγα δευτερόλεπτα.

Φόρτισα την μπαταρία και τοποθέτησα τον ιχνηλάτη στο παράθυρο για να πιάνω δορυφόρους. Τρία λεπτά αργότερα, πήρε ένα σήμα από 4 δορυφόρους και καθόρισε την τοποθεσία. Λοιπόν, αυτό σημαίνει ότι λειτουργεί και μπορεί πιθανώς να συναρμολογηθεί; Αλλάζουμε το boost converter, προφανώς ο μικρός κάνει πολύ θόρυβο από το τροφοδοτικό.

Για να γίνει αυτό, έπρεπε να αποσυναρμολογήσω εντελώς τον ιχνηλάτη, να ξεκολλήσω όλα τα καλώδια και να τον συναρμολογήσω ξανά. Η νέα μονάδα τροφοδοσίας θα βρίσκεται στο ίδιο σημείο με την παλιά, μόνο μια βάση έπρεπε να αφαιρεθεί για να χωρέσει κάτω από την οθόνη.

Αυτό ήταν όλο, έστριψα τα καλώδια σε κοτσιδάκια για να αποφύγω παρεμβολές. Αα και... αυτό το κάθαρμα δεν άναψε ξανά. Πιο συγκεκριμένα, ενεργοποιήθηκε και αμέσως πάγωσε με τεχνουργήματα στην οθόνη. Τόσες ώρες δουλειάς και όλα για το τίποτα. Η αντικατάσταση του μετατροπέα δεν βοήθησε.

Δοκίμασα να εγκαταστήσω πυκνωτές στο τροφοδοτικό - τίποτα δεν βοήθησε. Ο ιχνηλάτης αρνήθηκε να λειτουργήσει αυτόνομα, τόσο από τους μετατροπείς ενίσχυσης όσο και από το εργαστηριακό τροφοδοτικό - πάγωσε ή δεν άναβε καθόλου. Αλλά ταυτόχρονα λειτούργησε τέλεια από την υποδοχή USB Arduino.

Χρησιμοποιώντας τη μέθοδο διαδοχικού τερματισμού λειτουργίας, μπόρεσα να μάθω ότι η οθόνη OLED έφταιγε για αυτό - αλλά ακόμα δεν καταλαβαίνω γιατί. Η λύση βρέθηκε ξαφνικά. Κατά τον επόμενο έλεγχο της αυτόνομης παροχής ρεύματος, κατά λάθος έβαλα 5 βολτ στον ακροδέκτη VIN. Σημειώνω ότι αυτή η καρφίτσα! Δεν! έχει σχεδιαστεί για να παρέχει ισχύ 5 volt και απαιτεί τάση 7 έως 12 βολτ.

Ωστόσο, ο ιχνηλάτης ξεκίνησε αμέσως και άρχισε να λειτουργεί σταθερά. Εκείνοι. Αποδεικνύεται ότι ο μικρός σταθεροποιητής δεν ήταν η πηγή του προβλήματος, ήταν κάτι άλλο.

Ταυτόχρονα αποφάσισα να ελέγξω την τρέχουσα κατανάλωση. Από τα 5 βολτ ο ιχνηλάτης κατανάλωνε περίπου 70 milliamps. Και από 4 βολτ μέσω ενός μετατροπέα ενίσχυσης αποδείχθηκε ότι ήταν περίπου 110 milliamps. Έτσι, η μικρή μπαταρία 350 milliamp θα διαρκέσει για τρεις ώρες διάρκεια ζωής μπαταρίας. Και δεν έχω βελτιστοποιήσει ακόμα την παροχή ρεύματος, μπορείτε να κόψετε τα LED που είναι πάντα αναμμένα και να εξοικονομήσετε ακόμα την μπαταρία.

Το tracker άρχισε να λειτουργεί εντελώς σταθερά, το άφησα στο παράθυρο και μετά από λίγα λεπτά έπιασε 4 δορυφόρους. Εξαιρετική

Αν ενδιαφέρεστε να με βοηθήσετε να καταλάβω τον λόγο της περίεργης συμπεριφοράς του Arduino, τότε είναι μια εισαγωγή:

1 – Το tracker λειτουργεί εάν τροφοδοτείται μέσω της υποδοχής USB Arduino.

2 – Ο ιχνηλάτης παγώνει και δεν ανάβει εάν τον τροφοδοτήσετε μέσω του ακροδέκτη Arduino 5V εφαρμόζοντας 5 βολτ σε αυτό από οποιαδήποτε πηγή ρεύματος.

3 – Ο ιχνηλάτης παγώνει και δεν ανάβει εάν ισχύουν 7 βολτ ή περισσότερα μέσω του ακροδέκτη VIN Arduino.

4 – Ο ιχνηλάτης λειτουργεί εάν τροφοδοτείται με μη τυπικά 5 βολτ μέσω του ίδιου ακροδέκτη VIN.

Η τελική συσκευή είναι ένα καθολικό αυτόνομο ταχύμετρο, αποστασιόμετρο, χιλιομετρητής και δορυφορικό ακριβές ρολόι ώρας σε ένα περίβλημα.

Στην κύρια οθόνη μετά τη φόρτωση, η τρέχουσα ώρα και ημερομηνία στο Γκρίνουιτς εμφανίζονται στο επάνω μέρος, η δεύτερη γραμμή είναι η τρέχουσα ταχύτητα 0,3 χιλιομέτρων την ώρα και η μέγιστη τιμή ταχύτητας που έχει καταγραφεί από τη στιγμή που τέθηκε σε λειτουργία - 26 χιλιόμετρα την ώρα. Στην τρίτη γραμμή, η τρέχουσα απόσταση από το σημείο μηδέν είναι 530 μέτρα και η μέγιστη απόσταση που έχει επιτευχθεί από την ενεργοποίηση είναι 580 μέτρα. Στην τέταρτη γραμμή, το χιλιομετρητή δείχνει 923 μέτρα και τον αριθμό των δορυφόρων που χρησιμοποιήθηκαν.

Οι χαρακτήρες κατώτατης γραμμής είναι ο όγκος των δεδομένων που λαμβάνονται από τη μονάδα GPS.

Όταν πατάτε στιγμιαία το κουμπί, η εμφάνιση της οθόνης αλλάζει και όταν το κρατάτε για μεγάλο χρονικό διάστημα, ο ιχνηλάτης θυμάται την τρέχουσα θέση ως μηδενικό σημείο αναφοράς για μετρήσεις απόστασης. Η δεύτερη οθόνη εμφανίζει την τρέχουσα και τη μέγιστη ταχύτητα. Η τρίτη οθόνη περιέχει πληροφορίες για την απόσταση από το σημείο μηδέν. Η τέταρτη οθόνη είναι ο χιλιομετρητής. Πέμπτο γεωγραφικό πλάτος και μήκος.

Μπορείτε να επαναφέρετε το χιλιομετρητή και τις μέγιστες τιμές πατώντας παρατεταμένα το κουμπί στην οθόνη με αυτές τις παραμέτρους. Εκείνοι. μεταβείτε στο χιλιομετρητή και κρατήστε πατημένο το κουμπί για να το επαναφέρετε.

Ας προχωρήσουμε στη δοκιμή. Τώρα ο ιχνηλάτης βλέπει 12 δορυφόρους. Ρύθμισα το τρέχον σημείο μηδέν και μηδενίζω το χιλιομετρητή. Κάνω το ίδιο πράγμα σε ένα χιλιομετρητή αυτοκινήτου. Έχοντας διανύσει 1,2 χιλιόμετρα σύμφωνα με το ταχύμετρο του αυτοκινήτου, είδα τα ίδια 1205 μέτρα στον ιχνηλάτη GPS. Η τρέχουσα απόσταση από το σημείο μηδέν σε ευθεία γραμμή είναι 0,93 χιλιόμετρα. Και σύμφωνα με τον χάρτη, αυτά τα ίδια 930 μέτρα, μέχρι στιγμής όλα είναι ακριβή.

Αποφάσισα να μετρήσω μεγαλύτερη απόσταση. Και πάλι μηδενίζω τις ενδείξεις στον ιχνηλάτη και στο αυτοκίνητο. Έχοντας διανύσει 8,4 χιλιόμετρα, διαπίστωσα στον ιχνηλάτη ότι η απόσταση ήταν μικρότερη - μόνο 7974 μέτρα. Σε αυτή την περίπτωση, η τρέχουσα απόσταση από το σημείο μηδέν είναι 4.930 μέτρα. Ας το τσεκάρουμε στον χάρτη, βγαίνει με μεγάλη ακρίβεια, τα ίδια 4.930 μέτρα. Δεν είναι σαφές, αλλά γιατί τότε το χιλιομετρητή βρίσκεται στα 400 μέτρα και ποιο χιλιομετρητή βρίσκεται, στο αυτοκίνητο ή στο GPS.

Εντάξει, ήρθε η ώρα να εκτυπώσετε πίσω κάλυμμακαι θα ξαναδοκιμάζουμε. κλείνω. Το βάρος της τελικής συσκευής αποδείχθηκε ότι ήταν 55 γραμμάρια, πολύ, αλλά όχι κρίσιμο - στο τέλος θα σας δείξω πώς να το μειώσετε.

Έφτασα στο παγοδρόμιο και αποφάσισα να μετρήσω την ταχύτητα του παίκτη χόκεϋ. Ανάθεμα, χρειάζεται ακόμα να αφαιρέσει τα καλύμματα για ταχύτητα. Το αποτέλεσμα ήταν μια άγρια ​​ταχύτητα, όπως ένας "ρωσικός πύραυλος" - 5 χιλιόμετρα την ώρα. Περπάτησα, και όλα αυτά επειδή η οροφή στο παγοδρόμιο είναι μονωμένη με ανακλαστικό φύλλο για να κρατήσει μακριά το κρύο. Υπάρχει ένα σήμα από δορυφόρους, αλλά δεν είναι ακριβές.

Ας κάνουμε μια τελευταία δοκιμή με κινητό τηλέφωνο. Το τηλέφωνο βλέπει 7 δορυφόρους και το tracker 9. Αρχίζω να καταγράφω και επαναφέρω το χιλιομετρητή στον ιχνηλάτη. Λοιπόν... πάμε. Μετά από οδήγηση τριών χιλιομέτρων, το τηλέφωνο και ο ιχνηλάτης έδειξαν ίδιες τιμές στο χιλιομετρητή. Το 3017 έναντι των 3021 μέτρων είναι σούπερ αποτέλεσμα, δεν περίμενα τέτοια ακρίβεια.

Αλλά το χιλιομετρητή έκανε λάθος, έως και 12 χιλιάδες χιλιόμετρα. Όχι ξινό. Προηγουμένως, κατά την αποσφαλμάτωση ενός προγράμματος, είχα ήδη αντιμετωπίσει ένα τέτοιο σφάλμα και ο ιχνηλάτης μετακινήθηκε αμέσως 7 χιλιάδες χιλιόμετρα. Όταν έφτασα σπίτι, δημιούργησα ένα σημείο στο Google με μηδενικό γεωγραφικό πλάτος και μήκος. Αποδείχθηκε ότι βρίσκεται στον Ατλαντικό Ωκεανό, όχι μακριά από την ακτή της Γκάνα. Έχοντας μετρήσει την απόσταση από αυτό μέχρι την τοποθεσία μου, πήρα τα ίδια 7 χιλιάδες χιλιόμετρα. Αποδεικνύεται ότι η μονάδα GPS μερικές φορές παραλείπει μηδενικά κατά μήκος των συντεταγμένων. Αυτό μπορεί εύκολα να διορθωθεί προσθέτοντας μία μόνο συνθήκη στον κώδικα του προγράμματος. Και αυτό το σφάλμα δεν παρατηρήθηκε κατά τη διάρκεια των δοκιμών.

Νομίζω ότι ο ιχνηλάτης αποδείχθηκε φοβερός· αυτή είναι η πρώτη μου εμπειρία να εργάζομαι απευθείας με μονάδες GPS. Γιατί χρειάζεται; Ένας τέτοιος ιχνηλάτης μπορεί να χρησιμεύσει ως αυτόνομο ταχύμετρο ή ανεξάρτητο χιλιομετρητή. Μπορεί να τοποθετηθεί σε ποδήλατο, αυτοκίνητο, παιχνίδι ή τετρακόπτερο. Σας επιτρέπει επίσης να μετρήσετε την απόσταση σε ευθεία γραμμή σε ένα δεδομένο σημείο, αποθηκεύονται μηδενικές τιμές μη-πτητική μνήμη. Θυμάται τις μέγιστες τιμές ταχύτητας και απόστασης που επιτυγχάνονται. Όλα αυτά τα κάνει αυτόνομα και δεν εξαρτάται από κανέναν άλλο εκτός από τους δορυφόρους. Και φυσικά, αυτό είναι ένα ακριβές ρολόι ώρας. Το χρειάζομαι για να μετρήσω τη μέγιστη ταχύτητα και τη μέγιστη απόσταση από αντικείμενα. Αυτό είναι σωστό, πρέπει να προσθέσετε περισσότερο ύψος στην οθόνη για να μετρήσετε πόσο ψηλά ανεβαίνετε!

Ας μιλήσουμε για το πώς μπορείτε να μειώσετε το βάρος· ο ευκολότερος τρόπος για να το κάνετε αυτό είναι να συναρμολογήσετε τον ιχνηλάτη σε μια πλατφόρμα Arduino ProΜίνι στα 3,3 βολτ. Τότε δεν θα χρειαστείτε μετατροπέα ενίσχυσης, αντ 'αυτού θα υπάρχει ένα μικρό γραμμικό στέλεχος στα 3,3 βολτ, η μονάδα GPS λειτουργεί χωρίς προβλήματα σε αυτήν την τάση και στην οθόνη θα χρειαστεί να παρακάμψετε τον σταθεροποιητή ισχύος.

Λοιπόν, θα απαντήσω αμέσως στην ερώτηση: είναι δυνατόν να προσθέσετε μια μονάδα GSM και να ελέγξετε τον ιχνηλάτη μέσω SMS; Ναι μπορείς. Για να το κάνετε αυτό, εκτός από την ίδια την ενότητα, θα χρειαστεί επίσης να προσθέσετε επεξεργασία εντολών SMS στον κώδικα του προγράμματος και αυτό θα πρέπει να είναι ένα ξεχωριστό έργο.

Αυτό είναι για σήμερα, αν σας άρεσε αυτό το βίντεο, τότε είμαι σίγουρος ότι θα σας αρέσει και μοιραστείτε το σύνδεσμο του βίντεο με τους φίλους σας.

Ευχαριστούμε που παρακολουθήσατε, καλή τύχη σε όλους και τα λέμε σε νέα βίντεο! Αντίο!

Τα δεδομένα αποθηκεύονται σε ένα υπολογιστικό φύλλο dataGPS.csv, η μορφή του οποίου αντιστοιχεί στις απαιτήσεις της υπηρεσίας Google My Maps.

    Γλώσσα προγραμματισμού: Arduino (C++)

Οδηγίες βίντεο

Ο, τι χρειάζεσαι

Πώς να συναρμολογήσετε

gps-tracker.ino // βιβλιοθήκη για εργασία με συσκευές μέσω SPI#περιλαμβάνω // βιβλιοθήκη για εργασία με κάρτα SD#περιλαμβάνω // βιβλιοθήκη για εργασία με συσκευή GPS#περιλαμβάνω // δημιουργήστε ένα αντικείμενο της κλάσης GPS και περάστε το αντικείμενο Serial1 σε αυτό GPS GPS (Serial1) ; // Καρφίτσα LED#define LED_PIN A0 // button pin #define BUTTON_PIN 13 // καρφώστε την κάρτα micro-sd CS#define CHIP_SELECT_PIN 9 // χρονικό διάστημα για την εγγραφή δεδομένων στην κάρτα#define INTERVAL 5000 // ορίστε το μέγεθος του πίνακα για την ώρα, την ημερομηνία, το γεωγραφικό πλάτος και το μήκος#define MAX_SIZE_MASS 16 // πίνακας για την αποθήκευση της τρέχουσας ώραςχρόνος char[MAX_SIZE_MASS]; // κατάσταση εγγραφής bool stateRec = false ; // θυμάται την τρέχουσα ώρα long startMillis = millis() ; void setup() ( // ανοίξτε τη σειριακή θύρα για να παρακολουθείτε τις ενέργειες στο πρόγραμμα Serial.begin(115200); // περιμένετε μέχρι να ανοίξει η οθόνη σειριακή θύρα // για να παρακολουθείτε όλα τα συμβάντα στο πρόγραμμα// while (!Serial) ( // ) Serial.print ("Serial init OK \r\n") ; // ανοίξτε μια σειριακή σύνδεση με τη μονάδα GPS Serial1.begin(115200); // ρυθμίστε το LED σε λειτουργία εξόδου pinMode(LED_PIN, OUTPUT) ; // ρυθμίστε το κουμπί σε λειτουργία σύνδεσης pinMode(BUTTON_PIN, INPUT_PULLUP) ; // εξάγει πληροφορίες σχετικά με την προετοιμασία στη σειριακή θύρα Serial.println("Αρχικοποίηση κάρτας SD...") ; // αρχικοποίηση της κάρτας SDενώ (! SD.begin (CHIP_SELECT_PIN) ) ( Serial.println ("Η κάρτα απέτυχε ή δεν υπάρχει" ) ; καθυστέρηση(1000 ) ; ) // εξαγωγή πληροφοριών στη σειριακή θύρα Serial.println("Card αρχικοποιήθηκε"); // δημιουργήστε ένα αντικείμενο dataFile της κλάσης File για εργασία με αρχεία File dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // εάν το αρχείο υπάρχει if (dataFile) ( // γράψτε το όνομα των μελλοντικών δεδομένων στην κάρτα μνήμης dataFile.println("Χρόνος, Συντεταγμένες, Ταχύτητα") ; // κλείσιμο του αρχείου dataFile.close(); Serial.println("Αποθήκευση ΟΚ"); ) else ( Serial.println ("Σφάλμα ανοίγματος test.csv" ) ; ) ) void loop() ( // Καταγράψτε το πάτημα του κουμπιούαν (! digitalRead(BUTTON_PIN) ) ( // αλλάξτε την κατάσταση "recording" / "not write" στην κάρτα μνήμης stateRec = ! StateRec; // αλλαγή της κατάστασης της ενδεικτικής λυχνίας LED digitalWrite(LED_PIN, stateRec) ; ) // εάν τα δεδομένα προήλθαν από τη μονάδα GPS if (gps.available()) ( // ανάγνωση δεδομένων και ανάλυση gps.readParsing(); // ελέγξτε την κατάσταση της μονάδας GPS switch (gps.getState () ) ( // όλα είναι εντάξει περίπτωση GPS_OK: Serial.println ("Το GPS είναι εντάξει" ) ; // εάν έχει παρέλθει το καθορισμένο χρονικό διάστημα if (millis() - startMillis > INTERVAL &&stateRec) ( // αποθήκευση δεδομένων στην κάρτα μνήμης saveSD() ; // θυμηθείτε την τρέχουσα ώρα startMillis = millis() ; ) Διακοπή ; // Περίπτωση σφάλματος δεδομένων GPS_ERROR_DATA: Serial.println("GPS δεδομένα σφάλματος" ); Διακοπή ; // Καμία σύνδεση με δορυφόρουςθήκη GPS_ERROR_SAT: Serial.println ( "Το GPS δεν συνδέεται με δορυφόρους") ; Διακοπή ; ) )) // λειτουργία για αποθήκευση δεδομένων σε κάρτα μνήμης void saveSD() ( File dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // εάν το αρχείο υπάρχει και έχει ανοίξει if (dataFile) ( // διαβάζει την τρέχουσα ώρα gps.getTime(χρόνος, MAX_SIZE_MASS); // γράψτε την ώρα στην κάρτα μνήμης dataFile.print(" \" " ) ; dataFile.print(time); dataFile.print(" \" " ) ; dataFile.print ("," ) ; dataFile.print(" \" " ) ; // ανάγνωση και εγγραφή συντεταγμένων γεωγραφικού πλάτους και μήκους στην κάρτα μνήμης dataFile.print(gps.getLatitudeBase10(), 6); dataFile.print ("," ) ; dataFile.print(gps.getLongitudeBase10(), 6); dataFile.print(" \" " ) ; dataFile.print ("," ) ; dataFile.print(gps.getSpeedKm()); dataFile.println("km/h"); dataFile.close(); Serial.println("Αποθήκευση ΟΚ"); ) else ( Serial.println ("Σφάλμα ανοίγματος test.csv" ) ; ) )