Γεώργιοσ Μυλωνϊσ 6328
Αςφρματα Δίκτυα Αιςθητήρων (WSN) Κϊθε κόμβοσ εύναι εξοπλιςμϋνοσ με ϋναν μικροελεγκτό, ϋναν πομποδϋκτη, μύα πηγό ηλεκτρικόσ ενϋργειασ και τον αιςθητόρα Εύναι κατανεμημϋνοι ςε μύα περιοχό ενδιαφϋροντοσ Παρακολουθούν διϊφορεσ φυςικϋσ παραμϋτρουσ Όλοι μαζύ αποτελούν ϋνα ad-hoc δύκτυο μϋςω του οπούου μεταδύδονται τα δεδομϋνα ςτον ςταθμό βϊςησ Οι δυνατϋσ εφαρμογϋσ εύναι απεριόριςτεσ
υςκευζσ motes Εύναι οι κόμβοι του δικτύου Specifications Waspmote TelosB MicaZ Module Program Flash Memory 128K bytes 48K bytes 128K bytes Measurement Serial Flash 2G bytes SD 1024K bytes 512K bytes RAM 8K bytes 10K bytes N/A Configuration EEPROM 4K bytes 16K bytes 4K bytes Serial Communications UART x2,i2c,usb, UART,I2C,SPI,USB UART,I2C,SPI,USB Other Interfaces PWM,Digital I/O,ADC,DAC Digital I/O,DAC,ADC Digital I/O,ADC,DAC Current Draw active 9mA 1,8mA 8mA sleep 62μA 5,1 μa < 15 μa hibernate 0.7μA RF Transceiver Frequency band 868/900MHz/2.4GHz 2.4GHz 2.4GHz Transmit (TX) data rate 250 kbps 250 kbps RF power 0dBm -24 dbm to 0 dbm -24 dbm to 0 dbm Receive Sensitivity -92dB -90 dbm (min), -94 dbm (typ) -90 dbm (min), -94 dbm (typ) Outdoor Range 500m με 5dbi κεραία 75 m to 100 m με inv-f κεραία 75 m to 100 m με 1/2 wave dipole
TinyOS Ελαφρύ λειτουργικό ςύςτημα ςχεδιαςμϋνο ειδικϊ για χαμηλόσ κατανϊλωςησ ενϋργειασ εφαρμογϋσ Παρϋχει μύα ςειρϊ από βαςικϋσ υπηρεςύεσ Υπηρεςύεσ και ςυςτατικϊ μπορούν να επαναχρηςιμοποιηθούν
Γλϊςςα Προγραμματιςμοφ NesC C-like γλώςςα προγραμματιςμού Ιδανικό επιλογό για WSN Ο ςυνδυαςμόσ NesC και TinyOS ϋχει προτιμηθεύ από πολλούσ ερευνητϋσ για εφαρμογϋσ ςε WSN Event-driven εκτϋλεςη Βαςύζεται ςε ςυςτατικϊ-component
MAC και Routing Πρωτόκολλα Υπϊρχει πληθώρα πρωτοκόλλων για όλεσ τισ απαιτόςεισ και για κϊθε εφαρμογό Κύρια απαύτηςη εύναι η ελαχιςτοπούηςη τησ ενεργειακόσ κατανϊλωςησ MAC πρωτόκολλα: SMAC, DMAC, WiseMAC Routing πρωτόκολλα: AODV, DSR, OLSR, CTP
IEEE 802.15.4
WSN για Ανίχνευςη Πυρκαγιάσ ςε Δαςική Ζκταςη Προβλήματα Προσ Επίλυςη Σχεδιαςμόσ και υλοπούηςη πρωτοκόλλου δρομολόγηςησ για την ςυγκεκριμϋνη εφαρμογό Σχεδιαςμόσ ςυςτόματοσ ανύχνευςησ πυρκαγιϊσ
Σοπολογία δικτφου Θεωρούμε τοπολογύα δϋντρου με ρύζα τον κεντρικό κόμβο Κϊθε κόμβοσ χαρακτηρύζεται από ϋνα μοναδικό 16bit id και το επύπεδο ςτο οπούο ανόκει. Τα δύο αυτϊ ςτοιχεύα αποτελούν την ταυτότητα του.
Πρωτόκολλο Δρομολόγηςησ Απαιτόςεισ που πρϋπει να πληρού το πρωτόκολλο Έγκαιρη και αξιόπιςτη παρϊδοςη μηνυμϊτων ςτον κεντρικό κόμβο Απλό υλοπούηςη-απλόσ κώδικασ για αποφυγό λαθών που εύναι δύςκολο να εντοπύςουμε
Μεταβλητζσ-Δομζσ Μεταβλητϊν struct rout_assign{ Αποτελεύ την ταυτότητα του κόμβου } int_16 id; int_8 level; Μοναδικόσ αριθμόσ 16bit για κϊθε κόμβο Επύπεδο ςτο οπούο ανόκει ο κόμβοσ struct rout_msg { Ο τύποσ του μηνύματοσ που θα διακινεύται κατϊ τον αλγόριθμο αρχικοπούηςησ } int_8 level; int_16 id; int_8 reset; Βοηθητικό μεταβλητό int_8 currentlevel; rout_assign table[768]; Route table Το επύπεδο του τρϋχοντα κόμβου
Αλγόριθμοσ πρωτοκόλλου Αλγόριθμοσ αρχικοποίηςησ Ο αλγόριθμοσ αρχύζει να εκτελεύται με την εκκύνηςη του mote και διατηρεύται ςε αδρϊνεια μϋχρι τη λόψη του πρώτου μηνύματοσ Κϊθε κόμβοσ μαθαύνει ςε ποιο επύπεδο ανόκει και Σε ποιο επύπεδο ανόκουν οι γειτονικού του κόμβοι
0,0 1,1 2,1 3,2 4,2 5,2 8,3 7,3 6,3
Αλγόριθμοσ πρωτοκόλλου Αλγόριθμοσ προϊθηςησ Ο αλγόριθμοσ προώθηςησ αποτελεύται από απλϋσ υπορουτύνεσ Οι υπορουτύνεσ διαμορφώνουν τα μηνύματα και τισ μεταβλητϋσ κατϊςταςησ τουσ ςτη μνόμη buffer Υπϊρχει μύα κεντρικό ρουτύνα που εκτελεύται περιοδικϊ και τακτοποιεύ τισ εκκρεμότητεσ που ορύζονται από τισ υπορουτύνεσ
Μεταβλητζσ-Δομζσ Μεταβλητϊν (1) struct msg_type{ Τύποσ του μηνύματοσ που θα διακινεύται κατϊ τον αλγόριθμο προώθηςησ και θα φϋρει το πραγματικό μόνυμα } int_16 owner_id; Το id του δημιουργού του αρχικού μηνύματοσ int_8 AAmsg; int_16 heart; Α/Α του μηνύματοσ Η ουςιαςτικό πληροφορύα struct ctrl_msg_type{ Τύποσ μηνύματοσ για την αποςτολό επιβεβαιώςεων } int_16 owner_id; int_8 AAmsg; int_8 ack; Εύδοσ επιβεβαύωςησ buffer_type_t dfbuf[buffer_size]; Μνόμη buffer int_8 rlast_index=0; Δεύκτησ που δεύχνει ςτην τελευταύα θϋςη μνόμησ ςτη buffer
Μεταβλητζσ-Δομζσ Μεταβλητϊν (2) struct buffer_type{ Ο τύποσ των εγγραφών τησ μνόμησ buffer msg_type_t msg; Το αρχικό μόνυμα int_8 next_hop; Επόμενο κόμβοσ προσ προώθηςησ. Δεύχνει μϋςα ςτο route table int_16 bw_hop; Κόμβοσ από τον οπούο προόλθε το μόνυμα int_16 timestamp; Χρονικό ςτιγμό λόψησ του μηνύματοσ int_8 ack; Εύδοσ επιβεβαύωςησ που ϋχει μϋχρι ςτιγμόσ bool sendackfw; Μεταβλητϋσ κατϊςταςησ bool sendmsg; bool sendfinal; bool sendfail; bool sec; Βοηθητικό μεταβλητό για επαναποςτολό ςτον επόμενο κόμβο }
Αλγόριθμοσ Προϊθηςησ Τπορουτίνα αποςτολήσ μηνφματοσ Εκτελεύτε κατϊ την πρώτη αποςτολό ενόσ μηνύματοσ από τον δημιουργό του
Αλγόριθμοσ Προϊθηςησ Τπορουτίνα λήψησ μηνφματοσ Εκτελεύτε κατϊ την λόψη ενόσ μηνύματοσ Δεν προωθεύται ϊμεςα αλλϊ ενημερώνεται η αντύςτοιχη μεταβλητό κατϊςταςησ ώςτε να προωθηθεύ αργότερα από την ρουτύνα ελϋγχου
Αλγόριθμοσ Προϊθηςησ Τπορουτίνα λήψησ fw_ack Εκτελεύτε κατϊ την λόψη επιβεβαύωςησ fw_ack Η επιβεβαύωςη δηλώνει ότι ο επόμενοσ κόμβοσ ϋλαβε το μόνυμα και εύναι ϋτοιμοσ να το προωθόςει
Αλγόριθμοσ Προϊθηςησ Τπορουτίνα λήψησ fail_ack Εκτελεύτε κατϊ την λόψη επιβεβαύωςησ fail_ack Η επιβεβαύωςη δηλώνει ότι ο επόμενοσ κόμβοσ δεν μπόρεςε να προωθόςει το μόνυμα προσ τον κεντρικό κόμβο
Αλγόριθμοσ Προϊθηςησ Τπορουτίνα λήψησ final_ack Εκτελεύτε κατϊ την λόψη επιβεβαύωςησ final_ack Η επιβεβαύωςη δηλώνει ότι το μόνυμα ϋφταςε ςτον κεντρικό κόμβο
Αλγόριθμοσ Προϊθηςησ Ρουτίνα-Διεργαςία Ελζγχου (1) Εκτελεύτε εύτε περιοδικϊ εύτε μετϊ από ϊμεςη κλόςη τησ από κϊποια υπορουτύνα Ελϋγχει κϊθε μόνυμα ςτη buffer για τυχόν εκκρεμότητεσ και εκτελεύ τισ κατϊλληλεσ ενϋργειεσ
Αλγόριθμοσ Προϊθηςησ Ρουτίνα-Διεργαςία Ελζγχου (2)
Εξομοίωςη με τον TOSSIM Κϊποια ςτιγμό ο κόμβοσ 2 βγαύνει εκτόσ λειτουργύασ Ο κόμβοσ 6 επιθυμεύ να ςτεύλει ϋνα μόνυμα ςτον κεντρικό
Αποτελζςματα αλγορίθμου αρχικοποίηςησ (1) DEBUG (0): 0 Enerksi algoriumou apo ton kombo 0. DEBUG (0): 0 Oloklirosi routing: O kombos id 0 anoikei sto epipedo 0. DEBUG (0): 0 Geitonikoi komboi kai taepipeda tous: DEBUG (0): 0 [id:1,level:1]. DEBUG (0): 0 [id:2,level:1]. DEBUG (1): 1 Oloklirosi routing: O kombos id 1 anoikei sto epipedo 1. DEBUG (1): 1 Geitonikoi komboi kai ta epipeda tous: DEBUG (1): 1 [id:0,level:0]. DEBUG (1): 1 [id:2,level:1]. DEBUG (1): 1 [id:3,level:2]. DEBUG (2): 2 Oloklirosi routing: O kombos id 2 anoikei sto epipedo 1. DEBUG (2): 2 Geitonikoi komboi kai ta epipeda tous: DEBUG (2): 2 [id:0,level:0]. DEBUG (2): 2 [id:1,level:1]. DEBUG (2): 2 [id:5,level:2]. DEBUG (4): 4 Oloklirosi routing: O kombos id 4 anoikei sto epipedo 2. DEBUG (4): 4 Geitonikoi komboi kai taepipeda tous: DEBUG (4): 4 [id:1,level:1]. DEBUG (4): 4 [id:2,level:1]. DEBUG (4): 4 [id:5,level:2]. DEBUG (4): 4 [id:3,level:2]. DEBUG (4): 4 [id:7,level:3].
Αποτελζςματα αλγορίθμου αρχικοποίηςησ (2) DEBUG (3): 3 Oloklirosi routing: O kombos id 3 anoikei sto epipedo 2. DEBUG (3): 3 Geitonikoi komboi kai ta epipeda tous: DEBUG (3): 3 [id:1,level:1]. DEBUG (3): 3 [id:4,level:2]. DEBUG (3): 3 [id:8,level:3]. DEBUG (5): 5 Oloklirosi routing: O kombos id 5 anoikei sto epipedo 2. DEBUG (5): 5 Geitonikoi komboi kai ta epipeda tous: DEBUG (5): 5 [id:2,level:1]. DEBUG (5): 5 [id:4,level:2]. DEBUG (5): 5 [id:7,level:3]. DEBUG (5): 5 [id:6,level:3]. DEBUG (7): 7 Oloklirosi routing: O kombos id 7 anoikei sto epipedo 3. DEBUG (7): 7 Geitonikoi komboi kai ta epipeda tous: DEBUG (7): 7 [id:5,level:2]. DEBUG (7): 7 [id:4,level:2]. DEBUG (7): 7 [id:6,level:3]. DEBUG (6): 6 Oloklirosi routing: O kombos id 6 anoikei sto epipedo 3. DEBUG (6): 6 Geitonikoi komboi kai ta epipeda tous: DEBUG (6): 6 [id:5,level:2]. DEBUG (6): 6 [id:7,level:3]. DEBUG (8): 8 Oloklirosi routing: O kombos id 8 anoikei sto epipedo 3. DEBUG (8): 8 Geitonikoi komboi kai taepipeda tous: DEBUG (8): 8 [id:3,level:2].
Αποτελζςματα Αλγορίθμου Προϊθηςησ (1) DEBUG (6): 6 Oloklirosi routing: O kombos id 6 anoikei sto epipedo 3. DEBUG (6): 6 Geitonikoi komboi kai ta epipeda tous: DEBUG (6): 6 [id:5,level:2]. DEBUG (6): 6 [id:7,level:3]. DEBUG (6): 6 Apostoli mnm aa: 0. DEBUG (6): 6 Proothithike ston 5. DEBUG (5): 5 ReceiveMsg event apo ton 6 me owner_id 6. DEBUG (5): 5 Apostoli fwack ston 6. DEBUG (6): 6 Elifthei ackfw apo ton 5. DEBUG (5): 5 Apostoli msg ston 2. DEBUG (5): 5 Den exei akoma ackfw. DEBUG (5): 5 Apostoli mesg ston 4. DEBUG (4): 4 ReceiveMsg event apo ton 5 me owner_id 6. DEBUG (4): 4 Apostoli fwack ston 5. DEBUG (5): 5 Elifthei ackfw apo ton 4.
Αποτελζςματα Αλγορίθμου Προϊθηςησ (2) DEBUG (4): 4 Apostoli msg ston 1. DEBUG (1): 1 ReceiveMsg event apo ton 4 me owner_id 6. DEBUG (1): 1 Apostoli fwack ston 4. DEBUG (4): 4 Elifthei ackfw apo ton 1. DEBUG (1): 1 Apostoli msg ston 0. DEBUG (0): 0 ReceiveMsg event apo ton 1 me owner_id 6. DEBUG (0): 0 Elifthi mnm counter: 0. (Το μόνυμα ϋφταςε ςτον κεντρικό κόμβο) DEBUG (0): 0 Apostoli finalack ston 1. DEBUG (1): 1 Elifthei ackfinal apo ton 0. DEBUG (1): 1 Apostoli finalack ston 4. DEBUG (4): 4 Elifthei ackfinal apo ton 1. DEBUG (4): 4 Apostoli finalack ston 5. DEBUG (5): 5 Elifthei ackfinal apo ton 4. DEBUG (5): 5 Apostoli finalack ston 6. DEBUG (6): 6 Elifthei ackfinal apo ton 5. DEBUG (6): 6 Check delete. (Ολοκλόρωςη διαδικαςύασ αποςτολόσ)
Αποτελζςματα Αλγορίθμου Προϊθηςησ (3) final_ack Προώθηςη ςτον κεντρικό Προώθηςη ςτον 1 Προώθηςη ςτον 2 fw_ack final_ack Προώθηςη ςτον 4 Δεν υπϊρχει απϊντηςη από τον κόμβο 2 fw_ack final_ack Αποςτολό μηνύματοσ ςτον κόμβο 5 fw_ack final_ack Αποςτολό ολοκληρώθηκε
φςτημα Ανίχνευςησ Πυρκαγιάσ Απαιτούμε από το ςύςτημα ανύχνευςησ Έγκαιρη ανύχνευςη Ανοχό ςε ςφϊλματα-θόρυβο Μικρό κατανϊλωςη ενϋργειασ Μικρό κόςτοσ-μεγϊλη εμβϋλεια
Φάςμα ακτινοβολίασ-αιςθητήρασ
Χαρακτηριςτικά Αιςθητήρα R2868
Ηλεκτρικό Κφκλωμα
Εξομοίωςη Boost Converter με 3.25ΜΩ φορτίο
Εξομοίωςη ςυνολικοφ κυκλϊματοσ
Προτάςεισ για μελλοντικοφσ ερευνητζσ Εκτενόσ μελϋτη χαρακτηριςτικών του πρωτοκόλλου Δοκιμό ςε πραγματικό περιβϊλλον