Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Η Έννοια του Global Positioning System

Σχετικά έγγραφα
Σχεδίαση Συστημάτων με τον Arduino Μάθημα 3. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Η Έννοια του Global Positioning System

Σχεδίαση Συστημάτων με τον Arduino Μάθημα 3. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Η Έννοια του Global Positioning System

Μάθημα 2 Δραστηριότητα 2: Δημιουργώντας το Μετεωρολογικό Σταθμό. Επανεξέταση των βασικών εννοιών της C και του προγραμματισμού.

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8. Μετρώντας Επιτάχυνση με το Accelerόμετρο (ADXL 335) Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 1. Προγραμματισμός Φυσικών Συστημάτων. Νέα Ψηφιακά Αντικείμενα

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 3 Μέτρηση Θερμοκρασίας Σύστημα Ελέγχου Θερμοκρασίας. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

Έλεγχος κινητήρα συνεχούς ρεύματος με τρανζίστορ και Arduino

ΕΝΟΤΗΤΑ 14 Πρωτόκολλα Επικοινωνίας

Εφαρμογές Σειριακής Επικοινωνίας

Ενσωματωμένα Συστήματα

ΕΝΟΤΗΤΑ ΠΑΓΚΟΣΜΙΟ ΣΥΣΤΗΜΑ ΠΡΟΣΔΙΟΡΙΣΜΟΥ ΘΕΣΗΣ (GPS - Global Positioning System) ΕΙΣΑΓΩΓΗ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 1. Arduino + LabVIEW: Μέτρηση Έντασης Φωτός με Φωτοαντίσταση. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία ΡομποΚαθαριστής Μέρος Β : Το Πρόγραμμα. Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping).

ΕΝΟΤΗΤΑ 12 ΣΕΙΡΙΑΚΗ ΔΙΕΠΑΦΗ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 5. Ρυθμίζοντας τη Φορά Περιστροφής. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

Εξαμηνιαία Εργασία 2013 Προγραμματίζοντας τον Arduino στη C Μέρος Β : Επικοινωνία Υπολογιστή με Μικροελεγκτή

ΕΡΓΑΣΤΗΡΙΟ 6 ΟΔΗΓΗΣΗ ΑΠΕΙΚΟΝΙΣΕΩΝ SSD ΚΑΙ LCD

Μέτρηση Θερμοκρασίας με τον αισθητήρα TMP36. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων. Βασική δομή ενός προγράμματος στο LabVIEW.

Α. Βασική Χρήση κινητήρα - Servo με τη βιβλιοθήκη <Servo.h>

Μάθημα 1 ΑΙΣΘΗΤΗΡΕΣ Ο Αισθητήρας Δύναμης. Επανεξέταση των βασικών εννοιών της C και του προγραμματισμού.

Πτυχιακή Εργασία Οδηγώντας ένα Ρομποτικό Αυτοκίνητο με το WiFi. Η Ασύρματη Επικοινωνία, χρησιμοποιώντας

ΣΥΣΤΗΜΑΤΑ SCADA. Μέρος 5. Δικτύωση για Απομακρυσμένο Έλεγχο και Μεταφορά Δεδομένων

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

Πλακέτα Arduino. 1ο ΕΠΑΛ Περάματος - 7ο ΕΚ Πειραιά

ΗΜΕΡΟ ΜΗΝΙΑ: Σάββατο 28/03/2015 Arduino Day ΤΑΞΗ: Ομάδα Υδρορομποτικής 7ου Γ.Ε.Λ. Τρικάλων. ΚΑΘΗΓΗΤΗΣ: Σπάχος Βασίλειος, ΠΕ19 Πληροφορικής

Γεωπροσδιορισμός σε κινητές συσκευές και αξιοποίησή τους (Geolocation) ΓΤΠ61 Κοντάκης Σπυριδάκης

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 7 Ακούγοντας Πρώτη Ματιά στην Ανάλυση Fourier. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομέας: Ηλεκτρονικής, Ηλεκτρολογίας και Αυτοματισμού Εκπαιδευτικοί: Μπουλταδάκης Στέλιος Μαυρίδης Κώστας

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

για τις ρυθμίσεις LabView μέσα από το κανάλι και του καλωδίου USB.

