Διπλωματική εργασία του φοιτητή Αρβανιτόπουλου Αναστάσιου με τίτλο
ΣΤΟΧΟΣ ΕΡΓΑΣΙΑΣ: Επικοινωνία και Συνεργασία μεταξύ WSN GPS Εφαρμογή του walking GPS εισαγωγή εννοιών όπως:node localization Geographical Routing + Χρήση της πρότυπης εφαρμογής Google Earth
Διαχωρισμός της εργασίας μας σε 3 θεματικές ενότητες: 1. Δουλειά στο κομμάτι του WSN 2. Δουλειά από την πλευρά του υπολογιστή OFFLINE mode REAL TIME mode 3. Πειραματική διαδικασία Εφαρμογή Συμπεράσματα
WSN Wireless Sensor Network ή Ασύρματα Δίκτυα Αισθητήρων Πραγματοποίηση της σύνδεσης ΦΥΣΙΚΟΥ και ΨΗΦΙΑΚΟΥ κόσμου ΟΡΙΣΜΟΣ: Ένα ασύρματο δίκτυο αισθητήρων (WSN) αποτελείται από χωρικά διανεμημένους αυτόνομους αισθητήρες για την παρακολούθηση φυσικών ή περιβαλλοντικών συνθηκών, όπως η θερμοκρασία, ήχος, δόνηση, πίεση, κίνηση ή ρύπανση. Μπορούμε να το περιγράψουμε σαν μια συλλογή από κόμβους οργανωμένη σε ένα συνεταιριστικό δίκτυο. Χαρακτηριστικά WSN: Application specific Κλίμακα μεγέθους Χρόνος ζωής Αυτό οργάνωση και ανοχή σε σφάλματα Αυτονομία λειτουργίας και Προγραμματισμός Απλότητα QoS / Quality of Service
Δομικό στοιχείο ενός WSN είναι οι Αυτονομία Συνεργασία Μικρό κόστος Μικρό μέγεθος Αντοχή Bi directional Vs Περιορισμοί Αρχιτεκτονική κόμβων WSN
Οι κόμβοι IRIS λειτουργούν στα 2,4 GHz όπως ορίζει το πρότυπο IEEE 802.15.4 Ερ.: Γιατί όμως κρίθηκε απαραίτητη η δημιουργία ενός νέου προτύπου? Το πρότυπο ΙΕΕΕ 802.15.4 Η χρήση του στα WSN αποφέρει: ορίζει τις προδιαγραφές του και του Χαμηλή πολυπλοκότητα επιπέδου Ελαχιστοποίηση κατανάλωσης ενέργειας Χαμηλό κόστος Αξιόπιστη μετάδοση δεδομένων για ασύρματη σύνδεση μεταξύ κόμβων Δίνει τη δυνατότητα υλοποίησης δικτύων με μεγάλο πλήθος κόμβων FFD Το ΙΕΕΕ 802.15.4 ορίζει δύο είδη κόμβων RFD
Το hardware που χρησιμοποιήσαμε για την δημιουργία του WSN είναι: IRIS motes XM2110CA MIB520 προγραμματιστική πλακέτα [x2] Crossbow Technology Inc. MTS420CC sensorboard Τα iris motes αρχικά, έχουν τα εξής χαρακτηριστικά: Έχουν σχεδιαστεί γιαdeeply Embedded Sensor Networks Έχει RF πομποδέκτη συμβατό με το IEEE 802.15.4 Υψηλοί ρυθμοί μετάδοσης στα 250 Kbps Ο κάθε κόμβος μπορεί να χρησιμοποιηθεί σαν δρομολογητής Υποστηρίζει πολλά sensorboards Μπορεί να δημιουργήσει WSN μεγάλου πλήθους κόμβων
Εικόνες των υπόλοιπων χρησιμοποιούμενων συσκευών υλικού
Λειτουργικό/Λογισμικό κόμβων IRIS Δεν εφαρμόζονται τα συμβατικά Λειτουργικά συστήματα στα WSN Ανάπτυξη μιας component based αρχιτεκτονικής λειτουργικού TinyOS (Tiny Operating System) version 2.1.1 Βασικός άξονας ανάπτυξης: Η ελαχιστοποίηση της ενέργειας που καταναλώνεται στους κόμβους Μοντέλο λειτουργίας με Event Driven λογική Χαρακτηριστικά προϋποθέσεις λειτουργικού TinyOS: 1. Μικρή έκταση κώδικα 2. Οργανώνει τις λειτουργίες του κάθε κόμβου και ελέγχει το υλικό 3. Προσφέρει μια αφηρημένη απεικόνιση του υλικού στο λογισμικό της εφαρμογής 5. Διαχειρίζεται τους πόρους και την ενέργεια των κόμβων 4. Γεφυρώνει την απόσταση μεταξύ εφαρμογών και χρησιμοποιούμενου υλικού 6. Δυνατότητα επαναπρογραμματισμού
Λογισμικό/Λειτουργικό κόμβων IRIS Οι TinyOS εφαρμογές γράφονται σε γλώσσα nesc C Εφαρμογή TinyOS Components Interfaces events commands modules [Μωσαϊκό] Ικανοποιεί την component based λογική του TinyOS Configurations Διαδικασία WIRING
Αρχιτεκτονική του TinyOS Τα components δημιουργούν στρώματα ή επίπεδα Έννοιες: Χρονοπρογραμματιστή, event handler, tasks, async events, κατάσταση SLEEP Ερ.: Τι εννοούμε όταν λέμε ότι ένας κόμβος WSN «τρέχει» το TinyOS?
Ανάπτυξη των κυρίως εφαρμογών στο TinyOS περιβάλλον 1. MyMoteSendReceiveGPS Προδιαγραφές εφαρμογής: MyMoteSendReceiveC.nc MyMoteSendReceive.h MyMoteSendReceiveAppC.nc a) Αποκατάσταση επικοινωνίας με τον δέκτη GPS του MTS420CC b) Αποστολή μόνο των πακέτων που μας ενδιαφέρουν μέσω του radio στον σταθμό βάσης Time Driven σενάριο Πριν αναλύσουμε τον αλγόριθμο της εφαρμογής ας δούμε πρώτα εν συντομία τα εξής θέματα:
Global Positioning System GPS NAVSTAR/G.P.S. (NAVigation Satellite Timing And Ranging Global Positioning System) ή απλά GPS Το παγκόσμιο σύστημα εντοπισμού θέσης αποτελείται ουσιαστικά από «πομπούς σε τροχιά», που είναι οι δορυφόροι GPS, και από δέκτες GPS στη γήινη επιφάνεια 30 δορυφόροι αποτελούν το σύστημα GPS, 24 ο ελάχιστος αριθμός για να λειτουργήσει σωστά Πυραυλοκίνητους προωθητές Ηλιακή τροφοδοσία + μπαταρίες Ο κάθε δέκτης GPS, για τον δορυφορικό εντοπισμό θέσης, απαιτεί σήμα από 4 διαφορετικούς δορυφόρους Ο «αστερισμός» του GPS: Γεωγραφικές συντεταγμένες στο WSG84 Word Geodetic System:
Γεωγραφικό μήκος Longitude, σύμβολο λ, Μονάδα: μοίρες Γεωγραφικό πλάτος Latitude, σύμβολο φ, Μονάδα: μοίρες Αναπαράσταση μοιρών (3 τρόποι): Μοίρες, λεπτά, δεκαδικά δευτερόλεπτα: 21 46' 10,6" Μοίρες, δεκαδικά λεπτά: 21 46,176' Δεκαδικές μοίρες: 21,76960
Πρότυπο ΝΜΕΑ 0183 [version 2.0] National Marine Electronics Association στάνταρ πρωτόκολλο που χρησιμοποιείται από τους δέκτες GPS για την μετάδοση δεδομένων (σε μορφή πλήρους PVT λύσης) Το πρότυπο δουλεύει με αποστολή standard προτάσεων (sentences) που περιέχουν το πολύ 82 χαρακτήρες ASCII Ο δέκτης GPS που διαθέτει το MTS420CC είναι ο LEA 4A της ublox που χρησιμοποιεί 7 ΝΜΕΑ προτάσεις κατά τη λειτουργία του: GSA, GSV (x2), GLL, GGA, ZDA, RMC, VTG Η πρόταση με την οποία επιλέξαμε να ασχοληθούμε είναι η GGA NMEA sentence Δίνει ουσιώδη στοιχεία που καθορίζουν τη θέση ενός αντικειμένου στις 3 διαστάσεις με ακρίβεια
Ανάπτυξη DRIVER για τον δέκτη GPS LEA 4A ublox του MTS420CC sensor board Διαθέσιμοι DRIVERS για DRIVERS που θέλουμε ηπιο πρόσφατη έκδοση του board 1. TinyOS 2.x λειτουργικό σύστημα 2. MicaZ motes και ένα μέσο για τον προγραμματισμό του 3. MTS420 (CA ή CB) sensor board με GPS module της εταιρείας Leadtek 4. GPS κεραία συμβατή με το MTS420 board 1. TinyOS 2.x λειτουργικό σύστημα 2. IRIS motes 3. MTS420CC με GPS module της εταιρείας ublox 4. GPS κεραία συμβατή με το MTS420 board Στόχος: Τα IRIS motes να μπορούν να «δουν» το GPS module, να το ενεργοποιούν και να το απενεργοποιούν Ο κώδικας για ένα sensor board (driver) στο TinyOS αποτελείται από πολλά components τα οποία κατανέμονται σε επίπεδα:
1. Independent Chip Code 2. Sensor board Dependent Chip Code 3. Platform Dependent Sensorboard Code για παράδειγμα ο κώδικας για το ADG715 8 bit chip υπάρχει στο component adg715controlp 4. Independent Helper Code 5. Dependent Helper Code Έλεγχος για πιθανές τροποποιήσεις Συνοπτικά: Microprocessor: IRIS motes ATmega1281 Vs MicaZ motes ATmega128L Κύρια διαφορά στον τρόπο διαχείρισης των USARTs. O x1281 δίνει δυνατότητα χρήσης και διαχείρισης και των 2 USART (UART0,UART1) διαμορφώνοντας κατάλληλα τιμές σε standard bits, ενώ ο x128l χρησιμοποιεί τα ίδια bits ελέγχου και για τις δύο. Επίσης υπάρχει διαφορά στον τρόπο της ενεργειακής τους διαχείρισης Τροποποιήσεις στις ρυθμίσεις του υλικού έτσι ώστε να ταιριάζουν με τις προδιαγραφές του GPS module της εταιρείας ublox Αξίζει να αναφέρουμε την αλλαγή στο δηλωμένο Baud Rate
Έτσι κάνουμε τις αλλαγές για να ανταποκρίνεται ο driver στις προδιαγραφές του υλικό μας: Component που ορίζει τις ρυθμίσεις επικοινωνίας του δέκτη GPS LEA 4A ublox με το υπόλοιπο ολοκληρωμένο. Ανήκει στα Platform Dependent Sensorboard Codes
Περιγραφή Λειτουργίας: Η εφαρμογή MyMoteSendReceiveGPS Boot Έλεγχος αν η δομή μηνύματος nmea_gga_msg_t χωράει στο payload της κύριας δομής πακέτου message_t Ενεργοποίησε τη μονάδα του δέκτη GPS [SPLIT PHASE λειτουργία] GPS activated Time driven σενάριο: Ο δέκτης GPS «δίνει» τις ΝΜΕΑ προτάσεις που διαχειρίζεται κάθε δευτερόλεπτο. Εφαρμογή εκτεταμένων ελέγχων και απομόνωση της «πρότασης» GGA
Απενεργοποίησε το GPS χωρίς να χάσεις το συγχρονισμό (split phase) Ο δέκτης GPS απενεργοποιήθηκε Ενεργοποίησε τον radio πομποδέκτη (split phase) To radio ενεργοποιήθηκε Στείλε το πακέτο τύπου message_t (split phase) με BROADCAST επιλογή αν η ενεργοποίηση απέτυχε τότε προσπάθησε ξανά
Το πακέτο στάλθηκε επιτυχώς Αφού κάνεις έναν τυπικό έλεγχο τότε απενεργοποίησε το radio (split phase) Το radio απενεργοποιήθηκε Ασχολήσου πάλι με τον δέκτη GPS Έτσι ολοκληρώνεται ένας κύκλος λειτουργίας της εφαρμογής. Η διαδικασία αυτή επαναλαμβάνεται συνεχώς όσο υπάρχει τροφοδοσία. Η λειτουργικότητα της εφαρμογής ολοκληρώνεται μέσα από το wiring που γίνεται στο configuration component της, με τα interfaces να παίζουν τον ρόλο του μέσου σύνδεσης
Υλοποίηση λειτουργίας για λήψη πακέτων μέσω radio Η εφαρμογή DataSinkFiFoGPS Event driven App TestSerial.h MyBasestationFiFoAppC.nc MyBasestationFiFoC.nc Υποστήριξη λήψης (radio) και μετάδοσης (UART) πακέτων δομής ΝΜΕΑ Mια λογική ουράς FIFO (fifo queue) για δείκτες προς δομές test_serial_msg_t Υλοποίηση λειτουργιών σε Tasks και χρήση της δεσμευμένης λέξης atomic: 1. task void uartsendtask(); a) Αν δεν υπάρχουν πακέτα στην ουρά ελευθέρωσε το κανάλι και «φύγε» b) Αν η ουρά δεν είναι άδεια πάρε το πρώτο πακέτο FIFO και έλεγξε αν χωράει στο payload του message_t, αν δε χωράει «φύγε» c) Γέμισε με τα δεδομένα του πακέτου που δείχνει η θέση της ουράς, τη δομή test_serial_msg_t που έχει επισυναφτεί στο payload του message_t d) Στείλε σειριακά το πακέτο που έφτιαξες, GREEN LED toggle e) Αν το πακέτο δεν στάλθηκε σωστά, ανέφερε το σφάλμα και ξαναπροσπάθησε καλώντας τον εαυτό σου, RED LED toggle
2. task void positionfix(); Γίνεται post μόνο όταν ένα πακέτο της ουράς στάλθηκε με επιτυχία σειριακά. Λογική split phase Διορθώνει τις θέσεις στην ουρά. Κατέβασε το κάθε εναπομείναν πακέτο στην αμέσως μεγαλύτερης προτεραιότητας θέση. Μείωσε τον μετρητή uartin κατά ένα Όταν σηματοδοτηθεί το send.done event, μετά το task positionfix() γίνεται post και το uartsendtask() μέχρι να αδειάσει η ουρά Λειτουργία λήψης πακέτων από το radio a) Οπτικοποίησε το γεγονός. YELLOW LED toggle b) Έλεγξε κατά πόσο το πακέτο που πήρες είναι έγκυρο c) Απομόνωσε το payload του message_t και κάντο casting στην δομή πακέτου test_serial_msg_t f) Κάνε post το uartsendtask() και κλείδωσε το σειριακό κανάλι d) Τοποθέτησέ το στην ουρά atomic statement e) Αν η ουρά υπερχειλίσει θυσίασε το τελευταίο πακέτο Σχόλιο little endian
ΕΠΙΚΟΙΝΩΝΙΑ ΚΟΜΒΟΥ (mote) ΥΠΟΛΟΓΙΣΤΗ (host PC) Πλέον η εναπομένουσα δουλειά είναι στο τμήμα του υπολογιστή
Ανάπτυξη προγράμματος USB_read σε γλώσσα C Χαρακτηριστικά: 1. Αποκαθιστά σύνδεση με τη σειριακή θύρα USB με baud rate στα 57600 bd όσο δηλαδή μας δίνει το IRIS mote για να υπάρχει συγχρονισμός 2. Τα bytes διαβάζονται από την USB ένα ένα 3. Όταν ολοκληρωθεί η λήψη της πρότασης GGA ξεκινάει η επεξεργασία της. Εκμεταλευόμενοι την αφαιρετικότητα στις διεργασίες υλοποιούμε συναρτήσεις για κάθε λειτουργία: 3.1. Διόρθωση little endian unsigned int TwobytesInOne(unsigned char byte1, unsigned char byte2); 3.2. Μετατροπή των γεωγραφικών συντεταγμένων στη κατάλληλη μορφή float fixcoordinates(unsigned char deg, unsigned int remainder, unsigned char dir); 3.3. Διόρθωση ώρας unsigned char fixtimehour(unsigned char hour); 4. «Γέμισμα» μιας εσωτερικής δομής με τα επεξεργασμένα δεδομένα void FillStruct(GPS_data *instruct, unsigned char *pinakas); 5. Καταγραφή των δεδομένων της δομής σε ένα αρχέιο.txt για μετέπειτα επισκόπηση των μετρήσεων void PassToFile(GPS_data *instruct); 6. Δημιουργία του.gpx αρχείου (σε 3 μέρη) void ExportStartXMLfile(); void ExportMiddleXMLfile(GPS_data *instruct); void ExportEndXMLfile();
Εικόνα #1: Εκτέλεση προγράμματος
Εικόνα #2: Εντοπισμός θέσης
Εικόνα #3: Ιχνηλάτηση τροχιάς
Ανάπτυξη προγράμματος FirstGEApp σε C# Επιπλέον χαρακτηριστικά: 1. Σύνδεση του προγράμματός μας με την πρότυπη εφαρμογή Google Earth TM Δυνατότητα REAL TIME απεικόνισης 2. Εφαρμογή επιπλέον ελέγχων στις εισερχόμενες μετρήσεις για εξάλειψη των παρατηρούμενων «αιχμών» 3. Εφαρμογή λογικής differential GPS DGPS 4. Δημιουργία GUI για αλληλεπίδραση με τον χρήστη
Βίντεο: Χρήση του προγράμματος FirstGEApp
Εικόνα: Ιχνηλάτηση τροχιάς κινητού με το πρόγραμμα FirstGEApp
Ανάλυση δεδομένων #1
Ανάλυση δεδομένων #2 Λεπτομέρεια από τα πρώτα γραφήματα (40 πρώτες μετρήσεις)
Μελλοντική εργασία Περαιτέρω έρευνα ΑΠΟΡΙΕΣ ΕΡΩΤΗΣΕΙΣ ΕΥΧΑΡΙΣΤΩ ΓΙΑ ΤΗΝ ΠΡΟΣΟΧΗ ΣΑΣ