ΡΟΛΥΤΕΧΝΛΚΘ ΣΧΟΛΘ ΤΜΘΜΑ ΘΛΕΚΤΟΛΟΓΩΝ ΜΘΧΑΝΛΚΩΝ ΚΑΛ ΜΘΧΑΝΛΚΩΝ ΥΡΟΛΟΓΛΣΤΩΝ ΤΟΜΕΑΣ ΘΛΕΚΤΟΝΛΚΘΣ ΚΑΛ ΥΡΟΛΟΓΛΣΤΩΝ. Διπλωματικι εργαςία

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΡΟΛΥΤΕΧΝΛΚΘ ΣΧΟΛΘ ΤΜΘΜΑ ΘΛΕΚΤΟΛΟΓΩΝ ΜΘΧΑΝΛΚΩΝ ΚΑΛ ΜΘΧΑΝΛΚΩΝ ΥΡΟΛΟΓΛΣΤΩΝ ΤΟΜΕΑΣ ΘΛΕΚΤΟΝΛΚΘΣ ΚΑΛ ΥΡΟΛΟΓΛΣΤΩΝ. Διπλωματικι εργαςία"

Transcript

1 ΑΛΣΤΟΤΕΛΕΛΟ ΡΑΝΕΡΛΣΤΘΜΛΟ ΚΕΣΣΑΛΟΝΛΚΘΣ ΡΟΛΥΤΕΧΝΛΚΘ ΣΧΟΛΘ ΤΜΘΜΑ ΘΛΕΚΤΟΛΟΓΩΝ ΜΘΧΑΝΛΚΩΝ ΚΑΛ ΜΘΧΑΝΛΚΩΝ ΥΡΟΛΟΓΛΣΤΩΝ ΤΟΜΕΑΣ ΘΛΕΚΤΟΝΛΚΘΣ ΚΑΛ ΥΡΟΛΟΓΛΣΤΩΝ Διπλωματικι εργαςία Παραμετροποίηςη, επεξεργαςία, ανάλυςη και καταγραφή μετρήςεων αςφρματων έξυπνων αιςθητήρων Μαλακοφδθσ Δθμιτρθσ Επιβλζπων κακθγθτισ Ρζτρου Λουκάσ Οκτϊβριοσ 2008

2 Πρόλογοσ Στο ςθμείο αυτό κα ικελα να ευχαριςτιςω τον επιβλζποντα κακθγθτι κ. Λουκά Ρζτρου για όλθ τθ βοικεια και τθν ενίςχυςθ, κατά τθ διάρκεια εκπόνθςθσ τθσ διπλωματικισ εργαςίασ. Επίςθσ, κερμζσ ευχαριςτίεσ ςτον κ. Σεραφείμ Κατςικά, διευκυντι του τμιματοσ ζρευνασ και ανάπτυξθσ τθσ Ρρίςμα, και ςτον κ. Σωτιρθ Μάλλιο, προγραμματιςτι, για τθ ςυνεργαςία και τθ βοικεια τουσ. Ακόμθ ευχαριςτϊ τον κ. Γιϊργο Βουκαλι, υπεφκυνο του εργαςτθρίου αρχιτεκτονικισ και υπολογιςτϊν για τθν βοικεια του ςε οποιοδιποτε πρόβλθμα δθμιουργοφταν. Τζλοσ, ευχαριςτϊ τθ Μαρία Κθπαράκθ για τθν ψυχολογικι ενίςχυςθ, τθν κατανόθςθ και τθν αγάπθ τθσ. 1

3 Περιεχόμενα Πρόλογοσ... 1 Περιεχόμενα... 2 Ειςαγωγι... 6 ΜΕΡΟ Α : Παρουςίαςθ Κεφάλαιο 1 : Σο πρότυπο για LR-WPAN (Low Rate Wireless Personal Area Networks Το πρότυπο για WPAN Το πρότυπο για LR-WPAN Ραρεμβολζσ μεταξφ και Το πρωτόκολλο Zigbee και θ ςυνφπαρξθ με το Κεφάλαιο 2 : Σο αςφρματο δίκτυο αιςκθτιρων PrismaSense Τα αςφρματα δίκτυα αιςκθτιρων Το αςφρματο δίκτυο αιςκθτιρων PrismaSense Ο ζξυπνοσ αιςκθτιρασ Ο ςυντονιςτισ δικτφου Ο κεντρικόσ υπολογιςτισ Κεφάλαιο 3 : Ο μικροελεγκτισ MSP430 F1611 τθσ Texas Instruments Αρχιτεκτονικι Ευζλικτο ςφςτθμα ρολογιοφ Χϊροσ διευκφνςεων και μνιμθ Διακοπζσ Τρόποι λειτουργίασ

4 3.6 Χρονομετρθτζσ A/D (Analog to Digital converter) Ελεγκτισ DMA (Direct Memory Access) UART (Universal Asynchronous Receiver Transmitter) Λ 2 C (inter-ic) Θ γενικι ιδζα του Λ 2 C Ο δίαυλοσ διαχείριςθσ ςυςτιματοσ (SMBus) To Λ 2 C ςτον MSP430 F Κεφάλαιο 4 : Αιςκθτιρεσ Ο αιςκθτιρασ κερμοκραςίασ TMP101 τθσ Burr-Brown Ο αιςκθτιρασ υγραςίασ και κερμοκραςίασ SHT11 τθσ Sensirion Ειςαγωγι ςτθ ςχετικι υγραςία Ο αιςκθτιρασ SHT11 τθσ Sensirion Ο αιςκθτιρασ φωτόσ περιβάλλοντοσ TSL2550 τθσ TAOS Το επιταχυνςιόμετρο ADXL320 τθσ Analog Devices Κεφάλαιο 5 : Αςφρματεσ ςυςκευζσ Το αςφρματο εξάρτθμα firmware XBee τθσ MaxStream Θ αςφρματθ ςυςκευι MatchPort b/g τθσ Lantronix ΜΕΡΟ B : Τλοποίθςθ Κεφάλαιο 6 : Σο λειτουργικό ςφςτθμα ISOS τθσ Πρίςμα Ο προγραμματιςτισ διεργαςιϊν και ο ρόλοσ τθσ κφριασ ςυνάρτθςθσ (main) Ο ρόλοσ του Timer A

5 Κεφάλαιο 7 : Η επικοινωνία του μικροελεγκτι του ζξυπνου αιςκθτιρα με τουσ αιςκθτιρεσ Υλοποίθςθ Λ 2 C Επικοινωνία με τον αιςκθτιρα κερμοκραςίασ TMP Επικοινωνία με τον αιςκθτιρα φωτόσ περιβάλλοντοσ TSL Επικοινωνία με τον αιςκθτιρα υγραςίασ και κερμοκραςίασ SHT Χριςθ του επιταχυνςιομζτρου ADXL Κεφάλαιο 8 : Επικοινωνία του μικροελεγκτι με τισ αςφρματεσ ςυςκευζσ Επικοινωνία με το αςφρματο firmware XBee Το λογιςμικό χριςθσ του XBee Επικοινωνία του μικροελεγκτι του ςυντονιςτι δικτφου με τθν αςφρματθ ςυςκευι MatchPort b/g Το λογιςμικό χριςθσ του MatchPort b/g Κεφάλαιο 9 : Παραμετροποίθςθ και εφαρμογζσ Ραράμετροι αιςκθτιρων Ραράμετροι αιςκθτιρα κερμοκραςίασ Ραράμετροι αιςκθτιρα φωτόσ περιβάλλοντοσ Ραράμετροι αιςκθτιρα υγραςίασ και κερμοκραςίασ Ραράμετροι επιταχυνςιομζτρου Επικοινωνία μεταξφ κεντρικοφ υπολογιςτι, ςυντονιςτι δικτφου και ζξυπνων αιςκθτιρων Επικοινωνία μεταξφ κεντρικοφ υπολογιςτι και ςυντονιςτι δικτφου Επικοινωνία μεταξφ ςυντονιςτι δικτφου και ζξυπνων αιςκθτιρων

6 9.3 Οι εφαρμογζσ αιςκθτιρων Εφαρμογι αιςκθτιρα κερμοκραςίασ Εφαρμογι αιςκθτιρα φωτόσ περιβάλλοντοσ Εφαρμογι αιςκθτιρα κερμοκραςίασ και υγραςίασ Εφαρμογι αιςκθτιρα επιτάχυνςθσ Κεφάλαιο 10 : Κατανάλωςθ ιςχφοσ Κατανάλωςθ τθσ εφαρμογισ κερμοκραςίασ Κατανάλωςθ τθσ εφαρμογισ υγραςίασ και κερμοκραςίασ Κατανάλωςθ τθσ εφαρμογισ φωτόσ περιβάλλοντοσ Κατανάλωςθ τθσ εφαρμογισ επιταχυνςιομζτρου Κατανάλωςθ τθσ εφαρμογισ επικοινωνίασ Συνολικι κατανάλωςθ Κεφάλαιο 11 : Παραδείγματα χριςθσ του λογιςμικοφ ςτον κεντρικό υπολογιςτι Κεφάλαιο 12 : Προβλιματα, παρατθριςεισ και ςυμπεράςματα Ρροβλιματα Ραρατθριςεισ και ςυμπεράςματα Βιβλιογραφία

7 Ειςαγωγή Ο τίτλοσ τθσ διπλωματικισ εργαςίασ δίνει ςτον αναγνϊςτθ ζνα μικρό ςτίγμα του αντικειμζνου και του ςτόχου τθσ. Γι αυτό το λόγο, κρίκθκε ςκόπιμο ςτο ςθμείο αυτό να εξθγθκοφν όλα όςα αναφζρονται ςε αυτόν. Τι κεωρείται όμωσ ζνασ ζξυπνοσ αιςκθτιρασ; Με τον όρο «Ζξυπνοσ Αιςκθτιρασ», περιγράφεται μία θλεκτρονικι διάταξθ που διακζτει μία ςειρά αιςκθτιρων και εκτελεί μία πρωτογενι ανάλυςθ των μετριςεων. Διακζτει τθ λογικι, ϊςτε να επεξεργάηεται τισ μετριςεισ και να αποςτζλλει ςε άλλεσ διατάξεισ είτε κάποια ςυμπεράςματα για τθν κατάςταςθ του αντικειμζνου που παρακολουκεί, είτε επεξεργαςμζνεσ μετριςεισ ι διάφορα υπολογιςμζνα μεγζκθ. Με τον τρόπο αυτό, μειϊνεται ο όγκοσ των δεδομζνων που αποςτζλλονται ςτο κεντρικό ςφςτθμα, και γίνεται κατάτμθςθ τθσ απαιτοφμενθσ υπολογιςτικισ ιςχφοσ για τθν επεξεργαςία των μετριςεων. Επίςθσ, αυξάνεται θ αξιοπιςτία του ςυςτιματοσ. Λδιαίτερα θ μείωςθ του όγκου των δεδομζνων, είναι απαραίτθτθ προχπόκεςθ για τθν υλοποίθςθ ενόσ ςυςτιματοσ με αςφρματεσ επικοινωνίεσ και περιοριςμζνουσ πόρουσ θλεκτρικισ ενζργειασ. Γιατί όμωσ ζνα τζτοιο ςφςτθμα; Για τθν ςωςτι παρακολοφκθςθ ενόσ αντικειμζνου, χρειάηεται ςυχνά να τοποκετθκοφν αρκετοί ζξυπνοι αιςκθτιρεσ ςε διάφορα ςθμεία του. Αν λειτουργοφςαν όλοι ενςφρματα, τότε κα ζπρεπε ςε κάκε διαφορετικό αντικείμενο, να υπάρχει ζνα ξεχωριςτό ςφςτθμα καλωδιϊςεων. Επιπλζον πολλζσ φορζσ οι προεγκατεςτθμζνοι καλωδιωμζνοι αιςκθτιρεσ, αδυνατοφν να λάβουν μετριςεισ από κρίςιμα ςθμεία πικανϊν βλαβϊν. Εκτόσ από αυτό, ςε μερικζσ περιπτϊςεισ θ καλωδίωςθ είναι ανζφικτθ. Το ηθτοφμενο είναι να απαλλαγοφμε τελείωσ από καλωδιϊςεισ. Το αςφρματο δίκτυο αιςκθτιρων παρζχει τθ δυνατότθτα να παρακολουκείται διαφορετικι ηϊνθ ενόσ αντικειμζνου κάκε φορά. Ακόμθ μπορεί να χρθςιμοποιθκεί ωσ εναλλακτικό μζςο διάγνωςθσ και πρόβλεψθσ βλαβϊν ςε κρίςιμα ςθμεία. Θ τροφοδοςία των ζξυπνων 6

8 αιςκθτιρων γίνεται με μπαταρίεσ, και χρειάηεται μεγάλθ προςοχι ςτθ διαχείριςθ τθσ θλεκτρικισ ενζργειασ, αφοφ δεν υπάρχει ςε αφκονία. Το πρόβλθμα είναι θ πλθκϊρα των διαφορετικϊν απαιτιςεων για το είδοσ αιςκθτιρων και τθν επεξεργαςία των μετριςεων. Αυτό ςυνεπάγεται τθ δθμιουργία ι μετατροπι του λογιςμικοφ των ζξυπνων αιςκθτιρων, ϊςτε να προςαρμόηονται ςτισ εκάςτοτε απαιτιςεισ. Θ λφςθ του προβλιματοσ είναι θ δθμιουργία ενόσ λογιςμικοφ, το οποίο με μία ςχετικά εφκολθ παραμετροποίθςθ κα μπορεί να προςαρμόηει τθ λειτουργία του ζξυπνου αιςκθτιρα ςτισ απαιτιςεισ τθσ εγκατάςταςθσ και χριςθσ αυτοφ. Θ παραμετροποίθςθ γίνεται από τον κεντρικό υπολογιςτι και δίνει το δικαίωμα ςτον χριςτθ να χρθςιμοποιεί το δίκτυο των ζξυπνων αιςκθτιρων όπωσ αυτόσ επικυμεί. Για να γίνει πιο κατανοθτι θ παραπάνω λφςθ δίνεται ζνα παράδειγμα. Ζςτω ότι υπάρχει ζνασ ζξυπνοσ αιςκθτιρασ με προςαρμοςμζνο ζναν αιςκθτιρα κερμοκραςίασ. Κάποια από τα ερωτιματα που πρζπει να τεκοφν είναι τα εξισ: α. Ο αιςκθτιρασ κα είναι ςε μία κατάςταςθ ι κα υπάρχουν διάφορεσ καταςτάςεισ λειτουργίασ; (Για παράδειγμα ζνασ αιςκθτιρασ ςε ζνα ψυγείο λειτουργεί ςε μία κατάςταςθ, αλλά ζνασ αιςκθτιρασ ςε μία μθχανι ζχει περιςςότερεσ καταςτάςεισ λειτουργίασ ανάλογα τθν κατάςταςθ τθσ μθχανισ.) β. Σε κάκε κατάςταςθ ποια είναι θ περίοδοσ των μετριςεων; γ. Τί κεωροφμε ζγκυρθ μζτρθςθ; Μία μζτρθςθ του αιςκθτιρα ι ζναν μζςο όρο μετριςεων; δ. Ροιεσ μεταβολζσ μεταξφ δυο διαδοχικϊν μετριςεων είναι αποδεκτζσ; ε. Τί πλθροφορία αποςτζλλεται ςτον ςυντονιςτι δικτφου και με τί περίοδο; Μζςο όρο μετριςεων, όταν εμφανιςτεί μζγιςτθ ι ελάχιςτθ μζτρθςθ, όταν ξεπεραςτοφν κάποια όρια; Στθν ουςία θ παραμετροποίθςθ είναι το ςφνολο των απαντιςεων ςτισ παραπάνω ερωτιςεισ. Οι απαντιςεισ παρζχονται από τον χριςτθ 7

9 και ο ζξυπνοσ αιςκθτιρασ τισ υλοποιεί. Ρϊσ όμωσ οι παράμετροι περνοφν από τον κεντρικό υπολογιςτι ςτουσ ζξυπνουσ αιςκθτιρεσ; Μεταξφ του κεντρικοφ υπολογιςτι και των ζξυπνων αιςκθτιρων, παρεμβάλλεται ζνασ ενδιάμεςοσ κρίκοσ, ο ςυντονιςτισ του δικτφου. Κα ιταν αδφνατο να επικοινωνιςουμε με τουσ ζξυπνουσ αιςκθτιρεσ, από μεγάλθ απόςταςθ, χωρίσ αυτόν. Θ αιτία είναι ότι δεν πρζπει να καταναλϊνουμε μεγάλθ ποςότθτα θλεκτρικισ ενζργειασ ςτουσ ζξυπνουσ αιςκθτιρεσ και ςυνεπϊσ απαιτείται θ χριςθ του προτφπου για χαμθλισ εμβζλειασ αςφρματα δίκτυα προςωπικισ περιοχισ. Ο ςυντονιςτισ δικτφου βρίςκεται ςε μικρι απόςταςθ από τουσ ζξυπνουσ αιςκθτιρεσ και δεν χρθςιμοποιεί μπαταρίεσ. Λαμβάνει τα αςφρματα δεδομζνα από αυτοφσ μζςω και τα αποςτζλλει ςτον κεντρικό υπολογιςτι χρθςιμοποιϊντασ το πρότυπο για αςφρματα δίκτυα τοπικισ περιοχισ. Αντιςτρόφωσ, όταν ο κεντρικόσ υπολογιςτισ κζλει να επικοινωνιςει με ζναν ςυγκεκριμζνο ζξυπνο αιςκθτιρα αποςτζλλει αςφρματα δεδομζνα ςτον ςυντονιςτι δικτφου και αυτόσ αναλαμβάνει ζπειτα να τα προωκιςει ςτον προοριςμό τουσ. Ο ςτόχοσ τθσ διπλωματικισ εκπλθρϊνεται, μόλισ τα επεξεργαςμζνα δεδομζνα καταφκάςουν ςτον κεντρικό υπολογιςτι. Το ςυγκεκριμζνο αςφρματο δίκτυο αιςκθτιρων είναι ζνα μζροσ τθσ πλατφόρμασ PrismaSense τθσ ελλθνικισ εταιρείασ Ρρίςμα Θλεκτρονικά ΑΒΕΕ. Ο ςτόχοσ τθσ PrismaSense είναι ζνα ολοκλθρωμζνο ςφςτθμα αςφρματων ζξυπνων αιςκθτιρων, που κα ζχει τθ δυνατότθτα να προςαρμοςτεί ςε οποιαδιποτε απαίτθςθ. H Ρρίςμα ςυμμετζχει ςτο ζκτο πρόγραμμα ζρευνασ και ανάπτυξθσ τθσ Ευρωπαϊκισ Ζνωςθσ, ςτο ζργο Dynamite για δυναμικζσ αποφάςεισ ςτθ ςυντιρθςθ. Σιμερα ςτθν Ελλάδα, αλλά και ςτθν Ευρϊπθ, οι περιςςότερεσ βιομθχανίεσ δεν βλζπουν τθ ςυντιρθςθ ςαν επζνδυςθ, αλλά ςαν ζνα αναγκαίο κακό (κόςτοσ). Οι πιο πολλζσ αντιλαμβάνονται τθν ςυντιρθςθ ςαν επιδιόρκωςθ (corrective maintenance), ενϊ λιγότερεσ εκτελοφν, περιοδικοφσ ελζγχουσ και επιδιορκϊςεισ ςτισ μθχανζσ τουσ (preventive maintenance). Το κζρδοσ, οικονομικό και όχι μόνο (αςφάλεια 8

10 προςωπικοφ), γι αυτζσ κα είναι ενδεχομζνωσ πολφ μεγαλφτερο, αν επενδφςουν και ςτθν προλθπτικι, αλλά κυρίωσ ςτθν προβλεπτικι ςυντιρθςθ (predictive maintenance ι condition based maintenance). Επίςθσ επί του παρόντοσ, θ απόφαςθ για ςυντιρθςθ λαμβάνεται ςυνικωσ από μθχανικοφσ βάςει τθσ γνϊςθσ και τθσ εμπειρίασ τουσ. Θ προβλεπτικι ςυντιρθςθ βαςίηεται ςε υπολογιςτικοφσ αλγόρικμουσ και ζχει ςαν ςτόχο το λογιςμικό να προειδοποιεί, όχι μόνο για πικανοφσ κινδφνουσ βλαβϊν, αλλά και για αςυνικιςτθ ςυμπεριφορά του αντικειμζνου. Το κφριο όμωσ όφελοσ, είναι θ πρόγνωςθ. Το λογιςμικό κα πρζπει να μπορεί να προβλζψει, πότε κα εμφανιςτεί κάποια βλάβθ ι δυςλειτουργία. Τζλοσ, θ διάγνωςθ βλαβϊν είναι πολφ ευκολότερθ, διότι το ςφςτθμα προβλεπτικισ ςυντιρθςθσ, ςίγουρα κα είχε προειδοποιιςει και θ προειδοποίθςθ κα είχε καταγραφεί πριν τθν βλάβθ. Θ διπλωματικι εργαςία περιλαμβάνει πολλά τμιματα από διάφορουσ τομείσ τθσ επιςτιμθσ του θλεκτρολόγου μθχανικοφ και μθχανικοφ υπολογιςτϊν και γι αυτό ιταν αναγκαίο να χωριςτεί ςε δφο μζρθ. Το πρϊτο από αυτά παρουςιάηει τα διάφορα τμιματα του υλικοφ και επιπλζον παρζχει κάποιεσ επιπλζον πλθροφορίεσ, ϊςτε να είναι πιο εφκολθ θ ανάγνωςθ του δεφτερου μζρουσ που πραγματεφεται τθν υλοποίθςθ και τισ επιμζρουσ δυςκολίεσ που παρουςιάςτθκαν. Το πρϊτο μζροσ αποτελείται από πζντε κεφάλαια. Στο πρϊτο κεφάλαιο παρζχονται πλθροφορίεσ για το πρότυπο που χρθςιμοποιικθκε. Ραρουςιάηεται και το Zigbee, ζνα πρωτόκολλο που υλοποιεί το και παρζχει επιπλζον διευκολφνςεισ και επίπεδα. Αναλφονται οι παρεμβολζσ μεταξφ των αςφρματων LAN (Local Area Network) και του ι του Zigbee. Το δεφτερο κεφάλαιο αφοφ κάνει μια ςφντομθ αναφορά ςτα αςφρματα δίκτυα αιςκθτιρων, παρουςιάηει όλα τα δομικά ςτοιχεία του αςφρματου δικτφου PrismaSense. Το τρίτο κεφάλαιο αναλφει τισ δυνατότθτεσ του μικροελεγκτι MSP430 F1611 και περιγράφει τθ λειτουργία των περιφερειακϊν τμθμάτων του. Λδιαίτερθ ζμφαςθ δίνεται ςτο 9

11 περιφερειακό I 2 C, όπου εκτόσ τθσ λειτουργίασ του, παρουςιάηεται και θ γενικι ιδζα των διςφρματων διαςυνδζςεων SMBus και I 2 C. Στο τζταρτο κεφάλαιο παρουςιάηονται οι τζςςερισ αιςκθτιρεσ που είναι ενςωματωμζνοι ςε κάκε ζξυπνο αιςκθτιρα και περιγράφεται θ λειτουργία τουσ. Τζλοσ ςτο πζμπτο κεφάλαιο περιγράφονται οι αςφρματεσ ςυςκευζσ που υλοποιοφν τισ αςφρματεσ επικοινωνίεσ. Το δεφτερο μζροσ ξεκινά με τθν ανάλυςθ του λειτουργικοφ ςυςτιματοσ πραγματικοφ χρόνου ISOS τθσ Ρρίςμα (ζκτο κεφάλαιο). Στθ ςυνζχεια το ζβδομο κεφάλαιο πραγματεφεται τθν υλοποίθςθ τθσ επικοινωνίασ του μικροελεγκτι του ζξυπνου αιςκθτιρα με τουσ αιςκθτιρεσ και τθ χριςθ τουσ. Στο όγδοο κεφάλαιο περιγράφεται θ υλοποίθςθ τθσ επικοινωνίασ του μικροελεγκτι με τισ αςφρματεσ ςυςκευζσ. Το ζνατο κεφάλαιο είναι θ καρδιά τθσ υλοποίθςθσ. Αρχικά αναφζρονται οι παράμετροι των εφαρμογϊν των αιςκθτιρων και μετά αναλφεται θ υλοποίθςθ επικοινωνίασ κεντρικοφ υπολογιςτι, ςυντονιςτι δικτφου και ζξυπνων αιςκθτιρων. Το κεφάλαιο κλείνει με τθν ανάλυςθ των εφαρμογϊν των αιςκθτιρων. Στο δζκατο κεφάλαιο αναλφεται θ κατανάλωςθ ενζργειασ των ζξυπνων αιςκθτιρων, ενϊ ςτο ενδζκατο υπάρχουν κάποια παραδείγματα χριςθσ του λογιςμικοφ ςτον κεντρικό υπολογιςτι. Το δωδζκατο και τελευταίο κεφάλαιο αναφζρει προβλιματα, ςυμπεράςματα και παρατθριςεισ. 10

12 Μζροσ Α Παρουςίαςη 11

13 Κεφάλαιο 1 Το πρότυπο για LR-WPAN (Low Rate Wireless Personal Area Network) 1.1 Το πρότυπο για WPAN Θ ομάδα εργαςίασ τθσ ΛΕΕΕ ζχει ςαν αντικείμενο τθν ανάπτυξθ προτφπων για δίκτυα προςωπικισ περιοχισ ι αςφρματα δίκτυα μικρισ απόςταςθσ. Ο ςτόχοσ είναι να δθμοςιευτοφν πρότυπα, ςυνιςτϊμενεσ πρακτικζσ και οδθγοί που να ζχουν εφαρμογι ςε μεγάλο μζροσ τθσ αγοράσ και να αντιμετωπίηουν αποτελεςματικά τα ηθτιματα τθσ ςυνφπαρξθσ και διαλειτουργικότθτασ με άλλεσ λφςεισ, αςφρματθσ ι μθ, δικτφωςθσ [1]. Θ ομάδα εργαςίασ αποτελείται από τζςςερισ επιμζρουσ ομάδεσ. Θ ομάδα ζχει ςαν αντικείμενο το γνωςτό ςε όλουσ Bluetooth. Το Bluetooth είναι μία βιομθχανικι προδιαγραφι διαςφνδεςθσ φορθτϊν προςωπικϊν ςυςκευϊν που βρίςκονται ςε μικρι απόςταςθ μεταξφ τουσ, βαςιηόμενθ ςτθ χριςθ ραδιοςυχνοτιτων. Θ ομάδα αναπτφςςει ςυνιςτϊμενεσ πρακτικζσ, ϊςτε να διευκολφνει τθν ςυνφπαρξθ των αςφρματων δικτφων προςωπικισ περιοχισ (WPAN ), με τα αςφρματα δίκτυα τοπικισ περιοχισ (WLAN ). Ακόμθ, αναπτφςςει ζνα μοντζλο που υπολογίηει το ποςό τθσ αμοιβαίασ παρεμβολισ μεταξφ WLAN και WPAN. Θ ομάδα ζχει ςτόχο να δθμιουργιςει και να δθμοςιεφςει ζνα νζο πρότυπο για μεγάλθσ ταχφτθτασ (20Mbps τουλάχιςτο) WPAN. Επιπλζον το νζο πρότυπο κα παρζχεται για χαμθλισ κατανάλωςθσ και κόςτουσ λφςεισ, ικανοποιϊντασ τισ ανάγκεσ εφαρμογϊν ψθφιακισ εικόνασ και πολυμζςων. Τζλοσ θ ομάδα ζχει ςτόχο να εξερευνιςει μία μικρισ ταχφτθτασ λφςθ πολφ χαμθλισ πολυπλοκότθτασ με ηωι μπαταρίασ από μινεσ ωσ χρόνια. Το πρότυπο αυτό κακορίηει δφο φυςικά επίπεδα. Το πρϊτο βρίςκεται ςτθ ηϊνθ των 868/915 ΜHz, ενϊ το δεφτερο ςτθ ηϊνθ των 2.4 GHz. Θ επιλογι εξαρτάται από τουσ κατά τόπο περιοριςμοφσ και 12

14 τον χριςτθ. Εφαρμογζσ με ενδιαφζρον είναι οι αιςκθτιρεσ, τα αλλθλεπιδραςτικά παιχνίδια, ο απομακρυςμζνοσ ζλεγχοσ και οι αυτοματιςμοί ςπιτιοφ. 1.2 Το πρότυπο για LR-WPAN Το πρότυπο χρθςιμοποιεί και για τα δφο φυςικά επίπεδα τθν τεχνικι εξάπλωςθσ φάςματοσ άμεςθσ ακολουκίασ (Direct Sequence Spread Spectrum ι DSSS). Σ αυτι τθν τεχνικι διαμόρφωςθσ, το μεταδιδόμενο ςιμα καταλαμβάνει μεγαλφτερο εφροσ ηϊνθσ από το ςιμα πλθροφορίασ που διαμορφϊνεται. Στα δεδομζνα προςτίκεται ζνα ςιμα κορφβου, με τρόπο που είναι εκ των προτζρων γνωςτόσ ςτον δζκτθ, όπου γίνεται θ ανακαταςκευι του ςιματοσ. Τα γενικά χαρακτθριςτικά του προτφπου είναι τα ακόλουκα [2]: Ταχφτθτεσ μετάδοςθσ 250,40 και 20 Kbps. Τοπολογία αςτζρα, ομότιμων κόμβων και ςυνδυαςμζνθ. Ρρόςβαςθ καναλιοφ CSMA-CA (Carrier Sense Multiple Access Collision Avoidance). Θ μζκοδοσ αυτι τθσ ανίχνευςθσ φζροντοσ πολλαπλισ πρόςβαςθσ με αποφυγι ςυγκροφςεων, «ακοφει» το κανάλι και αν διαπιςτϊςει ότι αυτό είναι ελεφκερο, αποςτζλλει το πακζτο δεδομζνων μετά από ζνα χρονικό διάςτθμα το οποίο παράγεται τυχαία από ζναν αλγόρικμο που εκμεταλλεφεται ψευδοτυχαίουσ αρικμοφσ. Δυναμικι διευκυνςιοδότθςθ ςυςκευϊν. Χειραψία για αξιόπιςτθ μεταφορά. Χαμθλι κατανάλωςθ ενζργειασ. Ηϊνεσ ςυχνοτιτων: 16 κανάλια ςτθν ηϊνθ ISM των 2.4 GHz, 10 κανάλια ςτθν ηϊνθ ISM των 915MHz και ζνα κανάλι ςτθν ευρωπαϊκι ηϊνθ των 868ΜΘz. Θ διευκυνςιοδότθςθ του κακορίηει ότι όλεσ οι ςυςκευζσ που κυκλοφοροφν ςτθν αγορά, ζχουν τθ δικι τουσ μοναδικι 64-bit ΛΕΕΕ διεφκυνςθ. Ραρζχεται όμωσ και θ δυνατότθτα ςτον χριςτθ να δϊςει μικρότερεσ διευκφνςεισ των 16 bits. Ακόμθ υπάρχουν δφο τρόποι διευκυνςιοδότθςθσ: Ταυτοποίθςθ δικτφου και ςυςκευισ (τοπολογία αςτζρα) και ταυτοποίθςθ πθγισ και προοριςμοφ (ομότιμο δίκτυο). 13

15 1.3 Παρεμβολζσ μεταξφ και Θ ηϊνθ ραδιοςυχνοτιτων των 2.4 GHz με εφροσ 80 MHz είναι διακζςιμθ για επιςτθμονικοφσ, βιομθχανικοφσ και ιατρικοφσ ςκοποφσ εδϊ και μερικζσ δεκαετίεσ. Ραρόλο που ςτθν αρχι χρθςιμοποιικθκε για εμπορικοφσ φοφρνουσ μικροκυμάτων και βιομθχανικοφσ κερμαντιρεσ, ςτθ ςυνζχεια δόκθκε για επικοινωνίεσ δεδομζνων άνευ άδειασ. Λόγω ςχεδόν κακολικισ πρόςβαςθσ, ςχετικά πλατφ εφροσ και του γεγονότοσ ότι ζχει τθν πιο χαμθλι ςυχνότθτα μεταξφ των ςυγκρινόμενων ηωνϊν, θ ηϊνθ των 2.4 GHz ζχει αναδειχκεί ςτθν πιο λογικι επιλογι για λφςεισ WLAN [3]. Θ ςειρά προτφπων τθσ IEEE καταλαμβάνει ξεκάκαρα όλο το εφροσ και είναι παγκοςμίωσ αποδεκτι. Ακόμθ, με τελευταίεσ ανακεωριςεισ των προτφπων όπωσ του n, θ ςυντριπτικι πλειοψθφία των WLAN αναμζνεται να ςυνεχίςει να χρθςιμοποιεί τθν ηϊνθ των 2.4 GHz. Συγκριτικά με τθν εναλλακτικι ηϊνθ των 5 GHz, θ χριςθ τθσ ηϊνθσ των 2.4 GHz πλεονεκτεί ςτον τομζα του εφρουσ και τθσ κάλυψθσ ςε εςωτερικοφσ χϊρουσ. Στθν ηϊνθ των 2.4 GHz, το πρότυπο κακορίηει 16 κανάλια που βρίςκονται 5 MHz μακριά το ζνα από το άλλο. Κακϊσ θ τυπικι ιςχφσ εκπομπισ είναι 100 mw για μια ςυςκευι WLAN, θ επιδίωξθ για χαμθλι κατανάλωςθ και μεγάλθ ηωι μπαταρίασ περιορίηουν τθν ιςχφ εκπομπισ ςτο 1 mw για το Το πρότυπο b/g για WLAN κακορίηει 14 κανάλια ςτθν ηϊνθ των 2.4 GHz εκ των οποίων το κακζνα ζχει απόςταςθ 5ΜΘz. Κακϊσ το ςιμα του WLAN ζχει εφροσ 22 MHz, δεν μποροφν να χρθςιμοποιθκοφν όλα τα κανάλια ταυτόχρονα. Στθν πραγματικότθτα, μόνο τρία μθ επικαλυπτόμενα μποροφν να χρθςιμοποιθκοφν ςυγχρόνωσ. Αυτά για τθν Ευρϊπθ είναι τα κανάλια 1,7 και 13. Το διάγραμμα 1.1 παρουςιάηει το φάςμα των τριϊν μθ επικαλυπτόμενων καναλιϊν WLAN (μπλε) και των δεκαζξι καναλιϊν (κόκκινο). Ο κάκετοσ άξονασ δείχνει τθν τυπικι διαφορά τθσ ιςχφοσ εκπομπισ. Σε μια απλοφςτερθ μορφι, αυτι κα είναι και θ 14

16 διαφορά ςτθν δφναμθ του ςιματοσ λιψθσ ςε ζναν δζκτθ, αν ο πομπόσ παρεμβολισ WLAN βρίςκεται ςτθν ίδια απόςταςθ με τον πομπό. Διάγραμμα 1.1: To WLAN και το ςτθν ηϊνθ των 2.4 GHz Το διάγραμμα ξεκακαρίηει ότι τα κανάλια επθρεάηονται από τα ςιματα WLAN. Ακόμθ και τα κανάλια που βρίςκονται ανάμεςα ςτα μθ επικαλυπτόμενα WLAN κανάλια, επθρεάηονται από τισ λεγόμενεσ πλευρικζσ πλαγιζσ του WLAN. Κατά τθ διάρκεια τθσ ανάπτυξθσ τθσ ζκδοςθσ 2006 του προτφπου ζγιναν αναλυτικζσ προςομοιϊςεισ των επιπτϊςεων τθσ παρεμβολισ του WLAN με το Θ προςομοίωςθ και τα ςυμπεράςματα που προζκυψαν αναπτφχκθκαν εκτενϊσ από μζλθ τθσ κοινότθτασ Zigbee. Πλθ θ διαδικαςία, το μοντζλο προςομοίωςθσ και τα αποτελζςματα ανακοινϊκθκαν και ανακεωρικθκαν και από τθν ομάδα εργαςίασ , αλλά και από τθν ομάδα τθσ IEEE που ζχει ςαν αντικείμενο τθν ραδιοςυνφπαρξθ. Τα κφρια ςυμπεράςματα ιταν τα εξισ: 15

17 α. Αν τοποκετιςουμε ςτθν ίδια ςυςκευι μαηί, ζναν πομποδζκτθ WLAN και ζναν , τότε το WLAN κα παρεμβάλλεται πάντα επιηιμια, ανεξάρτθτα από το κανάλι που κα χρθςιμοποιεί το ι το Zigbee. β. Αν ςτον ίδιο χϊρο ζχουμε WLAN και , τότε το ςφάλμα πακζτων που προκαλεί το WLAN κα δθμιουργεί πρόβλθμα ςε δικτυωτά δίκτυα , ακόμθ και όταν υπάρχει διαφορά μεγαλφτερθ των 22 ΜΘz ςτισ ςυχνότθτεσ. γ. Θ απόςταςθ επιβίωςθσ από τισ παρεμβολζσ του WLAN είναι μεγαλφτερθ από το εφροσ των ψθφίδων Το πρωτόκολλο Zigbee και η ςυνφπαρξη με το Το πρωτόκολλο Zigbee, υλοποιεί το πρότυπο και προςκζτει παραπάνω επίπεδα, πζρα από το φυςικό και το επίπεδο ελζγχου πρόςβαςθσ ςτο μζςο, που ορίηονται ςτο Στθν εικόνα 1.1 παρουςιάηεται θ ςτοίβα επιπζδων του Zigbee. Τα δφο υψθλότερα επίπεδα περιγράφονται ςτθν προδιαγραφι του Zigbee, ενϊ τα δφο χαμθλότερα ςτθν προδιαγραφι του [4]. Εικόνα 1.1: Η ςτοίβα επιπζδων του Zigbee 16

18 Και οι δφο προδιαγραφζσ εμπεριζχουν μεγάλο ποςό λειτουργικότθτασ που είναι ειδικά ςχεδιαςμζνθ για να διευκολφνει τθν ςυνφπαρξθ και τθν άμβλυνςθ τθσ παρεμβολισ. Θ λειτουργικότθτα αυτι κατανζμεται και ςτα τζςςερα επίπεδα. Συχνά οι ςυςκευζσ μεταδίδουν μθνφματα, αλλά μερικζσ φορζσ αυτά δεν λαμβάνονται επιτυχϊσ. Κανονικά όλεσ οι επικοινωνίεσ επιβεβαιϊνονται ςτο Μετά από τθν λιψθ ενόσ μθνφματοσ, κάκε ςυςκευι ζχει ζνα μικρό χρονικό παράκυρο, κατά τθ διάρκεια του οποίου απαιτείται να ςτείλει ςτον πομπό του μθνφματοσ ζνα μικρό μινυμα επιβεβαίωςθσ λιψθσ. Ο πομπόσ κα περιμζνει να λάβει αυτι τθν απάντθςθ που είναι κοινϊσ γνωςτι ωσ ACK (Acknowledge). Αν δεν τθν λάβει, κα κεωριςει ότι το μινυμα δεν παραδόκθκε και κα προςπακιςει να το ξαναςτείλει. Θ διαδικαςία επαναλαμβάνεται μζχρι το μινυμα και το ACK να παραλθφκοφν επιτυχϊσ, ι μζχρι ο πομπόσ να παραιτθκεί από τθν αποςτολι του μθνφματοσ, μετά από κάποιο αρικμό προςπακειϊν, και να αναφζρει τθν αποτυχία. Πταν ζνα δίκτυο Zigbee ςχθματίηεται, τότε θ ςυςκευι που ξεκινά τον ςχθματιςμό, ο ςυντονιςτισ δικτφου Zigbee, απαιτείται να ερευνιςει όλα τα διακζςιμα κανάλια και να επιλζξει αυτό με τθν μικρότερθ παρεμβολι. Το Zigbee χρθςιμοποιεί τεχνολογία δικτυωτισ δικτφωςθσ. Το κίνθτρο για αυτό προζρχεται από τισ δφο ακόλουκεσ παρατθριςεισ: α. Σε πολλά περιβάλλοντα, οι ςυςκευζσ είναι τόςο κοντά που ζνα αξιόπιςτο δίκτυο μπορεί να ςχθματιςτεί, αν επιτρζψουμε ςε μερικζσ ςυςκευζσ να δρομολογοφν μθνφματα ςτισ γειτονικζσ τουσ. β. Σε αυτό το περιβάλλον, κα επιτευχκεί καλφτερθ χριςθ του καναλιοφ, αν οι ςυςκευζσ περιορίςουν τθν ιςχφ εκπομπισ τουσ και μεταδϊςουν μόνο ςτουσ κοντινοφσ γείτονεσ. Ππωσ διακρίνεται ςτθν εικόνα 1.2, μετά το ςχθματιςμό ενόσ δικτυωτοφ δικτφου Zigbee, υπάρχει ζνασ αρικμόσ μονοπατιϊν ανάμεςα ςτισ ςυςκευζσ. Το πρωτόκολλο Zigbee εκμεταλλεφεται τθν ποικιλία μονοπατιϊν χρθςιμοποιϊντασ μια μορφι δυναμικισ δρομολόγθςθσ. Αν 17

19 κάποιο επιλεγμζνο δρομολόγιο αποτφχει, λόγω παρεμβολισ ι κάποιασ άλλθσ αλλαγισ περιβάλλοντοσ, τότε το δίκτυο κα επιλζξει κάποιο διαφορετικό μονοπάτι. Εικόνα 1.2: Δικτυωτό δίκτυο Σε περίπτωςθ που το μζγεκοσ τθσ παρεμβολισ που λαμβάνεται από τον ςυντονιςτι δικτφου αλλάξει, οι ςυςκευζσ Zigbee εξερευνοφν το κανάλι για να λάβουν το επίπεδο παρεμβολισ και να το αναφζρουν ςτον ςυντονιςτι ι ςε μια ςυςκευι που λειτουργεί ωσ διαχειριςτισ δικτφου. Θ ςυςκευι αυτι μπορεί να κατευκφνει το δίκτυο, ϊςτε να αφιςει το τρζχον κανάλι και να ςχθματιςτεί ςε κάποιο άλλο. Στο μόνο μεταδόςεισ ενόσ κόμβου, επιβεβαιϊνονται και ξαναςτζλνονται, αν αποτφχουν. Αντικζτωσ το Zigbee επιβεβαιϊνει και ξαναςτζλνει, και μθνφματα πολλαπλϊν κόμβων μζςα ςτο δικτυωτό δίκτυο. Κάκε χρόνο τα μζλθ τθσ ςυμμαχίασ Zigbee παρουςιάηουν τα προϊόντα τουσ ςε μερικά από τα μεγαλφτερα εμπορικά κεάματα του κόςμου. Το ςκθνικό του κεάματοσ είναι ζνα ςφνολο τεχνολογιϊν επικοινωνίασ, ςτισ οποίεσ περιλαμβάνονται το b/g, το Bluetooth, το , τα φορθτά τθλζφωνα FHSS ςτα 2.4 GHz και αρκετζσ ιδιωτικζσ αςφρματεσ τεχνολογίεσ. Ακόμθ και ςε αυτό το απαιτθτικό περιβάλλον, τα δίκτυα Zigbee ςυνεχίηουν να λειτουργοφν επιτυχϊσ. Για παράδειγμα θ εικόνα 1.3 απεικονίηει τθν ανάλυςθ φάςματοσ δεκατεςςάρων λεπτϊν ςτο μεγαλφτερο θλεκτρονικό κζαμα τθσ 18

20 Ευρϊπθσ, το Hannover Messe. Χρθςιμοποιικθκε το καυμάςιο και φτθνό εργαλείο Wi-Spy και το πακζτο Chanalyzer. Οι αρικμοί των καναλιϊν ςτο κάτω μζροσ είναι τα κανάλια Zigbee. Εικόνα 1.3: Σο φάςμα του Hannover Messe Θ εικόνα δείχνει ζνα πολφ ενεργό περιβάλλον με ζναν αρικμό WLAN ςε λειτουργία, ιδιαιτζρωσ γφρω από τα Zigbee κανάλια 12 και 21. Υπάρχει τουλάχιςτον ζνα δίκτυο Zigbee που είναι ορατό ςαν ςφνολο δραςτθριότθτασ ςτο κανάλι 17 και επικαλφπτεται με τθν δραςτθριότθτα των WLAN. Θ απόδοςθ του Zigbee για το δίκτυο που είναι τοποκετθμζνο ςτο κανάλι 17 μετρικθκε από το Daintree Sensor Network Analyzer. Το αποτζλεςμα ιταν ότι ςε ςφνολο μεταδιδόμενων πακζτων, χάκθκαν τα 555. Ο μζςοσ χρόνοσ κακυςτζρθςθσ ιταν 4.42 ms, ενϊ ο μεγαλφτεροσ χρόνοσ κακυςτζρθςθσ ιταν ms. Είναι ςθμαντικό ότι όλα αυτά τα ςτοιχεία μετρικθκαν ςτο επίπεδο δικτφου και ότι το 19

21 ποςοςτό χαμζνων πακζτων 2% ζχει ςαν αποτζλεςμα ποςοςτό 0%, αν χρθςιμοποιθκοφν οι επανεκπομπζσ του επιπζδου εφαρμογϊν. Βαςιηόμενοι ςτθ δουλειά που ζχει γίνει μζχρι ςιμερα, είναι αςφαλζσ να υπογραμμιςτοφν τα ακόλουκα ςυμπεράςματα: α. Το Zigbee ζχει πάρα πολλά χαρακτθριςτικά που ζχουν ςχεδιαςτεί για να εξαςφαλίηουν ευρωςτία και να διευκολφνουν τθν ςυνφπαρξθ ςτθν φάςθ τθσ παρεμβολισ. β. Οι ςυςκευζσ Zigbee ςυνεχίηουν να λειτουργοφν επιτυχϊσ, ακόμθ και παρουςία υπερβολικισ παρεμβολισ. γ. Πλεσ οι δοκιμζσ και θ κακθμερινι χριςθ ςε πραγματικά περιβάλλοντα, με πραγματικι κυκλοφορία δεδομζνων, αποδεικνφουν τθν ευρωςτία του Zigbee. 20

22 Κεφάλαιο 2 Το αςφρματο δίκτυο αιςθητήρων PrismaSense 2.1 Τα αςφρματα δίκτυα αιςθητήρων Από το 2001, όταν ο Kristofer Pister ειςιγαγε τον όρο SmartDust, ζχουν γίνει μεγάλεσ τεχνολογικζσ προςπάκειεσ, ϊςτε να υλοποιθκεί αυτι θ ιδζα. SmartDust ονομάηεται ζνα ςφνολο από διατάξεισ, μεγζκουσ κόκκου άμμου, οι οποίεσ περιλαμβάνουν θλεκτρομθχανικοφσ αιςκθτιρεσ, διακζτουν υπολογιςτικι μονάδα, επικοινωνοφν αςφρματα και είναι ενεργειακά αυτόνομεσ [5]. Φυςικά, απζχουμε ακόμα από τθν πλιρθ υλοποίθςθ του SmartDust. Ωςτόςο, ςτθν παροφςα χρονικι ςτιγμι θ τεχνολογία μασ δίνει τθ δυνατότθτα υλοποίθςθσ των πρϊτων ζξυπνων αιςκθτιρων με αποδεκτά χαρακτθριςτικά και πολφ ενκαρρυντικά αποτελζςματα ςτισ εφαρμογζσ αυτϊν. Τθν τελευταία πενταετία υπιρξε ζνα ξζςπαςμα τεχνολογικϊν επιτευγμάτων ςτον τομζα των αιςκθτιρων MEMS (microelectro-mechanical systems), ςτον τομζα τθσ ψθφιακισ αςφρματθσ επικοινωνίασ, ςτθν παραγωγι επεξεργαςτϊν χαμθλοφ κόςτουσ και με πολφ χαμθλι κατανάλωςθ ιςχφοσ και τζλοσ ςτθν αποκικευςθ και παραγωγι θλεκτρικισ ενζργειασ από το φωσ, τθ μθχανικι κίνθςθ κτλ. Ζνα αςφρματο δίκτυο αιςκθτιρων αποτελείται από ζνα μεγάλο αρικμό ςυνεργαηόμενων κόμβων, ικανϊν για περιοριςμζνουσ υπολογιςμοφσ, αςφρματθ επικοινωνία και λιψθ μετριςεων [6]. Συγκεντρϊνοντασ τθν πλθροφορία από πολλοφσ κόμβουσ, το αςφρματο δίκτυο αιςκθτιρων παρζχει λειτουργικότθτα που ζνασ μόνο κόμβοσ δεν μπορεί να προςφζρει. Το πεδίο εφαρμογϊν περιλαμβάνει γεωφυςικι παρακολοφκθςθ (ςειςμικι δραςτθριότθτα), γεωργικι ακρίβεια (διαχείριςθ εδάφουσ), παρακολοφκθςθ μετανάςτευςθσ ηϊων, μεταφορζσ (παρακολοφκθςθ κυκλοφορίασ) και ςτο μζλλον, ζξυπνα κακθμερινά πράγματα που μποροφν να ςυνεργάηονται. Ο βαςικόσ τρόποσ λειτουργίασ ενόσ αςφρματου δικτφου αιςκθτιρων είναι πολφ διαφορετικόσ από παραδοςιακά δίκτυα υπολογιςτϊν, λόγω τθσ ςφνδεςθσ του με τον φυςικό κόςμο. Συμπλθρωματικά, τα δίκτυα αιςκθτιρων ζχουν μερικά μοναδικά χαρακτθριςτικά που κάνουν τισ μεκόδουσ ανάπτυξθσ εφαρμογϊν πολφ διαφορετικζσ από τισ κοινζσ. 21

23 Θ χριςθ ενόσ δικτφου αιςκθτιρων ςε μια περιοχι, μπορεί να είναι μια ςυνεχισ διαδικαςία. Για παράδειγμα μπορεί να χρειαςτεί να αντικαταςτακοφν κόμβοι που ζχουν καταςτραφεί ι ζχουν πάψει να λειτουργοφν λόγω τζλουσ ηωισ μπαταρίασ. Λόγω του μεγάλου τουσ αρικμοφ, οι κόμβοι πρζπει να ενεργοφν χωρίσ παρακολοφκθςθ μετά τθν εγκατάςταςθ τουσ. Μετά τθν εγκατάςταςθ ενόσ ικανοποιθτικοφ αρικμοφ κόμβων, το δίκτυο μπορεί να χρθςιμοποιθκεί για να πραγματοποιιςει το ςκοπό του. Ο ςκοπόσ αυτόσ ειςάγεται από μια εξωτερικι οντότθτα που ςυνδζεται ςτο δίκτυο, όπωσ ζνα PDA ι μια ςυςκευι ςτο Internet. Επίςθσ πικανά είναι και απομονωμζνα δίκτυα που προγραμματίηονται για τθν εκτζλεςθ ςυγκεκριμζνου ςκοποφ, του οποίου το αποτζλεςμα ελζγχει ενεργοποιθτζσ που είναι επίςθσ κομμάτι του δικτφου. Σε κάποιεσ υβριδικζσ αρχιτεκτονικζσ, τα αποτελζςματα μζτρθςθσ των αιςκθτιρων ελζγχουν τουσ ίδιουσ τουσ αιςκθτιρεσ, ζτςι ϊςτε να μποροφν να παρακολουκιςουν αναλυτικότερα κάποια ςυγκεκριμζνα φαινόμενα και να τα αναφζρουν ςτθν εξωτερικι οντότθτα. Κάκε ξεχωριςτόσ κόμβοσ παρζχει τυπικά πολφ χαμθλι λειτουργικότθτα, όπωσ για παράδειγμα να κακορίηει τθν κίνθςθ ςε ςυγκεκριμζνο μζροσ. Για να λυκοφν απαιτθτικότερα προβλιματα, οι περιοριςμζνθσ λειτουργικότθτασ κόμβοι πρζπει να ςυντονιςτοφν και να διαχωρίςουν το ζργο ανάμεςα τουσ, λαμβάνοντασ υπόψθ τα ξεχωριςτά χαρακτθριςτικά του κακενόσ (π.χ. τοποκεςία, διακζςιμθ ενζργεια). Τα τελευταία χρόνια γίνεται ζρευνα γφρω από το middleware (λογιςμικό που βρίςκεται ανάμεςα ςτθν εφαρμογι και το λειτουργικό ςφςτθμα) των αςφρματων δικτφων αιςκθτιρων. Αυτό πρζπει να υποςτθρίηει τθν πραγματοποίθςθ και τθ βαςικι λειτουργία του δικτφου, όπωσ αναφζρκθκε παραπάνω. Ραρόλα αυτά, ο ςκοπόσ αυτόσ δεν είναι κακόλου εφκολοσ, κακϊσ τα αςφρματα δίκτυα αιςκθτιρων ζχουν μερικά μοναδικά χαρακτθριςτικά: Ρρϊτα πρϊτα, οι κόμβοι είναι μικρζσ ςυςκευζσ που είναι αρκετά περιοριςμζνεσ ςτο ποςό τθσ ενζργειασ που μποροφν να αποκθκεφςουν. Επίςθσ οι κόμβοι υπόκεινται ςε αποτυχίεσ λόγω περιβαλλοντικϊν ςυνκθκϊν και εξάντλθςθσ τθσ διακζςιμθσ ενζργειασ. Το περιοριςμζνο μζγεκοσ και ενζργεια ςυνεπάγεται και περιοριςμό πόρων (απόδοςθ CPU, μνιμθ, αςφρματθ επικοινωνία, εφροσ ηϊνθσ και απόςταςθ). Θ κινθτικότθτα των κόμβων, 22

24 οι αποτυχίεσ και οι περιβαλλοντικζσ διαταραχζσ ζχουν ςαν αποτζλεςμα, ζνα αςφρματο δίκτυο αιςκθτιρων να ζχει υψθλό βακμό δυναμικισ. Οι αποτυχίεσ επικοινωνίασ είναι ζνα ακόμθ κοινό πρόβλθμα. Ζνα άλλο κζμα είναι θ ανομοιογζνεια. Ζνα αςφρματο δίκτυο αιςκθτιρων μπορεί να αποτελείται από μεγάλο αρικμό διαφορετικϊν κόμβων ςε κζματα αιςκθτιρων, ιςχφοσ και μνιμθσ. 2.2 Το αςφρματο δίκτυο αιςθητήρων PrismaSense Το αςφρματο δίκτυο αιςκθτιρων τθσ Ρρίςμα PrismaSense είναι προςωπικισ περιοχισ και ζχει τοπολογία αςτζρα. Οι κόμβοι του δικτφου είναι οι ζξυπνοι αιςκθτιρεσ, ενϊ ο κόμβοσ που ςυντονίηει το δίκτυο και επικοινωνεί με τουσ υπόλοιπουσ κα καλείται από εδϊ και πζρα ςυντονιςτισ δικτφου. Θ επικοινωνία με τον υπολογιςτι επιτυγχάνεται μζςω αςφρματθσ ςφνδεςθσ AdHoc WLAN με τον ςυντονιςτι δικτφου. Το λογιςμικό των ζξυπνων αιςκθτιρων και του ςυντονιςτι δικτφου είναι γραμμζνο ςε C, ενϊ για το λογιςμικό ςτον υπολογιςτι χρθςιμοποιικθκε C# Ο ζξυπνοσ αιςθητήρασ Ο ζξυπνοσ αιςκθτιρασ αποτελείται τθ ςυγκεκριμζνθ χρονικι ςτιγμι από πολλά μζρθ. Θ καρδιά του είναι ο μικροελεγκτισ MSP430 F1611 τθσ Texas Instruments, ο οποίοσ διακζτει πολλοφσ τρόπουσ λειτουργίασ χαμθλισ κατανάλωςθσ και είναι ιδανικόσ για παρόμοιεσ εφαρμογζσ. Οι μετριςεισ λαμβάνονται από τζςςερισ αιςκθτιρεσ που είναι ενςωματωμζνοι ςτον ζξυπνο αιςκθτιρα: Ο αιςκθτιρασ κερμοκραςίασ TMP101 τθσ Burr-Brown είναι ζνασ ψθφιακόσ αιςκθτιρασ με δυνατότθτα I 2 C και SMBus διαςφνδεςθσ με τον μικροελεγκτι. Ο πολυαιςκθτιρασ υγραςίασ και κερμοκραςίασ SHT11 τθσ Sensirion βαςίηεται ςε τεχνικζσ μικρομθχανικισ και παρζχει πλιρωσ βακμονομθμζνεσ ψθφιακζσ εξόδουσ και διςφρματθ διαςφνδεςθ. Ο αιςκθτιρασ φωτόσ περιβάλλοντοσ TSL τθσ TAOS είναι ψθφιακόσ με δυνατότθτα SMBus διαςφνδεςθσ. Τζλοσ το επιταχυνςιόμετρο ADXL320 τθσ Analog Devices είναι δφο αξόνων και παρζχει εξόδουσ, τάςεισ ανάλογεσ των ςθμάτων. 23

25 Θ επικοινωνία του ζξυπνου αιςκθτιρα με τον εξωτερικό κόςμο γίνεται μζςω του αςφρματου εξαρτιματοσ XBee τθσ Maxstream. Το XBee ςχεδιάςτθκε για να πλθρεί το πρότυπο και να υποςτθρίηει τισ μοναδικζσ ανάγκεσ για χαμθλοφ κόςτουσ και κατανάλωςθσ αςφρματα δίκτυα αιςκθτιρων. Απαιτεί ελάχιςτθ ενζργεια και εγγυάται αξιόπιςτθ μεταφορά των δεδομζνων μεταξφ των ςυςκευϊν. Επικοινωνεί με τον μικροελεγκτι με UART διαςφνδεςθ Ο ςυντονιςτήσ δικτφου Ο ςυντονιςτισ δικτφου είναι το κζντρο του αςτζρα. Αποτελείται από τρία κφρια μζρθ. Τα πρϊτα δφο που παρουςιάςτθκαν και προθγουμζνωσ είναι ο μικροελεγκτισ MSP430 F1611 τθσ Texas Instruments και το αςφρματο XBee τθσ Maxstream. Το τρίτο μζροσ αποτελεί τθ ςφνδεςθ του αςφρματου δικτφου με τον ζξω κόςμο. Είναι το MatchPort b/g τθσ Lantronix που ςυνδζεται ςειριακά με τον μικροελεγκτι. Θ ζξοδοσ του μπορεί να οδθγθκεί είτε ςε αςφρματο b ι g, είτε ςε ενςφρματο Ethernet. Κατά τθ διάρκεια εκπόνθςθσ τθσ διπλωματικισ χρθςιμοποιικθκε το g Ο κεντρικόσ υπολογιςτήσ Θ επικοινωνία με τον ςυντονιςτι μπορεί να γίνει μζςω ενόσ PDA, Laptop ι ςτακεροφ υπολογιςτι. Χρθςιμοποιικθκε ζνασ ςτακερόσ υπολογιςτισ απλϊν δυνατοτιτων του εργαςτθρίου αρχιτεκτονικισ υπολογιςτϊν. Δθμιουργικθκε μια εικονικι ςειριακι κφρα που παραλαμβάνει τα πακζτα πλθροφορίασ από το αςφρματο LAN. Με αυτόν τον τρόπο επιτυγχάνεται πολφ εφκολοσ προγραμματιςμόσ, αφοφ ςτθν ουςία επικοινωνοφμε με μια ςειριακι κφρα. Το λογιςμικό του υπολογιςτι παραμετροποιεί το αςφρματο δίκτυο, αφοφ παρζχεται θ δυνατότθτα ςτο χριςτθ να ρυκμίςει και να αποςτείλει τισ παραμζτρουσ του. Επίςθσ, ανάλογα με τθν παραμετροποίθςθ, εμφανίηει τισ επεξεργαςμζνεσ μετριςεισ από κάκε ζξυπνο αιςκθτιρα ςτθν οκόνθ του χριςτθ. 24

26 Κεφάλαιο 3 Ο μικροελεγκτήσ MSP430 F1611 τησ Texas Instruments 3.1 Αρχιτεκτονική Εικόνα 3.1: Σο λειτουργικό διάγραμμα του MSP430 F1611. Ο MSP430 F1611 περιλαμβάνει μία κεντρικι μονάδα επεξεργαςίασ (CPU) περιοριςμζνου ςετ εντολϊν (RISC) 16 ψθφίων, περιφερειακά και ζνα ευζλικτο ςφςτθμα ρολογιοφ, που διαςυνδζονται χρθςιμοποιϊντασ ζναν κοινό δίαυλο διευκφνςεων μνιμθσ Von- Neumann και ζναν δίαυλο μνιμθσ [7, 8]. Ραντρεφοντασ μια μοντζρνα κεντρικι μονάδα επεξεργαςίασ με αναλογικά και ψθφιακά περιφερειακά, αποτελεί μια εξαιρετικι λφςθ για εφαρμογζσ που διαχειρίηονται ςιματα και των δφο ειδϊν. Τα κφρια χαρακτθριςτικά του μικροελεγκτι είναι: α. Θ αρχιτεκτονικι του χαμθλισ ιςχφοσ αυξάνει τθ ηωι τθσ μπαταρίασ. 0.1 μα ςυγκράτθςθ RAM. 0.8 μα τρόποσ λειτουργίασ πραγματικοφ χρόνου. 25

27 250 μα με ενεργζσ τισ εκατομμφρια εντολζσ ανά δευτερόλεπτο (MIPS). β. Υψθλισ ποιότθτασ αναλογικά (analogs), ιδανικά για μετριςεισ ακριβείασ. 12 ψθφίων A/D μετατροπζασ με δείγματα το δευτερόλεπτο. Διπλόσ D/A μετατροπζασ 12 ψθφίων. Επιτθρθτισ τάςθσ τροφοδοςίασ. Χρονομετρθτζσ ςυγκριτζσ για μζτρθςθ ανκεκτικϊν ςτοιχείων. γ. Θ RISC CPU 16 ψθφίων επιτρζπει νζεσ εφαρμογζσ ςε μικρότερο μζγεκοσ κϊδικα. Μεγάλο αρχείο καταχωρθτϊν. Συμπαγισ ςχεδίαςθ πυρινα που μειϊνει τθν κατανάλωςθ και το κόςτοσ. Βελτιςτοποιθμζνθ για μοντζρνο προγραμματιςμό υψθλοφ επιπζδου. Μόνο 27 εντολζσ πυρινα και 7 τρόποι διευκυνςιοδότθςθσ. Διευρυμζνθ δυνατότθτα διανυςματικϊν διακοπϊν. δ. Ρρογραμματιηόμενθ εντόσ ςυςτιματοσ Flash που επιτρζπει ευζλικτεσ αλλαγζσ κϊδικα, αναβακμίςεισ πεδίων και καταγραφι δεδομζνων. 3.2 Ευζλικτο ςφςτημα ρολογιοφ Το ςφςτθμα ρολογιοφ είναι ειδικά ςχεδιαςμζνο για εφαρμογζσ που χρθςιμοποιοφν μπαταρίεσ. Ζνα βοθκθτικό ρολόι (ACLK) χαμθλισ ςυχνότθτασ οδθγείται κατευκείαν από ζναν κοινό κρφςταλλο 32,768 khz. Το βοθκθτικό ρολόι μπορεί να χρθςιμοποιθκεί ςε λειτουργία αφφπνιςθσ ςτο υπόβακρο. Ζνασ ολοκλθρωμζνοσ ψθφιακά ελεγχόμενοσ ταλαντωτισ υψθλισ ταχφτθτασ (DCO) μπορεί να τροφοδοτιςει το κφριο ρολόι (MCLK) που χρθςιμοποιείται από τθν CPU και τα γριγορα περιφερειακά. Από ςχεδιαςμοφ ο DCO ενεργοποιείται και ςτακεροποιείται ςε λιγότερο από 6 μs. Θ μζγιςτθ ςυχνότθτα ρολογιοφ 26

28 είναι τα 8 MHz. Οι λφςεισ που βαςίηονται ςτον MSP430 F1611 χρθςιμοποιοφν αποτελεςματικά τθν CPU ςε μικρζσ ριπζσ: α. Χαμθλισ ςυχνότθτασ βοθκθτικό ρολόι = Χαμθλισ κατανάλωςθσ λειτουργία αναμονισ β. Υψθλισ ςυχνότθτασ κφριο ρολόι = Υψθλϊν επιδόςεων επεξεργαςία ςθμάτων Τζλοσ υπάρχει και αντικαταςτάτθσ του κφριου ρολογιοφ (SMCLK) που χρθςιμοποιείται από τα περιφερειακά και θ πθγι του είναι ςυνικωσ ζνασ εξωτερικόσ ταλαντωτισ ςτα 8 ΜΘz. Ο εξωτερικόσ ταλαντωτισ είναι μεγάλθσ ακριβείασ, ςε αντίκεςθ με τον DCO που είναι ευαίςκθτοσ ςτθ κερμοκραςία. Για το λόγο αυτό χρθςιμοποιείται και ςαν πθγι του MCLK. Το αρνθτικό είναι ότι ζχει μεγαλφτερο χρόνο ενεργοποίθςθσ. 3.3 Χώροσ διευθφνςεων και μνήμη Θ αρχιτεκτονικι von-neumann του MSP430 F1611 διακζτει ζνα χϊρο διευκφνςεων που διαμοιράηεται μεταξφ των καταχωρθτϊν ειδικισ λειτουργίασ (Special Function Registers), τα περιφερειακά, τθ RAM και τθ Flash/ROM μνιμθ (εικόνα 3.2). Θ προςπζλαςθ του κϊδικα πραγματοποιείται πάντα ςε άρτιεσ διευκφνςεισ. Τα δεδομζνα προςπελαφνονται ςαν λζξεισ ι bytes. Εικόνα 3.2: Ο χάρτθσ μνιμθσ του MSP430 F

29 Θ αρχικι διεφκυνςθ τθσ Flash/ROM μνιμθσ είναι θ 0400h και θ τελικι θ FFFFh οπότε το μζγεκοσ τθσ είναι 48 Kbytes. Θ Flash μπορεί να χρθςιμοποιθκεί και για κϊδικα και για δεδομζνα. Ρίνακεσ byte ι λζξεων μποροφν να αποκθκεφονται ςτθν Flash χωρίσ τθν ανάγκθ να αντιγράφονται ςτθ RAM πριν τθ χριςθ τουσ. Ο πίνακασ διακοπϊν χαρτογραφείται ςτισ υψθλότερεσ 16 λζξεισ, με το υψθλότερθσ προτεραιότθτασ διάνυςμα διακοπισ να βρίςκεται ςτθν υψθλότερθ διεφκυνςθ λζξθσ τθσ Flash/ROM (FFFEh). Τζλοσ θ RAM ξεκινά ςτθ διεφκυνςθ 0200h και το ςυνολικό μζγεκοσ είναι 10 Kbytes. Τα περιφερειακά τμιματα χαρτογραφοφνται και αυτά ςτο χϊρο διευκφνςεων. Ο χϊροσ διευκφνςεων από 0100h ωσ 01FFh είναι δεςμευμζνοσ για τα περιφερειακά τμιματα 16 ψθφίων. Τα τμιματα αυτά πρζπει να προςπελαφνονται με εντολζσ λζξεων. Αν χρθςιμοποιθκοφν εντολζσ byte, μόνο άρτιεσ διευκφνςεισ επιτρζπονται και το υψθλότερο byte του αποτελζςματοσ είναι μθδζν. Ο χϊροσ διευκφνςεων από 010h ωσ 0FFh ανικει ςτα περιφερειακά τμιματα 8 ψθφίων. Μερικζσ λειτουργίεσ περιφερειακϊν ρυκμίηονται ςτουσ SFRs (Special Function Registers). Οι SFRs είναι τοποκετθμζνοι ςτα χαμθλότερα 16 bytes του χϊρου διευκφνςεων και είναι οργανωμζνοι ανά byte. 3.4 Διακοπζσ Οι προτεραιότθτεσ των διακοπϊν είναι προκακοριςμζνεσ και κακορίηονται από τθ διάταξθ των τμθμάτων ςτθν αλυςίδα ςφνδεςθσ που φαίνεται ςτθν εικόνα 3.3. Πςο πιο κοντά βρίςκεται ζνα τμιμα ςτθ CPU/NMIRS, τόςο μεγαλφτερθ προτεραιότθτα ζχει. Οι προτεραιότθτεσ των διακοπϊν ορίηουν ποια διακοπι κα εξυπθρετθκεί, όταν εκκρεμοφν περιςςότερεσ τθσ μίασ. Υπάρχουν τρεισ τφποι διακοπϊν: α. Επανάκεςθ ςυςτιματοσ (Reset). β. Διακοπζσ χωρίσ μάςκα (NMI). γ. Διακοπζσ με μάςκα. Οι διακοπζσ χωρίσ μάςκα δεν χρειάηονται το κακολικό ψθφίο διακοπϊν GIE για να ενεργοποιθκοφν, αλλά ενεργοποιοφνται από 28

30 ξεχωριςτά ψθφία (NMIE,ACCVIE,OFIE). Πταν μια NMI διακοπι γίνεται αποδεκτι, όλα τα ψθφία ενεργοποίθςθσ διακοπϊν χωρίσ μάςκα απενεργοποιοφνται. Θ εκτζλεςθ του προγράμματοσ ξεκινά ςτθ διεφκυνςθ που είναι αποκθκευμζνθ ςτο διάνυςμα διακοπϊν χωρίσ μάςκα ςτθ διεφκυνςθ 0FFFCh. Το πρόγραμμα του χριςτθ κα πρζπει να επανεργοποιιςει τισ διακοπζσ αυτζσ, αν το κζλει. Μία NMI διακοπι μπορεί να παραχκεί από τρεισ πθγζσ: α. Μία αιχμι ςτθν υποδοχι RST/NMI (Reset/NMI) όταν αυτι είναι ρυκμιςμζνθ να λειτουργεί ςαν ΝΜΛ. β. Ζνα ςφάλμα ταλαντωτι (OFIE). γ. Μία παράβαςθ προςπζλαςθσ ςτθν Flash μνιμθ (ACCVIE). Εικόνα 3.3: Προτεραιότθτα διακοπϊν. Οι διακοπζσ με μάςκα προκαλοφνται από περιφερειακά με δυνατότθτα διακοπϊν. Κάκε διακοπι μπορεί να απενεργοποιθκεί από το κατάλλθλο ψθφίο ενεργοποίθςθσ. Πλεσ οι διακοπζσ με μάςκα μποροφν να απενεργοποιθκοφν από το κακολικό ψθφίο ενεργοποίθςθσ διακοπϊν GIE ςτον καταχωρθτι κατάςταςθσ (Status Register). 29

31 3.5 Τρόποι λειτουργίασ Ο MSP430 F1611 είναι ςχεδιαςμζνοσ για εφαρμογζσ χαμθλισ κατανάλωςθσ και χρθςιμοποιεί διάφορουσ τρόπουσ λειτουργίασ (εικόνα 3.4). Οι τρόποι λειτουργίασ λαμβάνουν υπόψθ τρεισ διαφορετικζσ ανάγκεσ: α. Ρολφ χαμθλι κατανάλωςθ. β. Ταχφτθτα και ροι δεδομζνων. γ. Ελαχιςτοποίθςθ τθσ κατανάλωςθσ ρεφματοσ κάκε περιφερειακοφ τμιματοσ. Εικόνα 3.4: Οι τρόποι λειτουργίασ για το βαςικό ςφςτθμα ρολογιοφ. 30

32 Οι τρόποι λειτουργίασ χαμθλισ κατανάλωςθσ (LPM) 0-4 ρυκμίηονται από τα ψθφία CPUOFF,OSCOFF,SCG0 και SCG1 του καταχωρθτι κατάςταςθσ. Το πλεονζκτθμα τθσ ςυμπερίλθψθσ των ψθφίων αυτϊν ςτον καταχωρθτι κατάςταςθσ είναι ότι ο τρζχον τρόποσ λειτουργίασ αποκθκεφεται ςτθ ςτοίβα κατά τθ διάρκεια τθσ εξυπθρζτθςθσ των διακοπϊν. Θ ροι του προγράμματοσ επιςτρζφει ςτον προθγοφμενο τρόπο λειτουργίασ, αν ο αποκθκευμζνοσ ςτθ ςτοίβα καταχωρθτισ κατάςταςθσ δεν αλλάξει τιμι μζςα ςτθ ρουτίνα εξυπθρζτθςθσ διακοπισ. Αν μετά τθν εξυπθρζτθςθ τθσ διακοπισ ο χριςτθσ κζλει να αλλάξει τρόπο λειτουργίασ (για παράδειγμα να ξυπνιςει από κάποιο sleep mode), τότε αρκεί να επζμβει ςτθ ςτοίβα και να αλλάξει τθν τιμι των ψθφίων ελζγχου των τρόπων λειτουργίασ. Πταν μεταβάλλεται οποιοδιποτε ψθφίο ελζγχου, τότε ο επιλεγόμενοσ τρόποσ λειτουργίασ ενεργοποιείται αμζςωσ. Τα περιφερειακά που λειτουργοφν με κάποιο απενεργοποιθμζνο ρολόι, απενεργοποιοφνται μζχρι θ πθγι ρολογιοφ να ενεργοποιθκεί. 3.6 Χρονομετρητζσ Οι δφο χρονομετρθτζσ του MSP430 F1611 είναι 16 ψθφίων. Ο Timer A διακζτει 3 καταχωρθτζσ ςφλλθψθσ και ςφγκριςθσ, ενϊ ο Timer Β διακζτει 7. Κα αναλυκεί θ λειτουργία του Timer Α, γιατί πάνω κάτω και οι δφο ζχουν τισ ίδιεσ δυνατότθτεσ. Ο Timer Α μπορεί να υποςτθρίξει πολλαπλζσ ςυλλιψεισ και ςυγκρίςεισ, εξόδουσ PWM και μετριςεισ χρονικϊν μεςοδιαςτθμάτων. Ζχει εκτεταμζνεσ δυνατότθτεσ διακοπϊν και αυτζσ μποροφν να παραχκοφν είτε από υπερχείλιςθ του χρονομετρθτι, είτε από κάποιον από τουσ καταχωρθτζσ ςφλλθψθσ και ςφγκριςθσ. Τα χαρακτθριςτικά του χρονομετρθτι Timer Α περιλαμβάνουν: α. Αςφγχρονοσ χρονομετρθτισ 16 ψθφίων με τζςςερισ τρόπουσ λειτουργίασ. β. Επιλεγόμενθ και ρυκμιηόμενθ πθγι ρολογιοφ. γ. Τρεισ ρυκμιηόμενουσ καταχωρθτζσ ςφλλθψθσ και ςφγκριςθσ. δ. υκμιηόμενεσ ζξοδοι με δυνατότθτα PWM. 31

33 ε. Αςφγχρονθ αποκικευςθ latching ειςόδων και εξόδων. ςτ. Καταχωρθτισ διανυςμάτων διακοπϊν για γριγορθ αποκωδικοποίθςθ των διακοπϊν. Το μπλοκ διάγραμμα του Timer Α απεικονίηεται ςτθν εικόνα 3.5. Εικόνα 3.5: Μπλοκ διάγραμμα Timer A. Το περιφερειακό τμιμα του TimerΑ ρυκμίηεται από το πρόγραμμα του χριςτθ. Οι ρυκμίςεισ και θ λειτουργία του αναπτφςςονται παρακάτω. Ο καταχωρθτισ χρονομετρθτι TAR αυξάνεται ι μειϊνεται (ανάλογα με τον τρόπο λειτουργίασ) με κάκε αιχμι ανόδου του ςιματοσ ρολογιοφ. Ο καταχωρθτισ TAR μπορεί να εγγραφεί ι να διαβαςτεί από το πρόγραμμα χριςτθ. Επί προςκζτωσ, ο χρονομετρθτισ μπορεί να παράγει ςιμα διακοπισ όταν υπερχειλίηει. 32

34 Θ πθγι ρολογιοφ του χρονομετρθτι μπορεί να προζλκει, είτε από το βοθκθτικό ρολόι (ACLK), είτε από τον αντικαταςτάτθ του κφριου ρολογιοφ (SMCLK), είτε εξωτερικά μζςω των υποδοχϊν TACLK και INCLK. Θ πθγι ρολογιοφ επιλζγεται μζςω των ψθφίων TASSELx και μπορεί να περαςτεί κατευκείαν ςτον χρονομετρθτι ι να διαιρεκεί με 2,4 ι 8 χρθςιμοποιϊντασ τα ψθφία IDx. Ο χρονομετρθτισ ζχει τζςςερεισ τρόπουσ λειτουργίασ: τερματιςμοφ, ανόδου, ςυνεχόμενοσ και ανόδου κακόδου. Θ λειτουργία ανόδου χρθςιμοποιείται, αν θ περίοδοσ χρονομετρθτι πρζπει να είναι διαφορετικι από FFFFh μετριματα. Ο χρονομετρθτισ ςυνεχϊσ μετρά μζχρι τθν τιμι του καταχωρθτι ςφγκριςθσ TACCR0, που κακορίηει τθν περίοδο. Ο αρικμόσ των μετρθμάτων χρονομετρθτι ςε μια περίοδο είναι ίςοσ με TACCR0+1. Πταν θ τιμι του χρονομετρθτι ιςοφται με τθν τιμι TACCR0, τότε το επόμενο μζτρθμα κα είναι ςτο μθδζν. Στθ ςυνεχόμενθ λειτουργία, ο χρονομετρθτισ μετρά ςυνεχόμενα ςτθν τιμι FFFFh και επανεκκινεί από το μθδζν όπωσ φαίνεται ςτθν εικόνα 3.6. Ο καταχωρθτισ ςφλλθψθσ και ςφγκριςθσ TACCR0 λειτουργεί με τον ίδιο τρόπο με τουσ άλλουσ καταχωρθτζσ ςφλλθψθσ και ςφγκριςθσ. Εικόνα 3.6: υνεχόμενθ λειτουργία. Θ ςυνεχόμενθ λειτουργία μπορεί να χρθςιμοποιθκεί για τθν παραγωγι ανεξάρτθτων χρονικϊν μεςοδιαςτθμάτων και ςυχνοτιτων εξόδου. Το επόμενο χρονικό μεςοδιάςτθμα προςτίκεται ςτον επιλεγμζνο καταχωρθτι TACCRx ςτθ ρουτίνα εξυπθρζτθςθσ διακοπισ. Θ εικόνα 3.7 δείχνει δφο ξεχωριςτά χρονικά μεςοδιαςτιματα t0 και t1 που προςτίκενται ςτουσ καταχωρθτζσ ςφλλθψθσ και ςφγκριςθσ. Με αυτό τον τρόπο το χρονικό μεςοδιάςτθμα ελζγχεται από το υλικό χωρίσ 33

35 ςυνζπειεσ από τθ διάρκεια εξυπθρζτθςθσ τθσ διακοπισ. Μζχρι τρία ανεξάρτθτα χρονικά μεςοδιαςτιματα ι ςυχνότθτεσ εξόδου μποροφν να παραχκοφν με τθ χριςθ και των τριϊν καταχωρθτϊν ςφλλθψθσ και ςφγκριςθσ. Εικόνα 3.7: Χρονικά μεςοδιαςτιματα ςυνεχόμενθσ λειτουργίασ. Θ λειτουργία ανόδου κακόδου χρθςιμοποιείται, αν θ περίοδοσ του χρονομετρθτι πρζπει να είναι διαφορετικι των FFFFh μετρθμάτων και αν χρειάηεται παραγωγι ςυμμετρικϊν παλμϊν. Ο χρονομετρθτισ μετρά διαρκϊσ μζχρι τθν τιμι του TACCR0 και πίςω ςτο μθδζν, όπωσ φαίνεται ςτθν εικόνα 3.8. Θ περίοδοσ είναι ίςθ με δφο φορζσ τθν τιμι του TACCR0. Εικόνα 3.8: Λειτουργία ανόδου κακόδου. Θ κατεφκυνςθ μζτρθςθσ αποκθκεφεται. Αυτό επιτρζπει ςτον χρονομετρθτι να ςταματιςει και να επανεκκινιςει ςτθν ίδια κατεφκυνςθ. Στθ λειτουργία ανόδου κακόδου, θ ςθμαία διακοπισ του 34

36 TACCR0 CCIFG και θ ςθμαία διακοπισ τθσ υπερχείλιςθσ TAIFG ενεργοποιοφνται μια φορά ςε κάκε περίοδο και χωρίηονται χρονικά κατά μιςι περίοδο χρονομετρθτι. Θ ςθμαία διακοπισ TACCR0 CCIFG ενεργοποιείται όταν ο χρονομετρθτισ μετρά από τθν τιμι TACCR0-1 ςτθν τιμι TACCR0, ενϊ θ ςθμαία TAIFG ενεργοποιείται όταν ο χρονομετρθτισ ςυμπλθρϊςει το μζτρθμα προσ τα κάτω από τθν τιμι 0001h ςτθν τιμι 0000h. Θ εικόνα 3.9 δείχνει τον κφκλο ενεργοποίθςθσ ςθμαιϊν. Εικόνα 3.9: Κφκλοσ ενεργοποίθςθσ ςθμαιϊν λειτουργίασ ανόδου κακόδου. Στον Timer A ενυπάρχουν τρία πανομοιότυπα τμιματα ςφλλθψθσ και ςφγκριςθσ. Κακζνα απ αυτά μπορεί να χρθςιμοποιθκεί για να αιχμαλωτίςει τα δεδομζνα του χρονομετρθτι ι να παράξει χρονικά μεςοδιαςτιματα. Θ λειτουργία ςφλλθψθσ επιλζγεται όταν το ψθφίο CAP είναι ίςο με τθ μονάδα και χρθςιμοποιείται για να καταγράψει χρονικά γεγονότα. Μπορεί να χρθςιμοποιθκεί για υπολογιςμοφσ ταχφτθτασ ι και για μετριςεισ χρόνου. Οι είςοδοι ςφλλθψθσ CCIxA και CCIxB ςυνδζονται ςε εξωτερικζσ υποδοχζσ ι ςε εςωτερικά ςιματα. Μία ςφλλθψθ ςυμβαίνει ςτθν προεπιλεγμζνθ αιχμι ςιματοσ ειςόδου. Αν ςυμβεί μια ςφλλθψθ, τότε αυτομάτωσ θ τιμι του χρονομετρθτι μεταφζρεται ςτον επιλεγμζνο καταχωρθτι TACCRx και ενεργοποιείται θ ςυνοδευόμενθ ςθμαία διακοπισ CCIFG. Θ λειτουργία ςφγκριςθσ επιλζγεται όταν το ψθφίο CAP είναι ίςο με μθδζν και χρθςιμοποιείται για να παράξει εξόδουσ PWM ι διακοπζσ 35

37 ςε ςυγκεκριμζνα χρονικά διαςτιματα. Πταν ο καταχωρθτισ TAR μετρά ςτθν τιμι του προεπιλεγμζνου καταχωρθτι TACCRx τότε: α. Θ ςθμαία διακοπισ CCIFG ενεργοποιείται. β. Το εςωτερικό ςιμα EQUx = 1. γ. Το ςιμα EQUx επθρεάηει τθν ζξοδο ςφμφωνα με τθν λειτουργία εξόδου. δ. Το ςιμα ειςόδου CCI περνά ςτο flip flop SCCI. Κάκε τμιμα ςφλλθψθσ και ςφγκριςθσ περιλαμβάνει μια μονάδα εξόδου που χρθςιμοποιείται για τθν παραγωγι των παλμϊν εξόδου όπωσ τα ςιματα PWM. Κάκε μονάδα εξόδου ζχει 8 τρόπουσ λειτουργίασ και παράγει ςιματα βαςιηόμενθ ςτα ςιματα EQU0 και EQUx. Ρεριςςότερεσ πλθροφορίεσ μπορεί κάποιοσ να αναηθτιςει ςτα manuals του μικροελεγκτι *7, 8]. 3.7 Α/D (Analog to Digital converter) Το τμιμα A/D υποςτθρίηει γριγορεσ A/D μετατροπζσ 12 ψθφίων. Ρεριλαμβάνει ζναν πυρινα δυαδικισ αναηιτθςθσ (SAR core) 12 ψθφίων, επιλεγόμενο ζλεγχο δειγματολθψίασ, γεννιτρια αναφορϊν και ζναν ενδιάμεςο χϊρο αποκικευςθσ μετατροπϊν και ελζγχου 16 ψθφίων. Ο ενδιάμεςοσ αυτόσ χϊροσ επιτρζπει μζχρι 16 μετατροπζσ και αποκθκεφςεισ ανεξάρτθτων δειγμάτων χωρίσ παρζμβαςθ τθσ κεντρικισ μονάδασ επεξεργαςίασ. Στα χαρακτθριςτικά του A/D τμιματοσ περιλαμβάνονται: α. Μζγιςτοσ ρυκμόσ μετατροπϊν μεγαλφτεροσ των δειγμάτων ανά δευτερόλεπτο. β. Μονότονοσ μετατροπζασ 12 ψθφίων χωρίσ να λείπει κάποιοσ κϊδικασ. γ. Δειγματολθψία και ςυγκράτθςθ με προγραμματιηόμενεσ περιόδουσ δειγματολθψίασ ελεγχόμενεσ από το λογιςμικό ι τουσ χρονομετρθτζσ. δ. Εκκίνθςθ μετατροπισ από λογιςμικό ι χρονομετρθτζσ. 36

38 ε. Επιλεγόμενθ από το λογιςμικό γεννιτρια παραγωγισ αναφορϊν (1.5 ι 2.5 V). ςτ. Επιλεγόμενθ από το λογιςμικό εςωτερικι ι εξωτερικι αναφορά. η. Οχτϊ ξεχωριςτά ρυκμιηόμενα εξωτερικά κανάλια ειςόδου. θ. Κανάλια μετατροπϊν για τον εςωτερικό αιςκθτιρα κερμοκραςίασ, για τθν πθγι ΑVcc και εξωτερικζσ αναφορζσ. κ. Ρθγζσ αναφορϊν ανεξάρτθτεσ του επιλεγμζνου καναλιοφ και για τισ κετικζσ και για τισ αρνθτικζσ αναφορζσ. ι. Επιλεγόμενο ρολόι μετατροπισ. ια. Τζςςερεισ τρόποι μετατροπισ: μονοκαναλικόσ, επαναλαμβανόμενοσ μονοκαναλικόσ, πολυκαναλικόσ και επαναλαμβανόμενοσ πολυκαναλικόσ. ιβ. Ο πυρινασ του A/D και οι αναφορζσ τάςεων μποροφν να απενεργοποιθκοφν ξεχωριςτά. ιγ. Καταχωρθτισ διανυςμάτων διακοπϊν για γριγορθ αποκωδικοποίθςθ 18 διακοπϊν. ιδ. 16 καταχωρθτζσ αποκικευςθσ του αποτελζςματοσ τθσ μετατροπισ. Το μπλοκ διάγραμμα του A/D παρουςιάηεται ςτθν εικόνα Το ρολόι ADC12CLK χρθςιμοποιείται και ςαν ρολόι μετατροπισ, αλλά και ςαν γεννιτρια περιόδου δειγματολθψίασ ςτθ λειτουργία δειγματολθψίασ παλμοφ. Θ πθγι ρολογιοφ επιλζγεται χρθςιμοποιϊντασ τα ψθφία ADC12SSELx και μπορεί να διαιρεκεί δια του 1-8 με τα ψθφία ADC12DIVx. Ρικανζσ πθγζσ είναι οι SMCLK, MCLK, ACLK και ζνασ εςωτερικόσ ταλαντωτισ ADC12OSC που βρίςκεται ςτο εφροσ των 5 MHz. Ο χριςτθσ πρζπει να εγγυθκεί ότι θ πθγι ρολογιοφ κα παραμείνει ενεργι μζχρι τθ λιξθ τθσ δειγματολθψίασ. Τα οχτϊ εξωτερικά και τζςςερα εςωτερικά αναλογικά ςιματα επιλζγονται ωσ κανάλια μετατροπισ από τον πολυπλζκτθ αναλογικϊν ειςόδων. Ο πολυπλζκτθσ ειςόδου εξαςκενεί το κόρυβο αλλαγισ καναλιϊν και είναι επίςθσ ζνασ T-διακόπτθσ για τθν ελαχιςτοποίθςθ τθσ ςφηευξθσ, όπωσ φαίνεται ςτθν εικόνα Τα μθ επιλεγμζνα κανάλια 37

39 απομονϊνονται από τον A/D και ο ενδιάμεςοσ κόμβοσ ςυνδζεται ςτθν αναλογικι γείωςθ (AVss), ζτςι ϊςτε θ παραςιτικι χωρθτικότθτα να γειωκεί. Ο A/D χρθςιμοποιεί τθ μζκοδο ανακατανομισ φόρτιςθσ. Πταν οι είςοδοι αλλαχτοφν εςωτερικά, θ αλλαγι αυτι μπορεί να προκαλζςει μεταβατικά φαινόμενα ςτο ςιμα ειςόδου. Αυτά φκίνουν και ςτακεροποιοφνται, προτοφ προκαλζςουν λανκαςμζνεσ μετατροπζσ. Εικόνα 3.10: Μπλοκ διάγραμμα A/D. Ο A/D είναι ειδικά ςχεδιαςμζνοσ για εφαρμογζσ χαμθλισ κατανάλωςθσ. Πταν δεν μετατρζπει, ο πυρινασ απενεργοποιείται αυτόματα και ενεργοποιείται όταν χρειαςτεί. Επίςθσ και ο ADC12OSC απενεργοποιείται αυτόματα, όταν δεν χρειάηεται. Θ αναφορά δεν απενεργοποιείται αυτόματα, αλλά αυτό μπορεί να ςυμβεί κζτοντασ το ψθφίο REFON ίςο με μθδζν. Πταν ο πυρινασ, ο ταλαντωτισ και θ αναφορά είναι απενεργοποιθμζνεσ, δεν καταναλϊνουν ρεφμα. 38

40 Εικόνα 3.11: Αναλογικόσ πολυπλζκτθσ. Θ μετατροπι ξεκινά με μια ανερχόμενθ μετάβαςθ του ςιματοσ δειγματολθψίασ SHI. Θ πθγι του SHI επιλζγεται με τα ψθφία SHSx και μπορεί να είναι: α. Το ψθφίο ADC12SC (εκκίνθςθ μετατροπισ από λογιςμικό). β. Θ μονάδα εξόδου 1 του Timer A. γ. Θ μονάδα εξόδου 0 του Timer B. δ. Θ μονάδα εξόδου 1 του Timer B. Θ πολικότθτα του ςιματοσ ειςόδου SHI μπορεί να αντιςτραφεί με το ψθφίο ISSH. Το ςιμα SAMPCON ελζγχει τθν περίοδο δειγματολθψίασ και τθν ζναρξθ τθσ μετατροπισ. Μία κατερχόμενθ μετάβαςθ του SAMPCON ξεκινά τθν μετατροπι, που απαιτεί δεκατρείσ κφκλουσ ADC12CLK. Δφο διαφορετικζσ μζκοδοι χρονιςμοφ δειγματολθψίασ κακορίηονται από το ψθφίο SHP: Θ εκτεταμζνθ λειτουργία δειγματολθψίασ και θ λειτουργία δειγματολθψίασ παλμοφ. Θ εκτεταμζνθ λειτουργία δειγματολθψίασ επιλζγεται, όταν SHP=0. Το ςιμα SHI ελζγχει απευκείασ το SAMPCON και κακορίηει τθν περίοδο δειγματολθψίασ. Πταν το SAMPCON είναι υψθλό, θ δειγματολθψία είναι ενεργι. Θ κατερχόμενθ μετάβαςθ του SAMPCON ξεκινά τθν μετατροπι, μετά από ςυγχρονιςμό με το ADC12CLK (εικόνα 3.12). 39

41 Εικόνα 3.12: Εκτεταμζνθ λειτουργία δειγματολθψίασ. Θ λειτουργία δειγματολθψίασ παλμοφ επιλζγεται όταν SHP=1. Το ςιμα SHI διεγείρει τον χρονομετρθτι δειγματολθψίασ. Τα ψθφία SHT0x και SHT1x ςτον καταχωρθτι ADC12CTL0 ελζγχουν το μεςοδιάςτθμα του χρονομετρθτι που κακορίηει τθν περίοδο δειγματολθψίασ. Ο χρονομετρθτισ δειγματολθψίασ κρατά υψθλό το SAMPCON, μετά από ςυγχρονιςμό με το ADC12CLK για τθ δθμιουργία προγραμματιςμζνθσ περιόδου δειγματολθψίασ (εικόνα 3.13). Εικόνα 3.13: Λειτουργία δειγματολθψίασ παλμοφ. Ο A/D λειτουργεί με τζςςερισ διαφορετικοφσ τρόπουσ που επιλζγονται μζςω των ψθφίων CONSEQx: α. Ζνα κανάλι μετατρζπεται μία φορά. 40

42 β. Μία ςειρά καναλιϊν μετατρζπεται μία φορά. γ. Ζνα κανάλι μετατρζπεται ςυνεχϊσ. δ. Μία ςειρά καναλιϊν μετατρζπεται ςυνεχϊσ. 3.8 Ελεγκτήσ DMA (Direct Memory Access) Ο ελεγκτισ άμεςθσ πρόςβαςθσ ςτθ μνιμθ (DMA) μεταφζρει δεδομζνα ανάμεςα ςε διευκφνςεισ ςε όλο το χάρτθ μνιμθσ, χωρίσ τθν παρζμβαςθ τθσ CPU. Για παράδειγμα ο ελεγκτισ DMA μπορεί να μεταφζρει δεδομζνα από τθν μνιμθ μετατροπισ του A/D ςτθ RAM. Θ χριςθ του ελεγκτι DMA αυξάνει τθν ταχφτθτα μεταφοράσ δεδομζνων των περιφερειακϊν. Επίςθσ μειϊνει τθν κατανάλωςθ ενζργειασ, επιτρζποντασ ςτθν CPU να παραμείνει ςε λειτουργία χαμθλισ κατανάλωςθσ χωρίσ να χρειάηεται να περιμζνει για να μεταφζρει τα δεδομζνα από και προσ το περιφερειακό. Τα χαρακτθριςτικά του ελεγκτι DMA περιλαμβάνουν: α. Τρία ανεξάρτθτα κανάλια μεταφοράσ. β. υκμιηόμενεσ προτεραιότθτεσ καναλιϊν. γ. Απαίτθςθ μόνο δφο κφκλων MCLK. δ. Μζγεκοσ μπλοκ μνιμθσ μζχρι byte ι λζξεισ. ε. υκμιηόμενθ επιλογι διζγερςθσ μεταφοράσ. ςτ. Επιλεγόμενθ διζγερςθ μετάβαςθσ ι επιπζδου. η. Τζςςερισ τρόποι διευκυνςιοδότθςθσ. θ. Απλζσ μεταφορζσ, μεταφορζσ μπλοκ και ριπϊν μπλοκ. Το μπλοκ διάγραμμα του ελεγκτι DMA παρουςιάηεται ςτθν εικόνα Ο ελεγκτισ DMA διακζτει τζςςερισ τρόπουσ διευκυνςιοδότθςθσ: α. Κακοριςμζνθ διεφκυνςθ ςε κακοριςμζνθ διεφκυνςθ. β. Κακοριςμζνθ διεφκυνςθ ςε μπλοκ διευκφνςεων. γ. Μπλοκ διευκφνςεων ςε κακοριςμζνθ διεφκυνςθ. δ. Μπλοκ διευκφνςεων ςε μπλοκ διευκφνςεων. 41

43 Εικόνα 3.14: Μπλοκ διάγραμμα ελεγκτι DMA. Οι τρόποι διευκυνςιοδότθςθσ ρυκμίηονται με τα ψθφία ελζγχου DMASRCINCRx και DMADSTINCRx. Τα ψθφία DMASRCINCRx ελζγχουν, αν θ διεφκυνςθ πθγισ αυξάνεται, μειϊνεται ι παραμζνει αμετάβλθτθ μετά από κάκε μεταφορά. Τα ψθφία DMADSTINCRx εκτελοφν ακριβϊσ τισ ίδιεσ ενζργειεσ για τθ διεφκυνςθ προοριςμοφ. 42

44 Ο ελεγκτισ DMA παρζχει ζξι διαφορετικοφσ τρόπουσ μεταφοράσ. Ο τρόποσ μεταφοράσ επιλζγεται ανεξάρτθτα του τρόπου διευκυνςιοδότθςθσ. Στθν απλι μεταφορά κάκε μεταφορά απαιτεί μία διζγερςθ. Το ψθφίο DMAEN μθδενίηεται αυτόματα, όταν ολοκλθρωκοφν DMAxSZ μεταφορζσ. Στθν μεταφορά μπλοκ, απαιτείται μόνο μία διζγερςθ για τθ μεταφορά όλου του μπλοκ. To DMAEN μθδενίηεται ςτο τζλοσ τθσ μεταφοράσ. Στθ μεταφορά ριπϊν μπλοκ θ ενεργθτικότθτα τθσ CPU διαμοιράηεται με μια μεταφορά μπλοκ. Τζλοσ υπάρχουν και οι επαναλαμβανόμενεσ απλζσ, μπλοκ και ριπϊν μπλοκ μεταφορζσ, όπου το ψθφίο DMAEN παραμζνει ενεργό. Ο MSP430 F1611 μπορεί αυτόματα να μετακινιςει δεδομζνα από κάκε καταχωρθτι μνιμθσ του A/D ςε μια άλλθ κζςθ μνιμθσ. Οι μεταφορζσ DMA γίνονται χωρίσ τθν παρζμβαςθ τθσ CPU και ανεξαρτιτωσ οποιαςδιποτε λειτουργίασ χαμθλισ κατανάλωςθσ. Με αυτόν τον τρόπο, κακίςταται δυνατι θ μθ χριςθ τθσ CPU κατά τθ διάρκεια των μετατροπϊν. 3.9 UART (Universal Asynchronous Receiver Transmitter) Στον τρόπο λειτουργίασ του μικροελεγκτι UART, το τμιμα αςφγχρονθσ ςφγχρονθσ λιψθσ μεταφοράσ του μικροελεγκτι μεταδίδει και λαμβάνει δεδομζνα ςε ρυκμό αςφγχρονο με τθν άλλθ ςυςκευι. Ο ςυγχρονιςμόσ για κάκε χαρακτιρα βαςίηεται ςε προεπιλεγμζνο ρυκμό μετάδοςθσ (baud rate) του USART. Οι λειτουργίεσ μετάδοςθσ και λιψθσ χρθςιμοποιοφν τθν ίδια ςυχνότθτα baud rate. Τo τμιμα UART είναι ζνα κομμάτι του περιφερειακοφ USART. Στον αςφγχρονο τρόπο λειτουργίασ, το USART ςυνδζει τον MSP430 F1611 ςε ζνα εξωτερικό ςφςτθμα με τθ βοικεια των υποδοχϊν URXD και UTXD. Θ αςφγχρονθ λειτουργία επιλζγεται όταν το ψθφίο SYNC είναι ίςο με μθδζν. Τα χαρακτθριςτικά του UART περιλαμβάνουν: α. Δεδομζνα 7 ι 8 ψθφίων με άρτια, περιττι ι κακόλου ιςοτιμία. β. Ανεξάρτθτοι καταχωρθτζσ ολίςκθςθσ για λιψθ και μετάδοςθ. 43

45 γ. Ξεχωριςτοί καταχωρθτζσ ενδιάμεςθσ αποκικευςθσ για αποςτολι και λιψθ. δ. Ρρϊτα μεταδίδεται και λαμβάνεται το λιγότερο ςθμαντικό ψθφίο. ε. Ενςωματωμζνεσ λειτουργίεσ αδρανοφσ γραμμισ και ψθφίου διεφκυνςθσ πολυεπεξεργαςίασ. ςτ. Λειτουργία λιψθσ αιχμισ εκκίνθςθσ για αυτόματθ αφφπνιςθ από λειτουργίεσ χαμθλισ κατανάλωςθσ. η. Ρρογραμματιηόμενο baud rate. θ. Σθμαίεσ κατάςταςθσ για εντοπιςμό λακϊν και διευκφνςεων. κ. Ανεξάρτθτεσ διακοπζσ λιψθσ και μετάδοςθσ. Θ εικόνα 3.15 απεικονίηει το περιφερειακό τμιμα USART, όταν είναι ρυκμιςμζνο ςε λειτουργία UART. Εικόνα 3.15: Μπλοκ διάγραμμα UART. 44

46 Ππωσ φαίνεται ςτθν εικόνα 3.16 ζνασ χαρακτιρασ αποτελείται από ζνα ψθφίο εκκίνθςθσ, 7 ι 8 ψθφία δεδομζνων, ζνα ψθφίο ιςοτιμίασ και ζνα ι δφο ψθφία τερματιςμοφ. Θ περίοδοσ ψθφίου κακορίηεται από τθν επιλεγμζνθ πθγι ρολογιοφ κακϊσ και τθν ρφκμιςθ των καταχωρθτϊν baud rate. Εικόνα 3.16: Format χαρακτιρα. Πταν δφο ςυςκευζσ επικοινωνοφν αςφγχρονα χρθςιμοποιοφν τθ λειτουργία αδρανοφσ γραμμισ (idle-line format). Πταν τρεισ ι περιςςότερεσ ςυςκευζσ επικοινωνοφν, το USART υποςτθρίηει και τθ λειτουργία αδρανοφσ γραμμισ αλλά και τθ λειτουργία του ψθφίου διεφκυνςθσ πολυεπεξεργαςίασ (address-bit multiprocessor). Στθν λειτουργία αδρανοφσ γραμμισ τα πλαίςια των δεδομζνων είναι χωριςμζνα από ζναν χρόνο αδράνειασ ςτισ γραμμζσ μετάδοςθσ και λιψθσ. Θ αδρανισ γραμμι εντοπίηεται μόλισ λθφκοφν 10 ι περιςςότερεσ ςυνεχόμενεσ μονάδεσ, μετά το πρϊτο ψθφίο τερματιςμοφ ενόσ χαρακτιρα. Ο πρϊτοσ χαρακτιρασ που λαμβάνεται μετά από μια περίοδο αδράνειασ είναι χαρακτιρασ διεφκυνςθσ. Στθ λειτουργία του ψθφίου διεφκυνςθσ πολυεπεξεργαςίασ κάκε επεξεργάςιμοσ χαρακτιρασ περιζχει ζνα επιπλζον ψθφίο που χρθςιμοποιείται ςαν δείκτθσ διεφκυνςθσ. Ο πρϊτοσ χαρακτιρασ ςε ζνα πλαίςιο δεδομζνων, ζχει το ψθφίο δείκτθ διεφκυνςθσ του ίςο με τθ μονάδα. Αντίκετα οι επόμενοι χαρακτιρεσ που δεν αποτελοφν διεφκυνςθ, ζχουν τα ψθφία δείκτθ διεφκυνςθσ τουσ ίςα με μθδζν. 45

47 Το τμιμα USART προςτατεφεται από ατυχι εκκίνθςθ μζςω πνιγμοφ των αιχμϊν (glitch suppression). Οποιοδιποτε χαμθλό επίπεδο ςτθ γραμμι λιψθσ ςυντομότερο από 300 ns αγνοείται. Πταν μια χαμθλι περίοδοσ ςτθ γραμμι λιψθσ ξεπερνά τα 300 ns, λαμβάνεται μια απόφαςθ πλειοψθφίασ για το ψθφίο εκκίνθςθσ. Αν θ απόφαςθ πλειοψθφίασ αποτφχει να εντοπίςει ζνα ψθφίο εκκίνθςθσ, τότε το τμιμα USART ςταματά τθν λιψθ χαρακτιρων και αναμζνει για τθν επόμενθ χαμθλι περίοδο ςτθν γραμμι λιψθσ. Θ απόφαςθ πλειοψθφίασ χρθςιμοποιείται ςε κάκε ψθφίο, για να αποφευχκοφν λάκθ. Το τμιμα USART εντοπίηει ςφάλματα πλαιςίων (frame errors), υπζρβαςθσ (overrun errors), ιςοτιμίασ (parity errors) και διακοπισ επικοινωνίασ (break conditions). Το ςφάλμα πλαιςίου ςυμβαίνει, όταν εντοπίηεται ζνα χαμθλό ψθφίο τερματιςμοφ και το ςφάλμα ιςοτιμίασ είναι μια κακι αντιςτοιχία των μονάδων ενόσ χαρακτιρα με τθν τιμι του ψθφίου ιςοτιμίασ. Επίςθσ το ςφάλμα υπζρβαςθσ ςυμβαίνει, όταν ζνασ νζοσ χαρακτιρασ λαμβάνεται, χωρίσ ο προθγοφμενοσ να ζχει διαβαςτεί από το buffer ανάγνωςθσ. Τζλοσ, μια κατάςταςθ διακοπισ είναι μια περίοδοσ 10 ι περιςςοτζρων χαμθλϊν ψθφίων μετά από ζνα χαμζνο ψθφίο τερματιςμοφ. Θ γεννιτρια baud rate του τμιματοσ USART είναι ικανι να παράγει κακοριςμζνα baud rate από μθ κακοριςμζνεσ ςυχνότθτεσ ρολογιοφ. Το μζγιςτο baud rate είναι ίςο με το ζνα τρίτο τθσ ςυχνότθτασ ρολογιοφ του τμιματοσ USART BRCLK. Ο χρονιςμόσ για κάκε ψθφίο φαίνεται ςτθν εικόνα Για κάκε ψθφίο που λαμβάνεται, παίρνεται μια απόφαςθ πλειοψθφίασ ςτισ περιόδουσ Ν/2-1,Ν/2,Ν/2+1 του ρολογιοφ του USART BRCLK, όπου Ν είναι ο αρικμόσ των παλμϊν ρολογιοφ για κάκε ψθφίο. Το περιφερειακό τμιμα USART διακζτει ζνα διάνυςμα διακοπισ για αποςτολι και ζνα για λιψθ. Θ ςθμαία διακοπισ αποςτολισ UTXIFGx ενεργοποιείται μόλισ ο καταχωρθτισ ενδιάμεςθσ αποκικευςθσ UxTXBUF είναι ζτοιμοσ να δεχτεί νζο χαρακτιρα προσ αποςτολι. Ραράγεται μια αίτθςθ διακοπισ, αν τα ψθφία UTXIEx και GIE είναι 46

48 ενεργοποιθμζνα. Θ ςθμαία UTXIFGx απενεργοποιείται αυτόματα, αν θ αίτθςθ διακοπισ εξυπθρετθκεί ι αν κάποιοσ χαρακτιρασ γραφεί ςτον UxTXBUF. Θ λειτουργία επιδεικνφεται ςτθν εικόνα Εικόνα 3.17: Χρονιςμόσ bit. Εικόνα 3.18: Λειτουργία διακοπισ αποςτολισ. Θ ςθμαία διακοπισ λιψθσ URXIFGx ενεργοποιείται κάκε φορά που ζνασ χαρακτιρασ λαμβάνεται και φορτϊνεται ςτον καταχωρθτι ενδιάμεςθσ αποκικευςθσ UxRXBUF. Ραράγεται μια αίτθςθ διακοπισ, αν τα ψθφία URXIEx και GIE είναι ενεργοποιθμζνα. Θ ςθμαία URXIFGx απενεργοποιείται αυτόματα μόλισ θ διακοπι εξυπθρετθκεί (όταν URXSE=0) ι διαβαςτεί ο UxRXBUF. Το ψθφίο URXEIE χρθςιμοποιείται 47

49 για να επιτρζψει ι να αποτρζψει λανκαςμζνουσ χαρακτιρεσ, από το να ενεργοποιοφν τθν URXIFGx. Πταν χρθςιμοποιοφμε λειτουργία ψθφίου διεφκυνςθσ πολυεπεξεργαςίασ, το ψθφίο URXWIE χρθςιμοποιείται για να εντοπίηονται αυτόματα οι χαρακτιρεσ ζγκυρων διευκφνςεων και να απορρίπτονται ανεπικφμθτοι χαρακτιρεσ δεδομζνων. Στθν εικόνα 3.19 επιδεικνφεται θ λειτουργία τθσ διακοπισ λιψθσ Ι 2 C (inter-ic) Η γενική ιδζα του Ι 2 C Εικόνα 3.19: Λειτουργία διακοπισ λιψθσ. Το Λ 2 C υποςτθρίηει οποιαδιποτε διαδικαςία κατεργαςίασ (NMOS, CMOS, διπολικι). Δφο αγωγοί, τα ςειριακά δεδομζνα (SDA) και το ςειριακό ρολόι (SCK) κρατοφν τθν πλθροφορία ανάμεςα ςτισ ςυςκευζσ που είναι ςυνδεμζνεσ ςτο δίαυλο. Κάκε ςυςκευι αναγνωρίηεται από μία μοναδικι διεφκυνςθ (είτε είναι μικροελεγκτισ, είτε οδθγόσ LCD, είτε μνιμθ, είτε διαςφνδεςθ πλθκτρολογίου) και μπορεί να λειτουργιςει ωσ πομπόσ ι δζκτθσ, ανάλογα με τθ λειτουργία τθσ ςυςκευισ. Ρροφανϊσ ζνασ οδθγόσ LCD μπορεί να είναι μόνο δζκτθσ, ενϊ μία μνιμθ μπορεί και να εκπζμπει αλλά και να λαμβάνει δεδομζνα. Επί προςκζτωσ, οι ςυςκευζσ μποροφν να κεωρθκοφν ωσ κφριοι (masters) και δοφλοι (slaves), όταν εκτελοφν μεταφορζσ δεδομζνων. Ο κφριοσ είναι θ ςυςκευι που ειςάγει μια μεταφορά δεδομζνων ςτο δίαυλο και παρζχει τα ςιματα ρολογιοφ για να επιτραπεί θ μεταφορά. 48

50 Εκείνθ τθ ςτιγμι, όποια ςυςκευι διευκυνςιοδοτείται κεωρείται δοφλοσ [9]. Ο δίαυλοσ Λ 2 C μπορεί να δεχτεί πολλοφσ κυρίουσ. Αυτό ςθμαίνει ότι περιςςότερεσ από μία ςυςκευζσ ικανζσ να ελζγξουν τον δίαυλο μπορεί να είναι ςυνδεμζνεσ ςε αυτόν. Αφοφ οι κφριοι είναι ςυνικωσ μικροελεγκτζσ, παρακάτω κα δείξουμε τθν περίπτωςθ μεταφοράσ δεδομζνων μεταξφ δφο μικροελεγκτϊν που είναι ςυνδεμζνοι ςε ζναν δίαυλο Λ 2 C. Αυτό κα υπογραμμίςει τισ ςχζςεισ κυρίου-δοφλου και πομποφ-δζκτθ που ενυπάρχουν ςτον δίαυλο Λ 2 C. Κα πρζπει να τονιςτεί ότι αυτζσ οι ςχζςεισ δεν είναι μόνιμεσ, αλλά εξαρτϊνται από τθν κατεφκυνςθ ροισ δεδομζνων ςε κάκε ςτιγμι. Θ μεταφορά δεδομζνων εξελίςςεται ωσ εξισ: α. Υποκζςτε ότι ο μικροελεγκτισ Α κζλει να ςτείλει πλθροφορία ςτον μικροελεγκτι Β : Ο μικροελεγκτισ Α (κφριοσ) διευκυνςιοδοτεί τον μικροελεγκτι Β (δοφλοσ). Ο μικροελεγκτισ Α (κφριοσ-πομπόσ) ςτζλνει δεδομζνα ςτον μικροελεγκτι Β (δοφλοσ-δζκτθσ). Ο μικροελεγκτισ Α τερματίηει τθν μεταφορά. β. Αν ο μικροελεγκτισ Α κζλει να λάβει πλθροφορία από τον μικροελεγκτι Β : Ο μικροελεγκτισ Α (κφριοσ) διευκυνςιοδοτεί τον μικροελεγκτι Β (δοφλοσ). Ο μικροελεγκτισ Α (κφριοσ-δζκτθσ) λαμβάνει δεδομζνα από τον μικροελεγκτι Β (δοφλοσ-πομπόσ). Ο μικροελεγκτισ Α τερματίηει τθν μεταφορά. Ακόμθ και ς αυτι τθν περίπτωςθ ο κφριοσ παρζχει τον ςυγχρονιςμό και τερματίηει τθν μεταφορά. Θ πικανότθτα τθσ ςφνδεςθσ περιςςοτζρων του ενόσ μικροελεγκτϊν ςτον δίαυλο Λ 2 C, ςθμαίνει ότι περιςςότεροι του ενόσ κφριοι μποροφν να προςπακιςουν να ξεκινιςουν μια μεταφορά 49

51 δεδομζνων τθν ίδια χρονικι ςτιγμι. Για τθν αποφυγι του χάουσ που μπορεί να προκφψει από ζνα τζτοιο γεγονόσ, ζχει αναπτυχκεί μία διαδικαςία. Θ διαδικαςία αυτι ςτθρίηεται ςτθν AND-καλωδίωςθ όλων των διαςυνδζςεων Λ 2 C, ςε ζναν δίαυλο Λ 2 C. Αν δφο ι περιςςότεροι κφριοι προςπακιςουν να τοποκετιςουν πλθροφορία ςτον δίαυλο, ο πρϊτοσ που κα παράξει μονάδα όταν ο άλλοσ παράξει μθδζν κα χάςει τθ διαιτθςία. Τα ςιματα ρολογιοφ κατά τθ διάρκεια τθσ διαιτθςίασ είναι ζνασ ςυγχρονιςμζνοσ ςυνδυαςμόσ των ρολογιϊν όλων των κυρίων, χρθςιμοποιϊντασ τθν AND-καλωδίωςθ ςτθν γραμμι SCL. Θ παραγωγι των ςθμάτων ρολογιοφ ςτον δίαυλο είναι πάντα ευκφνθ των κυρίων. Τα ςιματα ρολογιοφ ενόσ κυρίου μποροφν να τροποποιθκοφν μόνο όταν ζνασ αργόσ δοφλοσ κρατά χαμθλά τθν γραμμι ρολογιοφ ι όταν πραγματοποιείται διαιτθςία. Και οι δφο γραμμζσ (SCL και SDA) είναι αμφίδρομεσ και είναι ςυνδεμζνεσ ςε μία κετικι τάςθ μζςω μιασ πθγισ ρεφματοσ ι ενόσ pullup αντιςτάτθ. Πταν ο δίαυλοσ είναι ελεφκεροσ, και οι δφο γραμμζσ είναι υψθλζσ (high). Τα τμιματα εξόδου των ςυςκευϊν που είναι ςυνδεμζνεσ ςτο δίαυλο πρζπει να ζχουν ανοιχτό ςυλλζκτθ ι ανοιχτι εκροι για να πραγματοποιιςουν τθν καλωδιωμζνθ AND λειτουργία. Τα δεδομζνα ςε ζναν δίαυλο Λ 2 C μποροφν να μεταφερκοφν με ρυκμοφσ ωσ 100 Kbps ςε κανονικι λειτουργία, ωσ 400 Kbps ςε γριγορθ λειτουργία και ωσ 3.4 Mbps ςε λειτουργία υψθλισ ταχφτθτασ. Ο αρικμόσ των διαςυνδζςεων ςτο δίαυλο εξαρτάται από τθν χωρθτικότθτα του διαφλου που ζχει ζνα όριο 400 pf. Τα δεδομζνα ςτθν γραμμι SDA πρζπει να παραμείνουν αμετάβλθτα κατά τθ διάρκεια τθσ υψθλισ περιόδου του ρολογιοφ. Θ υψθλι ι χαμθλι κατάςταςθ τθσ γραμμισ δεδομζνων μπορεί να αλλάξει μόνον όταν το ςιμα ρολογιοφ τθσ SCL είναι χαμθλό (εικόνα 3.20). Μζςα ςε μια διαδικαςία ςε ζναν δίαυλο Λ 2 C εμφανίηονται μοναδικζσ περιπτϊςεισ που ορίηονται ωσ καταςτάςεισ εκκίνθςθσ (START S) και τερματιςμοφ (STOP P). Mια μετάβαςθ από ψθλά ςε χαμθλά (high to low) ςτθν γραμμι SDA, κακϊσ θ SCL είναι υψθλι, είναι μια 50

52 μοναδικι περίπτωςθ και επιδεικνφει μια κατάςταςθ εκκίνθςθσ. Μία μετάβαςθ από χαμθλά ςε ψθλά ςτθν γραμμι SDA κακϊσ θ SCL είναι υψθλι επιδεικνφει μια κατάςταςθ τερματιςμοφ. Οι καταςτάςεισ εκκίνθςθσ και τερματιςμοφ παράγονται πάντα από τον κφριο. Ο δίαυλοσ κεωρείται απαςχολθμζνοσ μετά από μια κατάςταςθ εκκίνθςθσ και απελευκερϊνεται μετά από μια κατάςταςθ τερματιςμοφ. Οι καταςτάςεισ εκκίνθςθσ και τερματιςμοφ παρουςιάηονται ςτθν εικόνα Εικόνα 3.20: Μεταφορά bit ςτο δίαυλο I 2 C. Εικόνα 3.21: Καταςτάςεισ εκκίνθςθσ και τερματιςμοφ. Κάκε byte ςτθν γραμμι SDA πρζπει να ζχει μικοσ 8 ψθφίων. Ο αρικμόσ των bytes που μπορεί να μεταδοκεί ςε μια μεταφορά είναι απεριόριςτοσ. Κάκε byte πρζπει να ακολουκείται από ζνα ψθφίο επιβεβαίωςθσ. Τα δεδομζνα μεταφζρονται με το πιο ςθμαντικό ψθφίο να είναι πρϊτο (εικόνα 3.22). Αν ζνασ δοφλοσ δεν μπορεί να δεχτεί ι να ςτείλει δεδομζνα μζχρι να εκτελζςει κάποια άλλθ λειτουργία, τότε 51

53 κρατϊντασ τθν γραμμι ρολογιοφ χαμθλά αναγκάηει τον κφριο να περιμζνει. Εικόνα 3.22: Μεταφορά δεδομζνων ςτον δίαυλο I 2 C. Θ μεταφορά δεδομζνων με επιβεβαίωςθ είναι υποχρεωτικι. Ο παλμόσ επιβεβαίωςθσ παράγεται από τον κφριο. Ο εκπομπόσ απελευκερϊνει τθ γραμμι δεδομζνων (high) κατά τθ διάρκεια του παλμοφ επιβεβαίωςθσ. Ο δζκτθσ πρζπει να χαμθλϊςει τθ γραμμι δεδομζνων κατά τθ διάρκεια του παλμοφ επιβεβαίωςθσ, ζτςι ϊςτε να παραμείνει αμετάβλθτα χαμθλι κατά τθν υψθλι περίοδο του παλμοφ ρολογιοφ (εικόνα 3.23). Εικόνα 3.23: Επιβεβαίωςθ ςτο δίαυλο I 2 C. Συνικωσ ο δζκτθσ που ζχει διευκυνςιοδοτθκεί είναι υποχρεωμζνοσ να παράξει επιβεβαίωςθ μετά από κάκε byte που ζχει 52

54 λάβει. Πταν ζνασ δοφλοσ δεν επιβεβαιϊςει τθν διεφκυνςθ δοφλου του, τότε θ γραμμι δεδομζνων πρζπει να μείνει υψθλι από τον δοφλο. Στθ ςυνζχεια ο κφριοσ μπορεί να παράξει μία κατάςταςθ τερματιςμοφ ι μια επαναλαμβανόμενθ κατάςταςθ εκκίνθςθσ, για να εκκινιςει μία νζα μεταφορά. Αν ζνασ δοφλοσ δζκτθσ επιβεβαιϊςει τθ διεφκυνςθ δοφλου, αλλά αργότερα δεν μπορεί να λάβει κάποια δεδομζνα, ο κφριοσ πρζπει να διακόψει τθ μεταφορά δεδομζνων. Αυτό επιδεικνφεται, αν ο δοφλοσ δεν επιβεβαιϊςει το πρϊτο byte που ακολουκεί. Ο δοφλοσ αφινει τθν γραμμι δεδομζνων ψθλά και ο κφριοσ παράγει μία κατάςταςθ επαναλαμβανόμενθσ εκκίνθςθσ ι τερματιςμοφ. Αν ςτθ μεταφορά ςυμμετζχει ζνασ κφριοσ-δζκτθσ, πρζπει να ςθματοδοτιςει το τζλοσ των δεδομζνων ςτον δοφλο-πομπό, μθ παράγοντασ το ψθφίο επιβεβαίωςθσ ςτο τελευταίο byte. Ο δοφλοσπομπόσ τότε πρζπει να απελευκερϊςει τθ γραμμι δεδομζνων, επιτρζποντασ ςτον κφριο να παράξει μία κατάςταςθ τερματιςμοφ ι επαναλαμβανόμενθσ εκκίνθςθσ. Στον δίαυλο Λ 2 C οι διευκφνςεισ μπορεί να είναι είτε 7, είτε 10 ψθφίων. Εδϊ κα αναφζρουμε ςυνοπτικά τθ λειτουργία των 7 ψθφίων που ζχει χρθςιμοποιθκεί ςτθ διαςφνδεςθ Λ 2 C που υλοποιείται ςτθν εφαρμογι μασ, για τθν επικοινωνία του μικροελεγκτι και των αιςκθτιρων κερμοκραςίασ και φωτεινότθτασ. Για πλθροφορίεσ ςχετικά με τθ διευκυνςιοδότθςθ 10 ψθφίων ο αναγνϊςτθσ μπορεί να ανατρζξει ςτισ προδιαγραφζσ του διαφλου Λ 2 C [9]. Οι μεταφορζσ δεδομζνων ακολουκοφν τον τρόπο που επιδεικνφεται ςτθν εικόνα Μετά από μία κατάςταςθ εκκίνθςθσ, αποςτζλλεται θ διεφκυνςθ δοφλου. Θ διεφκυνςθ αυτι είναι 7 ψθφίων και ακολουκείται από ζνα όγδοο ψθφίο κατεφκυνςθσ δεδομζνων (ανάγνωςθσ/εγγραφισ R/W). Αν αυτό το ψθφίο είναι μθδζν επιδεικνφει μια εκπομπι, ενϊ αν είναι μονάδα επιδεικνφει αίτθμα λιψθσ δεδομζνων. Μία μεταφορά δεδομζνων τερματίηεται πάντα από μια κατάςταςθ τερματιςμοφ. Ραρόλα αυτά αν ζνασ κφριοσ επικυμεί ακόμα να επικοινωνιςει με το δίαυλο, μπορεί να παράξει μια 53

55 επαναλαμβανόμενθ κατάςταςθ εκκίνθςθσ (Start Repeated SR) και να διευκυνςιοδοτιςει ζναν άλλο δοφλο χωρίσ να χρειάηεται θ κατάςταςθ τερματιςμοφ. Ζτςι μποροφν να προκφψουν πολλοί ςυνδυαςμοί ανάγνωςθσ/εγγραφισ. Εικόνα 3.24: Μια ολόκλθρθ μεταφορά δεδομζνων ςτο δίαυλο I 2 C. Ρικανοί τφποι μεταφοράσ δεδομζνων είναι: α. Ο κφριοσ-εκπομπόσ μεταδίδει ςτον δοφλο-δζκτθ. Θ κατεφκυνςθ τθσ μεταφοράσ δεν αλλάηει (εικόνα 3.25). β. Ο κφριοσ διαβάηει τον δοφλο αμζςωσ μετά το πρϊτο byte (εικόνα 3.26). Τθ χρονικι ςτιγμι τθσ πρϊτθσ επιβεβαίωςθσ, ο κφριοσ-εκπομπόσ γίνεται κφριοσ-δζκτθσ και ο δοφλοσ-δζκτθσ δοφλοσ-εκπομπόσ. Θ πρϊτθ επιβεβαίωςθ παράγεται από τον δοφλο. Θ κατάςταςθ τερματιςμοφ παράγεται από τον κφριο, ο οποίοσ προθγουμζνωσ ζχει αποςτείλει μία μθ επιβεβαίωςθ. γ. Κατά τθ διάρκεια μιασ αλλαγισ κατεφκυνςθσ ςε μία μεταφορά (εικόνα 3.27), θ κατάςταςθ εκκίνθςθσ και θ διεφκυνςθ δοφλου επαναλαμβάνονται με το ψθφίο ανάγνωςθσ/εγγραφισ αντιςτραμμζνο. Αν ζνασ κφριοσ-εκπομπόσ ςτείλει μια επαναλαμβανόμενθ κατάςταςθ εκκίνθςθσ, τότε προθγουμζνωσ ζχει ςτείλει μία μθ επιβεβαίωςθ. 54

56 Εικόνα 3.25: Ζνασ κφριοσ-εκπομπόσ διευκυνςιοδοτεί ζναν δοφλο-δζκτθ με διεφκυνςθ 7 ψθφίων. Η φορά τθσ μεταφοράσ δεν αλλάηει. Εικόνα 3.26: Ζνασ κφριοσ διαβάηει το δοφλο αμζςωσ μετά το πρϊτο byte. Εικόνα 3.27: υνδυαςμζνθ μεταφορά Ο δίαυλοσ διαχείριςησ ςυςτήματοσ (SMBus) Ο δίαυλοσ διαχείριςθσ ςυςτιματοσ είναι μια διςφρματθ διαςφνδεςθ μζςω διαφόρων ςτοιχείων ενόσ ςυςτιματοσ [10]. Τα διάφορα chips μποροφν να επικοινωνοφν μεταξφ τουσ και με το 55

57 υπόλοιπο ςφςτθμα. Βαςίηεται ςτισ αρχζσ τθσ διαςφνδεςθσ Λ 2 C. Οι διαφορζσ ζγκεινται κυρίωσ ςτισ θλεκτρικζσ και χρονικζσ προδιαγραφζσ και ςτθ γενικι περίπτωςθ το SMBus είναι υποςφνολο του Λ 2 C. Πμωσ υπάρχει και μία ακόμθ διαφορά που ζχει εξαιρετικι ςθμαςία και ςχετίηεται με τθν επιβεβαίωςθ και τθ μθ επιβεβαίωςθ (ACK και NACK). Στο Λ 2 C ζνασ δοφλοσ-δζκτθσ επιτρζπεται να μθν επιβεβαιϊςει τθν διεφκυνςθ δοφλου του, αν για παράδειγμα είναι απαςχολθμζνοσ ςε μια εργαςία πραγματικοφ χρόνου. Το SMBus απαιτεί οι ςυςκευζσ να επιβεβαιϊνουν τθ διεφκυνςθ τουσ ζτςι ϊςτε να υπάρχει ζνασ μθχανιςμόσ που κα εντοπίηει τθν παρουςία ςτο δίαυλο μιασ αφαιροφμενθσ ςυςκευισ. Επίςθσ ςτο Λ 2 C μία ςυςκευι δοφλοσ μπορεί κατά τθ διάρκεια τθσ μεταφοράσ να αποφαςίςει ότι δεν κζλει να λάβει άλλα bytes. Το Λ 2 C προδιαγράφει ότι ςε αυτι τθν περίπτωςθ θ ςυςκευι πρζπει να μθν επιβεβαιϊςει το επόμενο byte. Στο SMBus προςτίκεται και κάτι ακόμα. Το SMBus χρθςιμοποιεί τον μθχανιςμό μθ επιβεβαίωςθσ για να δείξει και ότι υπιρξε εςφαλμζνθ λιψθ δεδομζνων ι εντολϊν. Αφοφ κάτι τζτοιο μπορεί να ςυμβεί ακόμα και ςτο τελευταίο byte, είναι απαραίτθτο οι ςυςκευζσ που χρθςιμοποιοφν το SMBus να ζχουν τθ δυνατότθτα να μθν επιβεβαιϊνουν οποιοδιποτε byte μζχρι τθ λιξθ τθσ μεταφοράσ Το I 2 C ςτον MSP430 F1611 Το τμιμα I 2 C παρζχει μία διαςφνδεςθ μεταξφ του μικροελεγκτι και των ςυμβατϊν με το I 2 C ςυςκευϊν που είναι ςυνδεμζνεσ ςτον διςφρματο ςειριακό δίαυλο. Εξωτερικά εξαρτιματα που είναι ςυνδεμζνα ςτο δίαυλο μποροφν να μεταδίδουν ι να λαμβάνουν δεδομζνα επί τθσ κακολικισ ςφγχρονθσ αςφγχρονθσ λιψθσ και μετάδοςθσ (USART) μζςω τθσ διςφρματθσ διαςφνδεςθσ I 2 C. Το τμιμα I 2 C ζχει τα ακόλουκα χαρακτθριςτικά: α. Συμβατότθτα ςτισ προδιαγραφζσ τθσ Philips. β. Γενικι κλιςθ ςε όλεσ τισ διευκφνςεισ. γ. Τρόποσ μεταφοράσ ςε byte ι λζξεισ των δφο bytes. 56

58 δ. Διευκυνςιοδότθςθ 7 και 10 ψθφίων. ε. Καταςτάςεισ εκκίνθςθσ, επαναλαμβανόμενθσ εκκίνθςθσ και τερματιςμοφ. ςτ. Τρόποσ λειτουργίασ με πολλοφσ κυρίουσ-εκπομποφσ και δοφλουσ-δζκτεσ αλλά και το αντίςτροφο. η. Συνδυαςμζνθ λειτουργία κυρίου εκμομποφ/δζκτθ αλλά και το αντίςτροφο. θ. Υποςτιριξθ κανονικοφ τρόπου λειτουργίασ (ωσ 100 Kbps) αλλά και γριγορου (ωσ 400 Kbps). κ. Καταςκευαςμζνοσ ςε FIFO (πρϊτοσ μζςα πρϊτοσ ζξω) για ανάγνωςθ και εγγραφι με ενδιάμεςθ αποκικευςθ. ι. Ρρογραμματιηόμενο ρολόι. ια. Αυτόματοσ μετρθτισ bytes. ιβ. Σχεδιαςμζνο για χαμθλι κατανάλωςθ. ιγ. Πταν ο μικροελεγκτισ είναι προγραμματιςμζνοσ να λειτουργεί ςαν δοφλοσ, τότε υπάρχει δυνατότθτα για αυτόματο ξφπνθμα από τρόπουσ λειτουργίασ χαμθλισ κατανάλωςθσ, με εντοπιςμό τθσ κατάςταςθσ εκκίνθςθσ. ιδ. Μεγάλθ διακεςιμότθτα διακοπϊν. Το μπλοκ διάγραμμα του I 2 C απεικονίηεται ςτθν εικόνα Πταν θ εςωτερικι πθγι ρολογιοφ του τμιματοσ I 2 C είναι ενεργι, τότε το τμιμα λειτουργεί κανονικά ανεξάρτθτα από τον τρόπο λειτουργίασ του μικροελεγκτι. Πταν όμωσ για οποιοδιποτε λόγο το ρολόι ζχει απενεργοποιθκεί (ςυνικωσ με ειςαγωγι ςε τρόπουσ λειτουργίασ χαμθλισ κατανάλωςθσ), υπάρχει δυνατότθτα αυτόματθσ ενεργοποίθςθσ ρολογιοφ όποτε απαιτείται. Επίςθσ όταν το τμιμα I 2 C είναι ςε κατάςταςθ αδράνειασ, τότε θ πθγι ρολογιοφ αποςυνδζεται αυτόματα για εξοικονόμθςθ ενζργειασ. Πταν το τμιμα I 2 C ενεργοποιεί ζνα απενεργοποιθμζνο ρολόι, τότε το ρολόι αυτό ενεργοποιείται για κάκε περιφερειακό που το χρθςιμοποιεί. Εδϊ χρειάηεται προςοχι, διότι για παράδειγμα ζνασ χρονομετρθτισ που χρθςιμοποιεί το ρολόι αυτό κα ξεκινιςει να μετρά. 57

59 Εικόνα 3.28: Μπλοκ διάγραμμα I 2 C. Το τμιμα I 2 C διακζτει ζνα διάνυςμα διακοπισ για οκτϊ ςθμαίεσ διακοπϊν. Κάκε ςθμαία ζχει το δικό τθσ ψθφίο ενεργοποίθςθσ. Πταν μια διακοπι ενεργοποιείται και το ψθφίο GIE του καταχωρθτι κατάςταςθσ είναι επίςθσ ενεργοποιθμζνο, τότε θ ςθμαία διακοπισ προκαλεί μια αίτθςθ διακοπισ. Οι οκτϊ πικανζσ διακοπζσ είναι οι εξισ: α. Διακοπι χαμζνθσ διαιτθςίασ (ALIFG). β. Διακοπι μθ επιβεβαίωςθσ (NACKIFG). γ. Διακοπι προςωπικισ διεφκυνςθσ (OAIFG). δ. Διακοπι πρόςβαςθσ καταχωρθτϊν (ARDYIFG). ε. Διακοπι λιψθσ (RXRDYIFG). ςτ. Διακοπι αποςτολισ (TXRDYIFG). 58

60 η. Διακοπι γενικισ κλιςθσ (GCIFG). θ. Διακοπι ανίχνευςθσ κατάςταςθσ εκκίνθςθσ (STTIFG). 59

61 Κεφάλαιο 4 Αιςθητήρεσ 4.1 Ο αιςθητήρασ θερμοκραςίασ TMP101 τησ Burr- Brown Ο TMP101 είναι ζνασ αιςκθτιρασ κερμοκραςίασ με διςφρματθ ςειριακι ζξοδο [11]. Δίχωσ να χρειάηεται εξωτερικά εξαρτιματα, είναι ικανόσ να διαβάηει κερμοκραςίεσ με ανάλυςθ (resolution) ο C. Είναι ςυμβατόσ με διαςφνδεςθ I 2 C και SMBus και προςφζρει λειτουργία SMBus προειδοποίθςθσ με τρεισ ςυςκευζσ ανά δίαυλο. Είναι ιδανικόσ για εκτεταμζνεσ μετριςεισ ςε εφαρμογζσ που ςχετίηονται με επικοινωνίεσ, υπολογιςτζσ, βιομθχανίεσ, καταναλωτζσ, περιβάλλον και καταςκευι οργάνων (instrumentation). Τζλοσ ζχει κακοριςτεί να λειτουργεί ςε κερμοκραςίεσ από -55 ωσ 125 ο C. Ο TMP101 δεν απαιτεί εξωτερικά ςτοιχεία λειτουργίασ εκτόσ από pull-up αντιςτάτεσ ςτισ SCL, SDA και ΑLERT υποδοχζσ, παρόλο που ςυνίςταται ζνασ πυκνωτισ παράκαμψθσ 0.1μF όπωσ φαίνεται ςτθν εικόνα 4.1. Εικόνα 4.1: Συπικζσ ςυνδζςεισ ςτον TMP

62 Θ ςυςκευι αίςκθςθσ του TMP101 είναι όλο το chip από μόνο του. Κερμικά μονοπάτια δθμιουργοφνται μζςω των αγωγϊν τθσ ςυςκευαςίασ κακϊσ και τθσ πλαςτικισ ςυςκευαςίασ. Θ χαμθλι κερμικι αντίςταςθ του μετάλλου κάνει τουσ αγωγοφσ να παρζχουν το πρωτεφον κερμικό μονοπάτι. Θ υποδοχι γείωςθσ του TMP101 είναι κατευκείαν ςυνδεμζνθ ςε μεταλλικό ςϊμα αγωγοφ και αποτελεί τθν καλφτερθ επιλογι για κερμικι είςοδο. Θ εικόνα 4.2 δείχνει τθν εςωτερικι δομι καταχωρθτϊν. Ο καταχωρθτισ δείκτθσ 8 ψθφίων χρθςιμοποιείται για να διευκυνςιοδοτιςει ζναν δεδομζνο καταχωρθτι δεδομζνων. Χρθςιμοποιεί τα δφο λιγότερο ςθμαντικά ψθφία για να αναγνωρίςει ποιοσ από τουσ καταχωρθτζσ δεδομζνων πρζπει να απαντιςει ςε μία εντολι ανάγνωςθσ ι εγγραφισ. Ο πίνακασ 4.1 δείχνει τα ψθφία του καταχωρθτι δείκτθ ενϊ ο πίνακασ 4.2 περιγράφει τισ διευκφνςεισ δείκτθ των καταχωρθτϊν που είναι διακζςιμοι ςτον TMP101. Οι καταχωρθτζσ δεδομζνων είναι τζςςερισ : κερμοκραςίασ, διευκζτθςθσ, χαμθλοφ ορίου κερμοκραςίασ και υψθλοφ ορίου κερμοκραςίασ. Εικόνα 4.2: Εςωτερικι δομι καταχωρθτϊν ςτον TMP

63 Πίνακασ 4.1: Καταχωρθτισ δείκτθσ. Πίνακασ 4.2: Διευκφνςεισ δείκτθ καταχωρθτϊν. Ο καταχωρθτισ κερμοκραςίασ είναι ζνασ καταχωρθτισ 12 ψθφίων μόνον ανάγνωςθσ που αποκθκεφει το αποτζλεςμα τθσ πιο πρόςφατθσ μετατροπισ. Δφο bytes πρζπει να διαβαςτοφν για τθν απόκτθςθ των δεδομζνων όπωσ περιγράφεται ςτουσ πίνακεσ 4.3 και 4.4. Τα πρϊτα 12 ψθφία κακορίηουν τθ κερμοκραςία ενϊ τα υπόλοιπα είναι μθδενικά. Ο τρόποσ αποκικευςθσ δεδομζνων είναι ςε αρικμθτικι ςυμπλθρϊματοσ ωσ προσ δφο. Ο χριςτθσ μπορεί να ηθτιςει ανάλυςθ 9,10,11 ι 12 ψθφίων διευκυνςιοδοτϊντασ τον καταχωρθτι διευκζτθςθσ (Configuration Register) και ρυκμίηοντασ τα bits ανάλυςθσ ανάλογα. Σε ανάλυςθ 9,10 ι 11 ψθφίων χρθςιμοποιοφνται τα πιο ςθμαντικά ψθφία του καταχωρθτι κερμοκραςίασ με τα υπόλοιπα να λαμβάνουν μθδενικι τιμι. Πίνακασ 4.3: Σο πρϊτο byte του καταχωρθτι κερμοκραςίασ. Πίνακασ 4.4: Σο δεφτερο byte του καταχωρθτι κερμοκραςίασ. Ο καταχωρθτισ διευκζτθςθσ είναι 8 ψθφίων ανάγνωςθσ και εγγραφισ. Χρθςιμοποιείται για να αποκθκεφςει τα ψθφία που ελζγχουν 62

64 τουσ τρόπουσ λειτουργίασ του αιςκθτιρα. Ο τρόποσ αποκικευςθσ παρουςιάηεται ςτον πίνακα 4.5. Ακολουκεί αναφορά ςτουσ διάφορουσ τρόπουσ λειτουργίασ του αιςκθτιρα. Πίνακασ 4.5: Format καταχωρθτι διευκζτθςθσ. Θ διακοπι λειτουργίασ επιτρζπει ςτον χριςτθ να εξοικονομιςει μζγιςτθ ενζργεια διακόπτοντασ όλο το κφκλωμα τθσ ςυςκευισ πλθν τθσ ςειριακισ διαςφνδεςθσ. Ζτςι θ κατανάλωςθ ρεφματοσ περιορίηεται ςε λιγότερο από 1μΑ. Αυτόσ ο τρόποσ λειτουργίασ ςε διακοπι εμφανίηεται όταν το SD ψθφίο γίνει 1. Θ ςυςκευι κα διακόψει τθ λειτουργία τθσ μόλισ θ τρζχουςα μετατροπι ολοκλθρωκεί. Μία κατάςταςθ ςφάλματοσ ςυμβαίνει, όταν θ μετροφμενθ κερμοκραςία λαμβάνει τιμζσ εκτόσ των ορίων που κζτει ο χριςτθσ ςτουσ καταχωρθτζσ ορίων κερμοκραςίασ. Ο αρικμόσ των καταςτάςεων ςφαλμάτων που χρειάηονται για τθν παραγωγι μιασ προειδοποίθςθσ (ALERT) προγραμματίηεται, χρθςιμοποιϊντασ τθν ουρά ςφαλμάτων. Θ ουρά ςφαλμάτων προςφζρεται από τον καταςκευαςτι, προκειμζνου να προςτατευκεί ο χριςτθσ από μία εςφαλμζνθ προειδοποίθςθ λόγω περιβαλλοντικοφ κορφβου. Θ ουρά ςφαλμάτων απαιτεί ςυνεχόμενεσ μετριςεισ εκτόσ ορίων για να διεγείρει τθν προειδοποιθτικι λειτουργία. Αν θ κερμοκραςία πζςει χαμθλότερα από το Τ LOW, προτοφ φκάςουμε το προγραμματιςμζνο όριο ςυνεχόμενων ςφαλμάτων, τότε ο μετρθτισ επαναφζρεται ςτο μθδζν. Στον πίνακα 4.6 φαίνονται οι αρικμοί των μετροφμενων ςφαλμάτων που μποροφν να προγραμματιςτοφν ζτςι ϊςτε να διεγείρουν μια κατάςταςθ προειδοποίθςθσ ςτθ ςυςκευι. Το ψθφίο του τρόπου λειτουργίασ κερμοςτάτθ επιδεικνφει ςτθ ςυςκευι αν ο κερμοςτάτθσ κα λειτουργιςει με ςφγκριςθ (ΤΜ=0) ι με διακοπι (ΤΜ=1). Στθν λειτουργία ςφγκριςθσ θ υποδοχι ALERT του TMP101 ενεργοποιείται, όταν θ κερμοκραςία υπερβεί τθν τιμι του καταχωρθτι υψθλοφ ορίου κερμοκραςίασ και διατθριςει τιμι μεγαλφτερθ από τον καταχωρθτι χαμθλοφ ορίου κερμοκραςίασ για αρικμό ςυνεχόμενων μετατροπϊν ςφμφωνα με τα ψθφία F1 και F0. Θ 63

65 υποδοχι ALERT κα παραμείνει ενεργι μζχρι θ κερμοκραςία να πζςει κάτω από T LOW για τον ίδιο αρικμό ςυνεχόμενων μετατροπϊν. Πίνακασ 4.6: Ρυκμίςεισ ςυνκθκϊν λακϊν ςτον TMP101. Στθν λειτουργία διακοπισ θ υποδοχι ALERT ενεργοποιείται όταν θ κερμοκραςία γίνει μεγαλφτερθ ι ίςθ του Τ HIGH για ςυνεχόμενο αρικμό ςφαλμάτων. Θ υποδοχι ALERT παραμζνει ενεργι μζχρι να ςυμβεί οποιαδιποτε ανάγνωςθ καταχωρθτι ι μζχρι θ ςυςκευι να απαντιςει επιτυχϊσ ςτθν διεφκυνςθ απάντθςθσ SMBus ΑLERT, αν χρθςιμοποιείται θ λειτουργία τθσ SMBus προειδοποίθςθσ. Θ λειτουργία SMBus προειδοποίθςθσ προχποκζτει ότι θ υποδοχι ALERT ζχει ςυνδεκεί και χρθςιμοποιείται ςαν ςιμα προειδοποίθςθσ SMBus. Πταν ζνασ κφριοσ (master) αιςκανκεί ότι μία κατάςταςθ προειδοποίθςθσ υφίςταται ςτθ γραμμι προειδοποίθςθσ, τότε ο κφριοσ ςτζλνει μία εντολι SMBus προειδοποίθςθσ ( ) ςτο δίαυλο. Αν θ υποδοχι προειδοποίθςθσ είναι ενεργι ο TMP101 κα επιβεβαιϊςει τθν εντολι και κα επιςτρζψει τθ διεφκυνςθ δοφλου (slave) του ςτθν γραμμι SDA. Το όγδοο ψθφίο του byte τθσ διεφκυνςθσ δοφλου που κα αποςταλεί κα δείχνει αν θ κερμοκραςία είναι μεγαλφτερθ του T HIGH ι μικρότερθ του T LOW. Επιςτρζφοντασ ςτθν λειτουργία διακοπισ ςυνεχίηουμε αναφζροντασ ότι θ υποδοχι προειδοποίθςθσ κα απενεργοποιθκεί, αν θ ςυςκευι τοποκετθκεί ςε διακοπι λειτουργίασ. Πταν θ υποδοχι προειδοποίθςθσ απενεργοποιθκεί, κα ενεργοποιθκεί ξανά όταν θ κερμοκραςία πζςει κάτω από το T LOW. Στθ ςυνζχεια κα απενεργοποιθκεί, όπωσ προθγουμζνωσ, και ο ίδιοσ κφκλοσ κα επαναλαμβάνεται ςυνζχεια. 64

66 Το ψθφίο πολικότθτασ (POL) επιτρζπει ςτον χριςτθ να ρυκμίηει τθν πολικότθτα τθσ εξόδου τθσ υποδοχισ προειδοποίθςθσ. Τα ψθφία ανάλυςθσ του μετατροπζα ελζγχουν τθν ανάλυςθ του εςωτερικοφ Α/D μετατροπζα. Αυτό επιτρζπει ςτον χριςτθ να μεγιςτοποιεί τθν αποδοτικότθτα, προγραμματίηοντασ για μεγαλφτερθ ανάλυςθ ι ταχφτερο χρόνο μετατροπισ. Στον πίνακα 4.7 διακρίνονται τα ψθφία ανάλυςθσ και θ ςχζςθ μεταξφ ανάλυςθσ και χρόνου μετατροπισ. Πίνακασ 4.7: Ανάλυςθ ςτον TMP101. Ο TMP101 λειτουργεί μόνο ςαν ςυςκευι δοφλου ςτο δίαυλο I 2 C ι SMBus. Οι ςυνδζςεισ ςτο δίαυλο γίνονται μόνο μζςω των γραμμϊν ειςόδου και εξόδου ανοιχτισ εκροισ SDA και SCL. Θ διεφκυνςθ δοφλου κακορίηεται μζςω τθσ υποδοχισ ADD0. Ο TMP101 υποςτθρίηει το πρωτόκολλο γριγορθσ (ωσ 400 KHz) και πολφ μεγάλθσ ταχφτθτασ (3.4 MHz) μετάδοςθσ. Πλα τα bytes μεταδίδονται με πρϊτο το πιο ςθμαντικό ψθφίο. Θ ακρίβεια τθσ μζτρθςθσ επθρεάηεται από τθν κερμοκραςία. Στθν εικόνα 4.3 διακρίνεται θ ακρίβεια τθσ κερμοκραςίασ ςυναρτιςει τθσ κερμοκραςίασ για τρεισ τυπικζσ ςυςκευζσ TMP101. Οι μετριςεισ ακρίβειασ είναι για τάςθ τροφοδοςίασ 5 V και ανάλυςθ 12 ψθφίων. 65

67 Εικόνα 4.3: Ακρίβεια μζτρθςθσ ςυναρτιςει τθσ κερμοκραςίασ ςτον TMP Ο αιςθητήρασ υγραςίασ και θερμοκραςίασ SHT11 τησ Sensirion Ειςαγωγή ςτη ςχετική υγραςία Ο αζρασ ςτο φυςικό περιβάλλον πάντα ζχει κάποια υγραςία. Ο αρικμόσ των μορίων νεροφ ςτο αζρα ποικίλλει, για παράδειγμα ο αζρασ μπορεί να είναι τόςο ξθρόσ όςο ςτθν ζρθμο ι τόςο υγρόσ όςο ςτισ τροπικζσ περιοχζσ. Υπάρχει ζνα άνω όριο ςτο ποςό τθσ υγραςίασ που μπορεί να περιζχει ο αζρασ και πάνω από αυτό επζρχεται κορεςμόσ. Αν για κάποιο λόγο το επίπεδο υγραςίασ ξεπεράςει τα όρια, τότε κα ζχουμε ςυμπφκνωςθ και ομίχλθ ι ςταγόνεσ νεροφ. Θ ςχετικι υγραςία πλθροφορεί τι ποςοςτό αυτοφ του μζγιςτου ποςοφ τθσ υγραςίασ βρίςκεται ςτον αζρα. Σε αντίκεςθ με τθ ςχετικι υγραςία, θ απόλυτθ υγραςία εκφράηει το απόλυτο ποςό υγραςίασ ςτον αζρα, αδιαφορϊντασ για το επίπεδο κορεςμοφ [12]. Το μζγιςτο πικανό ποςό υγραςίασ, όπωσ και το τρζχον κακορίηονται από τθν λεγόμενθ πίεςθ υδρατμϊν. Σφμφωνα με τον νόμο του Dalton, θ ολικι πίεςθ του αζρα είναι το άκροιςμα των επιμζρουσ 66

68 πιζςεων ατμϊν των ςτοιχείων του και θ πίεςθ υδρατμϊν είναι μία από αυτζσ. Αν θ επιμζρουσ πίεςθ υδρατμϊν γίνει ίςθ με τθν πίεςθ κορεςμοφ υδρατμϊν κα ζχουμε ςυμπφκνωςθ. Μακθματικά, θ ςχετικι υγραςία εκφράηεται ωσ το κλάςμα τθσ επιμζρουσ πίεςθσ υδρατμϊν, διά τθσ πίεςθσ κορεςμοφ υδρατμϊν. Αν θ κερμοκραςία αυξθκεί ι μειωκεί ςε ζνα κλειςτό ςφςτθμα, θ πίεςθ κορεςμοφ ατμοφ κα αυξθκεί ι κα μειωκεί και θ ςχετικι υγραςία κα μειωκεί ι κα αυξθκεί αντιςτοίχωσ. Θ πίεςθ κορεςμοφ των υδρατμϊν δεν είναι ςυνάρτθςθ τθσ ολικισ πίεςθσ του αζρα ενϊ αντίκετα θ επιμζρουσ πίεςθ υδρατμϊν είναι. Αν για παράδειγμα θ ολικι πίεςθ αζρα αυξθκεί ςε ζνα κλειςτό ςφςτθμα, θ ςχετικι υγραςία κα αυξθκεί ομοίωσ. Μία ακόμθ πολφ ςθμαντικι παράμετροσ ςε ςυνδυαςμό με τθν ςχετικι υγραςία είναι το ςθμείο δρόςου. Το ςθμείο δρόςου ορίηεται ωσ θ κερμοκραςία ςτθν οποία το τρζχον ποςό υγραςίασ ςτον αζρα ξεκινά να ςυμπυκνϊνεται. Για παράδειγμα αν ο αζρασ ζχει κερμοκραςία 40 ο C και ςχετικι υγραςία 50%, θ ςυμπφκνωςθ κα ξεκινιςει όταν ο αζρασ ψυχκεί ςτουσ 27.6 ο C. Στο ςθμείο δρόςου θ υγραςία είναι 100%. Το ςθμείο δρόςου είναι μζτρθςθ απόλυτθσ υγραςίασ. Κατά ςυνζπεια το ςθμείο δρόςου του αζρα κα παραμείνει ςτακερό ςε ζνα κλειςτό ςφςτθμα ακόμα κι αν ο αζρασ ψυχκεί ι κερμανκεί. Ζνασ πολφ ςθμαντικόσ παράγοντασ ςε μετριςεισ υγραςίασ είναι θ κερμοκραςία. Θ κερμοκραςία κακορίηει τθν πίεςθ κορεςμοφ των υδρατμϊν. Μία μικρι αλλαγι ςτθ κερμοκραςία ειδικά ςε υψθλι υγραςία ζχει ςθμαντικό αντίκτυπο ςτθν ςχετικι υγραςία, αφοφ αλλάηει και θ πίεςθ κορεςμοφ. Για παράδειγμα μία αλλαγι +1 ο C ςε κερμοκραςία 50 ο C και ςχετικι υγραςία 80% ςθμαίνει αλλαγι ςε ςχεδόν -4% ςχετικι υγραςία. Γι αυτό το λόγο είναι απαραίτθτο να είναι γνωςτι θ ακριβισ κερμοκραςία, όταν ςυγκρίνονται διαφορετικζσ τιμζσ ςχετικισ υγραςίασ. Για παράδειγμα ςε ζνα κλειςτό ςφςτθμα δφο αιςκθτιρεσ που διατθροφνται ςε διαφορετικζσ κερμοκραςίεσ, κα μετριςουν 67

69 διαφορετικζσ τιμζσ ςχετικισ υγραςίασ, αλλά το ςθμείο δρόςου που κα υπολογιςτεί κα είναι το ίδιο. Ζνα ακόμθ ηιτθμα είναι θ τοποκζτθςθ και θ ςτακεροποίθςθ. Πταν ςυγκρίνονται τιμζσ μετριςεων, τότε θ αναφορά και ο αιςκθτιρασ πρζπει να τοποκετθκοφν όςο πιο κοντά γίνεται, γιατί ακόμθ και ςε μικρζσ αποςτάςεισ μπορεί να υπάρξουν ςθμαντικζσ αλλαγζσ ςτα επίπεδα υγραςίασ και κερμοκραςίασ. Σχετικά με τον χρόνο ςτακεροποίθςθσ, πριν τθ λιψθ οποιαςδιποτε μζτρθςθσ πρζπει να υπάρχει ζνα χρονικό διάςτθμα αναμονισ, ζτςι ϊςτε οι καταςτάςεισ να ςτακεροποιθκοφν. Πχι μόνο τα επίπεδα ςχετικισ υγραςίασ πρζπει να ςτακεροποιθκοφν αλλά και θ κερμοκραςία. Τα παραπάνω ηθτιματα κάνουν ξεκάκαρο το γιατί δεν είναι δυνατό να λθφκοφν απόλυτα ζγκυρεσ μετριςεισ ςχετικισ υγραςίασ Ο αιςθητήρασ SHT11 τησ Sensirion Ο SHT11 είναι ζνασ πολυαιςκθτιρασ ο οποίοσ ςε ζνα chip ςυνδυάηει ςχετικι υγραςία και κερμοκραςία και παρζχει βακμονομθμζνθ ψθφιακι ζξοδο. Θ εφαρμογι βιομθχανικϊν CMOS διαδικαςιϊν ςε ςυνδυαςμό με πατενταριςμζνθ μικροκατεργαςία (micro-machining) εξαςφαλίηει υψθλότατθ αξιοπιςτία και καυμάςια ςτακερότθτα ςτον χρόνο. Θ ςυςκευι εμπεριζχει ζνα χωρθτικό πολυμερζσ ςτοιχείο αίςκθςθσ για τθ ςχετικι υγραςία και ζναν αιςκθτιρα κερμοκραςίασ κατωφλίου (bandgap). Και τα δφο ςυνδζονται ςε ζναν A/D μετατροπζα 14 ψθφίων και μία ςειριακι διαςφνδεςθ ςτο ίδιο chip. Αυτό ζχει ςαν αποτζλεςμα μοναδικι ποιότθτα ςιματοσ, γριγορο χρόνο απόκριςθσ και αναιςκθςία ςε εξωτερικζσ διαταραχζσ. Ο αιςκθτιρασ είναι βακμονομθμζνοσ ςε μία ακριβι περιοχι υγραςίασ. Οι ςυντελεςτζσ βακμονόμθςθσ είναι προγραμματιςμζνοι ςε μία μνιμθ που προγραμματίηεται μόνο μια φορά (OTP One Time Programmable). Οι ςυντελεςτζσ αυτοί χρθςιμοποιοφνται εςωτερικά κατά τθ διάρκεια των μετριςεων για να βακμονομιςουν τα ςιματα που παράγουν οι αιςκθτιρεσ. Τζλοσ θ διςφρματθ ςειριακι διαςφνδεςθ, κακϊσ και θ εςωτερικι ρφκμιςθ τάςθσ επιτρζπουν εφκολθ και γριγορθ ενςωμάτωςθ ςε κάποιο ςφςτθμα [13]. 68

70 Θ ςειριακι διαςφνδεςθ είναι βελτιςτοποιθμζνθ για ανάγνωςθ από τον αιςκθτιρα και για χαμθλι κατανάλωςθ και δεν είναι ςυμβατι με I 2 C. Θ ςειριακι είςοδοσ ρολογιοφ (SCK) χρθςιμοποιείται για να ςυγχρονίηει τθν επικοινωνία μεταξφ του μικροελεγκτι και του αιςκθτιρα. Αφοφ θ διαςφνδεςθ αποτελείται από πλιρωσ ςτατικι λογικι δεν υπάρχει κάτω όριο για τθ ςυχνότθτα. Θ τριϊν καταςτάςεων υποδοχι δεδομζνων χρθςιμοποιείται για να μεταφζρει δεδομζνα εντόσ και εκτόσ τθσ ςυςκευισ. Τα δεδομζνα αλλάηουν μετά τθν αιχμι κακόδου και είναι ζγκυρα ςτθν αιχμι ανόδου τθσ SCK. Κατά τθ διάρκεια τθσ μετάδοςθσ θ γραμμι δεδομζνων πρζπει να παραμείνει αμετάβλθτθ όταν θ SCK είναι υψθλι (high). Για τθν αποφυγι ακατανόθτων ςθμάτων ο μικροελεγκτισ κα πρζπει να οδθγεί τθ γραμμι δεδομζνων μόνο ςε χαμθλι κατάςταςθ. Ζνασ εξωτερικόσ pull-up αντιςτάτθσ απαιτείται για να ςθκϊςει το ςιμα ψθλά (εικόνα 4.4). Εικόνα 4.4: Συπικό κφκλωμα εφαρμογισ. Για τθν εκκίνθςθ μιασ μετάδοςθσ, μία ακολουκία ενεργειϊν πρζπει να εκτελεςτεί. Θ ακολουκία αυτι αποτελείται από χαμθλι SDA γραμμι όταν θ SCK είναι υψθλι και ςτθ ςυνζχεια μετά από ζναν χαμθλό παλμό ςτθ SCK, ανζβαςμα τθσ SDA όταν θ SCK είναι υψθλι. Κάκε εντολι αποτελείται από τρία ψθφία διεφκυνςθσ και πζντε ψθφία εντολϊν. Θ ςυςκευι επιδεικνφει τθ ςωςτι λιψθ τθσ εντολισ χαμθλϊνοντασ τθν υποδοχι δεδομζνων (ψθφίο επιβεβαίωςθσ - ACK bit) μετά τθν αιχμι κακόδου του όγδοου SCK ρολογιοφ. Στθ ςυνζχεια θ 69

71 γραμμι δεδομζνων απελευκερϊνεται (και πθγαίνει ψθλά) μετά τθν αιχμι κακόδου του ενάτου SCK ρολογιοφ. Μετά τθν ειςαγωγι μιασ εντολισ μζτρθςθσ, ο μικροελεγκτισ πρζπει να περιμζνει τθν ολοκλιρωςθ τθσ μζτρθςθσ. Αυτό κρατάει περίπου 20/80/320 ms για μζτρθςθ 8/12/14 ψθφίων. Για να ανακοινϊςει τθν ολοκλιρωςθ τθσ μζτρθςθσ ο SHT11 κατεβάηει τθν γραμμι δεδομζνων και ειςζρχεται ςε λειτουργία αδρανείασ. Ο μικροελεγκτισ πρζπει να περιμζνει αυτό το ςιμα ζτοιμων δεδομζνων, προτοφ επανεκκινιςει τθν SCK για να διαβάςει τα δεδομζνα. Τότε δφο bytes δεδομζνων μζτρθςθσ και ζνα byte ελζγχου κυκλικοφ πλεοναςμοφ (CRC Cyclic Redundancy Check) κα μεταδοκοφν. Ο μικροελεγκτισ πρζπει να επιβεβαιϊςει κάκε byte χαμθλϊνοντασ τθ γραμμι δεδομζνων. Θ επικοινωνία τερματίηεται μετά το ψθφίο αναγνϊριςθσ του CRC byte. Θ ςυςκευι αυτόματα επιςτρζφει ςε λειτουργία φπνου (sleep mode), όταν θ μζτρθςθ και θ επικοινωνία τερματιςτοφν. Θ αυτόματθ επιλογι ανάλυςθσ των 14 ψθφίων για τθ κερμοκραςία και των 12 για τθν ςχετικι υγραςία μπορεί να μειωκεί ςτα 12 και 8 αντίςτοιχα. Αυτό μπορεί να είναι ιδιαίτερα χριςιμο ςε υψθλισ ταχφτθτασ ι ςε εξαιρετικά χαμθλισ κατανάλωςθσ εφαρμογζσ. Ζνα ςτοιχείο κζρμανςθσ πάνω ςτο chip μπορεί να ενεργοποιθκεί. Κα αυξιςει τθν κερμοκραςία του αιςκθτιρα κατά 5-15 ο C. Θ χρθςιμότθτα αυτισ τθσ λειτουργίασ είναι θ αποφυγι τθσ ςυμπφκνωςθσ ςε περιβάλλον υψθλισ υγραςίασ. Για τθν αντιμετϊπιςθ τθσ μθ-γραμμικότθτασ του αιςκθτιρα υγραςίασ και για απόλυτθ ακρίβεια είναι αναγκαίο να μετατραπεί το αποτζλεςμα ςφμφωνα με τθν παρακάτω εξίςωςθ 4.1 όπου είναι θ γραμμικι ςχετικι υγραςία και θ τιμι ανάγνωςθσ από τον αιςκθτιρα. Οι ςτακερζσ δίνονται ςτον πίνακα

72 Πίνακασ 4.8: τακερζσ μετατροπισ ςχετικισ υγραςίασ. Για κερμοκραςία εξαιρετικά διαφορετικι των 25 ο κερμοκραςιακόσ ςυντελεςτισ του αιςκθτιρα υγραςίασ πρζπει να λθφκεί υπόψθ. ο C Πίνακασ 4.9: υντελεςτζσ αντιςτάκμιςθσ κερμοκραςίασ. Ο αιςκθτιρασ κατωφλίου, ανάλογοσ τθσ απόλυτθσ κερμοκραςίασ είναι από ςχεδιαςμοφ πολφ γραμμικόσ. Θ εξίςωςθ 4.3 χρθςιμοποιείται για μετατροπι του ψθφιακοφ αποτελζςματοσ ςε κερμοκραςία. είναι θ τιμι ανάγνωςθσ από τον αιςκθτιρα. Οι ςτακερζσ δίνονται ςτον πίνακα Πίνακασ 4.10: υντελεςτζσ μετατροπισ κερμοκραςίασ. Αφοφ θ ςχετικι υγραςία και θ κερμοκραςία μετρϊνται ςτο ίδιο μονολικικό chip, ο SHT11 επιτρζπει εξαιρετικι μζτρθςθ του ςθμείου δρόςου. 71

73 Το ςθμείο δρόςου είναι θ κερμοκραςία ςτθν οποία ο αζρασ πρζπει να ψυχκεί για να φκάςει ςε κορεςμό. Πταν θ κερμοκραςία ψυχκεί ςτο ςθμείο δρόςου τότε μπορεί να ζχουμε ομίχλθ ι δροςιά και θ ςχετικι υγραςία γίνεται 100% [14]. Θ εξίςωςθ του Magnus ςυνδζει τθν πίεςθ κορεςμοφ του ατμοφ και το ςθμείο δρόςου. Σε κερμοκραςία T ( ςε ο C), θ πίεςθ κορεςμοφ του ατμοφ EW (ςε hpa) επί υγροφ νεροφ είναι : Στο εφροσ -45 ωσ 60 ο C οι παράμετροι του Magnus δίδονται ωσ α=6.112 hpa, β=17.62 και λ= ο C. Επαναδθλϊνοντασ τθν εξίςωςθ 4.4 θ κερμοκραςία δρόςου Dp (ςε ο C) μπορεί να εκφραςτεί από τθν πίεςθ ατμοφ E. Ειςάγοντασ τον οριςμό τθσ ςχετικισ υγραςίασ RH ( επί %), δθλαδι ςτθν εξίςωςθ 4.5 και χρθςιμοποιϊντασ τθν 4.4 οδθγοφμαςτε ςτον υπολογιςμό του ςθμείου δρόςου από τθν κερμοκραςία Τ και τθν ςχετικι υγραςία RH. Στθν εικόνα 4.5 απεικονίηεται θ ακρίβεια κερμοκραςίασ, ςχετικισ υγραςίασ και ςθμείου δρόςου για όλα τα chips SHT τθσ Sensirion. Οι ζλεγχοι ζγιναν ςε τάςθ τροφοδοςίασ 3.3 V και θ ανάλυςθ ιταν 14 ψθφίων για τθ κερμοκραςία και 12 για τθ ςχετικι υγραςία. 72

74 Εικόνα 4.5: Ακρίβεια ςχετικισ υγραςίασ, κερμοκραςίασ και ςθμείου δρόςου. 73

75 4.3 Ο αιςθητήρασ φωτόσ περιβάλλοντοσ TSL2550 τησ TAOS Ο TSL2550 είναι ζνασ ψθφιακισ εξόδου αιςκθτιρασ φωτόσ με διςφρματθ SMBus διαςφνδεςθ. Συνδυάηει δφο φωτοδιόδουσ και A/D μετατροπζα ςτο ίδιο ολοκλθρωμζνο κφκλωμα CMOS. Ραρζχει μετριςεισ φωτόσ με δυναμικό εφροσ 12 ψθφίων και απόκριςθ παρόμοια με το ανκρϊπινο μάτι. Είναι ςχεδιαςμζνοσ για πθγζσ φωτόσ με ευρφ μικοσ κφματοσ. Μία από τισ φωτοδιόδουσ (κανάλι 0) είναι ευαίςκθτθ ςτο ορατό και ςτο υπζρυκρο φωσ, ενϊ θ δεφτερθ (κανάλι 1) είναι ευαίςκθτθ κυρίωσ ςτο υπζρυκρο φωσ. Ο ολοκλθρωμζνοσ A/D μετατροπζασ μετατρζπει το ρεφμα των καναλιϊν 0 και 1 ςε ψθφιακι ζξοδο. Θ ψθφιακι ζξοδοσ του καναλιοφ 1 χρθςιμοποιείται για αντιςτάκμιςθ του υπζρυκρου τμιματοσ του φωτόσ περιβάλλοντοσ ςτο κανάλι 0. Οι ψθφιακζσ ζξοδοι του A/D μετατροπζα χρθςιμοποιοφνται για τον υπολογιςμό μιασ τιμισ που προςεγγίηει τθν απόκριςθ του ανκρϊπινου ματιοφ ςτθν κοινϊσ γνωςτι μονάδα Lux [15]. Ο TSL2550 περιζχει ζναν A/D μετατροπζα ολοκλιρωςθσ που ολοκλθρϊνει το ρεφμα φωτοδιόδων. Ρρϊτα ολοκλθρϊνει το κανάλι 0 και ζπειτα το κανάλι 1. Θ μεταφορά είναι διπλισ ενδιάμεςθσ αποκικευςθσ για να εξαςφαλίςει ότι δεν γίνεται ανάγνωςθ άκυρων δεδομζνων. Ζνα ψθφίο VALID χρθςιμοποιείται για να δείξει ότι νζα δεδομζνα γράφτθκαν ςτον καταχωρθτι του A/D. Ο A/D μετατροπζασ ζχει δφο τρόπουσ λειτουργίασ: κανονικόσ και εκτεταμζνοσ. Στον κανονικό τρόπο λειτουργίασ ο χρόνοσ ολοκλιρωςθσ είναι 400 ms για κάκε κανάλι. Θ εκτεταμζνθ λειτουργία μειϊνει τον χρόνο ολοκλιρωςθσ κατά ζναν παράγοντα 5, με ςυνοδευόμενθ μείωςθ τθσ ευαιςκθςίασ κατά 5x. Το εκτεταμζνο εφροσ επιτρζπει ςτθ ςυςκευι να λειτουργεί ςε υψθλότερα επίπεδα φωτόσ, επεκτείνοντασ το ςυνολικό δυναμικό εφροσ κατά ζνα παράγοντα 5. Ο TSL2550 περιζχει ζναν καταχωρθτι εντολϊν 8 ψθφίων και μπορεί να γραφεί ι να αναγνωςτεί μζςω SMBus. Ο καταχωρθτισ εντολϊν ελζγχει τθν ςυνολικι λειτουργία τθσ ςυςκευισ. Υπάρχουν δφο καταχωρθτζσ μόνο ανάγνωςθσ που περιζχουν τα αποτελζςματα τθσ πιο πρόςφατθσ μετατροπισ για κάκε κανάλι. Και το πρωτόκολλο αποςτολισ byte, αλλά και το πρωτόκολλο λιψθσ byte υλοποιοφνται ςτον TSL2550. Το πρωτόκολλο αποςτολισ byte επιτρζπει να γραφτοφν ςτθ ςυςκευι bytes δεδομζνων (εικόνα 4.6). Το εγγραφόμενο byte καλείται byte 74

76 εντολισ. Το πρωτόκολλο λιψθσ byte επιτρζπει να αναγνωςτοφν από τθ ςυςκευι bytes δεδομζνων (εικόνα 4.7). Τα δεδομζνα λιψθσ μποροφν να είναι είτε ζνα προθγοφμενα εγγραμμζνο byte εντολισ, είτε δεδομζνα από ζνα εκ των καναλιϊν A/D. Και ςτισ δφο εικόνεσ, 4.7 και 4.8, θ κακαρι περιοχι αντιπροςωπεφει τα δεδομζνα που ςτζλνονται από τον κφριο, ενϊ θ ςκιαςμζνθ αντιπροςωπεφει τα δεδομζνα που επιςτρζφονται από τον αιςκθτιρα φωτόσ περιβάλλοντοσ ι ςυςκευι δοφλου. Εικόνα 4.6: Πρωτόκολλο αποςτολισ byte. Εικόνα 4.7: Πρωτόκολλο λιψθσ byte. Ο καταχωρθτισ εντολϊν χρθςιμοποιείται κυρίωσ για τουσ ακόλουκουσ λόγουσ: α. Επιλογι του A/D καταχωρθτι που κα διαβαςτεί κατά τθ διάρκεια ενόσ κφκλου ανάγνωςθσ. β. Αλλαγι του δυναμικοφ εφρουσ τθσ ςυςκευισ μεταξφ του κανονικοφ και του εκτεταμζνου τρόπου λειτουργίασ. γ. Ενεργοποίθςθ τθσ ςυςκευισ για λειτουργία και απενεργοποίθςθ για ελάχιςτθ κατανάλωςθ. Ο TSL2550 περιζχει δφο καταχωρθτζσ A/D. Κάκε καταχωρθτισ περιζχει δφο πεδία που χρθςιμοποιοφνται για να κακορίςουν τθ λογαρικμικι τιμι του A/D μετριματοσ: Τα ψθφία χορδισ (CHORD) και τα ψθφία βιματοσ (STEP). Τα ψθφία CHORD αντιςτοιχοφν ςτο πιο ςθμαντικό κομμάτι τθσ τιμισ του A/D και διευκρινίηουν ζνα τμιμα τθσ προςζγγιςθσ ευκφγραμμων τμθμάτων (piece-wise). Τα ψθφία STEP αντιςτοιχοφν ςτο λιγότερο ςθμαντικό κομμάτι τθσ τιμισ του A/D και 75

77 διευκρινίηουν μια γραμμικι τιμι ςε ζνα τμιμα τθσ προςζγγιςθσ. Αν όλα τα ψθφία CHORD και STEP είναι 0, τότε το επίπεδο φωτόσ βρίςκεται κάτω από το όριο διάκριςθσ του αιςκθτιρα. Αντίκετα, αν όλα τα ψθφία είναι 1 ζχουμε υπερχείλιςθ. Κάκε καταχωρθτισ A/D ζχει 7 ψθφία δεδομζνων και ζνα ψθφίο εγκυρότθτασ (VALID), όπωσ φαίνεται ςτθν εικόνα 4.8. Εικόνα 4.8: Format δεδομζνων του καταχωρθτι A/D. Τα ψθφία 6 ωσ 0 περιζχουν τον κωδικό 7 ψθφίων που αντιπροςωπεφει το μζτρθμα του A/D, το οποίο είναι ανάλογο του ρεφματοσ φωτοδιόδου. Σε αυτόν τον κωδικό, το μζτρθμα του A/D αντιπροςωπεφεται από μια προςζγγιςθ ευκφγραμμων τμθμάτων ςε μια λογαρικμικι ςυνάρτθςθ. Θ ςυνάρτθςθ μεταφοράσ ςπάει ςε 8 χορδζσ (chords) 16 βθμάτων θ κακεμιά. Λςχφει θ εξίςωςθ 4.7 όπου ADC είναι το μζτρθμα του A/D, C ο αρικμόσ CHORD, S o αρικμόσ STEP και INT θ ςυνάρτθςθ μετατροπισ ςε ακζραιο. Για τον κανονικό τρόπο λειτουργίασ ιςχφει θ εξίςωςθ 4.8 για τον υπολογιςμό του επιπζδου φωτόσ ςε Lux. CH0 είναι το μζτρθμα A/D του καναλιοφ 0 και CH1 το μζτρθμα A/D του καναλιοφ 1. Ακόμθ ιςχφει ότι. Τζλοσ L είναι το επίπεδο φωτόσ ςε Lux. Θ παραπάνω εξίςωςθ προζκυψε με οπτικοφσ ελζγχουσ ςε πθγζσ φκοριοφχου φωτόσ και φωτόσ πυρακτϊςεωσ. Το επίπεδο φωτόσ που υπολογίηεται κα είναι ελάχιςτα υψθλότερο από το πραγματικό επίπεδο ςτο θλιακό φωσ, ενϊ κα είναι λίγο χαμθλότερο από το πραγματικό επίπεδο φωτόσ για πθγζσ ςυνκετικοφ φκοριοφχου φωτόσ και φωτόσ πυρακτϊςεωσ. Στθν εικόνα 4.9 παρουςιάηεται θ φαςματικι ςχετικι ευαιςκθςία των δφο φωτοδιόδων και θ εξάρτθςθ τθσ κανονικοποιθμζνθσ εξόδου του A/D από τθν τάςθ τροφοδοςίασ. 76

78 Εικόνα 4.9: Φαςματικι ςχετικι ευαιςκθςία και κανονικοποιθμζνθ ζξοδοσ A/D ωσ προσ τθν τάςθ τροφοδοςίασ. 4.4 Το επιταχυνςιόμετρο ADXL320 τησ Analog Devices Εικόνα 4.10: Λειτουργικό μπλοκ διάγραμμα του ADXL320. Τo ADXL320 είναι ζνα χαμθλοφ κόςτουσ και κατανάλωςθσ επιταχυνςιόμετρο δφο αξόνων με ανάλογεσ του ςιματοσ εξόδουσ τάςθσ. Πλα εμπεριζχονται ςτο ίδιο μονολικικό chip. Τo επιταχυνςιόμετρο μετρά ςε όλθ τθ ςκάλα των ±5 g και ζχει τθ 77

79 δυνατότθτα να μετριςει δυναμικι (δόνθςθ), αλλά και ςτατικι επιτάχυνςθ (βαρφτθτα). Θ τυπικι πυκνότθτα κορφβου είναι 250 μg / και επιτρζπει ςε ςιματα μικρότερα των 2 mg να αναλυκοφν ςε εφαρμογζσ αίςκθςθσ κραδαςμϊν ςτενοφ εφρουσ ηϊνθσ (<60 Hz). Ο χριςτθσ επιλζγει το εφροσ ηϊνθσ του επιταχυνςιομζτρου, χρθςιμοποιϊντασ πυκνωτζσ C x και C Y ςτισ υποδοχζσ X OUT και Y OUT. Μπορεί να επιλεγεί εφροσ ηϊνθσ από 0.5 Hz ωσ 2.5 KHz [16]. Ο ADXL320 περιζχει ζναν αιςκθτιρα μικρομθχανικισ υποςτρϊματοσ πολυπυριτίου, κακϊσ και κφκλωμα ρφκμιςθσ για τθν υλοποίθςθ μιασ αρχιτεκτονικισ μζτρθςθσ επιτάχυνςθσ ανοιχτοφ βρόχου. Ο αιςκθτιρασ χτίηεται πάνω ς ζνα διςκίο πυριτίου. Τα ελατιρια πολυπυριτίου παρζχουν αντίςταςθ ενάντια ςτισ δυνάμεισ επιτάχυνςθσ και ςυγκρατοφν τθ δομι πάνω από το διςκίο πυριτίου. Θ απόκλιςθ μετριζται χρθςιμοποιϊντασ ζνα διαφορικό πυκνωτι που αποτελείται από ανεξάρτθτα κακοριςμζνα φφλλα και φφλλα που είναι προςαρμοςμζνα ςτθν κινοφμενθ μάηα. Τα κακοριςμζνα φφλλα οδθγοφνται από τετραγωνικά κφματα 180 ο εκτόσ φάςθσ. Θ επιτάχυνςθ κζτει εκτόσ ιςορροπίασ το διαφορικό πυκνωτι δίνοντασ ςαν ζξοδο ζνα τετραγωνικό κφμα του οποίου το πλάτοσ είναι ανάλογο τθσ επιτάχυνςθσ. Εν ςυνεχεία χρθςιμοποιοφνται τεχνικζσ αποδιαμόρφωςθσ ευαίςκθτεσ ςτθ φάςθ, ζτςι ϊςτε να ανορκϊςουν το ςιμα και να κακορίςουν τθν φορά τθσ επιτάχυνςθσ. Θ ζξοδοσ του αποδιαμορφωτι ενιςχφεται και περνά εκτόσ chip μζςω ενόσ αντιςτάτθ 32 KΩ. Ο χριςτθσ ρυκμίηει το εφροσ ηϊνθσ του ςιματοσ προςκζτοντασ ζναν πυκνωτι. Το φιλτράριςμα αυτό βελτιϊνει τθν ανάλυςθ και βοθκά ςτθν πρόλθψθ του aliasing. Ζχουν χρθςιμοποιθκεί καινοτόμεσ τεχνικζσ, ϊςτε να αποφευχκεί θ χριςθ επιπρόςκετου κυκλϊματοσ κερμοκραςιακισ αντιςτάκμιςθσ. Αυτό ζχει αποτζλεςμα να μθν υπάρχει ςφάλμα κβάντιςθσ και μθ μονότονθ ςυμπεριφορά. Θ κερμοκραςιακι υςτζρθςθ είναι πολφ χαμθλι (τυπικά μικρότερθ των 3 mg ςτο κερμοκραςιακό εφροσ από -20 ωσ 70 o C). Θ εικόνα 4.11 δείχνει τθ ςυμπεριφορά εξόδου 8 αιςκθτιρων ςτο κερμοκραςιακό εφροσ από -20 ωσ 70 o C, για είςοδο 0 g. Θ τάςθ τροφοδοςίασ είναι 3 V. Στθν εικόνα 4.12 διακρίνεται θ ευαιςκθςία ςε όλο το κερμοκραςιακό εφροσ. Θ πιο δθμοφιλισ εφαρμογι του ADXL320 είναι οι μετριςεισ κραδαςμϊν. Το επιταχυνςιόμετρο χρθςιμοποιεί τθν δφναμθ τθσ 78

80 βαρφτθτασ για είςοδο, ϊςτε να κακορίςει τον προςανατολιςμό ενόσ αντικειμζνου ςτο χϊρο. Εικόνα 4.11: Πόλωςθ 0 g εναντίον κερμοκραςίασ. Εικόνα 4.12: Ευαιςκθςία ςτο κερμοκραςιακό εφροσ. 79

81 Το επιταχυνςιόμετρο είναι πιο ευαίςκθτο ςτουσ κραδαςμοφσ, όταν ο ευαίςκθτοσ άξονασ του είναι κάκετοσ ςτθ βαρφτθτα. Πταν το επιταχυνςιόμετρο προςανατολίηεται με άξονα ςτθ βαρφτθτα (κοντά ςε ζξοδο ±1 g), θ αλλαγι ςτθν ζξοδο επιτάχυνςθσ ανά βακμό κραδαςμοφ είναι αμελθτζα. Αντίκετα όταν είναι κάκετο ςτθ βαρφτθτα θ ζξοδοσ αλλάηει κοντά ςτα 17.5 mg για κάκε μονάδα κραδαςμοφ. Στισ 45 ο θ ζξοδοσ αλλάηει κατά 12.2 mg και θ ανάλυςθ μειϊνεται. Πταν το επιταχυνςιόμετρο ζχει τοποκετθκεί παράλλθλα ςτθ γθ, μπορεί να χρθςιμοποιθκεί ςαν ζνασ αιςκθτιρασ κραδαςμϊν δφο αξόνων με άξονα περιςτροφισ και κλίςθσ. Εικόνα 4.13: Πυκνότθτα κορφβου ςτουσ άξονεσ Χ (αριςτερά) και Τ (δεξιά). 80

82 Κεφάλαιο 5 Αςφρματεσ ςυςκευζσ 5.1 Το αςφρματο εξάρτημα firmware XBee τησ MaxStream Το εξάρτθμα ραδιοςυχνοτιτων XBee ςχεδιάςτθκε για να πλθρεί το πρότυπο και να υποςτθρίηει τισ μοναδικζσ ανάγκεσ χαμθλοφ κόςτουσ και κατανάλωςθσ των αςφρματων δικτφων αιςκθτιρων. Το XBee απαιτεί ελάχιςτθ ενζργεια και παρζχει αξιόπιςτθ μεταφορά δεδομζνων ανάμεςα ςτισ ςυςκευζσ. Λειτουργεί ςτθ ηϊνθ ISM των 2.4 GHz. Τα κφρια χαρακτθριςτικά του είναι [17]: α. Επανεκπομπζσ και επιβεβαιϊςεισ. β. DSSS (Εξάπλωςθ φάςματοσ άμεςθσ ακολουκίασ). γ. Κάκε κανάλι άμεςθσ ακολουκίασ ζχει πάνω από μοναδικζσ διευκφνςεισ δικτφου. δ. Διευκυνςιοδότθςθ πθγισ και προοριςμοφ. ε. Broadcast και Unicast. ςτ. Τοπολογίεσ point-to-point (ςθμείου ςε ςθμείο), point-tomultipoint (ςθμείου ςε πολλά ςθμεία) και peer-to-peer (ομότιμθ). η. Λειτουργία ςυντονιςτι και τερματικισ ςυςκευισ. θ. Λειτουργίεσ εντολϊν AT και API (Application Programming Interface). κ. Μεγάλο πλικοσ εντολϊν. ι. Εμβζλεια εςωτερικϊν χϊρων 30 m. ια. Εμβζλεια εξωτερικϊν χϊρων 100 m. ιβ. Λςχφσ εκπομπισ 1mw (0 dbm). ιγ. Ευαιςκθςία δζκτθ -92 dbm. ιδ. Αςφρματθ ταχφτθτα μεταφοράσ δεδομζνων bps. ιε. Κατανάλωςθ 50 ma ςε λειτουργία αδράνειασ ι λιψθσ, 45 ma ςε λειτουργία αποςτολισ και 100 μα ςε λειτουργία φπνωςθσ. Το XBee διαςυνδζεται με τθ ςυςκευι που το υποδζχεται, διαμζςου μιασ αςφγχρονθσ ςειριακισ κφρασ λογικϊν επιπζδων. Οι 81

83 ςυςκευζσ που διακζτουν διαςφνδεςθ UART μποροφν να ςυνδεκοφν αμζςωσ ςτισ υποδοχζσ του XBee όπωσ φαίνεται ςτθν εικόνα 5.1. Εικόνα 5.1: Ροι δεδομζνων ςε περιβάλλον διαςφνδεςθσ UART. Ο προκακοριςμζνοσ τρόποσ λειτουργίασ επικοινωνίασ είναι ο διαφανισ. Πταν λειτουργεί με αυτόν τον τρόπο το XBee δρα ςαν αντικαταςτάτθσ ςειριακισ γραμμισ. Ο εναλλακτικόσ τρόποσ λειτουργίασ επικοινωνίασ είναι θ λειτουργία διαςφνδεςθσ προγραμματιςμοφ εφαρμογισ (API). Θ λειτουργία API βαςίηεται ςε πεδία και διευρφνει το επίπεδο εκμετάλλευςθσ των δυνατοτιτων δικτφωςθσ του XBee. Στθ λειτουργία αυτι όλα τα δεδομζνα που ειςζρχονται και εξζρχονται από το XBee, περιζχονται ςε πεδία που κακορίηουν λειτουργίεσ και γεγονότα μζςα ςε αυτό. Τα πεδία δεδομζνων μετάδοςθσ που λαμβάνονται μζςω τθσ υποδοχισ δεδομζνων ειςόδου (DI) περιλαμβάνουν τα πεδία δεδομζνων αςφρματθσ μετάδοςθσ και τα πεδία εντολϊν. Τα πεδία δεδομζνων λιψθσ περιλαμβάνουν τα πεδία δεδομζνων αςφρματθσ λιψθσ και τισ απαντιςεισ εντολϊν. Θ λειτουργία API παρζχει εναλλακτικά μζςα ρφκμιςθσ του XBee και δρομολόγθςθσ δεδομζνων ςτο επίπεδο εφαρμογϊν τθσ ςυςκευισ που υποδζχεται (host) το XBee. Μια εφαρμογι ςτον host μπορεί να ςτείλει πεδία δεδομζνων που περιζχουν διεφκυνςθ και πλθροφορία ωφζλιμου φορτίου, αντί να χρθςιμοποιεί εντολζσ για να αλλάηει τθ διεφκυνςθ. Το XBee κα ςτείλει ςτθν εφαρμογι πεδία δεδομζνων που περιζχουν πακζτα καταςτάςεων και πλθροφορίεσ πθγισ, RSSI (Received Signal Strength Indication Δφναμθ λθφκζντοσ ςιματοσ) και ωφζλιμου φορτίου. 82

84 Το XBee ρυκμίηει τθ λειτουργία του μζςω ΑΤ εντολϊν. Μερικζσ από τισ εντολζσ που δζχεται το firmware είναι: α. WR: Αποκικευςθ όλων των παραμζτρων ςτθ μνιμθ. β. RE: Επαναφορά προκακοριςμζνων τιμϊν. γ. CH: Ανάγνωςθ ι εγγραφι του καναλιοφ που χρθςιμοποιείται για αποςτολι και λιψθ δεδομζνων. δ. ID: Ανάγνωςθ ι εγγραφι τθσ ταυτότθτασ (ID) του PAN δικτφου. ε. DH και DL: Ανάγνωςθ ι εγγραφι των 32 ανϊτερων ι κατϊτερων ψθφίων τθσ διεφκυνςθσ προοριςμοφ 64 ψθφίων. ςτ. SH και SL: Ανάγνωςθ των 32 ανϊτερων ι κατϊτερων ψθφίων τθσ μοναδικισ ΛΕΕΕ διεφκυνςθσ 64 ψθφίων του εξαρτιματοσ. η. MY: Ανάγνωςθ ι εγγραφι εναλλακτικισ πθγαίασ διεφκυνςθσ 16 ψθφίων. θ. RR: Ανάγνωςθ ι εγγραφι αρικμοφ επανεκπομπϊν. κ. RN: Ανάγνωςθ ι εγγραφι αρικμοφ κυρίδων κακυςτζρθςθσ ςτον αλγόρικμο CSMA-CA. ι. SC: Ανάγνωςθ ι εγγραφι λίςτασ καναλιϊν προσ ανίχνευςθ. ια.sd: Ανάγνωςθ ι εγγραφι διάρκειασ ανίχνευςθσ καναλιϊν. ιβ. Α1: Ανάγνωςθ ι εγγραφι ρυκμίςεων εγκακίδρυςθσ ςυμμετοχισ ςτο δίκτυο τθσ τερματικισ ςυςκευισ. ιγ. Α2: Ανάγνωςθ ι εγγραφι ρυκμίςεων εγκακίδρυςθσ ςυμμετοχισ ςτο δίκτυο του ςυντονιςτι δικτφου. ιδ. SM: Ανάγνωςθ ι εγγραφι ρυκμίςεων λειτουργίασ φπνου. ιε. SP: Ανάγνωςθ ι εγγραφι περιόδου φπνωςθσ για τθ λειτουργία κυκλικισ φπνωςθσ. ιςτ. ST: Ανάγνωςθ ι εγγραφι του ανενεργοφ χρονικοφ διαςτιματοσ που απαιτείται για εκκίνθςθ φπνου ςτθ λειτουργία κυκλικισ φπνωςθσ. Οι τφποι δικτφων που υποςτθρίηονται από το XBee είναι: α) Χωρίσ φάρο (NonBeacon) και β) Χωρίσ φάρο με ςυντονιςτι. Θ προκακοριςμζνθ λειτουργία του XBee υποςτθρίηει επικοινωνίεσ δίχωσ ςιματα φάρου. Τα ςυςτιματα χωρίσ φάρο λειτουργοφν μζςα ςε ομότιμεσ τοπολογίεσ και δεν διζπονται από ςχζςεισ κυρίου-δοφλου. 83

85 Αυτό ςθμαίνει ότι τα XBee παραμζνουν ςυγχρονιςμζνα χωρίσ τθ χριςθ ρυκμίςεων από ζναν κφριο εξυπθρζτθ. Τα ομότιμα χαρακτθριςτικά τθσ αρχιτεκτονικισ τθσ MaxStream επιτρζπουν ςφντομουσ χρόνουσ ςυγχρονιςμοφ και εκκίνθςθσ. Ζνα ομότιμο δίκτυο μπορεί να εγκακιδρυκεί ρυκμίηοντασ κάκε XBee να λειτουργεί ςαν τερματικι ςυςκευι (παράμετροσ CE=0), απενεργοποιϊντασ τθν εγκακίδρυςθ ςυμμετοχισ τθσ τερματικισ ςυςκευισ (παράμετροσ Α1=0) και ρυκμίηοντασ τισ παραμζτρουσ ID και CH, ϊςτε να είναι ίδιεσ ςε όλο το δίκτυο. Μια ςυςκευι ρυκμίηεται ςυντονιςτισ ενεργοποιϊντασ τθν παράμετρο CE. Θ εκκίνθςθ του ςυντονιςτι ρυκμίηεται από τθν παράμετρο A2. Σε ζνα ςφςτθμα με ςυντονιςτι άνευ φάρου, ο ςυντονιςτισ μπορεί να ρυκμιςτεί ϊςτε να χρθςιμοποιεί είτε άμεςεσ, είτε ζμμεςεσ εκπομπζσ. Αν θ παράμετροσ SP είναι ίςθ με 0, ο ςυντονιςτισ κα ςτζλνει άμεςα τα δεδομζνα που δζχεται. Διαφορετικά θ παράμετροσ SP κακορίηει το χρονικό διάςτθμα που ο ςυντονιςτισ κα κρατά τα δεδομζνα, προτοφ τα απορρίψει. Γενικά οι παράμετροι SP και ST του ςυντονιςτι πρζπει να ταιριάηουν με τισ αντίςτοιχεσ παραμζτρουσ των τερματικϊν ςυςκευϊν. Οι λειτουργίεσ φπνωςθσ επιτρζπουν ςτο XBee να ειςάγεται ςε καταςτάςεισ χαμθλισ κατανάλωςθσ, όταν δεν χρθςιμοποιείται. Για να ειςαχκεί το XBee ςε μια λειτουργία φπνωςθσ πρζπει να ιςχφει ζνα από τα παρακάτω: Θ υποδοχι Sleep RQ να γίνει υψθλι (high). Το XBee να είναι αδρανζσ για το ποςό του χρόνου που ρυκμίηεται ςτθν παράμετρο ST για τθ λειτουργία κυκλικισ φπνωςθσ. Υπάρχουν δφο είδθ λειτουργιϊν φπνωςθσ που ρυκμίηονται μζςω τθσ παραμζτρου SM. Θ πρϊτθ ελζγχεται από τθν ςυςκευι host μζςω τθσ υποδοχισ Sleep RQ. Σε αυτι το ρεφμα μετάβαςθσ κατά τθν αφφπνιςθ, δεν ξεπερνά το ρεφμα αδράνειασ. Στθ δεφτερθ λειτουργία (κυκλικι φπνωςθ), τα εξαρτιματα επιτρζπεται να ελζγχουν περιοδικά για αςφρματα δεδομζνα. Αποςτζλλουν αίτθςθ ςτον ςυντονιςτι δικτφου για τυχόν δεδομζνα ςε ςυγκεκριμζνο χρονικό διάςτθμα που 84

86 κακορίηεται από τθν παράμετρο SP. Αν δεν υπάρχουν δεδομζνα θ ςυςκευι κα πζςει ξανά ςε φπνο. Αν υπάρχουν, μετά τθ λιψθ τουσ, θ ςυςκευι κα περιμζνει, επιτρζποντασ νζα επικοινωνία για χρονικό διάςτθμα που ρυκμίηεται με τθν παράμετρο ST. Για αλλαγι ι ανάγνωςθ των παραμζτρων, πρζπει πρϊτα το XBee να ειςαχκεί ςε λειτουργία εντολϊν (μια κατάςταςθ όπου οι ειςερχόμενοι χαρακτιρεσ ερμθνεφονται ωσ εντολζσ). Δφο τρόποι λειτουργίασ εντολϊν υποςτθρίηονται: ΑΤ και API. Για τθν ειςαγωγι ςε λειτουργία AT απαιτείται θ εξισ ακολουκία: α) Κανζνασ χαρακτιρασ δεν αποςτζλλεται για ζνα δευτερόλεπτο. β) Τρεισ χαρακτιρεσ πρόςκεςθσ (+++) ςε χρονικό διάςτθμα ενόσ δευτερολζπτου. γ) Κανζνασ χαρακτιρασ για ζνα δευτερόλεπτο. Για τθν αποςτολι AT εντολϊν και παραμζτρων απαιτείται θ ςφνταξθ τθσ εικόνασ 5.2. Πταν μια εντολι αποςτζλλεται ςτο εξάρτθμα, τότε αυτό κα τθν επεξεργαςτεί και κα τθν εκτελζςει. Μετά από επιτυχθμζνθ εκτζλεςθ κα απαντιςει με ζνα μινυμα OK, ενϊ διαφορετικά κα επιςτρζψει ζνα μινυμα ERROR. Εικόνα 5.2: φνταξθ εντολισ AT. Θ προκακοριςμζνθ λειτουργία του XBee είναι ςαν αντικαταςτάτθσ ςειριακισ γραμμισ. Αυτι θ λειτουργία δθμιουργεί εμπόδια, όταν πρζπει να ρυκμιςτοφν οι καταχωρθτζσ παραμζτρων (απαιτείται τότε θ διαδικαςία ειςόδου ςε λειτουργία εντολϊν) ι όταν ςε ζνα ςφςτθμα point-to-multipoint, θ εφαρμογι πρζπει να ςτείλει επιπλζον δεδομζνα, ϊςτε θ ςυςκευι που τα λαμβάνει να μπορεί να ξεχωρίςει αυτά που λαμβάνονται από διαφορετικζσ ςυςκευζσ. Για τουσ λόγουσ αυτοφσ θ λειτουργία API είναι αναγκαία και απαιτεί όλθ θ επικοινωνία με το εξάρτθμα να γίνεται μζςω μιασ δομθμζνθσ διαςφνδεςθσ (τα δεδομζνα μεταφζρονται ςε πεδία κακοριςμζνθσ ςειράσ). Θ λειτουργία API κακορίηει πωσ αποςτζλλονται και λαμβάνονται εντολζσ, απαντιςεισ εντολϊν, πακζτα αποςτολισ, πακζτα 85

87 λιψθσ, επιβεβαιϊςεισ και μθνφματα κατάςταςθσ, χρθςιμοποιϊντασ πεδία δεδομζνων UART. Θ κακοριςμζνθ διάρκρωςθ πεδίων δεδομζνων API διακρίνεται ςτθν εικόνα 5.3. Το πεδίο ταυτότθτασ εντολισ (cmdid) κακορίηει ποιο μινυμα API εμπεριζχεται ςτο πεδίο δεδομζνων εντολισ (cmddata). To πρϊτο byte είναι το όριο αρχισ (Start Delimiter), ακολουκοφν δφο bytes μικουσ (length) του πεδίου δεδομζνων (frame data), ενϊ το τελευταίο byte είναι το άκροιςμα ελζγχου (checksum). Το πεδίο ταυτότθτασ εντολισ μπορεί να λάβει τισ ακόλουκεσ τιμζσ: α.0x8a: Μθνφματα κατάςταςθσ του διαμορφωτιαποδιαμορφωτι (MODEM), ςε απάντθςθ ςυγκεκριμζνων καταςτάςεων. β.0x08: Εντολζσ AT με απευκείασ εφαρμογι παραμζτρων. γ.0x09: Εντολζσ AT χωρίσ απευκείασ εφαρμογι παραμζτρων. Οι παράμετροι κα εφαρμοςτοφν όταν αποςταλεί μια εντολι AT απευκείασ εφαρμογισ ι όταν αποςταλεί θ AT εντολι εφαρμογισ αλλαγϊν AC (Apply Changes). δ.0x88: Απάντθςθ εντολισ AT. ε. 0x00: Αίτθςθ αποςτολισ ςε IEEE διεφκυνςθ 64 ψθφίων. ςτ.0x01: Αίτθςθ αποςτολισ ςε διεφκυνςθ 16 ψθφίων. η.0x89: Αποτζλεςμα αποςτολισ. θ.0x80: Λθφκζν πακζτο IEEΕ διεφκυνςθσ 64 ψθφίων. κ.0x81: Λθφκζν πακζτο διεφκυνςθσ 16 ψθφίων. O αναγνϊςτθσ μπορεί να ανατρζξει ςτο manual του XBee για περιςςότερεσ πλθροφορίεσ [17]. Εικόνα 5.3: Διάρκρωςθ πεδίων API. 86

88 5.2 Η αςφρματη ςυςκευή MatchPort b/g τησ Lantronix Θ MatchPort b/g είναι μία αςφρματθ ενςωματωμζνθ ςυςκευι server που παρζχει λφςεισ δικτφωςθσ βαςιςμζνεσ ςτα πρότυπα b/g τθσ IEEE και καλωδιωμζνου Ethernet. Οι λειτουργίεσ τθσ είναι ανεξάρτθτεσ τθσ φπαρξθσ προςωπικοφ υπολογιςτι (PC) και παρζχουν μια ολοκλθρωμζνθ λφςθ που ςυνδυάηει επεξεργαςτι, μνιμθ, αςφρματο πομποδζκτθ b/g και ςειριακι κφρα μζγιςτου baud rate 230Κ, ςε ζνα ςυμπαγζσ εξάρτθμα. Ρεριλαμβάνει λειτουργικό ςφςτθμα, ενςωματωμζνο εξυπθρζτθ ιςτοφ (web server) και πλιρθ ςτοίβα πρωτοκόλλων TCP/IP. Επί προςκζτωσ θ MatchPort αποςτζλλει προειδοποιιςεισ και υποςτθρίηει πολυάρικμα πρωτόκολλα επικοινωνίασ δικτφων, περιλαμβανόμενων των ARP, UDP, TCP, ICMP, Telnet, AutoIP, DHCP, HTTP, SNMP, και SMTP. Θ αςφάλεια τθσ επικοινωνίασ είναι εγγυθμζνθ μζςω WEP, WPA και i/WPA2- Personal. Ραρζχεται επίςθσ κρυπτογράφθςθ AES. Οι κφριεσ δυνατότθτεσ και τα χαρακτθριςτικά τθσ ςυςκευισ είναι [18, 19]: α. Επικοινωνία μεταξφ TCP και UDP ςε ςειριακι. β. Αςφρματθ διαςφνδεςθ (802.11b/g) με προςταςία WEP, WPA, ι i/WPA2-Personal. γ. Διαςφνδεςθ Ethernet. δ. Ειδοποίθςθ ρυκμιηόμενων προειδοποιιςεων και γεγονότων. ε. Αναβακμιηόμενο firmware. ςτ. Ραρακολοφκθςθ SNMP. η. Σφνδεςθ με τισ ςυςκευζσ μζςω καναλιοφ δεδομζνων TCP ι UDP ςε υπολογιςτζσ ι κάποιον άλλο εξυπθρζτθ ςυςκευισ. θ. Web Server που επιτρζπει τθν παρουςίαςθ διαφόρων περιεχομζνων και τθν εφκολθ ρφκμιςθ τθσ ςυςκευισ. κ. Ρζντε προγραμματιηόμενεσ υποδοχζσ ειςόδου εξόδου που χρθςιμοποιοφνται για τθν παρακολοφκθςθ και τον ζλεγχο των προςαρμοςμζνων ςυςκευϊν ςτο MatchPort. ι. Υποςτιριξθ RS-232 και RS-485 ωσ Baud. ια. 16 Mbit flash μνιμθ. ιβ. ολόι χαμθλισ ςυχνότθτασ (26 ΜΘz) ι κανονικισ (48 ΜΘz). ιγ. Ταχφτθτεσ μετάδοςθσ 1,2,5.5,11,6,9,12,18,24,36,48 και 54 87

89 Mbps. ιδ. Εφροσ ςυχνοτιτων 2.4 ωσ GHz. ιε. Λςχφσ εκπομπισ /-1.5 dbm ςε ταχφτθτεσ μετάδοςθσ 1,2,5.5 και 11 Mbps και 12 ±1.5 dbm ςε ταχφτθτεσ μετάδοςθσ 6,9 και μεγαλφτερεσ των 12 Mbps. ιςτ. Μζγιςτο επίπεδο λιψθσ -10 dbm. ιη. Ευαιςκθςία δζκτθ -69 dbm ςτα 54 Μbps. ιθ. Κατανάλωςθ ιςχφοσ ςε αςφρματθ λειτουργία 830 mw με μεταφορά δεδομζνων ταχφτθτασ 230 Mbps και 350 mw χωρίσ μεταφορά δεδομζνων. ικ. Εμβζλεια εςωτερικϊν χϊρων 100 m. 88

90 Μζροσ Β Υλοποίηςη 89

91 Κεφάλαιο 6 Το λειτουργικό ςφςτημα ISOS τησ Πρίςμα Το λειτουργικό ςφςτθμα πραγματικοφ χρόνου ISOS, είναι απαραίτθτο για τθ ςυγγραφι λογιςμικοφ εφαρμογϊν πραγματικοφ χρόνου. Για παράδειγμα μία εφαρμογι λιψθσ μετριςεων από ζναν αιςκθτιρα περιλαμβάνει πολλζσ καταςτάςεισ μθχανισ (finite state machine). Μία κατάςταςθ μπορεί να είναι θ λιψθ μιασ μζτρθςθσ και μια άλλθ θ αποςτολι τθσ. Επίςθσ υπάρχουν καταςτάςεισ επεξεργαςίασ και ελζγχου λακϊν. Μια εφαρμογι πρζπει να ζχει τθ δυνατότθτα να εκτελεςτεί ςε διαφορετικι κατάςταςθ κάκε φορά. Επίςθσ οι καταςτάςεισ δεν διαδζχονται θ μία τθν άλλθ, δθλαδι αν εκτελζςτθκε θ τζταρτθ κατάςταςθ εφαρμογισ αυτό δεν ςθμαίνει ότι θ επόμενθ κατάςταςθ που κα εκτελεςτεί κα είναι θ πζμπτθ. Τζλοσ θ αλλθλουχία εκτζλεςθσ των καταςτάςεων μπορεί να μθν επθρεάηεται από τθν εφαρμογι, αλλά από εξωτερικά γεγονότα. 6.1 Ο προγραμματιςτήσ διεργαςιών και ο ρόλοσ τησ κφριασ ςυνάρτηςησ (main) Το λογιςμικό που τρζχει ςτουσ ζξυπνουσ αιςκθτιρεσ αποτελείται από κάποιεσ εφαρμογζσ που πρζπει να εκτελοφνται ανάλογα με τθν παραμετροποίθςθ που ζχει γίνει. Υπάρχουν χρονικζσ παράμετροι, για παράδειγμα οι περίοδοι μζτρθςθσ. Το λειτουργικό ςφςτθμα πρζπει να εξαςφαλίηει ότι οι εφαρμογζσ κα εκτελεςτοφν όταν πρζπει. Επίςθσ δεν πρζπει να επιτρζπει τθν παρατεταμζνθ ςτζρθςθ εκτζλεςθσ μιασ εφαρμογισ. Οι εφαρμογζσ γράφονται ςε πολλζσ καταςτάςεισ για να μθν ζχουν μεγάλο χρόνο εκτζλεςθσ, να μποροφν να δζχονται εξωτερικά μθνφματα χωρίσ να ςπαταλοφν χρόνο και να δίνουν το δικαίωμα ςτισ υπόλοιπεσ εφαρμογζσ να εκτελεςτοφν περίπου ςτθν ϊρα τουσ. Θ καρδιά του λειτουργικοφ ςυςτιματοσ είναι ο προγραμματιςτισ διεργαςιϊν. Κάκε εφαρμογι που κζλουμε να εκτελεςτεί πρζπει προθγουμζνωσ να ειςαχκεί ςε μια ςυνδεδεμζνθ λίςτα διεργαςιϊν. Θ ειςαγωγι γίνεται δίνοντασ δφο παραμζτρουσ. Θ πρϊτθ παράμετροσ 90

92 είναι ο χρόνοσ εκτζλεςθσ, δθλαδι ςε πόςο χρόνο από τθ ςτιγμι ειςαγωγισ πρζπει να εκτελεςτεί θ εφαρμογι. Θ δεφτερθ είναι θ προτεραιότθτα τθσ εφαρμογισ που κακορίηει ποια εφαρμογι κα εκτελεςτεί, όταν ζχει φκάςει ο χρόνοσ εκτζλεςθσ δφο ι και παραπάνω εφαρμογϊν. Μεγάλθ προτεραιότθτα ςθμαίνει μικρόσ αρικμόσ παραμζτρου. Δεν μπορεί να εξαςφαλιςτεί ότι δφο ι παραπάνω εφαρμογζσ, δεν κα πρζπει να εκτελεςτοφν τθν ίδια χρονικι ςτιγμι. Ο λόγοσ είναι πρϊτον ότι θ περίοδοσ εκτζλεςθσ μιασ εφαρμογισ μπορεί να είναι πολλαπλάςιο μιασ άλλθσ και δεφτερον ότι οι χρονικοί περιοριςμοί δεν είναι αυςτθροί, διότι ενδζχεται να ςυμβοφν λάκθ ςτισ επικοινωνίεσ τα οποία ζχουν χρονικό κόςτοσ διόρκωςθσ. Γι αυτοφσ τουσ λόγουσ,αλλά και για τθν αποφυγι παρατεταμζνθσ ςτζρθςθσ είναι αναγκαία θ ειςαγωγι προτεραιότθτασ. xb802_check_state() wifi_pdl() ProcSchedCheck() Checks signal from Timer A ISR. Has the time come to execute a procedure? NO YES Run the procedure which is on top of the procedure list. sc_try_to_sleep() Divide all priorities by 2 and delete the procedure from the list. Διάγραμμα 6.1: Η λειτουργία τθσ κφριασ ςυνάρτθςθσ (main). Θ κφρια ςυνάρτθςθ του λογιςμικοφ (main) επιτελεί τθν εξισ απλι λειτουργία ςε ζναν ατζρμονα βρόχο (διάγραμμα 6.1). Ελζγχει τθν 91

93 κατάςταςθ του αςφρματου XBee (ςυνάρτθςθ xb802_check_state), προςπακεί να λάβει αςφρματα δεδομζνα που ζχουν ιδθ λθφκεί από το MatchPort τθσ Lantronix (Αυτό γίνεται μόνο ςτο ςυντονιςτι δικτφου, καλϊντασ τθ ςυνάρτθςθ wifi_pdl, γιατί οι ζξυπνοι αιςκθτιρεσ δεν ζχουν MatchPort.) και ςτθ ςυνζχεια ελζγχει το ενδεχόμενο να ζχει φκάςει θ ςτιγμι εκτζλεςθσ μιασ εφαρμογισ (ςυνάρτθςθ ProcSchedCheck). Αν ζχει φκάςει θ ϊρα εκτζλεςθσ, διατάηει τθν εκτζλεςθ τθσ και αυξάνει τθν προτεραιότθτα όλων των υπόλοιπων εφαρμογϊν που βρίςκονται ςτθ λίςτα, διαιρϊντασ τθν παράμετρο προτεραιότθτασ τουσ με το δφο. Αν όχι, τότε το λειτουργικό ςφςτθμα προςπακεί να κοιμιςει τον μικροελεγκτι (ςυνάρτθςθ sc_try_to_sleep). Ροιεσ ςυνκικεσ όμωσ επιτρζπουν τθν φπνωςθ και πϊσ κα αφυπνιςτεί ο μικροελεγκτισ; Ακόμθ, πωσ ικανοποιοφνται οι χρονικοί περιοριςμοί εκτζλεςθσ; 6.2 O ρόλοσ του Timer A Υπάρχουν περιπτϊςεισ που δεν πρζπει μικροελεγκτισ να κοιμθκεί. Για παράδειγμα, όταν ο μικροελεγκτισ κζλει να αποςτείλει ζνα αςφρματο πακζτο δεδομζνων, δεν πρζπει να κοιμθκεί προτοφ το ςτείλει και λάβει επιβεβαίωςθ ότι το πακζτο ςτάλκθκε επιτυχϊσ ι μθ. Για το λόγο αυτό υπάρχει μια κακολικι ςθμαία που επιτρζπει ι όχι τθν φπνωςθ ανάλογα με τισ ςυνκικεσ. Θ αφφπνιςθ, αλλά και θ ικανοποίθςθ των χρονικϊν περιοριςμϊν γίνεται μζςω τθσ ρουτίνασ εξυπθρζτθςθσ διακοπισ (CCIFG) του Timer A. Ο Timer A ζχει ρυκμιςτεί ςε λειτουργία ανόδου και θ πθγι ρολογιοφ του είναι το βοθκθτικό ρολόι πραγματικοφ χρόνου που ζχει προςαρμοςτεί ςτο ACLK. Θ περίοδοσ διακοπισ ζχει ρυκμιςτεί ςτα 10 ms. Επιλζγουμε τισ λειτουργίεσ χαμθλισ κατανάλωςθσ LPM3 και LPM0 για τθν φπνωςθ. Θ λειτουργία LPM3 απενεργοποιεί τα πάντα πλθν του ρολογιοφ πραγματικοφ χρόνου ενϊ θ LPM0 απενεργοποιεί τθ CPU και το MCLK, αλλά όχι το SMCLK των περιφερειακϊν τμθμάτων. Τα παραπάνω ςθμαίνουν ότι ο Timer A κα παράγει πάντα διακοπζσ, αςχζτωσ του τρόπου λειτουργίασ του μικροελεγκτι. Μζςα ςτθ ρουτίνα εξυπθρζτθςθσ διακοπισ του Timer A (διάγραμμα 6.2) το πρϊτο βιμα είναι να μειωκοφν όλοι οι χρόνοι 92

94 εκτζλεςθσ εφαρμογϊν, αλλά και άλλοι βοθκθτικοί χρόνοι ελζγχου που ζχουν τεκεί, κατά μια χρονικι μονάδα (Μια χρονικι μονάδα αντιςτοιχεί ςε 10 ms.). Το δεφτερο βιμα είναι να βρεκεί, αν ζχει ζρκει θ ϊρα εκτζλεςθσ μιασ εφαρμογισ. Στθν περίπτωςθ που βρεκεί μια εφαρμογι το τρίτο βιμα είναι θ αφφπνιςθ του μικροελεγκτι μετά το τζλοσ τθσ ρουτίνασ εξυπθρζτθςθσ διακοπισ. Μετά τθν αφφπνιςθ ο ατζρμον βρόχοσ τθσ main κα ςυνεχίςει να εκτελείται, μζχρι να επιτραπεί εκ νζου θ φπνωςθ, μζςω τθσ κακολικισ ςθμαίασ που ελζγχει τθν φπνωςθ ςτθ ςυνάρτθςθ που καλεί θ main για να προςπακιςει να κοιμιςει τον μικροελεγκτι. Update all time variables. Has the time come to execute a procedure? after 10 msec NO YES Signal ProcSchedCheck(). Wake up from any sleep mode. Διάγραμμα 6.2: Η ρουτίνα εξυπθρζτθςθσ διακοπισ του Timer A. Το ποια λειτουργία φπνωςθσ κα επιλεχτεί (LPM3 ι LPM0) εξαρτάται από τθν εκάςτοτε εφαρμογι. Στο 99.9% των περιπτϊςεων οι εφαρμογζσ, μζςω μιασ ςθμαίασ επιλζγουν τθν πολφ οικονομικι λειτουργία LPM3. Πμωσ, αν για ζνα μικρό χρονικό διάςτθμα είναι κρίςιμο να παραμείνει ενεργό το ρολόι των περιφερειακϊν τμθμάτων SMCLK, τότε επιλζγεται θ λειτουργία LPM0 (Θ LPM0 επιτρζπεται μόνο ςτθν εφαρμογι του επιταχυνςιομζτρου, όταν λαμβάνονται δείγματα χρθςιμοποιϊντασ το SMCLK.). 93

95 Πταν μια εφαρμογι εκτελεςτεί, τότε διαγράφεται από τθ ςυνδεδεμζνθ λίςτα διεργαςιϊν. Επομζνωσ όταν κάποιοσ κζλει θ εφαρμογι του να εκτελεςτεί ξανά μετά από ςυγκεκριμζνο χρονικό διάςτθμα κα πρζπει να ειςάγει ζνα δεφτερο ςτιγμιότυπο τθσ ςυνάρτθςθσ που υλοποιεί τθν εφαρμογι ςτθ ςυνδεδεμζνθ λίςτα, πριν αυτι διαγραφεί. Ο προγραμματιςμόσ όλων των εφαρμογϊν βαςίηεται ςτθν μετάβαςθ τθσ εφαρμογισ από καταςτάςεισ που ζχουν κακοριςμζνα χρονικά διαςτιματα εκτζλεςθσ. Επομζνωσ πριν τθν επιςτροφι τθσ ςυνάρτθςθσ, κακορίηεται θ επόμενθ κατάςταςθ και ο χρόνοσ εκτζλεςθσ τθσ. Πλα τα παραπάνω κα καταςτοφν ςαφι, όταν αναφερκοφν οι εφαρμογζσ που υλοποιοφν τισ εντολζσ παραμετροποίθςθσ, λαμβάνουν δεδομζνα από τουσ αιςκθτιρεσ, αποςτζλλουν εντολζσ ςε αυτοφσ και επικοινωνοφν αςφρματα με το εξωτερικό περιβάλλον. 94

96 Κεφάλαιο 7 Η επικοινωνία του μικροελεγκτή του ζξυπνου αιςθητήρα με τουσ αιςθητήρεσ 7.1 Υλοποίηςη Ι 2 C Οι αιςκθτιρεσ κερμοκραςίασ και φωτεινότθτασ διακζτουν διαςφνδεςθ I 2 C ι SMBus. Θ επικοινωνία με τον μικροελεγκτι γίνεται μζςω του περιφερειακοφ τμιματοσ I 2 C. Ο μικροελεγκτισ λειτουργεί ωσ κφριοσ και οι αιςκθτιρεσ λειτουργοφν ωσ υπθρζτεσ. Στθ ςυνζχεια κα γίνει μια ςφντομθ αναφορά ςτον τρόπο λειτουργίασ κυρίου του περιφερειακοφ τμιματοσ I 2 C, προτοφ αναλυκεί το λογιςμικό επικοινωνίασ I 2 C. Θ λειτουργία κυρίου-εκπομποφ και δζκτθ ελζγχεται με τα ψθφία I2CRM, I2CSTT και I2CSTP. Θ γραμμι SCL κρατείται χαμθλι, όταν χρειάηεται θ παρζμβαςθ τθσ CPU μετά τθ λιψθ ι τθν αποςτολι ενόσ byte. Πλοι οι τρόποι λειτουργίασ κυρίου παρουςιάηονται ςτον πίνακα 7.1. I2CRM I2CSTP I2CSTT Κατάσταση ή δραστηριότητα διαύλου X 0 0 Το I 2 C ημήμα είναι ζε καηάζηαζη αδπάνειαρ. Δεν παπάγονηαι καηαζηάζειρ εκκίνηζηρ ή ηεπμαηιζμού Η ενεπγοποίηζη ηος I2CSTT ξεκινά δπαζηηπιόηηηα. Ο καηασυπηηήρ I2CNDAT καθοπίζει ηο μήκορ μεηαθοπάρ. Μια καηάζηαζη ηεπμαηιζμού δεν παπάγεηαι αςηόμαηα μεηά ηη μεηαθοπά I2CNDAT bytes. Το λογιζμικό ππέπει να ενεπγοποιήζει ηο I2CSTP ώζηε να παπασθεί μια καηάζηαζη ηεπμαηιζμού ζηο ηέλορ ηηρ μεηαθοπάρ. Η λειηοςπγία αςηή σπηζιμοποιείηαι για καηαζηάζειρ επανεκκίνηζηρ Το ίδιο με πποηγοςμένυρ, μόνο πος ηώπα έσοςμε αςηόμαηη παπαγυγή καηάζηαζηρ ηεπμαηιζμού μεηά ηη μεηαθοπά I2CNDAT bytes To I2CNDAT δεν σπηζιμοποιείηαι για να καθοπίζει ηο μήκορ ηηρ μεηαθοπάρ. Το λογιζμικό ππέπει να ελέγσει ηο μήκορ ηηρ μεηαθοπάρ. Η ενεπγοποίηζη ηος I2CSTT ξεκινά δπαζηηπιόηηηα. Το λογιζμικό ππέπει να ενεπγοποιήζει ηο I2CSTP ώζηε να παπασθεί μια καηάζηαζη ηεπμαηιζμού δπαζηηπιόηηηαρ. Η λειηοςπγία αςηή σπηζιμεύει αν ππέπει να μεηαθεπθούν πεπιζζόηεπα από 255 bytes. Δεν ππέπει να σπηζιμοποιείηαι όηαν απαιηείηαι επανεκκίνηζη. To I2CRM ππέπει να απενεπγοποιηθεί για ηην παπαγυγή καηάζηαζηρ επανεκκίνηζηρ. 95

97 0 1 0 Η ενεπγοποίηζη ηος I2CSTP τηθίος παπάγει μια καηάζηαζη ηεπμαηιζμού μόλιρ ζηαλθούν I2CNDAT bytes δεδομένυν ή απεςθείαρ αν έσοςν ήδη αποζηαλεί I2CNDAT bytes δεδομένυν Η ενεπγοποίηζη ηος I2CSTP τηθίος παπάγει μια καηάζηαζη ηεπμαηιζμού μόλιρ η ηπέσοςζα μεηαθοπά ζςμπληπυθεί ή απεςθείαρ αν δεν ςπάπσει μεηαθοπά και η καηάζηαζη ηεπμαηιζμού δεν έσει γίνει ήδη. Αν έσει πποηγηθεί καηάζηαζη ηεπμαηιζμού δεν θα παπασθεί νέα Καηειλημμένο. Καμία δπαζηηπιόηηηα ζηο δίαςλο. Πίνακασ 7.1: Σρόποι λειτουργίασ κυρίου. Χρθςιμοποιικθκαν οι λειτουργίεσ ςτισ οποίεσ ο καταχωρθτισ I2CNDAT κακορίηει τον αρικμό των μεταφερόμενων bytes (I2CRM=0). Στο λογιςμικό που υλοποιεί τθν επικοινωνία I 2 C, ζχουν δθμιουργθκεί δφο δομζσ ενδιάμεςθσ αποκικευςθσ δεδομζνων (μια για αποςτολι και μια για λιψθ) που περιλαμβάνουν ζνα πίνακα δεδομζνων, ζναν δείκτθ ςτθν αρχι των δεδομζνων και ζναν αρικμό μικουσ δεδομζνων. Ορίηονται τζςςερισ καταςτάςεισ: α)αδράνεια β)αποςτολι γ)επιλογι καταχωρθτι δ)λιψθ ι ανάγνωςθ. Πταν κζλουμε να αποςτείλουμε δεδομζνα (διάγραμμα 7.1), τότε τα εγγράφουμε ςτθ δομι αποςτολισ, κζτουμε τον καταχωρθτι I2CNDAT ίςο με τον αρικμό των bytes που κζλουμε να ςτείλουμε και δίνουμε ςτον δείκτθ κζςθσ τθσ δομισ αποςτολισ τθν τιμι μθδζν. Στθ ςυνζχεια πθγαίνουμε ςτθν κατάςταςθ αποςτολισ δεδομζνων. Τότε κζτουμε το I 2 C ςε λειτουργία εκπομποφ (I2CTRX=1) και επιλζγουμε I2CSTT=1. Μόλισ πραγματοποιθκεί θ κατάςταςθ εκκίνθςθσ, κα ζλκει διακοπι αποςτολισ, ςτθν οποία κα εγγράψουμε τον καταχωρθτι I2CDRB (ςτο μπλοκ διάγραμμα τθσ εικόνασ 3.28 αναφζρεται ωσ I2CDRW) με το πρϊτο byte που κα αποςτείλουμε. Κα ζρχονται ςυνζχεια διακοπζσ μζχρι να ολοκλθρωκεί θ αποςτολι όλων των bytes. Στθ ρουτίνα εξυπθρζτθςθσ τθσ διακοπισ αποςτολισ κάκε φορά αυξάνεται κατά ζνα ο δείκτθσ κζςθσ και εγγράφεται ςτον καταχωρθτι I2CDRB το ανάλογο byte, ζτςι ϊςτε να αποςτζλλεται πάντα το ςωςτό byte. Πταν αποςταλοφν όλα τα bytes, κα ζλκει θ διακοπι πρόςβαςθσ καταχωρθτϊν. Στθ ρουτίνα εξυπθρζτθςθσ αυτισ τθσ διακοπισ κα δθμιουργιςουμε τθν κατάςταςθ τερματιςμοφ (I2CSTP=1). Εν τζλει επιςτρζφουμε ςτθν κατάςταςθ αδράνειασ. 96

98 Idle State Write data in the transmit buffer. Set I2CNDAT equal to number of bytes to transmit. Set the position pointer of the transmit buffer to zero. Go to Transmit State. Transmit State I2CTRX=1 I2CSTT=1 Transmit State ARDYIFG=1 TXRDYIFG=1 Set I2CDRB equal to the correct byte to transmit. Add one to the position pointer. I2CSTP=1 Διάγραμμα 7.1: Καταςτάςεισ λογιςμικοφ του περιφερειακοφ I 2 C κατά τθν αποςτολι δεδομζνων. Πταν κζλουμε να διαβάςουμε ζναν καταχωρθτι μιασ ςυςκευισ δοφλου (διάγραμμα 7.2), γράφουμε ςτθ δομι αποςτολισ το byte που αντιςτοιχεί ςτο ςυγκεκριμζνο καταχωρθτι. Επίςθσ κζτουμε το μικοσ δεδομζνων αποςτολισ ίςο με ζνα και γράφουμε ςτον καταχωρθτι I2CNDAT τθν τιμι ζνα. Στθ ςυνζχεια πθγαίνουμε ςτθν κατάςταςθ επιλογισ καταχωρθτι και κζτουμε όπωσ και προθγοφμενα I2CTRX=I2CSTT=1. Μετά τθν κατάςταςθ εκκίνθςθσ, ζρχεται διακοπι αποςτολισ ςτθν οποία εγγράφουμε τον I2CDRB με το byte επιλογισ καταχωρθτι προσ ανάγνωςθ. Μετά τθν αποςτολι του byte ζρχεται διακοπι πρόςβαςθσ καταχωρθτϊν. Στθ ρουτίνα εξυπθρζτθςθσ μεταβαίνουμε ςτθν κατάςταςθ ανάγνωςθσ. Εκεί αλλάηουμε το Λ 2 C ςε λειτουργία δζκτθ (I2CTRX=0), εγγράφουμε τον καταχωρθτι I2CNDAT με το μικοσ των bytes που κα λάβουμε και δθμιουργοφμε νζα κατάςταςθ 97

99 εκκίνθςθσ. Μετά τθ λιψθ κάκε χαρακτιρα ζρχεται διακοπι ανάγνωςθσ. Στθ ρουτίνα εξυπθρζτθςθσ τθσ, διαβάηουμε το byte από τον I2CDRB και το αποκθκεφουμε ςτον πίνακα τθσ δομισ ανάγνωςθσ και ςτθ κζςθ που δείχνει ο δείκτθσ κζςθσ, αυξάνοντασ ςτθ ςυνζχεια τον δείκτθ κζςθσ κατά ζνα, ϊςτε να είναι ζτοιμοσ για τθν επόμενθ λιψθ. Πταν λθφκοφν όλοι οι χαρακτιρεσ, ζρχεται διακοπι πρόςβαςθσ καταχωρθτϊν. Τότε παράγουμε κατάςταςθ τερματιςμοφ και επιςτρζφουμε ςτθν κατάςταςθ αδράνειασ. Idle State Write selection register byte in the transmit buffer. Set I2CNDAT equal to one. Go to Select Register State. Read received byte from I2CDRB and store it to the receive buffer. Add one to the position pointer of the received buffer. I2CSTP=1 Select Register State RXRDYIFG=1 Receive State ARDYIFG=1 I2CTRX=1 I2CSTT=1 Set I2CNDAT equal to number of bytes to receive. I2CTRX=0 I2CSTT=1 Select Register State ARDYIFG=1 Receive State Set I2CDRB equal to the selection register byte. I2CSTP=1 Διάγραμμα 7.2: Καταςτάςεισ λογιςμικοφ του περιφερειακοφ I 2 C κατά τθ λιψθ δεδομζνων από καταχωρθτι ςυςκευισ δοφλου. Ππωσ φαίνεται το λογιςμικό, μόνο για τθν υλοποίθςθ του Λ 2 C δεν είναι κακόλου απλό, αφοφ ςτθρίηεται πάνω ςτα ςιματα διακοπισ του περιφερειακοφ τμιματοσ και ςε ςυγκεκριμζνουσ καταχωρθτζσ και ψθφία αυτϊν. Με ανάλογεσ ρυκμίςεισ γίνεται και ο κακοριςμόσ τθσ ταχφτθτασ μεταφοράσ του περιφερειακοφ Λ 2 C. Εκεί θ ρφκμιςθ δεν 98

100 εξαρτάται από διακοπζσ, αλλά μόνο από καταχωρθτζσ και είναι αρκετά πιο απλι. 7.2 Επικοινωνία με τον αιςθητήρα θερμοκραςίασ TMP101 Θ επικοινωνία του μικροελεγκτι με τον αιςκθτιρα κερμοκραςίασ, επιτυγχάνεται μζςω τριϊν κφριων ςυναρτιςεων. Οι δφο πρϊτεσ χρθςιμοποιοφν άμεςα τθν υλοποίθςθ του Λ 2 C. Θ πρϊτθ ρυκμίηει τθν λειτουργία του αιςκθτιρα εγγράφοντασ ςτον καταχωρθτι διευκζτθςθσ. Θ εγγραφι γίνεται χρθςιμοποιϊντασ τθν κατάςταςθ αποςτολισ του Λ 2 C. Θ δεφτερθ ςυνάρτθςθ διαβάηει ζναν καταχωρθτι του αιςκθτιρα. Θ ανάγνωςθ χρθςιμοποιεί τθν κατάςταςθ επιλογισ καταχωρθτι του Λ 2 C. Τζλοσ θ τρίτθ κφρια ςυνάρτθςθ χρθςιμοποιεί τθν δεφτερθ για να διαβάςει τον καταχωρθτι κερμοκραςίασ. Στθ ςυνζχεια κάνει τισ απαραίτθτεσ πράξεισ που απαιτοφνται για τον υπολογιςμό τθσ κερμοκραςίασ. Θ ταχφτθτα μεταφοράσ ρυκμίηεται από διαφορετικι ςυνάρτθςθ και είναι λίγο μικρότερθ των 400 KHz. 7.3 Επικοινωνία με τον αιςθητήρα φωτόσ περιβάλλοντοσ TSL2550 Θ επικοινωνία με τον TSL2550 ςτθρίηεται ςε τζςςερισ κφριεσ ςυναρτιςεισ. Θ πρϊτθ από αυτζσ ρυκμίηει τον αιςκθτιρα ςε κανονικι ι εκτεταμζνθ λειτουργία. Χρθςιμοποιεί τθν κατάςταςθ αποςτολισ του Λ 2 C για να εγγράψει ςτον καταχωρθτι εντολϊν του TSL2550. Θ δεφτερθ και θ τρίτθ ςυνάρτθςθ χρθςιμοποιοφνται ςε ςυνδυαςμό για να διαβάςουν ζναν καταχωρθτι. Θ δεφτερθ επιλζγει τον καταχωρθτι χρθςιμοποιϊντασ τθν κατάςταςθ αποςτολισ του Λ 2 C ενϊ θ τρίτθ τον διαβάηει χρθςιμοποιϊντασ τθν κατάςταςθ ανάγνωςθσ. Τζλοσ θ τζταρτθ κφρια ςυνάρτθςθ υπολογίηει το επίπεδο φωτόσ ςε Lux αφοφ προθγουμζνωσ ζχουν λθφκεί τιμζσ και από τα δφο κανάλια του αιςκθτιρα. Θ ταχφτθτα μεταφοράσ ζχει ρυκμιςτεί από διαφορετικι ςυνάρτθςθ περίπου ςτα 80 KHz. 99

101 7.4 Επικοινωνία με τον αιςθητήρα θερμοκραςίασ και υγραςίασ SHT11 Θ επικοινωνία με τον αιςκθτιρα SHT11 υλοποιείται διαφορετικά από τισ προθγοφμενεσ, κακϊσ θ διςφρματθ διαςφνδεςθ του δεν είναι ςυμβατι με Λ 2 C ι SMBus. Δφο υποδοχζσ ειςόδου εξόδου του μικροελεγκτι ςυνδζονται με τισ γραμμζσ SCK και SDA. Θ υποδοχι SCK ρυκμίηεται ζξοδοσ, ενϊ θ υποδοχι SDA ρυκμίηεται ανάλογα με τθν τρζχουςα λειτουργία. Θ εκκίνθςθ τθσ μετάδοςθσ επιτυγχάνεται ρυκμίηοντασ τθν SDA ωσ ζξοδο και με χριςθ ρουτίνασ κακυςτζρθςθσ. Υπάρχουν ςυναρτιςεισ ανάγνωςθσ και αποςτολισ byte από τον δίαυλο, οι οποίεσ αντίςτοιχα ςτζλνουν και λαμβάνουν επιβεβαιϊςεισ. Αν ο χριςτθσ κζλει να λάβει μια μζτρθςθ τότε τθν αιτείται, μζςω τθσ ςυνάρτθςθσ αποςτολισ byte. Στθ ςυνζχεια ελζγχει για τθν πραγματοποίθςθ τθσ μετατροπισ, που ζχει ςαν ςυνζπεια ο αιςκθτιρασ να κρατιςει χαμθλά τθν γραμμι δεδομζνων. Τζλοσ, λαμβάνει τα δφο bytes τθσ μζτρθςθσ αλλά και το άκροιςμα ελζγχου μζςω τθσ ςυνάρτθςθσ λιψθσ byte. Αφοφ λθφκεί μια μζτρθςθ ελζγχεται το άκροιςμα ελζγχου. Στθ ςυνζχεια με τον ίδιο τρόπο λαμβάνεται και θ δεφτερθ μζτρθςθ (απαιτοφνται μετριςεισ και υγραςίασ και κερμοκραςίασ) και υπολογίηονται οι πραγματικζσ τιμζσ υγραςίασ και κερμοκραςίασ βάςει των εξιςϊςεων που περιγράφθκαν ςτθν παράγραφο 4.2. Θ ταχφτθτα μεταφοράσ δεν μπορεί να υπολογιςτεί αφοφ θ μεταφορά είναι πλιρουσ ςτατικισ λογικισ. 7.5 Χρήςη του επιταχυνςιομζτρου ADXL320 Δεν απαιτείται επικοινωνία με το επιταχυνςιόμετρο, αφοφ αυτό είναι αναλογικό. Οι μετριςεισ λαμβάνονται δειγματολθπτϊντασ τισ εξόδουσ του με τον A/D μετατροπζα. Θ περίοδοσ δειγματολθψίασ ορίηεται από το χριςτθ. Οι μετριςεισ αποκθκεφονται ςτθ μνιμθ RAM χωρίσ τθν παρζμβαςθ τθσ CPU με τθ βοικεια του ελεγκτι DMA. Στθ ςυνζχεια κα αναφερκεί ο τρόποσ με τον οποίο γίνεται θ δειγματολθψία και ο προγραμματιςμόσ του ελεγκτι DMA. 100

102 Οι δφο ζξοδοι του επιταχυνςιομζτρου ςυνδζονται ςτισ ειςόδουσ A0 και Α1 του A/D μετατροπζα (εικόνα 3.10).Θ πθγι εκκίνθςθσ τθσ δειγματολθψίασ (SHI) είναι θ μονάδα εξόδου 1 του Timer B. Το ρολόι δειγματολθψίασ και μετατροπισ του A/D, αλλά και πθγισ του Timer B είναι το SMCLK ςτα 8 MHz. Ο Timer B ζχει ρυκμιςτεί ϊςτε να παράγει ανερχόμενεσ μεταβάςεισ ςε χρονικά διαςτιματα που αντιςτοιχοφν ςτθ ςυχνότθτα δειγματολθψίασ. Το ςιμα SHI διεγείρει τον χρονομετρθτι δειγματολθψίασ (SHP=1) ςε λειτουργία δειγματολθψίασ πολλϊν καναλιϊν (CONSEQx=01) και πολλαπλισ δειγματολθψίασ και μετατροπισ (MSC=1). Θ λειτουργία αυτι επιλζχτθκε διότι κζλουμε ζναν αρικμό μετριςεων (που ορίηει ο χριςτθσ) για κάκε κανάλι και επίςθσ τα δείγματα των δφο καναλιϊν να είναι όςο πιο χρονικά κοντά γίνεται για να μπορεί να υπολογιςτεί το διάνυςμα τθσ επιτάχυνςθσ. Άρα ςε κάκε περίοδο του Timer B λαμβάνονται δφο δείγματα, ζνα για κάκε κανάλι. Μετά τθ δειγματολθψία και τθ μετατροπι του δεφτερου καναλιοφ ενεργοποιείται θ ςθμαία διακοπισ ADC12IFG, θ οποία αποτελεί είςοδο ενεργοποίθςθσ του ελεγκτι DMA (εικόνα 3.14). Ο τρόποσ διευκυνςιοδότθςθσ είναι από μπλοκ μνιμθσ ςε μπλοκ μνιμθσ ενϊ επιτελείται μεταφορά λζξεων μνιμθσ (κάκε μζτρθςθ είναι 12 ψθφίων). Ο τρόποσ μεταφοράσ είναι επαναλαμβανόμενων μπλοκ. Ο καταχωρθτισ DMAxSZ παίρνει τθν τιμι δφο διότι κζλουμε τθ μεταφορά δφο λζξεων τθ φορά. Θ ςθμαία διακοπισ του ελεγκτι DMA ενεργοποιείται μόλισ ολοκλθρωκεί μια μεταφορά. Στθ ρουτίνα εξυπθρζτθςθσ διακοπισ αυξάνεται θ διεφκυνςθ προοριςμοφ DMAxDA κατά 4 (2 λζξεισ των 2 bytes), ζτςι ϊςτε θ επόμενθ μεταφορά να γίνει ςτθ ςωςτι κζςθ. Επίςθσ, αυξάνεται κατά ζνα ζνασ μετρθτισ που μετρά των αρικμό των DMA μεταφορϊν και απενεργοποιείται το ψθφίο ενεργοποίθςθσ μετατροπισ ENC του A/D. Στθν ςυνζχεια το ENC ενεργοποιείται και πάλι για να επιτρζψει τθν επόμενθ μετατροπι. Θ απενεργοποίθςθ και εκ νζου ενεργοποίθςθ του ENC (toggle ENC) είναι απαραίτθτθ όπωσ προκφπτει από τισ οδθγίεσ χριςθσ του MSP430 F1611 [7]. Πταν ολοκλθρωκοφν όλεσ οι μεταφορζσ που ηιτθςε ο χριςτθσ, τότε κλείνουν ο A/D μετατροπζασ, ο ελεγκτισ DMA και ο Timer B. 101

103 Κατά τθ διάρκεια τθσ λιψθσ των μετριςεων δεν πρζπει με τίποτα να απενεργοποιθκεί το ρολόι SMCLK. Ζτςι όταν λαμβάνουμε δείγματα από το επιταχυνςιόμετρο, επιτρζπουμε ςτον μικροελεγκτι να πζςει ςε λειτουργία φπνωςθσ, αλλά μόνο ς αυτι που το SMCLK παραμζνει ενεργό (LPM0). Ππωσ φαίνεται θ χριςθ του επιταχυνςιομζτρου δεν είναι απλι διαδικαςία, αφοφ περιλαμβάνει προγραμματιςμό Timer, DMA και A/D μζςω ςθμάτων διακοπϊν. 102

104 Κεφάλαιο 8 Η επικοινωνία του μικροελεγκτή με τισ αςφρματεσ ςυςκευζσ 8.1 Επικοινωνία με το αςφρματο firmware XBee Θ επικοινωνία επιτυγχάνεται μζςω του περιφερειακοφ τμιματοσ UART του MSP430 F1611. Το baud rate ζχει ρυκμιςτεί ςτα 9600 bps, υπάρχει όμωσ δυνατότθτα ρφκμιςθσ ωσ bps. Το ρολόι με το οποίο επιτυγχάνεται θ ρφκμιςθ είναι το περιφερειακό ρολόι SMCLK ςτα 8 MHz. Θ υλοποίθςθ UART περιλαμβάνει δφο δομζσ δεδομζνων ενδιάμεςθσ αποκικευςθσ λιψθσ και αποςτολισ, που αποτελοφνται από δφο δείκτεσ ειςόδου και εξόδου, μια ςθμαία και ζναν πίνακα δεδομζνων. Ο δείκτθσ ειςόδου τθσ δομισ αποςτολισ κακορίηει το ςθμείο του πίνακα όπου γίνεται θ ειςαγωγι των δεδομζνων προσ αποςτολι, ενϊ ο δείκτθσ εξόδου το ςθμείο απ όπου κα ξεκινιςει θ αποςτολι των δεδομζνων. Θ ςθμαία τθσ δομισ αποςτολισ δείχνει αν εκκρεμοφν δεδομζνα προσ αποςτολι. Ραρομοίωσ ο δείκτθσ ειςόδου τθσ δομισ λιψθσ κακορίηει ςε ποιο ςθμείο κα εγγραφοφν τα δεδομζνα που λαμβάνονται από το UART, ενϊ ο δείκτθσ εξόδου το ςθμείο που κα αναγνωςτοφν από το λογιςμικό τα δεδομζνα. Θ ςθμαία τθσ δομισ λιψθσ δείχνει αν υπάρχουν ι όχι δεδομζνα προσ ανάγνωςθ από το UART. Δεν χρθςιμοποιείται ψθφίο ιςοτιμίασ και ο ζλεγχοσ λακϊν δεν γίνεται ςτο επίπεδο τθσ UART, αλλά ςτο άκροιςμα ελζγχου των API πακζτων του XBee. Πταν πρζπει να αποςταλοφν δεδομζνα τότε εγγράφονται ςτθ δομι ενδιάμεςθσ αποκικευςθσ αποςτολισ. Ο πίνακασ δεδομζνων τθσ δομισ ζχει ζνα ςυγκεκριμζνο μικοσ. Χρειάηεται προςοχι, ϊςτε να μθν ειςαχκοφν παραπάνω δεδομζνα από όςα μπορεί να δεχτεί, διότι τότε κα χακοφν κάποια δεδομζνα. Πταν εγγράφεται ζνα byte για αποςτολι τότε αυξάνεται ο δείκτθσ ειςόδου κατά ζνα. Αρχικά και οι δφο δείκτεσ 103

105 δείχνουν ςτθ κζςθ μθδζν του πίνακα. Θ ςθμαία τθσ δομισ αποςτολισ πλζον επιδεικνφει τθν φπαρξθ δεδομζνων προσ αποςτολι. Αφοφ ειςαχκοφν όλα τα δεδομζνα, ςτζλνεται το πρϊτο byte που είναι αυτό ςτο οποίο δείχνει o δείκτθσ εξόδου. Αυτό γίνεται εγγράφοντασ τον καταχωρθτι TXBUFx με το byte αυτό και αυξάνοντασ τον δείκτθ εξόδου κατά ζνα. Μετά τθν αποςτολι κα ενεργοποιθκεί θ ςθμαία διακοπισ αποςτολισ UTXIFGx (εικόνα 3.18). Στθ ρουτίνα εξυπθρζτθςθσ τθσ διακοπισ υπάρχουν δφο ενδεχόμενα. Αν ο δείκτθσ εξόδου είναι διαφορετικόσ του δείκτθ ειςόδου, ςυνεχίηεται θ αποςτολι δεδομζνων εγγράφοντασ τον TXBUFx με το επόμενο byte και αυξάνοντασ τον δείκτθ εξόδου κατά ζνα. Διαφορετικά τερματίηεται θ αποςτολι και μθδενίηεται θ ςθμαία θ οποία πλζον επιδεικνφει ότι θ αποςτολι εκτελζςτθκε. Θ διαδικαςία αυτι κα επαναλαμβάνεται μζχρι τθν αποςτολι όλων των δεδομζνων τθσ δομισ ενδιάμεςθσ αποκικευςθσ. Πταν ζλκουν δεδομζνα ενεργοποιείται θ ςθμαία διακοπισ URXIFGx (εικόνα 3.19). Στθ ρουτίνα εξυπθρζτθςθσ εγγράφεται ο πίνακασ τθσ δομισ λιψθσ με τθν τιμι του καταχωρθτι RXBUFx ςτθ κζςθ που επιδεικνφεται από τον δείκτθ ειςόδου. Ο δείκτθσ ειςόδου αυξάνεται κατά ζνα και θ ςθμαία τθσ δομισ επιδεικνφει πλζον ότι υπάρχουν δεδομζνα προσ ανάγνωςθ. Θ διαδικαςία ςυνεχίηεται όςο κα ζρχονται δεδομζνα ςτο UART. Πταν πρζπει να διαβαςτοφν τα δεδομζνα αυτά χρθςιμοποιείται ο δείκτθσ εξόδου ο οποίοσ αυξάνεται κατά ζνα για κάκε byte που διαβάηεται. Μόλισ οι δφο δείκτεσ εξιςωκοφν, θ ανάγνωςθ λιγει και θ ςθμαία μθδενίηεται επιδεικνφοντασ το τζλοσ. 8.2 Το λογιςμικό χρήςησ του XBee Το λογιςμικό χριςθσ του XΒee είναι αρκετά περίπλοκο. Αποτελείται από πολλζσ ςυναρτιςεισ οι οποίεσ υλοποιοφν τθ λειτουργία API, διαχειρίηονται τα πακζτα αναλφοντασ τα δεδομζνα κάκε πεδίου και μετάγουν το XΒee ςε διάφορεσ καταςτάςεισ. Θ πρϊτθ ςυνάρτθςθ (xb802_set_api2) ειςάγει το XBee ςε λειτουργία ΑΤ εντολϊν χρθςιμοποιϊντασ τθν ακολουκία ενεργειϊν που 104

106 περιγράφθκε ςτθν παράγραφο 5.1. Στθ ςυνζχεια χρθςιμοποιϊντασ τθν εντολι AP ειςάγει το XBee ςε λειτουργία API. Θ δεφτερθ ςυνάρτθςθ (xb802_createpkg) δθμιουργεί ζνα πακζτο αποςτολισ. Δζχεται ορίςματα τα δεδομζνα ωφζλιμου φορτίου που κα αποςταλοφν ςτον αζρα μαηί με τθ διεφκυνςθ προοριςμοφ και προςκζτει τα bytes ορίου αρχισ και ακροίςματοσ ελζγχου. Το πακζτο αποςτολισ αποκθκεφεται ςε ζναν πίνακα ενδιάμεςθσ αποκικευςθσ και θ ςυνάρτθςθ επιςτρζφει το μικοσ ρου πακζτου. Θ τρίτθ ςυνάρτθςθ (xb802_tx) αποςτζλλει τα δεδομζνα μζςω UART ςτο XBee. Δζχεται ορίςματα τα δεδομζνα αποςτολισ και το μικοσ τουσ. Next state is Idle. Is UART receive buffer empty? YES Return NO Switch State NO Idle State Length State API Frame Identifier State API Frame Data State Checksum State Is received byte the start delimiter? NO YES Read the two length bytes and store packet length to a length variable. Next State is API Frame Identifier. Read API Frame Identifier byte and store it to an API identification variable. Set checksum variable equal to the API identification variable. Next State is API Frame Data State. NO Read Data byte and store it to an array. Add checksum variable with the data byte. Is this the last data byte? YES Is the value of the checksum variable correct? YES Call xb802_handlepkg(). Next State is Idle State. Next state is Length. Next state is Checksum State. Διάγραμμα 8.1: Καταςτάςεισ εκτζλεςθσ τθσ ςυνάρτθςθσ xb802_pdl. 105

107 Θ τζταρτθ ςυνάρτθςθ (xb802_pdl) παραλαμβάνει τα πακζτα δεδομζνων από το XBee μζςω UART. Θ ςυνάρτθςθ παραλαμβάνει κάκε φορά ζνα byte ςε ζνα βρόχο που τερματίηεται όταν το UART δεν διακζτει άλλα bytes προσ ανάγνωςθ. Ο βρόχοσ κάκε φορά εκτελείται διαφορετικά ανάλογα με τθν κατάςταςθ ςτθν οποία βρίςκεται θ ςυνάρτθςθ (διάγραμμα 8.1). Θ πρϊτθ κατάςταςθ είναι θ κατάςταςθ αδράνειασ όπου γίνεται ζλεγχοσ αν το λθφκζν byte είναι το όριο αρχισ. Αν είναι τότε θ ςυνάρτθςθ μεταβαίνει ςτθν κατάςταςθ μικουσ πακζτου και ςτισ επόμενεσ δυο εκτελζςεισ του βρόχου διαβάηει το μικοσ. Στθ ςυνζχεια μεταβαίνει ςτθν κατάςταςθ ταυτότθτασ πεδίου API και ςτθν επόμενθ εκτζλεςθ του βρόχου διαβάηει τθν ταυτότθτα του πεδίου API, θ οποία δθλϊνει τι είδουσ είναι το πακζτο λιψθσ. Θ επόμενθ κατάςταςθ είναι τα δεδομζνα πεδίου ΑPI, ςτθν οποία θ ςυνάρτθςθ παραμζνει μζχρι να διαβάςει όλα αυτά τα δεδομζνα, ελζγχοντασ το μικοσ πακζτου που ζλαβε προθγοφμενα. Τζλοσ μεταβαίνει ςτθν κατάςταςθ ακροίςματοσ ελζγχου, όπου γίνεται ο ζλεγχοσ για τον αν το byte του ακροίςματοσ ελζγχου είναι αυτό που περιμζναμε. Αν είναι θ εκτζλεςθ ςυνεχίηεται ςτθν πζμπτθ ςυνάρτθςθ (xb802_handlepkg), ειδάλλωσ όλα τα προθγοφμενα λθφκζντα δεδομζνα είναι άκυρα. Is this a modem message? NO Is this a transmit status answer? NO Is this a wirelessly received packet? NO Is this an AT command answer? NO YES Store the modem status. YES Find the packet that this answer is referred to and store the transmit status in the status position of the packet in the transmit buffer. YES Store it in the receive buffer. Call rx_pkg_handle(). YES Was the AT command, that this answer is refereed to, executed correct? NO YES Store XBee parameter value. Return Διάγραμμα 8.2: Λογικι εκτζλεςθσ τθσ ςυνάρτθςθσ xb802_handlepkg. 106

108 Θ πζμπτθ ςυνάρτθςθ (διάγραμμα 8.2) χειρίηεται το πακζτο που μόλισ λιφκθκε από τθν προθγοφμενθ ςυνάρτθςθ. Ελζγχει τθν ταυτότθτα πεδίου API του πακζτου και εκτελεί διαφορετικζσ ενζργειεσ για κάκε είδουσ πακζτο. Αν το πακζτο είναι ζνα μινυμα κατάςταςθσ από το MODEM, τότε αποκθκεφεται θ κατάςταςθ του ςε μια κακολικι μεταβλθτι κατάςταςθσ του ΧBee. Υπάρχουν όμωσ και άλλα είδθ πακζτων που μποροφν να λθφκοφν από το XBee, όπωσ τα αςφρματα πακζτα λιψθσ, οι απαντιςεισ των AT εντολϊν και τα αποτελζςματα αποςτολισ. Στθν υλοποίθςθ τθσ διαχείριςθσ και χριςθσ του XBee ζχει δθμιουργθκεί ζνασ αρικμόσ πινάκων ενδιάμεςθσ αποκικευςθσ δεδομζνων λιψθσ και αποςτολισ. Κάκε πίνακασ αντιςτοιχεί ςε ζνα πακζτο. Ιταν υποχρεωτικό να υπάρχουν αρκετοί τζτοιοι πίνακεσ για να μποροφν να αποκθκευτοφν πολλά πακζτα ςτθ μνιμθ, ζτςι ϊςτε αν κάποιο πακζτο χακεί να μπορεί να αποςταλεί ξανά. Ο τρόποσ αποκικευςθσ των δεδομζνων ςτουσ πίνακεσ αποςτολισ παρουςιάηει αρκετό ενδιαφζρον και κα αναλυκεί εκτενϊσ (πίνακασ 8.1). Το πρϊτο byte είναι θ κατάςταςθ αποςτολισ και μπορεί να πάρει τισ τιμζσ νζα, ελεφκερθ, υπό αποςτολι, επιτυχία και ςφάλμα. Το δεφτερο byte αντιςτοιχεί ςτο χρονικό διάςτθμα που κα αναμζνουμε μια επιβεβαίωςθ αποςτολισ, προτοφ αποςτείλουμε το πακζτο εκ νζου. Το τρίτο byte αφορά τον αρικμό των προςπακειϊν επανεκπομπισ ενόσ πακζτου που δεν ζχει λάβει επιβεβαίωςθ. Τα υπόλοιπα bytes είναι δεδομζνα, ζνα από αυτά όμωσ παίηει κακοριςτικό ρόλο και είναι το byte ταυτότθτασ πακζτου. Κάκε πακζτο αποςτζλλεται με διαφορετικι ταυτότθτα και όταν το XBee ςτζλνει ζνα πακζτο αποτελζςματοσ αποςτολισ περιλαμβάνει τθν ταυτότθτα πακζτου ςτα δεδομζνα, ζτςι ϊςτε να είναι γνωςτό για ποιο πακζτο λαμβάνεται το αποτζλεςμα. Status Time before Retransmission. Number of retries. Length of array. Start delimiter. MSB of API frame length. LSB of API frame length API frame identifier. Πίνακασ 8.1: Format πίνακα ενδιάμεςθσ αποκικευςθσ πακζτων αποςτολισ. Packet identifier. Data 107

109 Αν θ ςυνάρτθςθ διαχείριςθσ πακζτου λιψθσ διαπιςτϊςει ότι αυτό είναι αποτζλεςμα αποςτολισ, τότε ψάχνει ςτουσ πίνακεσ ενδιάμεςθσ αποκικευςθσ δεδομζνων αποςτολισ για το πακζτο ςτο οποίο αναφζρεται το αποτζλεςμα και τροποποιεί το byte κατάςταςθσ αποςτολισ ςε επιτυχία ι ςφάλμα. Επίςθσ αν το πακζτο λιψθσ είναι απάντθςθ εντολισ AT αποκθκεφει τθν τιμι τθσ παραμζτρου που ρυκμίςτθκε ςε ζναν κακολικό πίνακα όπου αποκθκεφονται οι τιμζσ παραμζτρων του XBee. Τζλοσ αν το πακζτο είναι αςφρματα δεδομζνα τα αποκθκεφει ςτον πίνακα ενδιάμεςθσ αποκικευςθσ και καλεί μια άλλθ ςυνάρτθςθ (rx_pkg_handle) που προβαίνει ςτισ απαραίτθτεσ ενζργειεσ ανάλογα με τα δεδομζνα που λαμβάνονται. Θ ςυνάρτθςθ αυτι κα μελετθκεί ςτο κεφάλαιο 9 όπου κα αναλυκοφν οι εφαρμογζσ. Θ ζκτθ ςυνάρτθςθ (xb802_receive) λαμβάνει ζνα πακζτο από τον πίνακα ενδιάμεςθσ αποκικευςθσ δεδομζνων λιψθσ και θ ζβδομθ (xb802_send) εγγράφει ζνα πακζτο ςτουσ πίνακεσ ενδιάμεςθσ αποκικευςθσ δεδομζνων αποςτολισ. Δζχεται όριςμα μια δομι που παρζχει πλθροφορίεσ ςχετικά με το πακζτο αποςτολισ, όπωσ ο αρικμόσ επιτρεπτϊν εκπομπϊν, τα δεδομζνα και τον χρόνο αναμονισ επιβεβαίωςθσ και παράγει μια μοναδικι ταυτότθτα πακζτου. Ελζγχει τουσ πίνακεσ αποςτολισ για να βρει μια κζςθ ελεφκερθσ κατάςταςθσ πακζτου και εγγράφει το πακζτο ςτον πίνακα που είναι ελεφκεροσ προσ εγγραφι. Θ όγδοθ ςυνάρτθςθ (xb802_at) ςτζλνει μια εντολι AT και θ ζνατθ (xb802_wait_reply), αφοφ αναμείνει τθν απάντθςθ τθσ εντολισ για κάποιο χρονικό διάςτθμα, ςτθ ςυνζχεια ι τθν λαμβάνει ι εγκαταλείπει. Θ δζκατθ ςυνάρτθςθ (xb802_read) λαμβάνει όλεσ τισ τρζχουςεσ παραμζτρουσ λειτουργίασ του XBee και χρθςιμοποιείται και για να ελεγχκεί, αν το XBee απαντά ςτισ εντολζσ AT γριγορα και ςωςτά όπωσ πρζπει. Θ ενδζκατθ ςυνάρτθςθ (xb802_online) ρυκμίηει τισ παραμζτρουσ εγκακίδρυςθσ ςφνδεςθσ δικτφου A1 και Α2 και κζτει το XBee ςτθν κατάςταςθ εγκακίδρυςθσ ςφνδεςθσ. Θ δωδζκατθ ςυνάρτθςθ (xb802_check_setup) ελζγχει, αν οι παράμετροι ρφκμιςθσ του XBee είναι ςωςτζσ και θ δζκατθ τρίτθ (xb802_setup) ρυκμίηει τισ παραμζτρουσ ςτισ ςωςτζσ τιμζσ. 108

110 Οι καταςτάςεισ λογιςμικοφ του XBee αντικατοπτρίηουν τθ λειτουργία του για κάκε ςυγκεκριμζνθ χρονικι ςτιγμι. Αυτό βοθκά ςτο να γίνονται πάντα οι ςωςτζσ ενζργειεσ ανάλογα με τθν κάκε κατάςταςθ. Οι καταςτάςεισ είναι: απενεργοποίθςθσ, ενεργοποίθςθσ, ετοιμότθτασ, ρφκμιςθσ ι διευκζτθςθσ, εγκακίδρυςθσ ςφνδεςθσ, φπνωςθσ, αφφπνιςθσ και ςφάλματοσ. Ο τρόποσ μετάβαςθσ ανάμεςα ςτισ καταςτάςεισ, αλλά και μία από τισ πιο κρίςιμεσ ςυναρτιςεισ, θ οποία εκτελείται ςτον ατζρμονα βρόχο τθσ main, θ ςυνάρτθςθ ελζγχου κατάςταςθσ του XBee κα αναλυκοφν διεξοδικά ςτθ ςυνζχεια. Εκκινϊντασ το πρόγραμμα, το XBee βρίςκεται ςτθν κατάςταςθ απενεργοποίθςθσ και μεταβαίνει ςτθν κατάςταςθ ρφκμιςθσ ι διευκζτθςθσ. Εκεί ελζγχεται θ ςωςτι του λειτουργία με κλιςθ τθσ δζκατθσ ςυνάρτθςθσ. Αν όλα είναι εντάξει, μεταβαίνει ςτθν κατάςταςθ ενεργοποίθςθσ. Διαφορετικά παραμζνει ςτθν ίδια κατάςταςθ απ όπου μπορεί να διαφφγει μόνον όταν ο ατζρμον βρόχοσ τθσ main καλζςει τθ ςυνάρτθςθ ελζγχου κατάςταςθσ (xb802_check_state). Θ ςυνάρτθςθ αυτι εκτελείται διαφορετικά για κάκε τρζχουςα κατάςταςθ (διάγραμμα 8.3). Στθν περίπτωςθ τθσ κατάςταςθσ ρφκμιςθσ υποκζτει ότι θ λειτουργία πεδίων API δεν ζχει αποκθκευτεί ςτθ μνιμθ του XBee και ελζγχει εκ νζου τθ ςωςτι του λειτουργία, αφοφ ρυκμίςει το XBee ςε API. Τϊρα πλζον αν το XBee παρουςιάςει ζναν αρικμό ςφαλμάτων, κα γίνει μετάβαςθ ςτθν κατάςταςθ ςφάλματοσ απ όπου δεν υπάρχει γυριςμόσ. Αν όμωσ όλα πάνε καλά το λογιςμικό κα μεταβεί ςτθν κατάςταςθ ενεργοποίθςθσ. Μετά από νζα κλιςθ τθσ ςυνάρτθςθσ ελζγχου κατάςταςθσ χρθςιμοποιείται θ δωδζκατθ ςυνάρτθςθ για να ελεγχκεί αν οι παράμετροι ρφκμιςθσ του XBee είναι αυτζσ που πρζπει και καλείται θ δζκατθ τρίτθ για τυχόν αναγκαίεσ ρυκμίςεισ. Στθ ςυνζχεια καλεί τθν ςυνάρτθςθ λιψθσ πακζτου (xb802_pdl), αφοφ αναμζνεται πακζτο μθνφματοσ κατάςταςθσ εγκακίδρυςθσ ςφνδεςθσ ςτο δίκτυο από το MODEM. Επιπλζον ελζγχεται θ κακολικι μεταβλθτι κατάςταςθσ MODEM και αν ζχει πάρει τθν τιμι εγκακίδρυςθσ ςφνδεςθσ γίνεται μετάβαςθ ςτθν κατάςταςθ ετοιμότθτασ. Ειδάλλωσ, γίνεται μετάβαςθ ςτθν κατάςταςθ εγκακίδρυςθσ ςφνδεςθσ και ςτισ επόμενεσ κλιςεισ τθσ 109

111 ςυνάρτθςθσ ελζγχου κατάςταςθσ κα γίνει μετάβαςθ, είτε ςτθν κατάςταςθ ετοιμότθτασ, είτε ςτθν κατάςταςθ ςφάλματοσ. Switch XBee State XBee Init State XBee Off State XBee On State XBee Ready State XBee Error State XBee Sleep State XBee Wake Up State XBee Associate State Call xb802_set_api2(). 1 Call xb802_check_set up(). Call xb802_pdl(). 2 Is the pin XBee_Status in high state? Is the pin XBee_CTS in high state? Call xb802_pdl() Is XBee in API mode? YES Call xb802_ready(). NO Next State is XBee Error. Did coordinator started or end device associated? YES NO Call xb802_online(). YES Next state is XBee Ready. YES NO NO NO Did end device associated? YES Next state is XBee Ready. Is XBee operating well? YES Next State is XBee On. NO NO Add one to the xb802_read tries counter variable. Are tries over? (equal to 3) Next state is XBee Ready. 1 Are association parameters set up? YES NO Next State is XBee Error. Call xb802_online(). Set timer interval variable to 5 sec. YES NO 1 Are tries over? (equal to 115) NO Add one to an association tries counter variable. Have 5 sec passed since previous execution of this case? YES 1 YES Next State is XBee Error. 1 Return Διάγραμμα 8.3: Καταςτάςεισ εκτζλεςθσ τθσ xb802_check_state (ςελίδα 1). 110

112 2 Call xb802_pdl(). Process transmit buffer. Are any arrays of transmit buffer left unprocessed? NO Update time variables. Call xb802_check_setup(). YES Process next array (packet). Return NO Is this an array with status different from free? Retransmit packet. Update retries variable. YES Are any retries left? YES YES NO Is this a packet (array) with status new? NO Is this a packet with status success? NO Is this a packet with status insert? YES Has time come for retransmission? YES Next status of this packet is status insert. Send packet. YES Call tx_pkg_ok(). Next status of this array is free. Next status of this array is error. NO NO Διάγραμμα 8.3: Καταςτάςεισ εκτζλεςθσ τθσ xb802_check_state (ςελίδα 2). Από τθν κατάςταςθ ετοιμότθτασ γίνεται να μεταβοφμε ςτθν κατάςταςθ φπνωςθσ όταν μια εφαρμογι το ηθτιςει. Πταν θ ςυνάρτθςθ ελζγχου κατάςταςθσ κλθκεί ςε κατάςταςθ ετοιμότθτασ, τότε γίνεται ζλεγχοσ για νζα πακζτα λιψθσ και αποςτζλλονται τα ιδθ νζα εγγεγραμμζνα πακζτα ςτον ενδιάμεςο χϊρο αποκικευςθσ αςφρματων πακζτων προσ αποςτολι, αλλά και αυτά για τα οποία δεν ζχει λθφκεί επιβεβαίωςθ και ζχει παρζλκει το χρονικό διάςτθμα αναμονισ επανεκπομπισ. Αν για κάποιο πακζτο λθφκεί επιτυχισ επιβεβαίωςθ, 111

113 καλείται θ ςυνάρτθςθ επιτυχοφσ αποςτολισ (tx_pkg_ok διάγραμμα 8.4) και λαμβάνεται μια απόφαςθ ςχετικά με το αν κα κοιμθκεί ι όχι ο μικροελεγκτισ και το XBee. Θ απόφαςθ αυτι κακορίηεται από τθν εφαρμογι επικοινωνίασ και τθ ςυνάρτθςθ επιτυχοφσ λιψθσ πακζτου (rx_pkg_handle) που κα αναλυκοφν ςτο κεφάλαιο 9. Is transmit XBee buffer empty and is sleep through this function allowed? YES Enable sleep of the microcontroller and sleep XBee changing its state to Sleep. NO Return Διάγραμμα 8.4: υνάρτθςθ επιτυχοφσ αποςτολισ πακζτου. Αν ηθτθκεί κατάςταςθ φπνωςθσ, το XBee μπαίνει ςε λειτουργία φπνωςθσ μζςω τθσ υποδοχισ SLEEP RQ που κρατιζται υψθλι. Στθ ςυνζχεια αν θ εφαρμογι αιτθκεί αφφπνιςθ θ υποδοχι SLEEP RQ πζφτει χαμθλά και ελζγχεται θ υποδοχι CTS (Clear To Send), ενϊ το λογιςμικό ζχει περάςει ςε κατάςταςθ αφφπνιςθσ. Μζςω του ελζγχου διαπιςτϊνεται, αν το XBee επιτρζπει τθν επικοινωνία. Πταν το επιτρζψει γίνεται και πάλι μετάβαςθ ςτθν κατάςταςθ ετοιμότθτασ. Ρλζον οι εφαρμογζσ ελζγχουν το XBee. 8.3 Επικοινωνία του μικροελεγκτή του ςυντονιςτή δικτφου με την αςφρματη ςυςκευή MatchPort b/g Θ επικοινωνία εξαςφαλίηεται μζςω του περιφερειακοφ τμιματοσ UART με ακριβϊσ τον ίδιο τρόπο που περιγράφθκε ςτθν παράγραφο 8.1. Θ μοναδικι διαφορά είναι ότι τϊρα δεν γίνεται κάποιοσ ζλεγχοσ ακεραιότθτασ δεδομζνων. Ο λόγοσ είναι ότι τυχόν λάκοσ ςτθν 112

114 επικοινωνία κα γίνει αντιλθπτό από τον χριςτθ που βρίςκεται ςτον κεντρικό υπολογιςτι και κα διορκωκεί από αυτόν. Το baud rate ζχει ρυκμιςτεί ςτα 9600 bps. 8.4 Το λογιςμικό χρήςησ του MatchPort b/g Το λογιςμικό είναι αρκετά απλοφςτερο από το αντίςτοιχο για το XBee. Θ αιτία είναι ότι πλζον δεν χρειάηεται διαχείριςθ των πακζτων, αφοφ θ διαχείριςθ γίνεται εςωτερικά από το MatchPort και δεν είναι ορατι. Ο μικροελεγκτισ απλά λαμβάνει τα δεδομζνα ωφζλιμου φορτίου μζςω UART. Θ ςυνάρτθςθ λιψθσ των WiFi πακζτων (wifi_pdl) εκτελείται μζςα ςτον ατζρμονα βρόχο τθσ main του ςυντονιςτι δικτφου. Είναι παρόμοια με τθν αντίςτοιχθ ςυνάρτθςθ του XBee. Ζχει δθμιουργθκεί ζνα απαραίτθτο format των δεδομζνων ωφζλιμου φορτίου. Τα πρϊτα τρία και δφο τελευταία bytes είναι προκακοριςμζνα και επίςθσ υπάρχουν bytes μικουσ, ταυτότθτασ πακζτου και δεδομζνων. Θ εκτζλεςθ μεταβαίνει από κατάςταςθ ςε κατάςταςθ ελζγχοντασ όλα τα bytes και αν όλα είναι εντάξει καλείται θ ςυνάρτθςθ χειριςμοφ των πακζτων λιψθσ. Θ ςυνάρτθςθ αυτι ελζγχει το ενδεχόμενο να ζχει παραλθφκεί και άλλθ φορά το ίδιο πακζτο. Αν το πακζτο ζρχεται για πρϊτθ φορά προβαίνει ςε ενζργειεσ οι οποίεσ κα ςυηθτθκοφν ςτο κεφάλαιο 9 των εφαρμογϊν. Τζλοσ υπάρχει και θ ςυνάρτθςθ αποςτολισ πακζτων με το παραπάνω format. 113

115 Κεφάλαιο 9 Παραμετροποίηςη και εφαρμογζσ 9.1 Παράμετροι αιςθητήρων Για κάκε ζξυπνο αιςκθτιρα ορίηεται ζνα ςφνολο παραμζτρων που ελζγχουν τθ λειτουργία του. Επειδι είναι επικυμθτό για κάκε ζξυπνο αιςκθτιρα να διατίκενται πολλά τζτοια ςφνολα, ανάλογα με τθν κατάςταςθ λειτουργίασ του, υπάρχει θ δυνατότθτα να οριςτοφν παράμετροι για διάφορεσ καταςτάςεισ. Οι καταςτάςεισ αυτζσ ορίηονται από το χριςτθ και αυτόσ είναι που επιλζγει τισ παραμζτρουσ τουσ. Στθ ςυνζχεια μπορεί να διατάξει τθν λειτουργία του κάκε ζξυπνου αιςκθτιρα ςε όποια κατάςταςθ επικυμεί, ακόμα και να αλλάξει τθν κατάςταςθ λειτουργίασ του Παράμετροι αιςθητήρα θερμοκραςίασ Ο αιςκθτιρασ κερμοκραςίασ δζχεται τισ ακόλουκεσ παραμζτρουσ: α. Ενεργοποίθςθσ: Δθλϊνει το αν ο αιςκθτιρασ κερμοκραςίασ του ζξυπνου αιςκθτιρα κα είναι ενεργόσ ι όχι. β. Ζγκυρθσ μζτρθςθσ: Δίνει το όριο μεταβολισ κερμοκραςίασ από μζτρθςθ ςε μζτρθςθ. Αν μια μζτρθςθ ξεπεράςει το όριο κεωρείται άκυρθ. γ. Ρεριόδου: Δίνει τθν περίοδο εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα κερμοκραςίασ. Ρερίοδοσ ίςθ με μθδζν ςθμαίνει ότι θ εφαρμογι κα εκτελεςτεί μια μόνο φορά. δ. Μετριςεων ανά περίοδο: Κακορίηει τον αρικμό των μετριςεων που κα λαμβάνονται ςε κάκε περίοδο εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα κερμοκραςίασ. Αποκθκεφεται ο μζςοσ όροσ. ε. Αποςτολισ: Κακορίηει το αν κα αποςτζλλονται μετριςεισ και ανά πόςεσ περιόδουσ εκτζλεςθσ τθσ εφαρμογισ. ςτ. Ρροειδοποίθςθσ: Κακορίηει αν κα αποςτζλλεται προειδοποίθςθ, όταν θ κερμοκραςία ξεφφγει από ςυγκεκριμζνα όρια και πόςεσ ςυνεχόμενεσ παραβιάςεισ ορίων ορίηουν μια 114

116 κατάςταςθ προειδοποίθςθσ. η. Άνω όριο προειδοποίθςθσ. θ. Κάτω όριο προειδοποίθςθσ Παράμετροι αιςθητήρα φωτόσ περιβάλλοντοσ Οι παράμετροι του αιςκθτιρα φωτόσ περιβάλλοντοσ είναι πανομοιότυπεσ με αυτζσ του αιςκθτιρα κερμοκραςίασ Παράμετροι αιςθητήρα υγραςίασ και θερμοκραςίασ Σε ςχζςθ με τον αιςκθτιρα κερμοκραςίασ προςτίκενται οι ακόλουκεσ παράμετροι: α. Ενεργοποίθςθσ κερμαντιρα: Ο αιςκθτιρασ λειτουργεί με το κερμαντιρα ενεργό ι όχι. β. Αυτόματθσ ενεργοποίθςθσ κερμαντιρα: Θ εφαρμογι ενεργοποιεί ι απενεργοποιεί το κερμαντιρα ανάλογα με τθν μετροφμενθ ςχετικι υγραςία. Επίςθσ οι παράμετροι ζγκυρθσ μζτρθςθσ και άνω και κάτω ορίου προειδοποίθςθσ λαμβάνουν δφο τιμζσ, μία υγραςίασ και μία κερμοκραςίασ Παράμετροι επιταχυνςιομζτρου Οι παράμετροι του επιταχυνςιομζτρου είναι: α. Ενεργοποίθςθσ. β. Ρεριόδου. γ. Δειγμάτων ανά κανάλι και ανά περίοδο: Ο αρικμόσ των δειγμάτων για κάκε κανάλι που λαμβάνεται ςε μια περίοδο εκτζλεςθσ τθσ εφαρμογισ του επιταχυνςιομζτρου. δ. Συχνότθτα δειγματολθψίασ ανά κανάλι. 115

117 9.2 Επικοινωνία μεταξφ κεντρικοφ υπολογιςτή, ςυντονιςτή δικτφου και ζξυπνων αιςθητήρων Επικοινωνία μεταξφ κεντρικοφ υπολογιςτή και ςυντονιςτή δικτφου Το λογιςμικό ςε C# που λειτουργεί ςτον κεντρικό υπολογιςτι παρζχει όλεσ τισ δυνατότθτεσ ςτον χριςτθ για να διαπιςτϊςει πόςοι ζξυπνοι αιςκθτιρεσ υπάρχουν ςτο δίκτυο, να αναγνϊςει τισ τρζχουςεσ παραμζτρουσ λειτουργίασ των ζξυπνων αιςκθτιρων, να ρυκμίςει τισ παραμζτρουσ και να εκκινιςει ζναν ζξυπνο αιςκθτιρα ςε μια κατάςταςθ. Το λογιςμικό κεντρικοφ υπολογιςτι λαμβάνει και αποςτζλλει αςφρματα δεδομζνα ςτον ςυντονιςτι δικτφου, μζςω μιασ εικονικισ ςειριακισ κφρασ. Στθν πραγματικότθτα δίδεται θ εντφπωςθ ότι θ αςφρματθ επικοινωνία είναι ςειριακι και αυτό διευκολφνει τον προγραμματιςμό. Θ εικονικι ςειριακι κφρα δθμιουργείται μζςω του λογιςμικοφ CPR Manager τθσ Lantronix. Αν χριςτθσ επικυμεί να λάβει τον αρικμό των ζξυπνων αιςκθτιρων του δικτφου και τουσ ςειριακοφσ αρικμοφσ των, αποςτζλλει ζνα πακζτο αίτθςθσ λιψθσ τθσ πλθροφορίασ αυτισ. Ο ςυντονιςτισ δικτφου κα λάβει τθν αίτθςθ μζςω τθσ ςυνάρτθςθσ λιψθσ WiFi πακζτων ςτον ατζρμονα βρόχο τθσ main. Στθ ςυνζχεια κα επεξεργαςτεί το πακζτο και κα καταλάβει ότι πρόκειται για τθν παραπάνω αίτθςθ. Αμζςωσ κα απαντιςει ςτζλνοντασ ζνα WiFi πακζτο με όλθ τθν πλθροφορία. Επιπλζον, αν ο χριςτθσ επικυμεί να ρυκμίςει τισ παραμζτρουσ μιασ κατάςταςθσ λειτουργίασ ενόσ ζξυπνου αιςκθτιρα, τότε αφοφ τισ αναγράψει ςτο ςχετικό menu, τισ αποςτζλλει ςτον ςυντονιςτι δικτφου μαηί με πρόςκετθ πλθροφορία που κακορίηει για ποιον ζξυπνο αιςκθτιρα και για ποια κατάςταςθ αυτοφ είναι οι ςυγκεκριμζνεσ παράμετροι. Επίςθσ αποςτζλλεται και ζνα byte που δθλϊνει ςτον ςυντονιςτι δικτφου ότι το πακζτο δεν είναι γι αυτόν, αλλά για κάποιον ζξυπνο αιςκθτιρα. 116

118 Ο ςυντονιςτισ δικτφου δζχεται το παραπάνω πακζτο και καταλαβαίνει ότι τα δεδομζνα του δεν απευκφνονται ςε αυτόν, αλλά ςε κάποιον ζξυπνο αιςκθτιρα. Στθ ςυνζχεια διαβάηοντασ το πακζτο, βρίςκει τον ζξυπνο αιςκθτιρα. Στο λογιςμικό του ςυντονιςτι δικτφου υπάρχει ζνασ πίνακασ δομϊν δεδομζνων των ζξυπνων αιςκθτιρων. Κάκε δομι αποτελείται από τον ςειριακό αρικμό κάκε αιςκθτιρα, ζναν πίνακα που περιζχει δεδομζνα προσ αποςτολι ςτον ζξυπνο αιςκθτιρα και μια ςθμαία που κακορίηει αν υπάρχουν δεδομζνα που πρζπει να αποςταλοφν ςτον ζξυπνο αιςκθτιρα. Μόλισ ο ςυντονιςτισ δικτφου καταλάβει ότι δζχτθκε ζνα WiFi πακζτο που προορίηεται για κάποιον ζξυπνο αιςκθτιρα τότε εγγράφει τα δεδομζνα ςτθ δομι δεδομζνων πλθροφορίασ του ζξυπνου αιςκθτιρα και κζτει τθ ςθμαία, ϊςτε να επιδεικνφει ότι υπάρχουν δεδομζνα προσ αποςτολι. Τα δεδομζνα αυτά δεν αποςτζλλονται αμζςωσ, αλλά μόνο όταν ο ζξυπνοσ αιςκθτιρασ τα ηθτιςει. Ο λόγοσ αυτοφ του γεγονότοσ κα ξεκακαριςτεί ςτθν παράγραφο Αν ο χριςτθσ επικυμεί είτε να εκκινιςει ζναν ζξυπνο αιςκθτιρα ςε μια κατάςταςθ για τθν οποία γνωρίηει ότι ο ζξυπνοσ αιςκθτιρασ ζχει λάβει παραμζτρουσ, είτε να αλλάξει τθ λειτουργία από μια κατάςταςθ ςε μια άλλθ, τότε αποςτζλλει ζνα πακζτο με τθ νζα κατάςταςθ και τον ζξυπνο αιςκθτιρα. Θ διαδικαςία είναι ίδια όπωσ και προθγουμζνωσ και ζχει ςαν αποτζλεςμα ο ςυντονιςτισ δικτφου να περιμζνει από τον ζξυπνο αιςκθτιρα να ηθτιςει τα δεδομζνα. Ο ςυντονιςτισ δικτφου αποςτζλλει όλα τα δεδομζνα που δζχεται από το αςφρματο δίκτυο ζξυπνων αιςκθτιρων ςτον κεντρικό υπολογιςτι. Τα δεδομζνα αυτά μπορεί να είναι δεδομζνα μετριςεων, αλλά μπορεί να είναι και πακζτα επιβεβαίωςθσ. Πταν ο χριςτθσ ςτείλει κάποια εντολι ρφκμιςθσ παραμζτρων ι εκκίνθςθσ ςε ςυγκεκριμζνθ κατάςταςθ, περιμζνει να λάβει επιβεβαίωςθ. Θ επιβεβαίωςθ δεν ζρχεται από τον ςυντονιςτι αλλά διαμζςου αυτοφ. Μόλισ ζνασ ζξυπνοσ αιςκθτιρασ λάβει παραμζτρουσ ι μια εντολι εκκίνθςθσ, αποςτζλλει πακζτο επιβεβαίωςθσ ςτον ςυντονιςτι δικτφου το οποίο προωκείται απευκείασ ςτον κεντρικό υπολογιςτι. 117

119 9.2.2 Επικοινωνία μεταξφ ςυντονιςτή δικτφου και ζξυπνων αιςθητήρων Ππωσ προαναφζρκθκε ο ζξυπνοσ αιςκθτιρασ δεν δζχεται αςφρματα πακζτα οποτεδιποτε, αλλά μόνον όταν αυτόσ τα ηθτιςει. Θ αιτία είναι θ κατανάλωςθ ενζργειασ. Αν ο ζξυπνοσ αιςκθτιρασ ιταν ςε κζςθ να δζχεται αςφρματα πακζτα ςυνεχϊσ, αυτό κα ςιμαινε ότι κα ζπρεπε το XBee να είναι πάντα ςε ετοιμότθτα και το περιφερειακό τμιμα UART πάντα ενεργό. Ο ςτόχοσ είναι θ ελάχιςτθ κατανάλωςθ και αυτό ςθμαίνει ότι ο μικροελεγκτισ και το ΧBee του ζξυπνου αιςκθτιρα βρίςκονται ςε φπνωςθ τον περιςςότερο χρόνο. Θ κφρια εφαρμογι του ζξυπνου αιςκθτιρα είναι αυτι που διαχειρίηεται το μεγαλφτερο μζροσ τθσ επικοινωνίασ με τον ςυντονιςτι δικτφου. Πταν ο ζξυπνοσ αιςκθτιρασ εκκινιςει και εγκακιδρυκεί ςφνδεςθ με τον ςυντονιςτι δικτφου, τότε θ εφαρμογι επικοινωνίασ με τον ςυντονιςτι δικτφου αποςτζλλει ςε αυτόν ζνα πακζτο ςφνδεςθσ που περιλαμβάνει το ςειριακό τθσ αρικμό. Ρεριμζνει μζχρι να λάβει επιβεβαίωςθ από τον ςυντονιςτι δικτφου, χωρίσ να ζχει δυνατότθτα να κοιμθκεί. Αν μετά από ζνα χρονικό διάςτθμα δεν ζχει λάβει τθν επιβεβαίωςθ, τότε επανεκπζμπει το πακζτο και θ διαδικαςία ςυνεχίηεται μζχρι ο ςυντονιςτισ δικτφου να αποςτείλει ςτον ζξυπνο αιςκθτιρα ζνα πακζτο επιβεβαίωςθσ. Τότε ο ςυντονιςτισ δικτφου καταγράφει τον ζξυπνο αιςκθτιρα ςτισ ςυςκευζσ που είναι ςυνδεδεμζνεσ ςτο δίκτυο. Θ επιβεβαίωςθ λαμβάνεται από τον ζξυπνο αιςκθτιρα μζςω τθσ ςυνάρτθςθσ ελζγχου κατάςταςθσ του XBee ςτον ατζρμονα βρόχο τθσ main. Τότε καλείται θ ςυνάρτθςθ χειριςμοφ των πακζτων λιψθσ και διαπιςτϊνεται ότι το πακζτο είναι ζνα αςφρματο πακζτο λιψθσ. Αμζςωσ καλείται μια άλλθ ςυνάρτθςθ (rx_pkg_handle) θ οποία εκτελεί προκακοριςμζνεσ ενζργειεσ ανάλογα με το περιεχόμενο του πακζτου (διάγραμμα 9.1). Στθν ςυγκεκριμζνθ περίπτωςθ μια κακολικι ςθμαία που ζχει δθμιουργθκεί για το ςκοπό αυτό γίνεται ζνα δθλϊνοντασ ότι λιφκθκε επιβεβαίωςθ. 118

120 Call xb802_receive(). Process received packet. Is this a connection packet ACK answer? NO YES Message app_xbee_measur ement() that the answer has come (using a global variable). 1 NO Is this packet a negative answer to the poll packet? NO Is this a parameters packet? NO Is this a start packet? YES YES Enable sleep through the function tx_pkg_ok(). Is transmit XBee buffer empty? YES YES Store parameters. Write an ACK packet to the transmit buffer.enable sleep through the function tx_pkg_ok(). Start all applications.write an ACK packet to the transmit buffer.enable sleep through the function tx_pkg_ok(). NO Enable sleep of the microcontroller and sleep XBee changing its state to Sleep. Return 1 Διάγραμμα 9.1: Η ςυνάρτθςθ rx_pkg_handle. Θ ςυνάρτθςθ εφαρμογισ επικοινωνίασ του ζξυπνου αιςκθτιρα είναι γραμμζνθ ζτςι ϊςτε να εκτελείται κάκε φορά με ζναν μοναδικό τρόπο ανάλογα με τισ ςυνκικεσ (finite state machine). Μετά τθν εκτζλεςθ τθσ ςυνάρτθςθσ εφαρμογισ επικοινωνίασ, θ ςυνάρτθςθ 119

121 ειςάγεται εκ νζου ςτθ λίςτα διεργαςιϊν για να εκτελεςτεί ξανά μετά από κακοριςμζνο χρονικό διάςτθμα ςτθν ίδια ι ςε διαφορετικι κατάςταςθ. Οι διάφορεσ καταςτάςεισ εκτζλεςθσ είναι οι παρακάτω (διάγραμμα 9.2): Start state of XBee is Xbee Off. Sleep of the microcontroller is disabled. Sleep through the functions tx_pkg_ok() and rx_pkg_handle() is disabled too. First application state is state 1. Switch application state. 2 State 1 State 2 State 3 State 4 State 5 Initialize XBee variables. Open XBee. Is Xbee State Xbee Ready? NO Is connect packet sent over 10 times? Is ACK answer packet of the connect packet received? NO Is XBee in Ready State? YES YES YES YES Call xb802_read(). Is XBee operating well? YES NO Write connect packet to the XBee transmit buffer. Next application state is state 3 after 5 sec. Next application state is state 1 after 50 msec. NO Enable sleep of the microcontroller. Sleep XBee.Next application state is 4 after 100 ms Disable sleep of the microcontroller. Rewrite connect packet to the XBee transmit buffer. Execution will continue with the same state (3) after 2 sec. NO Next XBee State is XBee On. Next application state is state 2 after 1 sec. Return Execution will continue with the same state (3) after 50 msec. Διάγραμμα 9.2: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ επικοινωνίασ (ςελίδα1). 120

122 2 State 4 State 5 Is XBee in Ready State and transmit buffer is not empty? YES NO Disable sleep of the microcontroller. Disable sleep through the function tx_pkg_ok() too. Write poll packet in the transmit buffer. Is XBee in Sleep State? Is transmit buffer empty? YES Enable sleep of the microcontroller. Enable sleep through the function tx_pkg_ok(). NO Enable sleep through the function tx_pkg_ok(). Execution will continue with the same state (4) after 2 sec. NO YES Wake XBee up and change XBee state to XBee Wake up. Is XBee in Ready State? Next application state is state 5 after 2 sec. NO YES Sleep XBee and change its state to Sleep. Execution will continue with the same state (5) after 2 sec. Next application state is state 4 after 5 sec. Return Διάγραμμα 9.2: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ επικοινωνίασ (ςελίδα2). α. Το XBee ειςάγεται ςε κατάςταςθ εγκακίδρυςθσ ςφνδεςθσ. Θ επόμενθ κατάςταςθ προσ εκτζλεςθ μετά από ζνα δευτερόλεπτο είναι θ δεφτερθ. Ο μικροελεγκτισ και το XBee παραμζνουν ενεργά. β. Γίνεται ζλεγχοσ του ενδεχομζνου το XBee να ζχει περιζλκει ςε κατάςταςθ ετοιμότθτασ. Αν αυτό δεν ζχει γίνει θ επόμενθ κατάςταςθ προσ εκτζλεςθ παραμζνει ωσ ζχει (μετά από ζνα δευτερόλεπτο). Μετά 121

123 από δζκα ςυνεχόμενεσ αποτυχίεσ θ εκτζλεςθ τθσ ςυνάρτθςθσ τθσ εφαρμογισ επικοινωνίασ κα επανζλκει ςτθν πρϊτθ κατάςταςθ (ςχεδόν αμζςωσ ςε χρονικό διάςτθμα 50 ms). Αν το XBee βρίςκεται ςε κατάςταςθ ετοιμότθτασ, τότε εγγράφεται ςτον ενδιάμεςο χϊρο αποκικευςθσ αςφρματων πακζτων προσ αποςτολι το πακζτο ςφνδεςθσ. Το πακζτο κα αποςταλεί ςτον ατζρμονα βρόχο τθσ main μζςω τθσ ςυνάρτθςθσ ελζγχου κατάςταςθσ του XBee. Ο μικροελεγκτισ και το XBee παραμζνουν ενεργά αναμζνοντασ τθν επιβεβαίωςθ χειραψίασ που προαναφζρκθκε. Θ επόμενθ κατάςταςθ προσ εκτζλεςθ είναι θ τρίτθ μετά από πζντε δευτερόλεπτα. γ. Γίνεται ζλεγχοσ τυχόν λιψθσ του πακζτου επιβεβαίωςθσ μζςω τθσ κακολικισ ςθμαίασ επιβεβαίωςθσ του πακζτου ςφνδεςθσ. Εάν ζχει λθφκεί, τότε θ επόμενθ κατάςταςθ προσ εκτζλεςθ είναι θ τζταρτθ μετά από 100 ms και ο μικροελεγκτισ, αλλά και το XBee επιτρζπεται να κοιμθκοφν. Αν πάλι όχι, τότε το πακζτο ςφνδεςθσ εγγράφεται εκ νζου ςτον ενδιάμεςο χϊρο αποκικευςθσ πακζτων προσ αποςτολι, το XBee μεταβαίνει ςε κατάςταςθ αφφπνιςθσ (αν είχε περιζλκει ςε κατάςταςθ φπνωςθσ) και απαγορεφεται θ φπνωςθ. Θ επόμενθ κατάςταςθ εκτζλεςθσ παραμζνει θ τρίτθ μετά από δφο δευτερόλεπτα. δ. Για να εκτελεςτεί θ τζταρτθ κατάςταςθ ςθμαίνει ότι ζχει λθφκεί επιβεβαίωςθ λιψθσ του πακζτου ςφνδεςθσ. Ο ςυντονιςτισ δικτφου ζχει καταγράψει πλζον τον ζξυπνο αιςκθτιρα ςτισ ςυςκευζσ που ανικουν ςτο δίκτυο. Οι καταςτάςεισ που κα εκτελοφνται από εδϊ και πζρα είναι θ τζταρτθ και θ πζμπτθ και μόνον αυτζσ. Μζχρι τθν πρϊτθ εκτζλεςθ τθσ τζταρτθσ κατάςταςθσ δεν ζχει εκκινιςει κάποια εφαρμογι αιςκθτιρα. Πμωσ αργότερα κα εκτελοφνται και ςυναρτιςεισ εφαρμογϊν των αιςκθτιρων, ενδιάμεςα ςτισ εκτελζςεισ τθσ εφαρμογισ επικοινωνίασ. Οι εφαρμογζσ αυτζσ ςτζλνουν δεδομζνα εγγράφοντασ τα ςτον ενδιάμεςο χϊρο αποκικευςθσ αςφρματων πακζτων προσ αποςτολι και αφυπνίηοντασ το XBee. Για τθν αποςτολι των πακζτων απαιτείται το XBee να βρίςκεται ςε κατάςταςθ ετοιμότθτασ. Συνεπϊσ ο πρϊτοσ ζλεγχοσ ςτθν τζταρτθ κατάςταςθ είναι να διαπιςτωκεί αν το XBee είναι ενεργό και ταυτόχρονα αν υπάρχουν πακζτα που εκκρεμεί θ αποςτολι τουσ. Αν θ 122

124 απάντθςθ ςτθν παραπάνω ερϊτθςθ είναι κετικι, τότε θ επόμενθ κατάςταςθ προσ εκτζλεςθ παραμζνει θ τζταρτθ μετά από δφο δευτερόλεπτα και δεν γίνεται κάποια αλλαγι ςτο XBee. Σφντομα τα πακζτα κα αποςταλοφν και θ απάντθςθ κα γίνει αρνθτικι. Τότε εγγράφεται ςτον ενδιάμεςο χϊρο αποκικευςθσ πακζτων προσ αποςτολι ζνα πακζτο αίτθςθσ δεδομζνων (poll packet) και απαγορεφεται θ φπνωςθ (μζςω τθσ ςυνάρτθςθσ tx_pkg_ok), μζχρι ο ςυντονιςτισ να απαντιςει ςτθν αίτθςθ. Θ επόμενθ κατάςταςθ εκτζλεςθσ είναι θ πζμπτθ μετά από δφο δευτερόλεπτα. Ο ςυντονιςτισ μπορεί να απαντιςει με δφο τρόπουσ. Είτε κα απαντιςει ότι δεν ζχει τίποτα να αποςτείλει, είτε κα ςτείλει ότι ζχει. Δθλαδι κα απαντά πάντα. Ραρόλα αυτά υπάρχει περίπτωςθ το πακζτο απάντθςθσ να χακεί. Κάκε φορά που ο ζξυπνοσ αιςκθτιρασ δζχεται επιτυχϊσ ζνα πακζτο ελζγχει το περιεχόμενο του και προβαίνει ςτισ κατάλλθλεσ ενζργειεσ. Αν το πακζτο είναι αρνθτικι απάντθςθ, τότε ελζγχει αν υπάρχουν εκκρεμι πακζτα προσ αποςτολι και αν δεν υπάρχουν επιτρζπει τθν φπνωςθ τον μικροελεγκτι και κοιμίηει το XBee. Θ φπνωςθ του μικροελεγκτι επιτυγχάνεται, όπωσ ζχει προαναφερκεί ςτον ατζρμονα βρόχο τθσ main και ςτθν κλιςθ τθσ ςυνάρτθςθσ προςπάκειασ φπνωςθσ. Αν το πακζτο είναι δεδομζνα τα επεξεργάηεται και διαπιςτϊνει αν είναι παράμετροι ι εντολι εκκίνθςθσ ςε κάποια κατάςταςθ (διάγραμμα 9.1 rx_pkg_handle). Αν είναι παράμετροι, τότε τισ διαβάηει και τισ αποκθκεφει, ενϊ αν είναι εντολι εκκίνθςθσ διατάηει τθν εκκίνθςθ των εφαρμογϊν των αιςκθτιρων. Σε όλεσ τισ περιπτϊςεισ δεν κοιμίηει το XBee, οφτε διατάηει τθν φπνωςθ του XBee. Αντίκετα εγγράφει ςτον ενδιάμεςο χϊρο αποκικευςθσ πακζτων αποςτολισ ζνα πακζτο επιβεβαίωςθσ που ζχει ςτόχο τθν επίτευξθ χειραψίασ με τον κεντρικό υπολογιςτι. Το πακζτο κα περάςει απευκείασ από τον ςυντονιςτι δικτφου και κα προωκθκεί ςτον κεντρικό υπολογιςτι. Μια ςθμαία που επιτρζπει ι απαγορεφει τθν φπνωςθ του μικροελεγκτι και του XBee λαμβάνει τιμι που επιτρζπει τθν φπνωςθ, όταν εκτελεςτεί θ ςυνάρτθςθ tx_pkg_ok. Για κάκε πακζτο που αποςτζλλεται λαμβάνεται μια απάντθςθ από το XBee. H ςυνάρτθςθ χειριςμοφ πακζτων του XBee διαπιςτϊνει 123

125 ότι ζνα πακζτο είναι απάντθςθ αποςτολισ και εφόςον ζχει γίνει επιτυχισ αποςτολι, καλείται μια ςυνάρτθςθ που κοιμίηει το XBee και δίνει εντολι να κοιμθκεί ο μικροελεγκτισ, αν θ φπνωςθ επιτρζπεται και ταυτόχρονα δεν υπάρχουν άλλα πακζτα προσ αποςτολι. Ζτςι μόλισ αποςταλεί το πακζτο επιβεβαίωςθσ, κα λθφκεί απάντθςθ αποςτολισ και αν αυτό ιταν το μοναδικό πακζτο που εκκρεμοφςε, κα επιτευχκεί θ φπνωςθ. Από τα παραπάνω ζχει εξαςφαλιςτεί ότι ο μικροελεγκτισ και το XBee κα καταναλϊνουν τθν ελάχιςτθ δυνατι ενζργεια. Μόλισ ολοκλθρωκεί θ αποςτολι των πακζτων ι λθφκεί θ απάντθςθ από τον ςυντονιςτι, τότε το XBee κα κοιμθκεί και κα επιτραπεί θ φπνωςθ του μικροελεγκτι. Τι κα γίνει όμωσ αν το πακζτο απάντθςθσ από τον ςυντονιςτι χακεί; Στο ςυγκεκριμζνο ςθμείο πρζπει να ξεκακαριςτεί τι ςθμαίνει ότι ζνα αςφρματο πακζτο χάνεται. Τα αςφρματα δεδομζνα δεν χάνονται ποτζ, αλλά υπάρχει περίπτωςθ λόγω ςφάλματοσ UART να μθ λθφκοφν από τον μικροελεγκτι. ε. Λόγω τθσ φπαρξθσ τθσ πικανότθτασ να χακεί θ απάντθςθ, ςτθν πζμπτθ κατάςταςθ αρχικά γίνεται ζλεγχοσ για εκκρεμι πακζτα προσ αποςτολι. Αν υπάρχουν δεν αλλάηει τίποτα και θ εκτζλεςθ τθσ πζμπτθσ κατάςταςθσ κα επαναλθφκεί μετά από δφο δευτερόλεπτα. Αν όχι, τότε επιτρζπεται θ φπνωςθ, κοιμίηεται το ΧΒee και δίνεται εντολι φπνωςθσ του μικροελεγκτι. Θ επόμενθ κατάςταςθ προσ εκτζλεςθ είναι θ τζταρτθ μετά από πζντε δευτερόλεπτα. Πλα όςα ζχουν αναφερκεί είναι αρκετά περίπλοκα. Θ μεγάλθ πολυπλοκότθτα οφείλεται ςτο γεγονόσ ότι υπάρχουν απαιτιςεισ χαμθλισ κατανάλωςθσ. Θ ουςία είναι ότι θ ςυνάρτθςθ εφαρμογισ επικοινωνίασ εξαςφαλίηει ότι ο μικροελεγκτισ κα λαμβάνει τα δεδομζνα που κα κζλει να του αποςτείλει ο κεντρικόσ υπολογιςτισ μζςω του ςυντονιςτι δικτφου και ότι θ λιψθ των δεδομζνων κα γίνεται με τθν μικρότερθ δυνατι κατανάλωςθ και δίχωσ να επιβαρφνονται οι εφαρμογζσ αιςκθτιρων που λαμβάνουν, επεξεργάηονται και αποςτζλλουν τα δεδομζνα μετριςεων. 124

126 9.3 Οι εφαρμογζσ αιςθητήρων Ππωσ προαναφζρκθκε ο ζξυπνοσ αιςκθτιρασ μπορεί να λάβει μια εντολι εκκίνθςθσ ςε κάποια κατάςταςθ. Τότε υπάρχουν δφο ενδεχόμενα: Είτε μια εφαρμογι των αιςκθτιρων να είναι ιδθ ενεργι, είτε όχι. Στθν δεφτερθ περίπτωςθ το λογιςμικό κα διατάξει τθν εκκίνθςθ τθσ εφαρμογισ μετά από ζνα δευτερόλεπτο, ενϊ ςτθν πρϊτθ θ αλλαγι τθσ κατάςταςθσ και θ ανάγνωςθ νζων παραμζτρων από τθν εφαρμογι κα γίνει μόλισ θ ςυνάρτθςθ τθσ εφαρμογισ το επιτρζψει. Κάκε εφαρμογι αιςκθτιρα αποτελείται από δφο ςυναρτιςεισ. Θ πρϊτθ είναι θ ςυνάρτθςθ ρφκμιςθσ θ οποία διαβάηει τισ νζεσ παραμζτρουσ, δεςμεφει τον απαραίτθτο χϊρο ςτθ μνιμθ και διατάηει τθν εκτζλεςθ τθσ δεφτερθσ ςυνάρτθςθσ μετά από ζνα δευτερόλεπτο αν και μόνο αν θ παράμετροσ ενεργοποίθςθσ επιδεικνφει κάτι τζτοιο. Θ ςυνάρτθςθ ρφκμιςθσ εκτελείται μια φορά. Θ δεφτερθ είναι θ ςυνάρτθςθ εφαρμογισ που αποτελείται από αρκετζσ διαφορετικζσ καταςτάςεισ εκτζλεςθσ και εκτελείται ςυνζχεια εκτόσ από τθν περίπτωςθ που κα ηθτθκεί να λθφκοφν κάποιεσ μετριςεισ και να τερματιςτεί θ εκτζλεςθ Εφαρμογή αιςθητήρα θερμοκραςίασ Θ πρϊτθ κατάςταςθ τθσ εφαρμογισ του αιςκθτιρα κερμοκραςίασ είναι αυτι που εκτελείται πρϊτθ ςε κάκε περίοδο εκτζλεςθσ τθσ εφαρμογισ (διάγραμμα 9.3). Ζχουν οριςτεί κάποιεσ μεταβλθτζσ οι οποίεσ πρζπει να μθδενίηονται ςε κάκε περίοδο εκτζλεςθσ. Οι μεταβλθτζσ αυτζσ είναι το άκροιςμα κερμοκραςιϊν, θ τρζχουςα τιμι μζτρθςθσ, θ προθγοφμενθ τιμι μζτρθςθσ, θ διαφορά τρζχουςασ και προθγοφμενθσ μζτρθςθσ και ο μετρθτισ μετριςεων ανά περίοδο. Επίςθσ υπάρχει μια ςθμαία πρϊτθσ μζτρθςθσ που υποδθλϊνει το αν θ επόμενθ μζτρθςθ κα είναι θ πρϊτθ μιασ περιόδου. Κατά τθν εκτζλεςθ τθσ πρϊτθσ κατάςταςθσ μθδενίηονται οι παραπάνω μεταβλθτζσ και θ ςθμαία πρϊτθσ μζτρθςθσ επιδεικνφει ότι δεν ζχει λθφκεί κάποια μζτρθςθ ωσ τϊρα. Ο ζλεγχοσ περνά ςτθ δεφτερθ κατάςταςθ απευκείασ. 125

127 Switch state State 1 State 2 State 3 State 4 2 Initialization of static variables. Next execution state is state 2 immediately. Is I2C peripheral used by the ambient light sensor? Request a temperature measurement. Next state is 4 after 600 ms. Take measurement. Is alarm condition met? State 5 State 6 NO YES YES Grant I2C peripheral. Open temperature sensor. Change resolution to 12 bits and put sensor in shutdown mode. Next state is 3 after 80 ms. Execution will continue at the same state(2) after 1 sec. Write alarm temperature packet in XBee transmit buffer. Wake up XBee if needed. Next state is 5 after 60 ms. NO Return Διάγραμμα 9.3: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ κερμοκραςίασ (ςελίδα 1). Ζχει οριςτεί μια ςθμαία που ελζγχει τθν χριςθ του I 2 C περιφερειακοφ. Οι αιςκθτιρεσ κερμοκραςίασ και φωτεινότθτασ χρθςιμοποιοφν το I 2 C και δεν επιτρζπεται να το χρθςιμοποιοφν ταυτόχρονα. Στθ δεφτερθ κατάςταςθ ελζγχεται αν το I 2 C είναι ελεφκερο και αν είναι δεςμεφεται από τθν εφαρμογι του αιςκθτιρα κερμοκραςίασ. Διαφορετικά θ εκτζλεςθ τθσ ςυνάρτθςθσ προγραμματίηεται ςτθ δεφτερθ κατάςταςθ ζνα δευτερόλεπτο αργότερα. Μόλισ δεςμευκεί το I 2 C ενεργοποιείται ο αιςκθτιρασ. Ο αιςκθτιρασ κερμοκραςίασ κα ξεκινιςει από μόνοσ του να λαμβάνει μετριςεισ και μάλιςτα με ανάλυςθ 9 ψθφίων. Ο ςτόχοσ είναι να μθν λαμβάνει μετριςεισ μόνοσ του και θ ανάλυςθ να είναι θ μεγαλφτερθ δυνατι των 12 ψθφίων. Ο αιςκθτιρασ πρζπει να λαμβάνει μια μζτρθςθ και να τίκεται ςε λειτουργία φπνωςθσ μζχρι τθ λιψθ όλων των 126

128 μετριςεων που απαιτοφνται ςε μια περίοδο οπότε και κα απενεργοποιθκεί. 2 State 5 State 6 Is the temperature valid according to temperature tolerance parameter? YES Are all the measurements for this period taken? Are all packets sent? YES NO Request new measurement. Next state is 4 after 600 ms Return NO YES Close sensor. Set I2C peripheral free for use by the light sensor. NO Write temperature packet in XBee transmit buffer. Wake up XBee if needed. Execution will continue at same state (6) after 200 ms. NO Should the application execute periodically? YES Should the application execute periodically? NO YES NO Are all the periods required in order to send data complete? This is the end of the application. Execution will not continue in any state. Next state is 1 after the temperature period parameter time interval. Should the application send the mean of the measurements it stored? Next state is 1 after the temperature period parameter time interval. NO YES YES Next state is 6 after 50 ms Διάγραμμα 9.3: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ κερμοκραςίασ (ςελίδα 2). Κατά τθν εκτζλεςθ τθσ δεφτερθσ κατάςταςθσ ο αιςκθτιρασ ρυκμίηεται ςε ανάλυςθ 12 ψθφίων και προγραμματίηεται να πζφτει ςε φπνο μετά τθ λιψθ και τθσ τρζχουςασ μζτρθςθσ 9 ψθφίων που εκκίνθςε αυτόματα, αλλά και οποιαςδιποτε γενικά μζτρθςθσ. Ο χρόνοσ μετατροπισ με ανάλυςθ 9 ψθφίων είναι 80 ms, οπότε θ επόμενθ 127

129 εκτζλεςθ τθσ εφαρμογισ κα είναι ςτθν τρίτθ κατάςταςθ μετά από 80 ms. Στθν τρίτθ κατάςταςθ γίνεται αίτθςθ λιψθσ μιασ μζτρθςθσ 12 ψθφίων, θ οποία ζχει μζγιςτο χρόνο μετατροπισ 600 ms. Μόλισ ο αιςκθτιρασ λάβει τθ μζτρθςθ κα πζςει ςε φπνο από μόνοσ του. Θ εκτζλεςθ ςτθν τζταρτθ κατάςταςθ κα ξεκινιςει ςε 600 ms. Στθν τζταρτθ κατάςταςθ λαμβάνεται θ μζτρθςθ κερμοκραςίασ. Θ τιμι τθσ μεταβλθτισ τρζχουςασ κερμοκραςίασ εξιςϊνεται με τθ μζτρθςθ και γίνεται ζλεγχοσ τθσ παραμζτρου προειδοποίθςθσ. Αν δεν επιτρζπεται θ προειδοποίθςθ, θ εκτζλεςθ κα ςυνεχιςτεί με τθν πζμπτθ κατάςταςθ. Τότε θ παράμετροσ προειδοποίθςθσ είναι ίςθ με μθδζν. Διαφορετικά θ παράμετροσ προειδοποίθςθσ είναι ίςθ με τον αρικμό διαδοχικϊν παραβιάςεων που απαιτοφνται για να αποςταλεί προειδοποίθςθ. Στθν ςυνάρτθςθ ρφκμιςθσ ζχουν μθδενιςτεί δφο μεταβλθτζσ μια ςθμαία ενεργοποίθςθσ και ζνασ μετρθτισ ενεργοποίθςθσ. Αρχικά γίνεται ζλεγχοσ αν θ τρζχουςα μζτρθςθ βρίςκεται εκτόσ ορίων και ςε περίπτωςθ παραβίαςθσ των ορίων που ιςοφνται με τισ παραμζτρουσ άνω και κάτω ορίου κερμοκραςίασ, ο μετρθτισ προειδοποίθςθσ αυξάνεται κατά ζνα και θ ςθμαία προειδοποίθςθσ γίνεται ζνα. Σε διαφορετικι περίπτωςθ μθδενίηονται και οι δφο μεταβλθτζσ. Στθ ςυνζχεια γίνεται ζλεγχοσ αν ο μετρθτισ προειδοποίθςθσ ζχει γίνει ίςοσ με τθν παράμετρο προειδοποίθςθσ. Αν δεν είναι ίςοσ θ εκτζλεςθ τθσ εφαρμογισ κα ςυνεχιςτεί με τθν πζμπτθ κατάςταςθ. Ειδάλλωσ ζχει ζρκει θ ϊρα να αποςταλεί προειδοποίθςθ. Στο ςθμείο αυτό κα αναφερκεί το format αποςτολισ. Μια μζτρθςθ κερμοκραςίασ είναι τφπου double (διπλισ ακρίβειασ). O μεταγλωττιςτισ του μικροελεγκτι δεςμεφει τζςςερα bytes για double μεταβλθτζσ, ενϊ ο κεντρικόσ υπολογιςτισ δεςμεφει οκτϊ bytes. Ακόμθ ενδζχεται το πρόγραμμα κεντρικοφ υπολογιςτι να πρζπει να εκτελεςτεί ςε μια μθχανι που χρθςιμοποιεί διαφορετικό αρικμό bytes. Ππωσ είναι αντιλθπτό ςτόχοσ είναι θ φορθτότθτα των προγραμμάτων. Χρθςιμοποιϊντασ τθν ςυνάρτθςθ sprintf τθσ βιβλιοκικθσ stdio τθσ ANSI C, μποροφν να γραφοφν οποιαδιποτε δεδομζνα ςε μορφι ASCII χαρακτιρων. Ζτςι θ μοναδικι απαίτθςθ που υπάρχει είναι το 128

130 περιβάλλον προγραμματιςμοφ να μπορεί να χειριςτεί τζτοιουσ χαρακτιρεσ. Το πακζτο προειδοποίθςθσ κερμοκραςίασ που αποςτζλλεται περιζχει ζνα byte ταυτότθτασ (δείχνει ότι το πακζτο είναι προειδοποίθςθ κερμοκραςίασ) και χαρακτιρεσ που αντιςτοιχοφν ςτθν τελευταία κερμοκραςία που παραβίαςε τα όρια (πίνακασ 9.1). Ο μικροελεγκτισ απαγορεφεται να κοιμθκεί και το XBee αφυπνίηεται, αν ιταν ςε κατάςταςθ φπνωςθσ. Τζλοσ το πακζτο προειδοποίθςθσ κερμοκραςίασ εγγράφεται ςτον ενδιάμεςο χϊρο αποκικευςθσ πακζτων προσ αποςτολι και θ εκτζλεςθ τθσ εφαρμογισ περνά ςτθν πζμπτθ κατάςταςθ. Temperature alarm identity 0x16 (1 byte) Temperature caused the alarm 6 bytes (3 the integer part and 3 the fractional part) Πίνακασ 9.1: Format πακζτου προειδοποίθςθσ κερμοκραςίασ. Κατά τθν εκτζλεςθ τθσ πζμπτθσ κατάςταςθσ ελζγχεται θ μεταβλθτι ςθμαία πρϊτθσ μζτρθςθσ. Αν όντωσ θ μζτρθςθ είναι θ πρϊτθ μιασ περιόδου τότε ο μετρθτισ μετριςεων ανά περίοδο αυξάνεται κατά ζνα, προςτίκεται θ μζτρθςθ ςτο άκροιςμα των μετριςεων, θ μεταβλθτι προθγοφμενθσ μζτρθςθσ λαμβάνει τθν τιμι τθσ τρζχουςασ μζτρθςθσ και θ ςθμαία πρϊτθσ μζτρθςθσ επιδεικνφει πλζον ότι θ επόμενθ μζτρθςθ δεν κα είναι θ πρϊτθ. Στθν αντίκετθ περίπτωςθ θ μεταβλθτι διαφοράσ τρζχουςασ από προθγοφμενθ μζτρθςθ εξιςϊνεται με τθν απόλυτθ διαφορά και γίνεται ζλεγχοσ αν είναι μικρότερθ τθσ παραμζτρου ζγκυρθσ μζτρθςθσ. Αν είναι όντωσ μικρότερθ, τότε θ μζτρθςθ κεωρείται ζγκυρθ και οι μεταβλθτζσ μετρθτι και ακροίςματοσ μετριςεων και προθγοφμενθσ μζτρθςθσ μεταβάλλονται όπωσ και προθγουμζνωσ. Αν όχι, θ μζτρθςθ κεωρείται άκυρθ και γίνεται νζα αίτθςθ λιψθσ μζτρθςθσ. Θ εκτζλεςθ τθσ πζμπτθσ κατάςταςθσ τερματίηεται και θ εφαρμογι μεταβαίνει πίςω ςτθν τζταρτθ κατάςταςθ, μετά από 600 ms. 129

131 Στθ ςυνζχεια τθσ εκτζλεςθσ τθσ πζμπτθσ κατάςταςθσ ελζγχεται αν ο μετρθτισ μετριςεων ανά περίοδο εκτζλεςθσ τθσ εφαρμογισ ζχει εξιςωκεί με τθν παράμετρο μετριςεων ανά περίοδο. Αν είναι μικρότεροσ, γίνεται νζα αίτθςθ λιψθσ μζτρθςθσ και θ εκτζλεςθ τθσ πζμπτθσ κατάςταςθσ τερματίηεται με μετάβαςθ ςτθν τζταρτθ. Σε περίπτωςθ εξίςωςθσ ελζγχεται θ παράμετροσ αποςτολισ. Αν το ςυμπζραςμα του ελζγχου είναι ότι επιτρζπεται θ αποςτολι, αποκθκεφεται ο μζςοσ όροσ των μετριςεων αυτισ τθσ περιόδου ςε ζναν πίνακα. Θ κζςθ τθσ αποκικευςθσ ρυκμίηεται από μια άλλθ μεταβλθτι, τον μετρθτι περιόδων, που ζχει αρχικοποιθκεί ςτο μθδζν ςτθ ςυνάρτθςθ ρφκμιςθσ. Ζπειτα ο μετρθτισ περιόδων αυξάνεται κατά ζνα, αποδεςμεφεται το I 2 C και απενεργοποιείται ο αιςκθτιρασ. Ελζγχεται κατά πόςον ζχει δοκεί εντολι μιασ μόνο εκτζλεςθσ τθσ εφαρμογισ (παράμετροσ περιόδου ίςθ με μθδζν) και αν ταυτοχρόνωσ επιτρζπεται θ αποςτολι μετριςεων. Σε περίπτωςθ κετικισ απάντθςθσ ο ζλεγχοσ περνά ςτθν ζκτθ κατάςταςθ αποςτολισ μετριςεων. Αν κάτι από τα δφο δεν ιςχφει γίνεται νζοσ ζλεγχοσ. Αν ο μετρθτισ περιόδων είναι μικρότεροσ του αρικμοφ των μζςων όρων μετριςεων που απαιτοφνται για να γίνει μια αποςτολι (παράμετροσ αποςτολισ) ι θ παράμετροσ αποςτολισ είναι μθδζν (δεν επιτρζπεται καμιά αποςτολι), τότε ο ζλεγχοσ περνά ςτθν πρϊτθ κατάςταςθ μετά από χρονικό διάςτθμα ίςο με τθν παράμετρο περιόδου. Αλλιϊσ, γίνεται μετάβαςθ ςτθν ζκτθ κατάςταςθ αποςτολισ μετριςεων. Και ςτισ πρϊτεσ πζντε καταςτάςεισ εκτζλεςθσ αρχικά γίνεται ζλεγχοσ φπαρξθσ εντολισ εκκίνθςθσ. Αν ο μικροελεγκτισ όντωσ ζχει λάβει εντολι εκκίνθςθσ, αποδεςμεφεται θ μνιμθ και τερματίηει θ ςυνάρτθςθ εφαρμογισ. Στθ λίςτα διεργαςιϊν ειςάγεται θ ςυνάρτθςθ ρφκμιςθσ θ οποία κα εκτελεςτεί μετά από ζνα δευτερόλεπτο. Θ ζκτθ κατάςταςθ είναι ταυτόχρονα και θ τελευταία τθσ ςυνάρτθςθσ εφαρμογισ του αιςκθτιρα κερμοκραςίασ. Θ μετάβαςθ ςτθν ζκτθ κατάςταςθ γίνεται από τθν πζμπτθ. Ρριν τθ μετάβαςθ και κατά τθ διάρκεια τθσ εκτζλεςθσ τθσ πζμπτθσ κατάςταςθσ αρχικοποιοφνται κάποιεσ μεταβλθτζσ που ζχουν κακοριςτικι ςυμμετοχι ςτθν αποςτολι. Οι μεταβλθτζσ αυτζσ είναι ζνασ δείκτθσ ςτον 130

132 πίνακα αποκικευςθσ μζςων όρων μετριςεων, ζνασ μετρθτισ αρικμοφ πακζτων που απαιτοφνται για τθν αποςτολι και μια μεταβλθτι μζτρθςθσ μικουσ πακζτου. Ο μζγιςτοσ αρικμόσ bytes ανά πακζτο είναι εκατό και για κάκε μζτρθςθ χρειάηονται ζξι bytes. Ππωσ όμωσ ζχει ιδθ αναφερκεί ςε ζνα πακζτο αποςτζλλονται και άλλεσ πλθροφορίεσ όπωσ διευκφνςεισ προοριςμοφ, μικοσ, όριο αρχισ, άκροιςμα ελζγχου κλπ. Ο μζγιςτοσ αρικμόσ μετριςεων κερμοκραςίασ ανά πακζτο είναι δεκατζςςερισ. Κατά τθν εκτζλεςθ τθσ τελευταίασ κατάςταςθσ, γίνεται ζλεγχοσ του ενδεχομζνου να ζχουν εγγραφεί ςτον ενδιάμεςο χϊρο αποκικευςθσ πακζτων προσ αποςτολι όλα τα πακζτα μετριςεων κερμοκραςίασ. Αν δεν ζχουν αποςταλεί, τότε δθμιουργείται ζνα νζο με το αρχικό byte ταυτότθτασ να είναι ίςο με τον χαρακτιρα Τ, το δεφτερο byte να είναι ο αρικμόσ πακζτου και ακολουκεί θ πλθροφορία μετριςεων (πίνακασ 9.2). Τζλοσ το πακζτο εγγράφεται ςτον ενδιάμεςο χϊρο αποκικευςθσ πακζτων προσ αποςτολι, αφυπνίηεται το XBee και απαγορεφεται θ φπνωςθ του μικροελεγκτι. Ππωσ ζχει προαναφερκεί πολλάκισ το XBee κα κοιμθκεί και κα επιτραπεί θ φπνωςθ του μικροελεγκτι, μόλισ λθφκεί το πακζτο απάντθςθσ αποςτολισ και δεν υπάρχει άλλο πακζτο προσ αποςτολι (οτιδιποτε πακζτο, όχι μόνο κερμοκραςίασ). Θ εκτζλεςθ τθσ εφαρμογισ κα ςυνεχιςτεί (μζχρι τθν αποςτολι όλων των πακζτων μετριςεων κερμοκραςίασ) μετά από 200 ms ςτθν ίδια κατάςταςθ. Temperature identity Packet number Total number of measurements in this packet Measurement data T (1 byte) 1 byte 1 byte 6 bytes (3 the integer part and 3 the fractional part) for each measurement Πίνακασ 9.2: Format πακζτου μετριςεων κερμοκραςίασ. Πταν αποςταλοφν όλα τα πακζτα κερμοκραςίασ, γίνεται νζοσ ζλεγχοσ. Αν θ παράμετροσ περιόδου είναι μθδζν, θ εφαρμογι τερματίηει και δεν κα εκτελεςτεί ξανά, μζχρι ο χριςτθσ από τον κεντρικό υπολογιςτι δϊςει νζα εντολι εκκίνθςθσ. Αν απαιτείται θ εκτζλεςθ τθσ 131

133 εφαρμογισ να επαναλαμβάνεται ςε ςυγκεκριμζνθ περίοδο, τότε μθδενίηεται ο μετρθτισ περιόδων μετριςεων και θ επόμενθ κατάςταςθ προσ εκτζλεςθ κα είναι θ πρϊτθ ςε χρονικό διάςτθμα ίςο με τθν παράμετρο περιόδου Εφαρμογή αιςθητήρα φωτόσ περιβάλλοντοσ Switch state 2 State 1 State 2 State 3 State 4 State 5 State 6 State 7 State 8 NO Grant I2C peripheral. Open ambient light sensor. Put temperature sensor in shutdown mode. Initialization of static variables. Next state is 2 after 50 ms. Is I2C peripheral used by the temperature sensor? Return Configure sensor in normal or extended mode according to the channel 0 mode selection flag. At the first execution the default value is normal mode. Request measurement for YES channel 0. Next state is 3 after 400 ms for normal mode or 80 ms for extended. Execution will continue at the same state(1) after 1 sec. Take measurement. Is measurement valid? (according to valid bit) NO Execution will continue at the same state(3) after 50 ms. YES Next state is 4 after 50 ms. Is the mode selected for channel 0 appropriate? (according to the measurement value) YES NO Put sensor in power down mode. Select appropriate mode for channel 0 with the channel 0 mode selection flag. Next state is 2 after 50 ms. Configure sensor in normal or extended mode according to the channel 1 mode selection flag. At the first execution the default value is normal mode. Request measurement for channel 1. Next state is 5 after 400 ms for normal mode or 80 ms for extended. NO Execution will continue at the same state(5) after 50 ms. Take measurement. Is measurement valid? (according to valid bit) YES Is the mode selected for channel 1 appropriate? (according to the measurement value) YES Put sensor in power down mode. Next state is 6 after 50 ms. NO Put sensor in power down mode. Select appropriate mode for channel 1 with the channel 1 mode selection flag. Next state is 4 after 50 ms. Διάγραμμα 9.4: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα φωτόσ περιβάλλοντοσ (ςελίδα 1). 132

134 2 State 6 State 7 State 8 Calculate lux Is the ambient light value valid according to ambient light tolerance parameter? YES Are all the measurements for this period taken? Are all packets sent? YES NO Is alarm condition met? YES Write alarm ambient light packet in XBee transmit buffer. Wake up XBee if needed. NO Request new measurements. Next state is 2 after 50 ms YES Close sensor. Set I2C peripheral free for use by the temperature sensor. NO YES Should the application execute periodically? NO NO Write ambient light packet in XBee transmit buffer. Wake up XBee if needed. Execution will continue at same state (8) after 200 ms. NO Should the application execute periodically? YES Next state is 7 after 60 ms. Return Are all the periods required in order to send data complete? Should the application send the mean of the measurements it stored? NO This is the end of the application. Execution will not continue in any state. Next state is 1 after the ambient light period parameter time interval. YES Next state is 8 after 50 ms NO Next state is 1 after the ambient light period parameter time interval. YES Διάγραμμα 9.4: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα φωτόσ περιβάλλοντοσ (ςελίδα 2). Θ ςυνάρτθςθ εφαρμογισ του αιςκθτιρα φωτόσ περιβάλλοντοσ παρουςιάηει αρκετζσ ομοιότθτεσ με τθν εφαρμογι του αιςκθτιρα κερμοκραςίασ, αφοφ οι παράμετροι που δζχεται είναι ίδιεσ με τθν ςυνάρτθςθ του αιςκθτιρα κερμοκραςίασ. Υπάρχουν όμωσ κάποιεσ ιδιαιτερότθτεσ του αιςκθτιρα φωτόσ που ζχουν αποτζλεςμα κάποιεσ επιπλζον ρυκμίςεισ. Οι καταςτάςεισ εκτζλεςθσ είναι οκτϊ κακϊσ χρειάηεται μετάβαςθ από τθν κανονικι λειτουργία ςτθν εκτεταμζνθ, όταν το επίπεδο φωτόσ το απαιτεί (διάγραμμα 9.4). 133

135 Θ πρϊτθ κατάςταςθ ελζγχει τθ χριςθ του I 2 C και αν είναι ελεφκερο το δεςμεφει. Υπάρχει μια ςθμαντικι ιδιαιτερότθτα ςτουσ αιςκθτιρεσ κερμοκραςίασ και φωτόσ περιβάλλοντοσ. Ενεργοποιοφνται ταυτόχρονα γιατί παίρνουν τάςθ μζςω του ίδιου διακόπτθ. Ο αιςκθτιρασ κερμοκραςίασ κατά τθν εκκίνθςθ του αρχίηει και λαμβάνει μετριςεισ μόνοσ του. Αντικζτωσ ο αιςκθτιρασ φωτόσ ξεκινά ςε φπνωςθ. Αν ο αιςκθτιρασ κερμοκραςίασ επιτρεπόταν κακ όλθ τθ διάρκεια που ο αιςκθτιρασ φωτόσ είναι ενεργοποιθμζνοσ να λαμβάνει μετριςεισ, κα γινόταν άςκοπθ ςπατάλθ ενζργειασ. Γι αυτό ρυκμίηεται ο αιςκθτιρασ κερμοκραςίασ ςε κατάςταςθ φπνωςθσ. Στθ ςυνζχεια αρχικοποιοφνται (μθδενίηονται) οι μεταβλθτζσ τρζχουςασ και προθγοφμενθσ μζτρθςθσ, το άκροιςμα και θ διαφορά μετριςεων. Θ ςθμαία πρϊτθσ μζτρθςθσ επιδεικνφει ότι θ επόμενθ μζτρθςθ κα είναι θ πρϊτθ τθσ περιόδου εκτζλεςθσ. Θ εκτζλεςθ μεταβαίνει ςτθ δεφτερθ κατάςταςθ. Στθ δεφτερθ κατάςταςθ ο αιςκθτιρασ ρυκμίηεται ςτθ λειτουργία που επιδεικνφουν δφο μεταβλθτζσ ςθμαίεσ. Θ κάκε ςθμαία αντιςτοιχεί ςτθν κατάςταςθ λειτουργίασ για κάκε κανάλι (κανονικι ι εκτεταμζνθ). Στθ ςυνάρτθςθ ρφκμιςθσ και οι δφο αυτζσ ςθμαίεσ δθλϊνουν κανονικι λειτουργία. Θ δεφτερθ κατάςταςθ χρθςιμοποιεί τθν πρϊτθ ςθμαία του καναλιοφ 0. Ζπειτα δίνεται εντολι μετατροπισ του καναλιοφ 0 και θ επόμενθ κατάςταςθ κα είναι θ τρίτθ μετά από 400 ι 80 ms για κανονικι ι εκτεταμζνθ λειτουργία. Θ τρίτθ κατάςταςθ διαβάηει το κανάλι 0. Αν το αποτζλεςμα τθσ μετατροπισ είναι ζγκυρο (ψθφίο VALID) ελζγχεται θ τιμι τθσ μετατροπισ. Αν διαπιςτωκεί υπερχείλιςθ και ο αιςκθτιρασ φωτόσ είναι ςε κανονικι κατάςταςθ, τότε θ ςθμαία κατάςταςθσ λειτουργίασ αλλάηει ϊςτε να επιδεικνφει τθν εκτεταμζνθ λειτουργία. Ο αιςκθτιρασ ρυκμίηεται ςε κατάςταςθ φπνου, γιατί ειδάλλωσ κα ςυνζχιηε τισ μετατροπζσ, και ο ζλεγχοσ μεταβαίνει ςτθ δεφτερθ κατάςταςθ. Αν διαπιςτωκεί ότι ο αιςκθτιρασ φωτόσ είναι ςε εκτεταμζνθ λειτουργία και παράλλθλα το αποτζλεςμα τθσ μετατροπισ είναι τζτοιο ϊςτε να ιταν προτιμότερο να βριςκόταν ςε κανονικι λειτουργία (δθλαδι δεν κα υπιρχε υπερχείλιςθ με τθν κανονικι λειτουργία που επιτυγχάνει μεγαλφτερθσ ακρίβειασ μετριςεισ), τότε θ ςθμαία κατάςταςθσ 134

136 λειτουργίασ αλλάηει ϊςτε να επιδεικνφει τθν κανονικι λειτουργία. Ο αιςκθτιρασ ρυκμίηεται και πάλι ςε κατάςταςθ φπνου και ο ζλεγχοσ μεταβαίνει ςτθ δεφτερθ κατάςταςθ. Αν δεν διαπιςτωκεί τίποτα από τα παραπάνω, τότε ο ζλεγχοσ περνά ςτθν τζταρτθ κατάςταςθ. Θ τζταρτθ και θ πζμπτθ κατάςταςθ είναι πανομοιότυπεσ με τθν δεφτερθ και τθν τρίτθ, αλλά ςχετίηονται με το κανάλι 1. Θ εκτζλεςθ τθσ εφαρμογισ κα ςυνεχιςτεί με τθν ζκτθ κατάςταςθ. Στθν εκτζλεςθ τθσ ζκτθσ κατάςταςθσ αρχικά υπολογίηεται το επίπεδο φωτόσ περιβάλλοντοσ ςε Lux, βάςει των τιμϊν των δφο καναλιϊν. Στθ ςυνζχεια θ ροι προγράμματοσ είναι πανομοιότυπθ με τθν ςυνάρτθςθ εφαρμογισ του αιςκθτιρα κερμοκραςίασ. Οι καταςτάςεισ ζξι, επτά και οκτϊ τθσ εφαρμογισ του αιςκθτιρα φωτόσ αντιςτοιχοφν ςτισ καταςτάςεισ τζςςερα, πζντε και ζξι του αιςκθτιρα κερμοκραςίασ. Θ μοναδικι διαφορά είναι ότι χρειάηονται επτά bytes για κάκε μζτρθςθ και μποροφν να αποςταλοφν ζντεκα μετριςεισ ςε κάκε πακζτο. Ακόμθ το πρϊτο byte ςε κάκε πακζτο ζχει τθν τιμι του χαρακτιρα L (πίνακεσ 9.3 και 9.4). Ambient light alarm identity 0x18 (1 byte) Light level caused the alarm 7 bytes (4 the integer part and 3 the fractional part) Πίνακασ 9.3: Format πακζτου προειδοποίθςθσ φωτόσ. Light identity Packet number Total number of measurements in this packet Measurement data L (1 byte) 1 byte 1 byte 7 bytes (4 the integer part and 3 the fractional part) for each measurement Πίνακασ 9.4: Format πακζτου μετριςεων φωτόσ περιβάλλοντοσ. 135

137 9.3.3 Εφαρμογή αιςθητήρα θερμοκραςίασ και υγραςίασ Switch state State 1 State 2 State 3 State 4 2 Initialization of static variables. Open sensor. Configure resolution high. Switch heater on or off according to a heater status static variable. At the first execution of the state heater status variable is equal to the parameter given by user. Did configuration succeeded? YES Next state is 2 after 30 sec. Request a temperature measurement. Next state is 3 after 320 ms. NO Execution will continue at the same state(1) after 1 sec. YES Take measurement. Request a humidity measurement. Next state is 4 after 80 ms. Did the conversion complete? NO Execution will continue at the same state(3) after 100 ms. Did the conversion complete? NO Execution will continue at the same state(4) after 100 ms. NO YES State 5 State 6 Take measurement. Calculate humidity. Is alarm condition met? YES Write alarm humidity packet in XBee transmit buffer. Wake up XBee if needed. Next state is 5 after 60 ms. Return Διάγραμμα 9.5: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα υγραςίασ και κερμοκραςίασ (ςελίδα 1). Ο αιςκθτιρασ κερμοκραςίασ και υγραςίασ εκτελείται ςε ζξι καταςτάςεισ (διάγραμμα 9.5). Οι παράμετροι που δζχεται είναι περιςςότερεσ, ςυνεπϊσ ζχουν προςτεκεί κάποιοι ζλεγχοι και αντίςτοιχεσ ενζργειεσ. Θ ιδιαιτερότθτα του αιςκθτιρα υγραςίασ και κερμοκραςίασ είναι ότι ζχει ζναν μζγιςτο χρόνο απόκριςθσ τριάντα 136

138 δευτερολζπτων. Συνεπϊσ ο χριςτθσ πρζπει να περιμζνει τουλάχιςτον τριάντα δευτερόλεπτα για κάκε εκτζλεςθ τθσ εφαρμογισ. Αυτό κα μποροφςε να αποφευχκεί, αν ο αιςκθτιρασ δεν απενεργοποιοφταν ποτζ και ειςαγόταν ςε κατάςταςθ φπνου όταν δεν χρειαηόταν να δίνει μετριςεισ. Πμωσ ακόμα και θ κατάςταςθ φπνωςθσ καταναλϊνει κάποια ενζργεια. Ραρόλα αυτά δεν υπάρχει κάποιο ιδιαίτερο πρόβλθμα, κακϊσ όπωσ ςε όλουσ τουσ αιςκθτιρεσ ο χριςτθσ μπορεί να ηθτιςει παραπάνω από μία μετριςεισ για κάκε περίοδο εκτζλεςθσ. Ζτςι κα λάβει τον μζςο όρο πολλϊν διαδοχικϊν μετριςεων κατά τθ διάρκεια τθσ λιψθσ των οποίων ο αιςκθτιρασ δεν κλείνει, αλλά μεταβαίνει μόνοσ του ςε κατάςταςθ φπνωςθσ, όταν δεν ηθτείται κάποια μζτρθςθ. Κατά τθν εκτζλεςθ τθσ πρϊτθσ κατάςταςθσ αρχικοποιοφνται οι αντίςτοιχεσ με τουσ προθγοφμενουσ αιςκθτιρεσ μεταβλθτζσ και ενεργοποιείται ο αιςκθτιρασ. Ζπειτα ρυκμίηεται ςε ανάλυςθ 14 και 12 ψθφίων για κερμοκραςία και υγραςία αντίςτοιχα. Αν θ παράμετροσ ενεργοποίθςθσ κερμαντιρα το απαιτεί ενεργοποιείται και ο κερμαντιρασ. Τζλοσ γίνεται μετάβαςθ ςτθ δεφτερθ κατάςταςθ ζπειτα από 30 δευτερόλεπτα. Στθ δεφτερθ κατάςταςθ γίνεται αίτθςθ λιψθσ μζτρθςθσ κερμοκραςίασ και γίνεται μετάβαςθ ςτθν τρίτθ κατάςταςθ μετά από 320 ms που είναι ο χρόνοσ μετατροπισ μζτρθςθσ 14 ψθφίων. Στθν τρίτθ κατάςταςθ λαμβάνεται θ μζτρθςθ κερμοκραςίασ και γίνεται αίτθςθ λιψθσ μζτρθςθσ υγραςίασ. Ο ζλεγχοσ μεταβαίνει ςτθν τζταρτθ κατάςταςθ μετά από 80 ms που είναι ο χρόνοσ μετατροπισ 12 ψθφίων. Θ διαφορά τθσ τζταρτθσ κατάςταςθσ τθσ ςυνάρτθςθσ εφαρμογισ του αιςκθτιρα υγραςίασ και κερμοκραςίασ από τθν αντίςτοιχθ ςυνάρτθςθ του αιςκθτιρα κερμοκραςίασ είναι ότι, αν μια μεταβλθτι ςθμαία ενεργοποίθςθσ κερμαντιρα επιδεικνφει ότι κατά τθ διάρκεια τθσ τρζχουςασ μζτρθςθσ ο κερμαντιρασ ιταν ανοιχτόσ, τότε αφαιροφνται πζντε βακμοί από τθν τιμι κερμοκραςίασ και γίνεται αναγωγι τθσ μζτρθςθσ υγραςίασ ςτθν υγραςία που κα μετροφνταν, αν θ κερμοκραςία ιταν πζντε βακμοφσ χαμθλότερθ και το ςθμείο δρόςου παρζμενε ςτακερό. 137

139 2 State 5 State 6 Are the temperature and humidity values valid according to tolerance parameters? YES Are all the measurements for this period taken? Are all packets sent? YES NO Request new measurements. Next state is 2 after 3.5 sec. NO YES Close sensor. 1 NO Write humidity packet in XBee transmit buffer. Wake up XBee if needed. Execution will continue at same state (6) after 200 ms. NO Should the application execute periodically? YES 1 Return NO Is automatic heater change enabled? YES Is humidity value>95% with heater switched off? YES Change heater status variable to enable heater switch on at next period. NO Should the application execute periodically? NO Should the application send the mean of the measurements it stored? YES YES NO Are all the periods required in order to send data complete? This is the end of the application. Execution will not continue in any state. 1 Next state is 1 after the humidity period parameter time interval. Is humidity value<90% with heater switched on? NO Next state is 6 after 50 ms YES NO YES Change heater status variable to enable heater switch off at next period. 1 Next state is 1 after the humidity period parameter time interval. Διάγραμμα 9.5: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα υγραςίασ και κερμοκραςίασ (ςελίδα 2). Στθν εκτζλεςθ τθσ πζμπτθσ κατάςταςθσ θ διαφορά είναι ότι, αν ο μετρθτισ μετριςεων ανά περίοδο εξιςωκεί με τθν παράμετρο μετριςεων ανά περίοδό, γίνεται ζνασ παραπάνω ζλεγχοσ. Αν θ τιμι τθσ υγραςίασ είναι μεγαλφτερθ από 95% και θ παράμετροσ αυτόματθσ αλλαγισ τθσ κατάςταςθσ του κερμαντιρα επιτρζπει τθν ενεργοποίθςθ 138

140 και τθν απενεργοποίθςθ του κερμαντιρα από το λογιςμικό, τότε ενεργοποιείται ο κερμαντιρασ (αν δεν ιταν ενεργοποιθμζνοσ). Αντίςτοιχα αν θ υγραςία είναι μικρότερθ από 90% απενεργοποιείται ο κερμαντιρασ (αν δεν ιταν ιδθ απενεργοποιθμζνοσ). Ακόμθ για τθ λιψθ ακόμα μιασ μζτρθςθσ ςτθν ίδια περίοδο εκτζλεςθσ, ο ζλεγχοσ μεταβαίνει ςτθν πρϊτθ κατάςταςθ μετά από 3.5 δευτερόλεπτα. Αυτό γίνεται για να μθν ανεβαίνει θ κερμοκραςία του αιςκθτιρα και επθρεάηει τισ μετριςεισ. Λαμβάνεται μια πλιρθσ μζτρθςθ και ο αιςκθτιρασ είναι ςε κατάςταςθ φπνωςθσ τουλάχιςτον ςτο 10% του χρόνου λειτουργίασ του, όπωσ αναγράφεται ςτισ οδθγίεσ χριςθσ. Θ ζκτθ και τελευταία κατάςταςθ αποςτολισ αποςτζλλει πακζτα μετριςεων υγραςίασ και κερμοκραςίασ. Μια πλιρθσ μζτρθςθ αποςτζλλεται ςε 13 bytes. Ζξι bytes για κάκε μζτρθςθ και ζνα byte με τθν κατάςταςθ του κερμαντιρα. Κάκε πακζτο χωράει ζξι πλιρεισ μετριςεισ και το αρχικό byte κάκε πακζτου είναι ίςο με τον χαρακτιρα Θ (πίνακεσ 9.5 και 9.6). Humidity alarm Temperature Humidity value Heater status identity value 0x17 (1 byte) 6 bytes (3 the 6 bytes (3 the 1 byte integer part and 3 the fractional part) integer part and 3 the fractional part) Πίνακασ 9.5: Format πακζτου προειδοποίθςθσ αιςκθτιρα υγραςίασ και κερμοκραςίασ. Humidity identity Packet number Total number of measurements in this packet Temperature value H (1 byte) 1 byte 1 byte 6 bytes (3 the integer part and 3 the fractional part) for each measurement Humidity value 6 bytes (3 the integer part and 3 the fractional part) for each measurement Πίνακασ 9.6: Format πακζτου μετριςεων αιςκθτιρα υγραςίασ και κερμοκραςίασ. Heater status 1 byte for each measurement 139

141 9.3.4 Εφαρμογή αιςθητήρα επιτάχυνςησ Θ εφαρμογι του επιταχυνςιομζτρου δζχεται τζςςερισ παραμζτρουσ που αναφζρκθκαν ςτθν παράγραφο Θ παράμετροσ τθσ ςυχνότθτασ δειγματολθψίασ ανά κανάλι, μπορεί να δίνεται από τον χριςτθ ςτο λογιςμικό του κεντρικοφ υπολογιςτι, όμωσ δεν μεταβιβάηεται αυτοφςια ςτο λογιςμικό του ζξυπνου αιςκθτιρα. Αντίκετα το λογιςμικό του κεντρικοφ υπολογιςτι εκτελεί κάποιεσ πράξεισ, ϊςτε να υπολογίςει τθν περίοδο τθσ μονάδασ εξόδου 1 του Timer B που παρζχει το ςιμα δειγματολθψίασ. Ο κεντρικόσ υπολογιςτισ διαλζγει και το ρολόι του Timer B που μπορεί να είναι είτε το ρολόι περιφερειακϊν SMCLK, είτε το βοθκθτικό ρολόι ACLK. Άρα ο κεντρικόσ υπολογιςτισ δεχόμενοσ μία παράμετρο ςυχνότθτασ δειγματολθψίασ, μεταβιβάηει ςτον ζξυπνο αιςκθτιρα δφο παραμζτρουσ: Μία παράμετρο περιόδου τθσ μονάδοσ εξόδου 1 του Timer B και μια παράμετρο επιλογισ ρολογιοφ του Timer B. Θ ςυχνότθτα δειγματολθψίασ είναι αρικμόσ διπλισ ακρίβειασ και όπωσ ζχει προαναφερκεί ο κεντρικόσ υπολογιςτισ και ο μικροελεγκτισ διακζτουν διαφορετικό format για τουσ αρικμοφσ διπλισ ακριβείασ. Επίςθσ με τον τρόπο μεταβίβαςθσ που επιλζχτθκε απαλλάςςεται ο μικροελεγκτισ από αρκετοφσ υπολογιςμοφσ. Επειδι δεν μποροφν να επιτευχκοφν όλεσ οι ςυχνότθτεσ δειγματολθψίασ (μια και είναι άπειρο το πλικοσ τουσ), το λογιςμικό του κεντρικοφ υπολογιςτι επιλζγει τθν πιο κοντινι ςυχνότθτα δειγματολθψίασ που μπορεί να υλοποιιςει ο μικροελεγκτισ και πλθροφορεί τον χριςτθ για τθν τελικι ςυχνότθτα δειγματολθψίασ. Θ ςυνάρτθςθ ρφκμιςθσ του επιταχυνςιομζτρου, εφόςον θ παράμετροσ ενεργοποίθςθσ το επιτρζπει, διαβάηει τισ πζντε πλζον παραμζτρουσ και ρυκμίηει τον ελεγκτι DMA και τον Timer B, δίχωσ όμωσ να τουσ ενεργοποιεί. Ζπειτα τερματίηει δίνοντασ τον ζλεγχο ςτθ ςυνάρτθςθ εφαρμογισ μετά από ζνα δευτερόλεπτο. Θ πρϊτθ κατάςταςθ τθσ ςυνάρτθςθσ εφαρμογισ (διάγραμμα 9.6) ενεργοποιεί το επιταχυνςιόμετρο και μεταβιβάηει τον ζλεγχο ςτθ δεφτερθ κατάςταςθ μετά από 100 ms. Θ δεφτερθ κατάςταςθ εκκινεί τον 140

142 Timer B, ενεργοποιεί τον ελεγκτι DMA και διατάηει τθν ζναρξθ των μετριςεων ενεργοποιϊντασ τον Α/D μετατροπζα. Ταυτόχρονα μια ςθμαία που ελζγχει τον τρόπο λειτουργίασ χαμθλισ κατανάλωςθσ ρυκμίηεται ζτςι ϊςτε να επιτρζπεται θ φπνωςθ του μικροελεγκτι μόνο ςτθ λειτουργία LPM0. O A/D μετατροπζασ και ενδεχομζνωσ ο Timer B, χρθςιμοποιοφν το SMCLK, οπότε δεν επιτρζπεται θ λειτουργία LPM3 που το απενεργοποιεί. Ο ζλεγχοσ μεταβιβάηεται ςτθν τρίτθ κατάςταςθ ςε χρόνο που αντιςτοιχεί ςτον χρόνο που απαιτείται για τθ λιψθ όλων των δειγμάτων για κάκε κανάλι (παράμετροσ δειγμάτων ανά κανάλι και ανά περίοδο εκτζλεςθσ). Switch state State 1 State 2 State 3 State 4 Open accelerometer and configure A/D. Next state is 2 after 100ms. Start Timer B. Enable DMA. Start sampling with A/D. Next state is 3 after all samples are converted and stored. Close A/D and accelerometer, Next state is 4 after 50 ms, Are all packets sent? NO YES Return Write accelerometer packet in XBee transmit buffer. Wake up XBee if needed. Execution will continue at same state (4) after 600 ms. Should the application execute periodically? NO YES This is the end of the application. Execution will not continue in any state. Next state is 1 after the accelerometer period parameter time interval. Διάγραμμα 9.6: Καταςτάςεισ εκτζλεςθσ τθσ εφαρμογισ του επιταχυνςιομζτρου. Στθν εκτζλεςθ τθσ τρίτθσ κατάςταςθσ απενεργοποιοφνται ο Timer B, ο ελεγκτισ DMA, o A/D μετατροπζασ και το επιταχυνςιόμετρο. Θ ςθμαία ελζγχου του τρόπου λειτουργίασ χαμθλισ κατανάλωςθσ, 141

143 επιτρζπει πλζον τθν ειςαγωγι ςε λειτουργία LPM3. Θ επόμενθ κατάςταςθ προσ εκτζλεςθ κα είναι και θ τελευταία με τθν αποςτολι των δεδομζνων. Κάκε πακζτο αποςτολισ μετριςεων επιταχυνςιομζτρου (πίνακασ 9.7) εμπεριζχει 20 μετριςεισ ανά κανάλι. Κάκε μζτρθςθ είναι δφο bytes, ςυνεπϊσ αποςτζλλονται το μζγιςτο 80 bytes μετριςεων ςε κάκε πακζτο. Το πρϊτο byte κάκε πακζτου είναι ίςο με τον χαρακτιρα Α. Αν θ παράμετροσ περιόδου είναι ίςθ με μθδζν θ εφαρμογι τερματίηει, ειδάλλωσ ο ζλεγχοσ πθγαίνει ςτθν πρϊτθ κατάςταςθ μετά από χρονικό διάςτθμα που ιςοφται με τθν παράμετρο περιόδου εκτζλεςθσ εφαρμογισ. Acceleration identity Packet number Number of measurements in this packet Channel 0 value Channel 1 value A (1 byte) 1 byte 1 byte 2 bytes for each measurement 2 bytes for each measurement Πίνακασ 9.7: Format πακζτου μετριςεων επιταχυνςιομζτρου. 142

144 Κεφάλαιο 10 Κατανάλωςη ιςχφοσ 10.1 Κατανάλωςη τησ εφαρμογήσ θερμοκραςίασ Θ κατανάλωςθ τθσ εφαρμογισ κερμοκραςίασ επθρεάηεται από τισ παραμζτρουσ αποςτολισ, μετριςεων ανά περίοδο και περιόδου. Θ κατανάλωςθ του αιςκθτιρα είναι 70 μα όταν βρίςκεται ςε κανονικι λειτουργία και θ διαςφνδεςθ SMBus είναι ενεργι, 55 μα όταν βρίςκεται ςε κανονικι λειτουργία χωρίσ όμωσ να μεταφζρονται δεδομζνα και 0.1 μα ςε λειτουργία φπνου. Για κάκε μζτρθςθ ο αιςκθτιρασ ζχει ζναν μζγιςτο χρόνο μετατροπισ 600 ms, οπότε καταναλϊνει, όπου Ν ο αρικμόσ των μετριςεων κερμοκραςίασ ςε κάκε περίοδο εκτζλεςθσ τθσ εφαρμογισ. Το μεγαλφτερο τμιμα τθσ κατανάλωςθσ προζρχεται από τθν αςφρματθ αποςτολι δεδομζνων. Θ αποςτολι των μετριςεων δεν γίνεται ςε κάκε περίοδο εκτζλεςθσ τθσ εφαρμογισ, αλλά όπωσ ορίηει θ παράμετροσ αποςτολισ. Ζνα γεμάτο πακζτο μετριςεων κερμοκραςίασ περιλαμβάνει το μζγιςτο 14 μετριςεισ, μία για κάκε περίοδο εκτζλεςθσ τθσ εφαρμογισ. Κάκε πακζτο αποςτολισ περιζχει πρόςκετθ πλθροφορία περίπου 15 bytes, πζρα από τα ωφζλιμα δεδομζνα. Για τθν αςφρματθ αποςτολι των μετριςεων καταναλϊνονται, όπου Χ ο αρικμόσ των πακζτων και Υ ο αρικμόσ των μετριςεων. Τα δεδομζνα πρζπει να περάςουν και από το UART οπότε χρειάηονται επιπλζον. Για τθν επιβεβαίωςθ τθσ αποςτολισ χρειάηονται, ενϊ υπάρχει και μια άγνωςτθ κατανάλωςθ αναμονισ επιβεβαίωςθσ, όπου Τ ο χρόνοσ αναμονισ που αναμζνεται να είναι τθσ τάξθσ μερικϊν msec. Θ χρονικι διάρκεια εκτζλεςθσ μιασ περιόδου είναι ςε ςυνκικεσ εκτζλεςθσ όπου δεν υπάρχει ςυναγωνιςμόσ 143

145 μεταξφ των εφαρμογϊν. Για κάκε αποςτολι πακζτου παραπάνω του πρϊτου προςτίκενται 200 ms. Ζςτω ότι ο χριςτθσ αιτείται 5 μετριςεισ ανά περίοδο, αποςτολι μετά από 14 περιόδουσ και περίοδο εκτζλεςθσ 30 δευτερολζπτων και ότι το baudrate του UART ζχει ρυκμιςτεί ςτα bps. Ο χρόνοσ αναμονισ επιβεβαίωςθσ κεωρείται 10 msec. Τότε θ κατανάλωςθ μετά από 14 περιόδουσ εκτζλεςθσ και 464 sec κα είναι περίπου 3.4 masec. Δεν ζχει υπολογιςτεί θ κατανάλωςθ του μικροελεγκτι που κα προςτεκεί ςτο τζλοσ τθσ ανάλυςθσ Κατανάλωςη τησ εφαρμογήσ υγραςίασ και θερμοκραςίασ Ο αιςκθτιρασ υγραςίασ και κερμοκραςίασ καταναλϊνει περίπου 10μΑ όταν είναι ενεργόσ. Δεν δίνεται καμιά επιπλζον πλθροφορία από τθν Sensirion. Μια πλιρθσ μζτρθςθ διαρκεί 4 sec και επιπλζον για τθν ζναρξθ των μετριςεων απαιτοφνται 30 sec. Ζνα γεμάτο πακζτο μετριςεων υγραςίασ περιλαμβάνει το μζγιςτο 6 μετριςεισ, μία για κάκε περίοδο εκτζλεςθσ τθσ εφαρμογισ. Κάκε πακζτο αποςτολισ περιζχει πρόςκετθ πλθροφορία περίπου 15 bytes, πζρα από τα ωφζλιμα δεδομζνα. Για τθν αςφρματθ αποςτολι των μετριςεων καταναλϊνονται, όπου Χ ο αρικμόσ των πακζτων και Υ ο αρικμόσ των μετριςεων. Τα δεδομζνα πρζπει να περάςουν και από το UART οπότε χρειάηονται επιπλζον. Για τθν επιβεβαίωςθ τθσ αποςτολισ χρειάηονται, ενϊ υπάρχει και μια άγνωςτθ κατανάλωςθ αναμονισ επιβεβαίωςθσ, όπου Τ ο χρόνοσ αναμονισ που αναμζνεται να είναι τθσ τάξθσ μερικϊν msec. Θ χρονικι διάρκεια εκτζλεςθσ μιασ εφαρμογισ είναι, όπου Ν ο αρικμόσ των μετριςεων ανά περίοδο. Για τθν αποςτολι κάκε επιπλζον πακζτου απαιτείται πρόςκετοσ χρόνοσ 200 msec. 144

146 Αν ο χριςτθσ αιτθκεί αποςτολι 6 μετριςεων, 10 μετριςεισ ανά περίοδο και περίοδο εκτζλεςθσ 1 λεπτό τότε θ κατανάλωςθ είναι (ο χρόνοσ αναμονισ προςεγγίηεται ςε 10 msec) 5.25 masec μετά από 6 περιόδουσ εκτζλεςθσ και 780 sec Κατανάλωςη τησ εφαρμογήσ φωτόσ περιβάλλοντοσ Ο αιςκθτιρασ TSL2550 καταναλϊνει 0.35 ma όταν είναι ενεργόσ και 10 μα ςε λειτουργία φπνωςθσ. Για κάκε κανάλι ςε κανονικι λειτουργία χρειάηεται ζνασ μζγιςτοσ χρόνοσ μετατροπισ 400 msec. Aν χρειάηεται, ακολουκεί αίτθςθ λιψθσ επόμενθσ μζτρθςθσ μετά από 50 msec. Για τθ λιψθ Ν μετριςεων από κάκε κανάλι ςε μια περίοδο καταναλϊνονται. Θ κατανάλωςθ τθσ αςφρματθσ αποςτολισ δεδομζνων είναι παρόμοια με τισ δφο προθγοφμενεσ εφαρμογζσ. Θ διαφορά είναι ότι κάκε πακζτο μπορεί να περιζχει το μζγιςτο 11 μετριςεισ των 7 bytes. Θ εκτζλεςθ μιασ περιόδου διαρκεί περίπου, ενϊ για αποςτολι μετριςεων επιπλζον του ενόσ πακζτου απαιτοφνται 200 msec για το κακζνα. Αν ο χριςτθσ επικυμεί λιψθ 5 μετριςεων ανά περίοδο, αποςτολι 11 μετριςεων και περίοδο 30 δευτερολζπτων, τότε καταναλϊνονται masec μετά από 11 περιόδουσ εκτζλεςθσ και sec Κατανάλωςη τησ εφαρμογήσ επιταχυνςιομζτρου Ο αιςκθτιρασ ADXL καταναλϊνει 0.48 ma, όταν είναι ενεργόσ ενϊ ο A/D μετατροπζασ άλλα 0.5 ma. Άρα θ κατανάλωςθ εξαρτάται από τισ παραμζτρουσ ςυχνότθτασ δειγματολθψίασ f s και δειγμάτων ανά κανάλι N και είναι ίςθ με H κατανάλωςθ αςφρματθσ αποςτολισ είναι παρόμοια με προθγουμζνωσ, μόνο που κάκε πακζτο περιζχει το μζγιςτο 20 μετριςεισ από κάκε κανάλι. Ο χρόνοσ εκτζλεςθσ μιασ περιόδου είναι 145

147 και για κάκε επιπλζον πακζτο προςτίκενται 600 msec. Θ εφαρμογι του επιταχυνςιομζτρου καταναλϊνει τθν πιο πολλι ενζργεια, διότι ςυνικωσ απαιτοφνται πολλά δείγματα ςε κάκε περίοδο. Αν για παράδειγμα ο χριςτθσ ηθτιςει ςυχνότθτα δειγματολθψίασ 100 Θz, αρικμό δειγμάτων ανά κανάλι και ανά περίοδο εκτζλεςθσ 512 και περίοδο 1 λεπτοφ τότε καταναλϊνονται masec ςε 10 περιόδουσ εκτζλεςθσ και sec Κατανάλωςη τησ εφαρμογήσ επικοινωνίασ Θ εφαρμογι επικοινωνίασ αποςτζλλει ζνα πακζτο αίτθςθσ δεδομζνων ςτον ςυντονιςτι δικτφου κάκε περίπου 7 sec. Θ εφαρμογι κα κοιμιςει το XΒee, αλλά και τον μικροελεγκτι, μόλισ λάβει το πακζτο απάντθςθσ από τον ςυντονιςτι δικτφου. Ο χρόνοσ λιψθσ τθσ απάντθςθσ ιςοφται με, όπου T 1 o χρόνοσ αναμονισ επιβεβαίωςθσ πρωτοκόλλου και T 2 ο χρόνοσ επεξεργαςίασ. Το άκροιςμα των δφο αυτϊν χρονικϊν διαςτθμάτων δεν μπορεί να είναι αρκετά μεγάλο οπότε μια μζςθ τιμι 20 ms είναι ικανοποιθτικι. Σε όλο αυτό το χρονικό διάςτθμα θ κατανάλωςθ είναι 45 ma για τθν αποςτολι και 50 ma για τθ λιψθ ι τθν αναμονι. Στθν εξίςωςθ υπολογιςμοφ του χρόνου τα 16 bytes αντιςτοιχοφν ςτο πακζτο αίτθςθσ δεδομζνων, ενϊ τα 17 ςτθν ςυνθκιςμζνθ αρνθτικι απάντθςθ του ςυντονιςτι δικτφου. Θ κατανάλωςθ για 10 περιόδουσ εκτζλεςθσ και 70 sec είναι masec Συνολική κατανάλωςη Στθ ςυνολικι κατανάλωςθ πρζπει να προςτεκεί θ κατανάλωςθ του μικροελεγκτι και του ΧΒee, όταν αυτό είναι ςε κατάςταςθ φπνωςθσ. Κεωρϊντασ με αςφάλεια ότι ςτο 95% τουλάχιςτον του χρόνου ο μικροελεγκτισ και το XBee κοιμοφνται τότε θ κατανάλωςθ του μικροελεγκτι προςεγγίηεται ςε 33 μα και του XBee ςε 95 μα. Άρα για μία ϊρα λειτουργίασ καταναλϊνονται 128 μαh. Θ εφαρμογι του αιςκθτιρα κερμοκραςίασ καταναλϊνει ςε μία ϊρα και βάςει των 146

148 αντίςτοιχων επιλογϊν του χριςτθ 7.32 μαh. Με τον ίδιο τρόπο θ εφαρμογι του αιςκθτιρα υγραςίασ και κερμοκραςίασ καταναλϊνει 6.73 μαh. Αντίςτοιχα θ εφαρμογι του αιςκθτιρα φωτόσ περιβάλλοντοσ κα καταναλϊςει ςε μία ϊρα μαh και θ εφαρμογι επιταχυνςιομζτρου 497 μαh. Τζλοσ θ εφαρμογι επικοινωνίασ καταναλϊνει μαh. Συνολικά ςε μία ϊρα καταναλϊνονται μαh και επομζνωσ για τθν εξάντλθςθ των τυπικϊν 5700 mah ηεφγουσ μπαταριϊν τφπου ΑΑ χρειάηονται περίπου 275 θμζρεσ. Ο παραπάνω χρόνοσ ηωισ μπορεί να αυξθκεί ακόμα παραπάνω, αφοφ είναι δυνατό να παραμετροποιθκεί και θ περίοδοσ τθσ εφαρμογισ επικοινωνίασ, ζτςι ϊςτε να αυξθκεί (ι ακόμθ και να τερματιςτεί θ εφαρμογι), μόλισ περάςουν όλεσ οι παράμετροι ςτουσ ζξυπνουσ αιςκθτιρεσ. Επίςθσ το ποςοςτό χρόνου φπνωςθσ είναι αρκετά μεγαλφτερο του 95%. Αν κεωρθκεί ότι ο χρόνοσ αναμονισ επιβεβαίωςθσ δεν είναι 10 ms, αλλά 100 ms και αντίςτοιχα ο χρόνοσ επεξεργαςίασ T 2 = 50 ms, τότε θ ςυνολικι κατανάλωςθ για τισ επιλογζσ χριςτθ που αναφζρκθκαν είναι 3591 μαh ςε μια ϊρα χριςθσ που αντιςτοιχεί ςε χρόνο ηωισ περίπου 66 θμερϊν. Τα 100 ms για αναμονι επιβεβαίωςθσ είναι πάρα πολλά, αφοφ θ επανεκπομπι του ορίηεται μετά από 200 ms. 147

149 Κεφάλαιο 11 Παραδείγματα χρήςησ του λογιςμικοφ ςτον κεντρικό υπολογιςτή Ο χριςτθσ αρχικά πρζπει να ρυκμίςει τον αρικμό τθσ εικονικισ ςειριακισ κφρασ που κα ςυνδεκεί για να επιτελεςτεί θ μεταφορά των αςφρματων δεδομζνων. Θ αρχικι εικόνα που παρατθρεί ο χριςτθσ διακρίνεται ςτθν εικόνα Εικόνα 11.1 Στο πάνω αριςτερά μζροσ διακρίνεται το menu, το οποίο περιλαμβάνει δφο επιλογζσ, μια επιλογι επικοινωνίασ (Communication) με τθν ςειριακι και μια επιλογι διαχείριςθσ των ζξυπνων αιςκθτιρων (Devices). O χριςτθσ επιλζγει Communication και ρυκμίηει τθ ςειριακι κφρα με τθν επιλογι Set Com Port (εικόνα 11.2). 148

150 Εικόνα 11.2 Θ ενζργεια αυτι ζχει αποτζλεςμα να εμφανιςτεί ςτο άνω δεξιό μζροσ τθσ οκόνθσ θ εικόνα 11.3 απ όπου ρυκμίηεται θ ςειριακι. Εικόνα 11.3 Στθ ςυνζχεια επιτυγχάνεται θ ςφνδεςθ και εμφανίηεται ςτθν οκόνθ ςχετικό μινυμα (εικόνεσ 11.4 και 11.5). Εικόνα

151 Εικόνα 11.5 Ο χριςτθσ ηθτά να μάκει τον αρικμό των ςυνδεδεμζνων ςυςκευϊν ςτο δίκτυο επιλζγοντασ από το menu, Devices και Number Of End Devices (εικόνα 11.5). Ο ςυντονιςτισ δικτφου απαντά και το αποτζλεςμα εμφανίηεται ςτθν οκόνθ (εικόνα 11.6). Ραράλλθλα ενεργοποιοφνται και οι επιλογζσ ρφκμιςθσ και ανάγνωςθσ τθσ κατάςταςθσ των ςυςκευϊν που ανακαλφφκθκαν προθγοφμενα (εικόνα 11.7). Εικόνα 11.6 Εικόνα 11.7 Ο χριςτθσ επιλζγει τθν ςυςκευι που ανακαλφφκθκε πρϊτθ μζςω τθσ επιλογισ Device 1 (εικόνα 11.7). Τότε εμφανίηονται ςτθν οκόνθ πλθροφορίεσ για τον πρϊτο ζξυπνο αιςκθτιρα (εικόνα 11.8). Οι πλθροφορίεσ αυτζσ είναι ο ςειριακόσ αρικμόσ (IEEE διεφκυνςθ

152 ψθφίων) και θ τρζχουςα κατάςταςθ του ζξυπνου αιςκθτιρα. Ο ζξυπνοσ αιςκθτιρασ 1 είναι ςε αναμονι (Waiting), αφοφ ακόμα δεν ζχουν περαςτεί παράμετροι για καμιά κατάςταςθ και δεν ζχει δοκεί εντολι εκκίνθςθσ ςε κάποια κατάςταςθ. Υπάρχουν εννζα πλικτρα. Τα τζςςερα πρϊτα (View Status) είναι για ανάγνωςθ ι αλλαγι των παραμζτρων μιασ κατάςταςθσ. Το λογιςμικό του κεντρικοφ υπολογιςτι υποςτθρίηει ςτθν παροφςα φάςθ τζςςερισ πικανζσ καταςτάςεισ για κάκε ζξυπνο αιςκθτιρα. Τα τζςςερα επόμενα είναι για εκκίνθςθ ςτθ ςυγκεκριμζνθ κατάςταςθ ενϊ το πλικτρο OK κα ςβιςει από τθν οκόνθ τθσ παραπάνω πλθροφορίεσ. Εικόνα 11.8 Επιλζγεται το πλικτρο ρφκμιςθσ και ανάγνωςθσ των παραμζτρων για τθν πρϊτθ κατάςταςθ του ζξυπνου αιςκθτιρα 1. Θ εικόνα 11.9 εμφανίηεται ςτθν οκόνθ. Διακρίνονται όλεσ οι παράμετροι όλων των αιςκθτιρων του ζξυπνου αιςκθτιρα. Ο ςυγκεκριμζνοσ ζξυπνοσ αιςκθτιρασ ζχει ενςωματωμζνα μόνο τα αιςκθτιρια κερμοκραςίασ και φωτόσ, οπότε κα ρυκμιςτοφν μόνο αυτά (εικόνα 11.10). 151

153 Εικόνα 11.9 Επιλζγεται ενεργοποίθςθ του αιςκθτιρα κερμοκραςίασ (Status=1), ανοχι ζγκυρθσ μζτρθςθσ ενόσ βακμοφ Κελςίου (Tolerance=1), τρεισ μετριςεισ ανά περίοδο εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα κερμοκραςίασ (Measurements Per Period=3), περίοδοσ 10 δευτερολζπτων (Period=1000 x 10 ms), αποςτολι δφο μετριςεων μζςων όρων κάκε φορά (Send Mode=2) και αποςτολι προειδοποίθςθσ για κάκε μζτρθςθ μεγαλφτερθ των 35 και μικρότερθ των 15 βακμϊν Κελςίου (Alarm Mode=1, High Limit=35 και Low Limit=15). Για τον αιςκθτιρα φωτόσ περιβάλλοντοσ επιλζγεται ενεργοποίθςθ (Status=1), ανοχι ζγκυρθσ μζτρθςθσ εκατό Lux 152

154 (Tolerance=100), δφο μετριςεισ ανά περίοδο εκτζλεςθσ τθσ εφαρμογισ του αιςκθτιρα φωτόσ (Measurements Per Period=2),περίοδοσ 10 &delt