Προγραμματισμο ς σε Arduino

ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ARDUINO

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 4. Οδηγώντας έναν DC Κινητήρα. Το κύκλωμα της Λειτουργίας DC Κινητήρα

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

1o ΕΠΑΛ- Ε.Κ. Συκεών -Τομζασ: Ηλεκτρονικισ, Ηλεκτρολογίασ και Αυτοματιςμοφ Εκπαιδευτικοί: Μπουλταδάκθσ τζλιοσ Μαυρίδθσ Κωνςταντίνοσ

Το κύκλωμα σε breadboard

Arduino Teachers Workshop

Δρ. Απόστολος Ντάνης. Σχολικός Σύμβουλος Φυσικής Αγωγής

Σειριακό Τερματικό Serial Terminal (Dumb Terminal)

ΘΕΜΑ : ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ DIGITAL ELECTRONICS

Αθήνα 29 ΝΟΕ, 2016 ΘΕΜΑ: ΑΙΤΗΜΑ ΑΓΟΡΑΣ ΥΛΙΚΩΝ ΓΙΑ ΤΟ ΕΡΓΑΣΤΗΡΙΟ ΣΥΛΛΟΓΗΣ & ΕΠΕΞΕΡΓΑΣΙΑΣ ΔΕΔΟΜΕΝΩΝ

Συλλογή & Επεξεργασία Δεδομένων Εξαμηνιαία Σχεδίαση Συστήματος Πραγματικής Εφαρμογής (Prototyping).

ΤΗΛΕΠΙΣΚΟΠΗΣΗ (E6205) Βασιλάκης Εμμανουήλ Επίκ. Καθηγητής

ΡΟΜΠΟΤΙΚΗ ΜΕ ARDUINO - ARDUINO ΚΑΙ ΗΧΟΣ II. Δημιουργός: Δρ.Αθανάσιος Μπαλαφούτης Επιβλέπων: Πετεινάτος Ηλίας Υποψήφιος Διδάκτωρ

ΚΟΙΝΩΝΙΚΗ ΔΙΚΤΥΩΣΗ ΜΕΣΩ ΚΙΝΗΤΩΝ ΣΥΣΚΕΥΩΝ: ΧΡΗΣΗ ΔΕΚΤΗ GPS ΓΙΑ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΗΣ ΚΟΙΝΩΝΙΚΗΣ ΔΙΚΤΥΩΣΗΣ ΣΕ ΚΙΝΗΤΗ ΣΥΣΚΕΥΗ

Ψηφιακά Αντικείμενα Μάθημα 1 Δραστηριότητα 2. Προγραμματισμός Φυσικών Συστημάτων. Συστήματα Πραγματικών Εφαρμογών. Νέα Ψηφιακά Αντικείμενα

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Εγκατάσταση του Arduino IDE

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Εφαρμογές Αναλογικών Ε/Ε PWM (pulse Width Modulation)

ΑΣΚΗΣΗ 2 (29 Νοεμβρίου 2016)

FOSSCOMM ο Συνέδριο Κοινοτήτων Ανοιχτού Λογισμικού Σάββατο 20 Απριλίου Ομάδα Σχολής Ικάρων Εργαστήριο Arduino

Φύλλο εργασίας 7 - Δημιουργώ τα δικά μου χρώματα με το RGB LED

ΕΝΟΤΗΤΑ 6 LCD ΟΘΟΝΕΣ

Arduino applications for drone development & programming. 18 th Panhellenic Conference in Informatics 2 nd 4 th of October, 2014

Νέες Τεχνολογίες στη Διαχείριση των Δασών

AΕΙ ΠΕΙΡΑΙΑ T.T. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ

Σύστημα Αυτόματης Ταυτοποίησης. AIS Automatic Identification System

Έλεγχος με Μικροϋπολογιστές Εργαστήριο ενσωματωμένων συστημάτων

Εισαγωγή στην Πληροφορική

Αντικειµενοστρεφής Προγραµµατισµός

Εργαστήριο Τεχνολογίας Λογισμικού και Ανάλυσης Συστημάτων

