WIRELESS SENSOR NETWORKS (WSN) Δρ. Ιωάννης Παναγόπουλος Εργαστήριο Υπολογιστικών Συστημάτων Καθ. Γεώργιος Παπακωνσταντίνου Αθήνα 2008 ΕΙΣΑΓΩΓΗ ΣΤΑ WSN Σε συγκεκριμένες εφαρμογές, επιθυμείται η μέτρηση χαρακτηριστικών του περιβάλλοντος (όπως θερμοκρασία, υγρασία, φωτεινότητα κα) σε μεγάλες εκτάσεις γης. Στις περιπτώσεις αυτές, θα πρέπει να υλοποιηθεί ένα Έκταση γης σύστημα από κατάλληλους αισθητήρες, το οποίο τοποθετείται διάσπαρτο στην περιοχή μέτρησης και είναι ικανό να παρέχει τα ζητούμενα χαρακτηριστικά. Ο κάθε αισθητήρας συλλέγει τοπικά πληροφορίες σχετικές με τις συνθήκες του περιβάλλοντος που επικρατούν στην περιοχή που είναι τοποθετημένος και τις αποστέλλει σε ένα κεντρικό κόμβο προς επεξεργασία. Ο κεντρικός κόμβος συλλέγει τις πληροφορίες αυτές και μπορεί να απεικονίσει τις συνθήκες που επικρατούν σε όλη την περιοχή. Ο απλούστερος τρόπος διασύνδεσης και επικοινωνίας των αισθητήρων με Σημεία μέτρησης τον κεντρικό κόμβο αναφέρεται στη δημιουργία μίας διάταξης τοπολογίας αστέρα. Οι αισθητήρες επικοινωνούν ασύρματα με τον κεντρικό κόμβο, ο οποίος αποτελείται από ένα δέκτη πληροφορίας και ένα υπολογιστικό σύστημα επεξεργασίας αυτής. Ο κεντρικός κόμβος λήψης πληροφοριών τοποθετείται σε ένα μέρος της περιοχής σχηματίζοντας γύρω του μία ζώνη μέσα στην οποία είναι εφικτή η επικοινωνία (εμβέλεια). Η τοπολογία αυτή παρουσιάζει ένα βασικό περιορισμό ως προς τη μέγιστη δυνατή κάλυψη της περιοχής. Πιο συγκεκριμένα, η ζώνη που μπορεί να καλύψει, εξαρτάται αποκλειστικά και μόνο από την εμβέλεια λήψης του κεντρικού κόμβου και σχηματίζει μια επιφάνεια κύκλου γύρω από αυτόν. Σε περίπτωση που επιθυμείται κάλυψη μεγαλύτερης περιοχής θα πρέπει να τοποθετηθούν δευτερεύοντες κεντρικοί κόμβοι, οι οποίοι θα μπορούν να επικοινωνούν μεταξύ τους για τη συλλογή πληροφοριών. Τα Wireless Sensor Networks λειτουργούν βάσει μιας άλλης τοπολογίας η οποία λύνει το παραπάνω πρόβλημα. Συγκεκριμένα, σε τοπολογίες WSN δεν Ζώνη Εμβέλειας Κεντρικός κόμβος είναι απαραίτητη η παρουσία ενός κεντρικού κόμβου για τη συλλογή δεδομένων από όλους τους αισθητήρες και έτσι δεν σχηματίζεται τοπολογία αστέρα. Αντίθετα στα WSN επισέρχεται η έννοια της «peer to peer» επικοινωνίας. Στην περίπτωση αυτή ένας οι περισσότεροι κόμβοι του συστήματος αναλαμβάνουν το ρόλο του «συλλέκτη» των πληροφοριών που έρχονται από τους άλλους κόμβους. Απομακρυσμένοι από αυτούς κόμβοι, δεν είναι απαραίτητο να είναι εντός εμβέλειας του συλλέκτη. Αρκεί ένας άλλος κόμβος με τον οποίο μπορούν να επικοινωνήσουν να είναι αυτός εντός εμβέλειας του συλλέκτη. Τμήμα Ηλ. Μηχανικών και Μηχ. Η/Υ ΕΜΠ Εργαστήριο Υπολογιστικών Συστημάτων 1
1 2 3 Συλλέκτης Πληροφορίας Θεωρείστε για παράδειγμα ότι στην εικόνα αριστερά, η εμβέλεια του συλλέκτη πληροφορίας είναι αυτή που απεικονίζεται με ένα κύκλο με διακεκομμένες γραμμές. Ο απομακρυσμένος κόμβος «1» είναι εκτός εμβέλειας του συλλέκτη. Ωστόσο ο κόμβος «3» είναι εντός εμβέλειας και μπορεί να επικοινωνήσει με τον κόμβο «2». Επίσης ο κόμβος «1» μπορεί να επικοινωνήσει με τον «2». Στη συγκεκριμένη τοπολογία ο κόμβος «1» θα στείλει την πληροφορία στον «2», και ο «2» θα αναλάβει το ρόλο του αναμεταδότη στέλνοντας τα δεδομένα του «1» και τα δικά του δεδομένα στον «3». Ο «3» τέλος, θα μεταδώσει τα δεδομένα των κόμβων «1», «2» και τα δικά του στον συλλέκτη. Όπως είναι φανερό η τοπολογία αυτή δεν περιορίζεται από την εμβέλεια του συλλέκτη. Θεωρητικά μπορεί να φτάσει σε οποιαδήποτε απόσταση φτάνει να υπάρχει διαδρομή μεταξύ κόμβων που να φτάνει στο συλλέκτη όπως στο προηγούμενο παράδειγμα. Με λίγα λόγια τα WSN δημιουργούν ένα πλέγμα επικοινωνίας στο οποίο δεν υπάρχει κεντρικό σύστημα που εξασφαλίζει την επικοινωνία των κόμβων μεταξύ τους αλλά αντίθετα κόμβοι χρησιμοποιούν άλλους κόμβους για να μεταφέρουν την πληροφορία. ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΟΜΒΩΝ (ΥΛΙΚΟ) Ο κάθε κόμβος σε ένα WSN υλοποιεί δύο βασικά συστήματα που δίνονται στην εικόνα δεξιά. Το «Σύστημα Αισθητήρων» λαμβάνει τις πληροφορίες από το περιβάλλον και τις αποστέλλει στο Σύστημα Αισθητήρων «Σύστημα Επεξεργασίας» για επεξεργασία και ψηφιοποίηση. Το «Σύστημα Επεξεργασίας» με το πέρας της επεξεργασίας αποστέλλει την πληροφορία στο «Σύστημα Ασύρματης Επικοινωνίας» προς μετάδοση. Η γενική αυτή διάταξη συνήθως υλοποιείται σε ενσωματωμένο σύστημα. Ένας κεντρικός μικροεπεξεργαστής αποτελεί το «Σύστημα Επεξεργασίας». Ο μικροεπεξεργαστής διασυνδέεται στην Ε/Ε του με υλικό στο οποίο υλοποιείται στο «Σύστημα Αισθητήρων» και το «Σύστημα Ασύρματης Επικοινωνίας». Στις διατάξεις του Εργαστηρίου Υπολογιστικών Συστημάτων διακρίνουμε μια τέτοιου είδους υλοποίηση. Στην εικόνα αριστερά (συσκευή Micaz) διακρίνεται το «Σύστημα Επεξεργασίας» βασισμένο σε έναν μικροεπεξεργαστή της Atmel. Το «Σύστημα Επεξεργασίας» διασυνδέεται στην πλακέτα με το «Σύστημα Επικοινωνίας» πράγμα που είναι φανερό από την κεραία που είναι ενσωματωμένη. Ο μεγάλος άσπρος connector αποτελεί το σημείο Ε/Ε του επεξεργαστή πάνω στο οποίο διασυνδέονται οι αισθητήρες. Το όλο σύστημα τροφοδοτείται από δύο κοινές αλκαλικές μπαταρίες των 1.5V. Πάνω στον connector Ε/Ε μπορεί να τοποθετηθεί μία πληθώρα αισθητήρων (ο ένας πάνω από τον άλλο) αναλόγως με τις ανάγκες της εκάστοτε εφαρμογής. Στην παρούσα άσκηση χρησιμοποιούμε την αναπτυξιακή πλακέτα αισθητήρων (MDA100CB). Η πλακέτα αυτή περιλαμβάνει ένας αισθητήρα θερμοκρασίας και έναν φωτεινότητας και παρέχει μία μικρή περιοχή επέκτασης των αισθητήρων της. Παρατηρείστε ότι ο connector της πλακέτας είναι όμοιος με αυτόν του Σύστημα Επεξεργασίας Σύστημα Ασύρματης Επικοινωνίας Τμήμα Ηλ. Μηχανικών και Μηχ. Η/Υ ΕΜΠ Εργαστήριο Υπολογιστικών Συστημάτων 2
συστήματος Micaz. Αυτό συμβαίνει διότι η συγκεκριμένη διάταξη διασυνδέεται με το «Σύστημα Επεξεργασίας» για την επεξεργασία και αποστολή των δεδομένων της. Το σύστημα ολοκληρώνεται με μία ακόμα πλακέτα που μπορεί να συνδεθεί με τον connector Ε/Ε. Αυτή αναφέρεται στον κόμβο «Συλλέκτη» που συνδέεται με το κεντρικό υπολογιστικό σύστημα και αναλαμβάνει την αποστολή προς αυτόν των πληροφοριών που συλλέγονται από όλους τους άλλους κόμβους. Στην εικόνα αριστερά διακρίνεται η πλακέτα αυτή. Έτσι στην υλοποίηση του WSN ένα σύνολο από συστήματα Micaz συνδεδεμένα με συστήματα MDA100CB χρησιμοποιούνται για τη συλλογή πληροφοριών από το περιβάλλον και ένα σύστημα Micaz συνδεδεμένο με το σύστημα επικοινωνίας μέσω USB θύρας χρησιμοποιείται για την αποστολή των πληροφοριών που συλλέγονται προς το κεντρικό υπολογιστικό σύστημα. ΛΕΙΤΟΥΡΓΙΑ ΚΟΜΒΩΝ (ΛΟΓΙΣΜΙΚΟ) Στο WSN που περιγράφηκε στην προηγούμενη ενότητα διακρίνονται δύο βασικές λειτουργίες. Η μία αναφέρεται στο σύνολο των κόμβων με τους αισθητήρες και η άλλη στον κόμβο που συνδέεται με το κεντρικό υπολογιστικό σύστημα. Συγκεκριμένα στους κόμβους με τους αισθητήρες ο μικροεπεξεργαστής συλλέγει τις πληροφορίες από το περιβάλλον, τις ψηφιοποιεί, τις μετατρέπει σε πακέτα και τις αποστέλλει στον κοντινότερό του κόμβο με στόχο να φτάσουν στον κεντρικό κόμβο «Συλλέκτη». Παράλληλα λαμβάνει και αναμεταδίδει πληροφορίες που έρχονται από άλλους κόμβους. Ο κόμβος «Συλλέκτης» λαμβάνει πακέτα με πληροφορίες από τους κοντινούς του κόμβους και επικοινωνεί με το υπολογιστικό σύστημα για την αποστολή τους. Η συγκεκριμένη λειτουργία στους κόμβους δημιουργεί ένα δίκτυο επικοινωνίας πακέτων που ονομάζεται «XMesh». Ο προμηθευτής των συγκεκριμένων κόμβων έχει «φορτώσει» λειτουργικό σύστημα TinyOS στα ενσωματωμένα συστήματα Micaz. Παρέχει επίσης εργαλεία συγγραφής προγραμμάτων για αυτούς και λογισμικό για την φόρτωση του προγράμματος στο τελικό σύστημα. Στο εργαστήριο, οι κόμβοι έχουν ήδη προγραμματιστεί με το κατάλληλο λογισμικό. Συγκεκριμένα οι κόμβοι αισθητήρων έχουν προγραμματιστεί με πρόγραμμα που αναλαμβάνει τη λειτουργία λήψης/αποστολής ενώ ο κόμβος συλλέκτης έχει προγραμματιστεί με λογισμικό που λαμβάνει και αποστέλλει την πληροφορία στο υπολογιστικό σύστημα. Ο κόμβος συλλέκτη παρέχει μία έξοδο τύπου USB για τη διασύνδεσή του με το υπολογιστικό σύστημα. Στην πραγματικότητα στο εσωτερικό του υπάρχει ολοκληρωμένο που αναλαμβάνει τη μετατροπή του σήματος USB σε RS232 (πρωτόκολλο σειριακής θύρας). Έτσι με τη χρήση κατάλληλου οδηγού USB που εγκαθίσταται στο υπολογιστικό σύστημα η επικοινωνία με τον κόμβο συλλέκτη γίνεται μέσω RS232 πρωτοκόλλου σε εικονικές σειριακές θύρες που ο οδηγός δημιουργεί Τμήμα Ηλ. Μηχανικών και Μηχ. Η/Υ ΕΜΠ Εργαστήριο Υπολογιστικών Συστημάτων 3
ΛΟΓΙΣΜΙΚΟ ΛΗΨΗΣ ΠΑΚΕΤΩΝ Τα πακέτα πληροφορίας που έρχονται από τους κόμβους ακολουθούν μία συγκεκριμένη δομή «XMesh» από την οποία εξάγουμε την πληροφορία. Η δομή τους δίνεται αναλυτικά στο εγχειρίδιο XServe User s Manual (http://www.xbow.com/support/support_pdf_files/xserve_users_manual.pdf). Γενικά τα πακέτα πληροφορίας αποτελούνται από ένα σύνολο υπό πακέτων τα οποία περιέχουν: Πληροφορίες για το είδος του όλου πακέτου Πληροφορίες για τον τρόπο με τον οποίο έφτασε το μήνυμα στον συλλέκτη Πληροφορίες για τον κόμβο που απέστειλε το μήνυμα Πληροφορίες που συλλέγονται από τους αισθητήρες του κόμβου. Το λογισμικό λήψης δεδομένων επομένως καλείται να μεταφράσει τα πακέτα αυτά, παρέχοντας τις παρακάτω ζητούμενες πληροφορίες: Θερμοκρασία Φωτεινότητα Κατάσταση μπαταρίας Κόμβος από τον οποίο προέρχονται οι πληροφορίες Στο εγχειρίδιο «Οδηγός Ασύρματου Δικτύου Αισθητήρων στο Λειτουργικό Σύστημα Linux» περιγράφεται όλη η διαδικασία υλοποίησης του οδηγού για Linux των αισθητήρων. Το σχηματικό διάγραμμα της προτεινόμενης αρχιτεκτονικής παρατίθεται και παρακάτω (Σχήμα 3 στο προαναφερθέν εγχειρίδιο): Από όλα τα στάδια στο παρόν φυλλάδιο επικεντρωνόμαστε στο «Linux Protocol» (e). Στο στρώμα αυτό γίνεται η ερμηνεία του περιεχομένου των πακέτων που λαμβάνονται από τα χαμηλότερα τμήματα του οδηγού βάσει του ορισμένου από την εταιρία κατασκευής πρωτοκόλλου των αισθητήρων. Παρακάτω παρατίθεται μία γενική περιγραφή του τρόπου λειτουργίας του τμήματος αυτού. Η περιγραφή αυτή δίνεται για εκπαιδευτικούς σκοπούς μιας και δεν απαιτείται η πλήρης κατανόηση του κώδικα για την υλοποίηση της άσκησης. Τμήμα Ηλ. Μηχανικών και Μηχ. Η/Υ ΕΜΠ Εργαστήριο Υπολογιστικών Συστημάτων 4
Το χαμηλότερο στρώμα του οδηγού φέρει έναν αριθμό από bytes που λαμβάνει από τη σειριακή θύρα (πακέτο πληροφορίας). Κατόπιν καλεί τη συνάρτηση DataReceived με την πληροφορία αυτή. Η συνάρτηση θα πρέπει να λάβει το εισερχόμενο πακέτο και να σχηματίσει ένα νέο πακέτο βάσει του πρωτοκόλλου των αισθητήρων εξάγοντας από αυτό τελικά την ζητούμενη πληροφορία. Η συνάρτηση υλοποιεί μία μηχανή πεπερασμένων καταστάσεων. Σε κάθε λήψη δεδομένων βρίσκεται σε μία συγκεκριμένη κατάσταση αναμονής πληροφορίας ανάλογα με το μέρος του πακέτου που έχει ήδη λάβει. Για παράδειγμα αρχικά η συνάρτηση αναμένει για το byte το οποίο σηματοδοτεί την αρχή αποστολής του πακέτου (SEEKING_START_BYTE). Κατόπιν αναμένει το byte που υποδηλώνει το είδος του πακέτου (SEEKING_PACKET_BYTE) κοκ. Μόλις ολοκληρωθεί η λήψη του πακέτου από το χαμηλότερο τμήμα του οδηγού (SEEKING_END_BYTE) η συνάρτηση αποκωδικοποιεί το πακέτο με τη χρήση της συνάρτησης UpdateNodeStructs και ενημερώνει δύο δομές τύπου struct node με τις πληροφορίες θερμοκρασίας, φωτεινότητας και στάθμης μπαταρίας. Σε κάθε κατάσταση η συνάρτηση ορίζει πόσα byte αναμένονται για να ολοκληρωθεί και πόσα bytes έχουν έως τώρα ληφθεί. Κατόπιν με αυτές τις πληροφορίες καλεί την ParseState η οποία αναλαμβάνει τη λήψη αυτών των bytes. Η συνάρτηση ParseState θα πρέπει να λαμβάνει υπόψη το γεγονός ότι ορισμένες τιμές byte μπορεί να είναι ειδικού τύπου (όπως για παράδειγμα η τιμή 0x7E που σηματοδοτεί την έναρξη και λήξη του πακέτου). Οι τιμές αυτές όμως μπορούν να προκύψουν και ως «τιμές μέτρησης» (πχ η τιμή της θερμοκρασίας μπορεί να είναι 0x7E). Στην περίπτωση αυτή ακολουθείται το πρωτόκολλο του πακέτου, στο οποίο ορίζεται ότι τέτοιες τιμές byte θα αντιμετωπίζονται κάνοντας χρήση «escape χαρακτήρων» δηλαδή τιμών byte που υποδεικνύουν ότι ο επόμενος χαρακτήρας στο πακέτο αν και είναι «ειδικός special» θα πρέπει να αντιμετωπιστεί ως απλή τιμή. Παρακάτω παρατίθεται ο κώδικας της συνάρτησης ParseState(). Τμήμα Ηλ. Μηχανικών και Μηχ. Η/Υ ΕΜΠ Εργαστήριο Υπολογιστικών Συστημάτων 5
Ο πλήρης κώδικας του μέρους αυτού του οδηγού για τη μετάφραση των πακέτων επισυνάπτεται στο παρόν εγχειρίδιο. Τμήμα Ηλ. Μηχανικών και Μηχ. Η/Υ ΕΜΠ Εργαστήριο Υπολογιστικών Συστημάτων 6