Έρευνα στα Ασύρματα Δίκτυα Αισθητήρων WSN
Σημεία παρουσίασης 1. Ασύρματα Δίκτυα 2. TinyOS 3. nesc 4. Εφαρμογή (Παρατήρηση υγρασίας)
1. Ασύρματα δίκτυα αισθητήρων
1. Ασύρματα δίκτυα αισθητήρων Ορισμός «Ένα ασύρματο δίκτυο αισθητήρων (wireless sensor network WSN) είναι ένα δίκτυο το οποίο αποτελείται από ενεργειακά αυτόνομους κόμβους οι οποίοι «αισθάνονται», παρατηρούν φυσικά μεγέθη (θερμοκρασία, υγρασία, πίεση, κίνηση, εικόνα, ήχο κτλ) και μεταδίδουν την επεξεργασμένη ( ή και όχι) μέτρηση τους, με τελική κατεύθυνση ένα σταθμό βάσης (base station). Οι επικοινωνία των κόμβων είναι αμφίδρομη, δηλαδή όπως μεταδίδουν πληροφορίες στο base station κάλλιστα μπορούν να δεχθούν πληροφορίες και από αυτόν».
Χαρακτηριστικά και απαιτήσεις των WSN 1. Χαμηλή κατανάλωση 2. Αυτόνομη προγραμματιζόμενη λειτουργία 3. Χαμηλό κόστος 4. Γρήγορη δημιουργία δικτύου 5. Προσαρμοστικότητα 6. Απλότητα 7. Απόδοση 1. Ασύρματα δίκτυα αισθητήρων
1. Ασύρματα δίκτυα αισθητήρων Εφαρμογές Χρήσεις Πολιτικοί Μηχανικοί (Γέφυρες, φράγματα κτλ) Βιομηχανία και εμπόριο (παρακολούθηση κατάστασης μηχανών) Στρατιωτικές εφαρμογές (παρακολούθηση εχθρών) Περιβάλλον (ζώα στο φυσικό τους περιβάλλον) Υγεία (Body Sensor Networks)
1. Ασύρματα δίκτυα αισθητήρων Αρχιτεκτονική κόμβων Βασικά Δομικά Στοιχεία: 1. Μικροελεγκτής 2. Μνήμη 3. Πομποδέκτης, κεραία 4. Ενέργεια, τροφοδοσία 5. Αναλογικές/Ψηφιακές Είσοδοι
1. Ασύρματα δίκτυα αισθητήρων Αισθητήρες Ορισμός «Με τον όρο αισθητήρας εννοούμε ένα σύστημα το οποίο λαμβάνει ως είσοδο ένα φυσικό μέγεθος και το μετατρέπει, ανάλογα, σε ένα άλλο φυσικό μέγεθος που είναι αναγνωρίσιμο στον παρατηρητή ή στην ηλεκτρική/μηχανική συσκευή.»
1. Ασύρματα δίκτυα αισθητήρων Χαρακτηριστικά Αισθητήρων 1. Εύρος λειτουργίας 2. Ακρίβεια 3. Σφάλμα 4. Ανοχή 5. Ευαισθησία 6. Νεκρή ζώνη 7. Γραμμικότητα 8. Απόκριση 9. Επανάληψη
1. Ασύρματα δίκτυα αισθητήρων Δίκτυα Τοπολογίες 1. Peer to Peer Ένα peer to peer δίκτυο είναι ένα δίκτυο που επιτρέπει στους κόμβους του να μοιράζονται ισοδύναμα τους πόρους τους και ταυτόχρονα μπορεί να χρησιμοποιήσει την συνολική επεξεργαστική ισχύ, τον αποθηκευτικό χώρο και το bandwidth για υλοποίηση μιας εφαρμογής. Οι κόμβοι μεταξύ τους είναι ίσος προς ίσο έχουν δηλαδή τα ίδια δικαιώματα στο δίκτυο και ο κάθε κόμβος έχει πρόσβαση στους υπολοίπους κόμβους.
1. Ασύρματα δίκτυα αισθητήρων Δίκτυα Τοπολογίες 2. Star Είναι μια από τις πιο διαδεδομένες τοπολογίες διασύνδεσης υπολογιστών. Σε κάθε τέτοια τοπολογία υπάρχει ο κεντρικός κόμβος ο οποίος λειτουργεί σαν μεσολαβητής και μεταφέρει μηνύματα μεταξύ των κόμβων που βρίσκονται γύρω του μέσο αυτού.
1. Ασύρματα δίκτυα αισθητήρων Δίκτυα Τοπολογίες 2. Tree Σε αυτή την μορφή πρώτο στην ιεραρχία βρίσκουμε το root note μετά πιο κάτω από αυτό είναι τα central hub τα οποία το καθένα ξεχωριστά δημιουργεί μια δική του τοπολογία τύπου αστέρα, άρα αυτή η τοπολογία είναι ένας συνδυασμός των δύο πιο πάνω και για αυτό ονομάζεται και hybrid (υβριδικό).
1. Ασύρματα δίκτυα αισθητήρων Δίκτυα Τοπολογίες 2. Mesh Σε αυτή την τοπολογία ο κάθε κόμβος δεν πρέπει να παραλάβει και να διαδώσει τα δικά του δεδομένα μόνο αλλά πρέπει να συνεργαστεί με τους υπόλοιπους κόμβους και να λειτουργήσει σαν συνδετικός κρίκος για να υπάρξει συνολική μεταφορά δεδομένων στο δίκτυο. Ο σχεδιασμός τέτοιου είδους δικτύου μπορεί να επιτευχθεί με δύο τρόπους, με καθορισμένη δρομολόγηση ή με «πλημμύρισμα» του δικτύου.
2. TinyOS
2. TinyOS 2. TinyOS Βασικά Στοιχεία: Ανοιχτού κώδικα Υλοποιήθηκε από το πανεπιστήμιο του Berkeley Είναι event driven και δεν έχει threads (εξοικονόμηση RAM)
2. TinyOS Χαρακτηριστικά απαιτήσεις από Λειτουργικό: Να έχει αρκετά μικρό μέγεθος. Να είναι ικανό να ελαχιστοποιεί την κατανάλωση ενέργειας. Να είναι αξιόπιστο ( μεταφορά πακέτων, επεξεργασία κτλ) Να υποστηρίζει την δυνατότητα επαναπρογραμματισμού. Να υποστηρίζει ποικίλες εφαρμογές. 2. TinyOS Να μπορεί να εφαρμόσει μιας μορφής παραλληλισμού (πολλές φορές χρειάζεται να επεξεργάζεται ένα πακέτο και ταυτόχρονα να «ακούμε» για άλλο).
2. TinyOS 2. TinyOS Βασικά Δομικά Στοιχεία 1. Components Τα components μοιάζουν κάπως με τις διεργασίες που χρησιμοποιούν τα γενικού σκοπού ΛΣ Τα components μπορούν να περιέχουν συναρτήσεις (command handlers, event handler, tasks).
2. TinyOS 2. TinyOS Βασικά Δομικά Στοιχεία 2. Commands Είναι συναρτήσεις που υλοποιούνται στα components και χρησιμοποιούνται για να διενεργούν αιτήσεις σε χαμηλότερου επιπέδου components
2. TinyOS 2. TinyOS Βασικά Δομικά Στοιχεία 3. Events Έχουμε τα ασύγχρονα events που προκύπτουν από hardware interrupts και τα σύγχρονα events που συνήθως σηματοδοτούν το τέλος μιας διεργασίας. Τα ασύγχρονα events έχουν μεγαλύτερη προτεραιότητα από τα σύγχρονα events και μπορούν να διακόψουν άλλα events (χαμηλότερης σημασίας) για να εκτελεστούν. * Tα commands και τα events μαζί υλοποιούν την split phase operation
2. TinyOS Βασικά Δομικά Στοιχεία 4. Tasks Είναι λειτουργίες χαμηλότερης σημασίας. Όταν ένα task ξεκινήσει δεν μπορεί να σταματήσει από άλλο task ή σύγχρονο event (μόνο από ασύγχ. events) 2. TinyOS * Συστήνεται ο προγραμματιστής να κρατάει τα tasks μικρά για ευνόητους λόγους (να μην κολλάει το σύστημα σε μια μόνο διεργασία).
2. TinyOS 2. TinyOS Βασικά Δομικά Στοιχεία 5. Χρονοπρογραμματιστής Είναι μια FIFO στοίβα που καθορίζει ποιες λειτουργίες θα σταλούν στον επεξεργαστή για εκτέλεση.
3. nesc
3. nesc 3. nesc H nesc (network embedded system C) είναι component based, event driven γλώσσα προγραμματισμού. Η nesc σχεδιάστηκε ως προέκταση της γλώσσας C για την δημιουργία εφαρμογών, για την πλατφόρμα του tinyos, που αποτελούνται από components συνενωμένα μεταξύ τους, με μια διαδικασία που ονομάζεται wiring
3. nesc 3. nesc Κύρια Στοιχεία 1. Interfaces 2. Components 2.1 modules 2.2 configurations 3. Generic Components 4. Tasks 5. Async Συναρτήσεις και atomic statements
3. nesc 3. nesc Κύρια Στοιχεία 1. Interfaces 2. Components 2.1 modules 2.2 configurations 3. Generic Components 4. Tasks 5. Async Συναρτήσεις και atomic statements
3. nesc 3. nesc 1. Interfaces Αποτελεί ένα αφηρημένο ορισμό για την αλληλεπίδραση των components μεταξύ τους Είναι λειτουργίες που παρέχονται από κάποια components σε άλλα components Κάθε component που παρέχει ένα interface ονομάζεται provider (παροχέας) και κάθε component που χρησιμοποιεί το interface ονομάζεται user (χρήστης). interface Read<val_t> { command error_t read(); event void readdone(error_t result, val_t val); }
3. nesc 3. nesc 2.1. Module Το βασικό component στην nesc, εδώ γράφουμε το κυριώς πρόγραμμα (σαν την main() σε ένα απλό c πρόγραμμα) Αποτελείται από δύο μέρη: Signature (υπογραφή) Implementation (υλοποίηση, τοβασικόμέρος) module myfirstmodulec { uses interface provides interface } implementation { event void Boot.booted() { //call command } command result_t StdControl.start() { //do something to start } }
3. nesc 3. nesc 2.2. Confuguration Διασύνδεει (wiring) το component (module) μιας εφαρμογήςμε άλλα components με σκοπό να χρησιμοποιήσει/να παρέχει interfaces και events. Αποτελείται από δύο μέρη: Signature (υπογραφή) Implementation (υλοποίηση, τοβασικόμέρος) configuration myfirstmoduleappc { //nothing } implementation { components myfirstmodulec, MainC; //user.interface > provider.interface myfirstmodulec.boot >MainC.Boot; MainC.StdControl > myfirstmodulec.boot; }
3. nesc 3. nesc 3. Generic Components Στο tinyos 2.x προστέθηκαν τα generic components από τα οποία μπορούμε να δημιουργήσουμε στιγμιότυπα του ίδιου component χρησιμοποιώντας την δεσμευμένη λέξη new. Τα generic components δέχονται και παραμέτρους(strings, αριθμούς και ότι παραμέτρους παίρνουν τα interface). Τα generic modules είναι επαναχρησιμοποιούμενο κομμάτια εκτελέσιμου κώδικα, τα generic configurations είναι επαναχρησιμοποιήσιμο σύνολο σχέσεων που διαμορφώνουν μια ψηλού επιπέδου αφαίρεση (abstraction).
3. nesc 3. nesc 4. Tasks Ένα task πάντα επιστρέφει void και ποτέ δεν δέχεται παραμέτρους Τα tasks δηλώνονται (declare) στοimplementation του module ως εξής: task void taskname(); Γιανακαλέσουμεέναtask γίνεται ως εξής: post taskname();
3. nesc 3. nesc 5. Async Συναρτήσεις και atomic statements Ασύγχρονες συναρτήσεις που έχουν την δυνατότητα να «σπάνε» την εκτέλεση των tasks Τα atomic statements φτιάχτηκαν για να δίνουνε στο χρήστη την δυνατότητα προστασίας μεταβλητών που είναι προσβάσιμες από ασύγχρονες διεργασίες (παρόμοια λογική με σημαφόρους σε σύγχρονα γενικού σκοπού λειτουργικά)
4. Εφαρμογή
4. Εφαρμογή 4. Εφαρμογή Μέρη: Κόμβοι (απομακρυσμένοι, σταθμός βάσης): Προγραμματισμός έγινε με την χρήση της γλώσσας nesc Sever: Ο προγραμματισμός έγινε με την γλώσσα java (σε Linux περιβάλλον) Client: Ο προγραμματισμός έγινε με την χρήση του visual studio και την γλώσσα C#.
4. Εφαρμογή 4. Εφαρμογή Λογική:
4. Εφαρμογή 4. Εφαρμογή Ακολουθεί παρουσίαση της εφαρμογής