Η ΤΕΧΝΟΛΟΓΙΑ ΟΡΥΦΟΡΙΚΟΥ ΕΝΤΟΠΙΣΜΟΥ ΘΕΣΗΣ ΣΤΗΝ ΤΟΠΟΓΡΑΦΙΑ ΚΑΙ Η ΧΡΗΣΗ ΤΟΥ ΣΕ ΤΟΥΡΙΣΤΙΚΕΣ ΕΦΑΡΜΟΓΕΣ. ΕΦΑΡΜΟΓΗ ΣΤΗΝ ΠΕΡΙΟΧΗ ΤΗΣ ΗΓΟΥΜΕΝΙΤΣΑΣ.

ΑΣΚΗΣΗ 1 (22 Νοεμβρίου 2017)

ΠΡΟΣΟΧΗ: Οι απαντήσεις πολλαπλής επιλογής µόνο πάνω στο ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ

ΑΚΑ ΗΜΙΑ ΕΜΠΟΡΙΚΟΥ ΝΑΥΤΙΚΟΥ ΜΑΚΕ ΟΝΙΑΣ ΣΧΟΛΗ ΜΗΧΑΝΙΚΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ : ΚΑΤΑΣΚΕΥΗ ΑΥΤΟΙΣΟΡΡΟΠΟΥΜΕΝΟΥ ΙΤΡΟΧΟΥ ΜΟΝΤΕΛΟΥ ΣΠΟΥ ΑΣΤΕΣ

ιαδικτυακές Εφαρµογές

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ: ΜΙΚΡΟΕΛΕΓΚΤΕΣ

4 Εισαγωγή στο Arduino

Περιεχόμενα συσκευασίας

ΕΦΑΡΜΟΓΕΣ ΤΗΛΕΠIΚΟΙΝΩΝΙΑΚΩΝ ΔΙΑΤΑΞΕΩΝ

10. Πληκτρολόγιο matrix 4x4

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

(C) 2010 Pearson Education, Inc. All rights reserved.

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΟ ΚΙΤ ΡΟΜΠΟΤΙΚΗΣ LEGO MINDSTORMS EV3

ΝΕΕΣ ΤΕΧΝΟΛΟΓΙΕΣ & ΧΡΗΣΗ ΣΤΗΝ ΥΠΑΙΘΡΙΑ ΕΡΓΑΣΙΑ (1/5) ΔΙΕΥΚΟΛΥΝΣΗ ή (ακόμη ένα) ΒΑΣΑΝΟ???

ΕΝΟΤΗΤΑ 3 ΕΚΦΡΑΣΕΙΣ, ΑΝΑΜΟΝΕΣ (DELAYS), ΗΧΟΙ

Μάθημα 4.7 Θύρες περιφερειακών

Προγραμματισμός Η/Υ (ΤΛ2007 )

//στο pin 3 του μικροελεγκτή συνδέουμε το control pin του ρελέ. WRITE 'I am on' στο SOCKET // λέω στον client ότι άναψα τη λάμπα

ΔΙΔΑΚΤΙΚΟ ΣΕΝΑΡΙΟ ΔΗΜΙΟΥΡΓΙΑ ΣΥΣΤΗΜΑΤΟΣ ΔΙΕΞΑΓΩΓΗΣ ΠΑΙΧΝΙΔΙΟΥ ΕΡΩΤΗΣΕΩΝ/ΑΠΑΝΤΗΣΕΩΝ ΜΕ ΧΡΗΣΗ ARDUINO - QUIZ GAME ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 3

Επίπεδο Μεταφοράς. (ανεβαίνουμε προς τα πάνω) Εργαστήριο Δικτύων Υπολογιστών Τμήμα Μηχανικών Η/Υ και Πληροφορικής

ΣΥΣΤΗΜΑΤΑ SCADA. Μέρος 5. Δικτύωση για Απομακρυσμένο Έλεγχο και Μεταφορά Δεδομένων

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Είναι το πρωτόκολλο RS232 που χρησιμοποιείται στις σειριακές θύρες COM με τη διαφορά ότι εκτελείται σε επίπεδο τάσεων TTL. 2

Ενσωµατωµένα Συστήµατα

Εισαγωγή στην Αριθμητική Ανάλυση

Βασική Κατηγοριοποίηση Αισθητήρων Γιώργος Βασιλείου

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Ενσωματωμένα Συστήματα

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Κατασκευή Πληροφοριακού Συστήματος Διαχείρισης Στόλου Οχημάτων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Η γλώσσα προγραμματισμού C

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΉΜΙΟ ΚYΠΡΟΥ

ΗY335: Δίκτυα Υπολογιστών Χειμερινό Εξάμηνο Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Διδάσκουσα: Μαρία Παπαδοπούλη

Transcript:

Σκοπός Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8 GPS. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων Η Έννοια του Global Positioning System (GPS) Αρχή λειτουργίας του GPS Πώς το GPS προσδιορίζει θέση στο χώρο το γεωγραφικό πλάτος & μήκος του σημείου στο χώρο που βρισκόμαστε GPS Αισθητήρας (Δέκτης) Υπολογισμός θέσης, χρησιμοππιώντας το δέκτη GPS και τη GPS Shield της Adafruit Δομές προγραμματισμού. 1

8.0 ΕΠΙΔΙΩΞΗ ΤΗΣ ΑΣΚΗΣΗΣ Το Global Positioning System (GPS) είναι ένα σύστημα που χρησιμοποιεί σήματα, από δορυφόρους σε τροχιά γύρω από τη γη, για να υπολογίζει με ακρίβεια, τη θέση / τη τοποθεσία που βρισκόμαστε. Εκτός από τη θέση που βρισκόμαστε, το GPS μας δίνει και άλλες πληροφορίες: την ακριβή ώρα, τη ταχύτητα που κινούμαστε, υψόμετρο, επάνω από τη θάλασσα. Το GPS χρησιμοποιείται σε αυτοκίνητα και μη επανδρωμένα, σε κινητά, σε έξυπνα ρολόγια, όπως το iwatch. Η επιδίωξη, σ αυτή την άσκηση, είναι να δούμε τη βασική αρχή λειτουργίας του GPS και να δούμε πως μπορούμε να χρησιμοποιούμε αυτό το σύστημα σε συστήματα που σχεδιάζουμε 8.1 GPS: Εισαγωγή Σε γνωστά μέρη, κάθε στιγμή, ξέρουμε καλά που βρισκόμαστε και πως θα φτάσουμε σ ένα τελικό προορισμό. Όμως, σε άγνωστα ή λιγότερο γνωστά μέρη, δεν είναι το ίδιο εύκολο και πολλές φορές, είναι αρκετά δύσκολο να βρίσκουμε το προσανατολισμό μας. Ξέρουμε, σχεδόν καθημερινά ή τουλάχιστον, αρκετά συχνά, χρησιμοποιούμε τις γνωστές μεθόδους, για να προσανατολιζόμαστε και να βρίσκουμε το δρόμο μας, ακόμα και σε άγνωστα μέρη. Χρησιμοποιούμε τα ονόματα των δρόμων, την αρίθμηση των κτιρίων σε κάθε δρόμο, επεξηγηματικές / καθοδηγητικές πινακίδες και αν χαθούμε, ζητάμε οδηγίες για να βρούμε το μέρος που θέλουμε να πάμε. Ξέρουμε καλά αυτή τη διαδικασία και αρκετές φορές, έχουμε χρησιμοποιήσει τον ένα ή τον άλλο τρόπο, για να πάμε σ ένα μέρος. Ένα πιο σύγχρονο σύστημα, για να εντοπίζουμε που βρισκόμαστε και πως μπορούμε να φτάσουμε στο τελικό μας προορισμό, είναι το GPS. Μάλλον θα έχουμε δει πως αυτό το σύστημα μπορεί να προβάλλει τη θέση που βρισκόμαστε, επάνω σε χάρτες της Google, στην οθόνη ενός tablet ή κινητού, γενικότερα, στην οθόνη μίας συσκευής και πιο πρόσφατα, στην οθόνη ενός έ- ξυπνου ρολογιού (Εικόνα ). Θα ξέρουμε ακόμα πως το GPS βασίζεται / χρησιμοποιεί σήματα από δορυφόρους, για να προσδιορίζει τις ακριβείς γεωγραφικές συντεταγμένες του μέρους που βρισκόμαστε, κάθε φορά. Όμως, πως ακριβώς λειτουργεί το GPS και πως μπορούμε να χρησιμοποιούμε το GPS σε συστήματα που σχεδιάζουμε, για παράδειγμα σ ένα ρομπότ, ώστε το ρομπότ να μπορεί να προσανατολίζεται να εντοπίζει που βρίσκεται, κάθε στιγμή. 8.2 GPS: Η Λειτουργία του Το ένα από τα δύο βασικά μέρη ενός συστήματος GPS, είναι ένας αισθητήρας. Αυτός ο αισθητήρας είναι διαφορετικός, από τους αισθητήρες που έχουμε δει ως τώρα. 2

Γιατί δεν αντιλαμβάνεται μεταβολές στο εξωτερικό περιβάλλον, αλλά σήματα από δορυφόρους. Αυτός ο αισθητήρας δηλαδή, λειτουργεί σαν δέκτης (Εικόνα ). Το άλλο από τα δύο βασικά μέρη ενός συστήματος GPS (Global Positioning System) GPS, είναι ένα σύστημα δορυφόρων που εκπέμπει σήματα. Ο δέκτης μπορεί να δέχεται αυτά τα σήματα και να τα χρησιμοποιεί, μ ένα τρόπο που θα δούμε παρακάτω, για να προσδιορίζει τις γεωγραφικές συντεταγμένες της θέσης μας, στο χώρο. Η ιδέα του GPS δεν είναι τόσο καινούργια. Ξεκίνησε να αναπτύσσεται στα 1970 και η ανάπτυξή του ολοκληρώθηκε το 1992. Σήμερα, υπάρχουν συνολικά, 27 δορυφόροι σε τροχιά γύρω από τη γη. Ένας δέκτης GPS μπορεί να έχει πρόσβαση, όχι σε όλους, αλλά σε ορισμένους από αυτούς. Καθένας από αυτούς τους δορυφόρους, εκπέμπει ένα σήμα που ανάμεσα σε άλλες πληροφορίες, περιέχει το χρόνο εκπομπής του σήματος από το δορυφόρο. Ένας δέκτης GPS, όπως αυτός που υπάρχει στα κινητά και αυτός που χρησιμοποιούμε σ αυτή την άσκηση, παίρνει αυτό το σήμα και μπορεί να υπολογίζει τη θέση του στο χώρο, χρησιμοποιώντας μία τεχνική που περιγράφεται παρακάτω. 8.2.1 Πως το GPS Προσδιορίζει Γεωγραφική Θέση Τα διαγράμματα στις Εικόνες 1 και 2, παριστάνουν πως ένας δέκτης GPS που παίρνει / λαμβάνει σήματα από τρείς δορυφόρους, μπορεί να χρησιμοποιεί το χρόνο που το σήμα, από κάθε ένα, από τους τρείς δορυφόρους κάνει να φτάσει σ αυτό το δέκτη, για να υπολογίσει τη θέση του, στο χώρο. Στο διάγραμμα της Εικόνας, ο δέκτης GPS βρίσκεται σε διαφορετική απόσταση από κάθε δορυφόρο και οι χρόνοι που τα σήματα από τους τρείς δορυφόρους κάνουν να φτάσουν σ αυτόν, είναι διαφορετικοί (Εικόνα ). Οι χρονικές καθυστερήσεις T1, T2 και T3 επιτρέπουν στο δέκτη να υπολογίζει την απόλυτη θέση του. Καθώς η θέση κάθε δορυφόρου είναι γνωστή, ο χρόνος που το σήμα από το δορυφόρο κάνει να φτάσει στο δέκτη GPS, είναι ανάλογος της απόστασης μπορούμε δηλαδή, να υπολογίσουμε την απόσταση του δέκτη, από το δορυφόρο, από το χρόνο T1. Αφού το σήμα από το δορυφόρο κάνει χρόνο Τ1 να φτάσει στο δέκτη GPS, τότε αυτός ο δέκτης θα είναι σε ακτίνα r1 από το πρώτο δορυφόρο. Ανάλογα, ο δέκτης GPS θα είναι σε ακτίνα r2 από το δεύτερο δορυφόρο. Επειδή ο δέκτης μπορεί κάθε χρονική στιγμή να είναι σ ένα σημείο στο χώρο, αυτό το σημείο θα είναι στη τομή των κύκλων με ακτίνες r1 και r2, 3

Εικόνα 1 & 2: Η αρχή λειτουργίας του GPS Αν τώρα, έχουμε και το σήμα από ένα τρίτο δορυφόρο και στη βάση αυτού του σήματος, υπολογίσουμε την απόσταση r3 της συσκευής, από το τρίτο δορυφόρο, τότε ο δέκτης θα είναι στο μοναδικό σημείο τομής των κύκλων με ακτίνες r1, r2, r3. Ο τρίτος δορυφόρος δηλαδή, λειτουργεί ώστε να αποκλείει το ένα από τα δύο σημεία τομής των κύκλων με ακτίνες r1 και r2. 4

Εικόνα 3: Η αρχή λειτουργίας του GPS 8.3 Σχηματικό Διάγραμμα του Κυκλώματος Συνδέοντας ένα δέκτη GPS είναι μία πολύ απλή διαδικασία που περιλαμβάνει τέσσερα βήματα: 8.3.1 Τοποθετούμε το δέκτη GPS, επάνω στο breadboard. 8.3.2 Συνδέουμε ground και τροφοδοσία στο GPS, στις GND και 5V θύρες, στον Arduino. 8.3.3 Συνδέουμε τον ακροδέκτη TX (Transmit) του GPS στον RX (Receive) του Arduino,. 5

Εικόνα 4: Σχηματικό διάγραμμα του κυκλώματος 8.3.4 Συνδέουμε τον RX ακροδέκτη του GPS, σ TX (Transmit) μία άλλη ψηφιακή θύρα του Arduino. Συνδέουμε δηλαδή τους ακροδέκτες TX και RX του GPS, στους ακροδέκτες TX και RX του Arduino, όμως αντίστροφα, μεταξύ τους. 8.4 Δέκτης GPS: Πως Λειτουργεί Ο αισθητήρας / δέκτης GPS διαρκώς στέλνει δεδομένα μέσα από μία σειριακή θύρα Γενικά, στέλνει θέση στο χώρο, τους διαθέσιμους δορυφόρους και την ένταση του σήματος, αλλά μπορούμε να πάρουμε περισσότερα ακόμα δεδομένα και να τα εμφανίσουμε στη σειριακή οθόνη του υπολογιστή. 8.5 Το Πρόγραμμα για να Εμφανίζει Δεδομένα από το GPS Παρακάτω, είναι το πρόγραμμα που διαβάζει τη μέτρηση / την έξοδο του GPS, χρησιμοποιώντας μία softserial σύνδεση και στέλνει τη τιμή(ες) από την έξοδο του GPS στη σειριακή οθόνη υπολογιστή, χρησιμοποιώντας τη σειριακή σύνδεση 6

Εικόνα 4β: Αναλυτικό διάγραμμα της συνδεσμολογίας του κυκλώματος. 7

void setup() Serial.begin(4800); void loop() if ( Serial.available() > 0 ) char a = Serial.read(); //get the byte of data from the GPS Serial.write(a); Ένας δέκτης GPS, για να μπορεί να προσδιορίζει τη γεωγραφική του θέση, θα πρέπει να «πιάνει σήμα», δηλαδή να εντοπίζει τα σήματα από τρείς τουλάχιστον δορυφόρους. Όμως, δεν είναι πάντα εύκολο, για ένα δέκτη GPS να πιάνει σήμα. Πολλά πράγματα, όπως στατικός ηλεκτρισμός και διάφορα αντικείμενα μπορεί να παρεμβαίνουν να εμποδίζουν ένα δέκτη GPS να παίρνει σήμα, ιδιαίτερα, όταν είμαστε μέσα σ ένα κτίριο. Ο δέκτης GPS χρειάζεται να είναι έξω ή τουλάχιστον, να μπορεί να βλέπει έξω από ένα κτίριο. Σήματα από δορυφόρους μπορεί να περνούν από παράθυρα ή φεγγίτες. Όμως, είναι καλύτερα να δοκιμάζουμε να χρησιμοποιούμε το δέκτη GPS, έξω, σε ανοιχτούς χώρους, όπου ο δέκτης, ελεύθερα, μπορεί να αναζητά και να εντοπίζει τα σήματα από δορυφόρους. Εφόσον έχουμε επιτρέψει στο δέκτη, αυτή την ανοικτή ορατότητα / ανεμπόδιστη πρόσβαση σε σήματα από δορυφόρους, είναι πολύ εύκολο να πάρουμε τις πληροφορίες, από το GPS, στη σειριακή οθόνη του υπολογιστή. Χρησιμοποιούμε το πρόγραμμα στην Εικόνα. Αυτό το πρόγραμμα, απλά ελέγχει αν υπάρχουν δεδομένα στη σειριακή θύρα του Arduino και αν υπάρχουν, τα εκτυπώνει στη σειριακή οθόνη, χαρακτήρα χαρακτήρα. 8.6 Η Λειτουργία του προγράμματος Ο αισθητήρας GPS διαρκώς στέλνει δεδομένα μέσα από μία σειριακή θύρα Γενικά, στέλνει θέση στο χώρο, τους διαθέσιμους δορυφόρους και την ένταση του σήματος, αλλά μπορούμε να πάρουμε περισσότερα ακόμα δεδομένα και να τα εμφανίσουμε στη σειριακή οθόνη του υπολογιστή. Ξεκινάμε τη σειριακή σύνδεση στη συνάρτηση setup(). Στη loop() εξετάζουμε / ε- λέγχουμε αν υπάρχει κάποιο bit πληροφορίας στη σειριακή θύρα. Εάν υπάρχει, εκτυπώνουμε αυτή τη πληροφορία, στη σειριακή οθόνη. 8

Εάν εκτελέσουμε το πρόγραμμα, αφού συνδέουμε το GPS στον Arduino, θα δούμε αρκετές πληροφορίες να εμφανίζονται στη σειριακή οθόνη (Εικόνα ). Το GPS στέλνει στη σειριακή οθόνη γεωγραφικό πλάτος και μήκος, το πλήθος των δορυφόρων που εντοπίζει και την ισχύ του σήματος. Όλες αυτές οι πληροφορίες στέλνονται και εμφανίζονται στη σειριακή οθόνη. Ανάλογα με τη συγκεκριμένη συσκευή GPS που χρησιμοποιούμε, μπορούμε να πάρουμε περισσότερες ακόμα πληροφορίες. 8.7 Εξάγοντας Γεωγραφικό Πλάτος & Γεωγραφικό Μήκος Στον Arduino μπορούμε να επεξεργαζόμαστε τις πληροφορίες από το GPS. Χρησιμοποιώντας συναρτήσεις επεξεργασίας συμβολοσειρών τις συναρτήσεις μίας βιβλιοθήκης, της TinyGPS (http://www.arduiniana.org/libraries/tinygps/ ), μπορούμε να εξάγουμε γεωγραφικό πλάτος και μήκος και να χρησιμοποιούμε αυτές τις πληροφορίες, για εντοπίζουμε τη θέση μας στο χώρο (Εικόνα ). Για παράδειγμα μπορούμε να χρησιμοποιούμε το GPS σ ένα ρομποτικό αυτοκίνητο ή σ ένα σκάφος που θα χρησιμοποιεί τις συντεταγμένες γεωγραφικό πλάτος και μήκος από το GPS και να ελέγχει αυτές τις συντεταγμένες σε σχέση με τις συντεταγμένες του τελικού του προορισμού, για να φτάσει στο τελικό προορισμό του. #include <TinyGPS.h> // Create an instance of the TinyGPS object TinyGPS gps; void getgps(tinygps &gps); void setup() Serial.begin(4800); void getgps(tinygps &gps) // The getgps function will display the required data on the LCD float latitude, longitude; //decode and display position data gps.f_get_position(&latitude, &longitude); Serial.print("Lat:"); Serial.print(latitude,5); Serial.print(" "); Serial.print("Long:"); 9

Serial.print(longitude,5); Serial.print(" "); delay(1000); // wait for 1 second void loop() char a; if ( Serial.available() > 0 ) // if there is data coming into the serial line a = Serial.read(); // get the byte of data if(gps.encode(a)) // if there is valid GPS data... getgps(gps); // grab the data and display it on the LCD 8.8 Ανεβάζοντας Γεωγραφικές Συντεταγμένες από το GPS στο Διαδίκτυο Μπορούμε τώρα, να ανεβάσουμε τις γεωγραφικές συντεταγμένες, από το GPS, στο διαδίκτυο, χρησιμοποιώντας το WiFi και ένα πρόγραμμα, για τη δημιουργία μίας ιστοσελίδας με τα δεδομένα από το GPS #include <TinyGPS.h> #include <SPI.h> #include <ccspi.h> #include <Adafruit_CC3000.h> #include <string.h> #include "utility/debug.h" //CC3000 pins #define ADAFRUIT_CC3000_IRQ 3 #define ADAFRUIT_CC3000_VBAT 5 #define ADAFRUIT_CC3000_CS 10 //Network id and password #define ssid "Aspaite" #define pass "" #define WLAN_SECURITY WLAN_SEC_UNSEC 10

Adafruit_CC3000 cc3000 = Adafruit_CC3000(ADAFRUIT_CC3000_CS, ADAFRUIT_CC3000_IRQ, ADAFRUIT_CC3000_VBAT); Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_FLOAT, 12345); Adafruit_CC3000_Server server(80); // Create an instance of the TinyGPS object TinyGPS gps; void getgps(tinygps &gps); void setup() uint32_t ipaddress, netmask, gateway, dhcpserv, dnsserv; //Start Serial,Waiting For Connection: Serial.begin(115200); Serial.println("GPS"); Serial.println(""); //Start the WiFi connection and server if (!cc3000.begin()) Serial.println(F("Unable to initialise the CC3000! Check your wiring?")); while(1); Serial.print("Attempting to connect to SSID:"); Serial.println(ssid); //Connect to Aspaite if (!cc3000.connecttoap(ssid,pass,wlan_security)) Serial.println(F("Unable to initialise the CC3000! Check your wiring?")); while(1); while(!cc3000.checkdhcp()) delay(100); Serial.print("Connected to:"); if(!cc3000.getipaddress(&ipaddress, &netmask, &gateway, &dhcpserv, &dnsserv)) Serial.println(F("Unable to retrieve the IP Address!\r\n")); else 11

Serial.print(F("\nIP Addr: ")); cc3000.printipdotsrev(ipaddress); Serial.println(); server.begin(); void loop() //listen fro incoming clients (incoming web page request connections) Adafruit_CC3000_ClientRef client=server.available(); char a; float latitude, longitude; if ( Serial.available() > 0 ) // if there is data coming into the serial line a = Serial.read(); // get the byte of data if(gps.encode(a)) // if there is valid GPS data... gps.f_get_position(&latitude, &longitude); if(client)//make sure the cluient is active //an http request ends with a blank line boolean currentlineisblank=true ; while(client.connected()) if(client.available()>0)//checks if the client has sent any data char c=client.read(); if(c=='\n'&&currentlineisblank) client.println("http/1.1 200 OK"); client.println("content-type:text/html"); client.println("connection:close"); client.println(); client.println("<!doctype HTML>"); client.println("<html>"); client.println("<head>"); client.println("<meta name=\"viewport\" content=\"initial-scale=1.0, userscalable=no\">"); client.println("<meta charset=\"utf-8\">"); client.println("<title>simple markers</title>"); 12

client.println("<style>"); client.println("html, body, #map-canvas height: 100%;margin: 0;padding: 0;"); client.println("</style>"); client.println("<script src=\"https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true\"></script>" ); client.println("<script>"); client.println("function initialize() "); client.println("var mylatlng = new google.maps.latlng(latitude,longitude);"); client.println("var mapoptions = "); client.println("zoom: 4,"); client.println("center: mylatlng"); client.println(""); client.println("var map = new google.maps.map(document.getelementbyid('map-canvas'), mapoptions);"); client.println("var marker = new google.maps.marker("); client.println("position: mylatlng,"); client.println("map: map,"); client.println("title: 'Hello World!'"); client.println(");"); client.println(""); client.println("google.maps.event.adddomlistener(window, 'load', initialize);"); client.println("</script>"); client.println("</head>"); client.println("<body>"); client.println("<div id=\"map-canvas\"></div>"); client.println("</body>"); client.println("</html>"); break; //end if (c=='\n'&& currentlineisblank) if (c=='\n') //you're starting a new line currentlineisblank=true; else if (c!='\r') //you've gotten a character on the current line currentlineisblank=false; //end if (client.available()) 13

//end while (client.connected()) //give the web browser time to receive the data delay(1); //close the connection: client.stop(); //end if (client) //end loop() 14