SunSPOT
Από DistrSys
Πίνακας περιεχομένων |
Εισαγωγή στην πλατφόρμα SUNSPOT
Τα SUN SPOT (Small Programable Object Technology) είναι μικρές ασύρματες συσκευές με ενσωματωμένους αισθητήρες που λειτουργούν με μπαταρίες και είναι προγραμματιζόμενες σχεδόν εξολοκλήρου σε Java δίνοντας την δυνατότητα σε απλούς προγραμματιστές να αναπτύξουν εύκολα λογισμικό χωρίς να έχουν εξειδικευμένες γνώσεις σε embedded συστήματα. Επίσης περιλαμβάνει αρκετούς ενσωματωμένους αισθητήρες και την δυνατότητα να διασυνδεθεί με εξωτερικές συσκευές. Τα SUN SPOTs χρησιμοποιούν μια υλοποίηση της Java ME που λέγεται Squawk και υποστηρίζει CLDC 1.1 και MIDP 1.0. Τα SPOTs δεν έχουν κάποιο λειτουργικό σύστημα, αλλά τρέχει την Squawk VM απευθείας πάνω στον επεξεργαστή, και η VM παρέχει τις βασικότερες λειτουργίες ενός OS,Squawkεπίσης όλοι οι drivers των συσκευών είναι γραμμένοι σε Java. Το αναπτυξιακό σύστημα που δίνεται από την SUN είναι η έκδοση v3(Purple) και περιλαμβάνει δύο eSPOTS ένα basestation, ένα USB καλώδιο για την σύνδεση των SPOTs/basestation στο υπολογιστή και ένα cd με to sdk για την ανάπτυξη και εγκατάσταση εφαρμογών στα SPOTS.
Πιο συγκεκριμένα:
- eSPOT - Πρόκειται για την τωρινή έκδοση του SUN SPOT και αποτελείται από ένα κύριο board με μπαταρίες λιθίου, επεξεργαστή, μνήμη, 802.15.4 radio και σύνδεσμο για προσθήκη κάρτας επέκτασης. Στην συγκεκριμένη έκδοση τα SPOTs έχουν μια κάρτα επέκτασης το eDEMO με επιταχυνσιόμετρο, μετατροπέα ADC, ψηφιακές εισόδους/εξόδους(GPIO), 2 κουμπιά και 8 led.
- Basestation – Το basestation είναι μια συσκευή που περιέχει το κύριο board του eSPOT χωρίς μπαταρίες και κάρτα επέκτασης. Η τροφοδοσία παρέχεται από ένα USB καλώδιο που συνδέεται με ένα υπολογιστή. Το basestation χρησιμοποιείται για να επικοινωνούν εφαρμογές που τρέχουν σε ένα υπολογιστή με τα SPOTS.
Τεχνικές προδιαγραφές των SPOTs
Όπως προαναφέραμε η τωρινή διαμόρφωση των SPOTs όπως φαίνεται στην παρακάτω εικόνα περιλαμβάνει το Main Board (cpu/radio) και το eDEMO Board που περιέχει τους αισθητήρες. Σε αυτό το κεφάλαιο θα αναφέρουμε τα βασικά στοιχεία του hardware που χρησιμοποιούνται και μια συνοπτική περιγραφή των χαρακτηριστικών τους. Επίσης θα αναλύσουμε τα σημαντικά υποσυστήματα της πλατφόρμας και την λειτουργικότητα του Sensor Board.
Στοιχεία του SPOT Main Board
Επεξεργαστής
Πρόκειται για τον ARM920T ARM Thumb processor της ATMEL που περιέχεται σε ένα SOC (System On Chip) κύκλωμα το AT91RM9200. Σε κανονική λειτουργία καταναλώνει 44mW και η μέγιστη ταχύτητα του ρολογιού φτάνει τα 180MHz. To SOC ενσωματώνει 16Kbyte cache εντολών, και 64-way associative 16Kbyte cache δεδομένων. H MMU (ΑRMv4) έχει ένα TLB buffer 64 στοιχείων για δεδομένα και άλλον ένα TLB 64 στοιχείων για μετάφραση εντολών. Η πρόσβαση στην εξωτερική μνήμη(flash, pSRAM) γίνεται από το EBI δίαυλο, ο ελεγκτής του διαύλου είναι ρυθμισμένος ώστε να να εκκινεί το σύστημα(διαδικασία boot) από την flash όπου βρίσκεται η Squawk VM. Επίσης το SOC περιλαμβάνει μια μεγάλη συλλογή από interfaces για περιφερειακές συσκευές όπως θύρες USB host/devive , ethernet MAC, προγραμματιζόμενος ελεγκτής Ι/Ο (PIO), ελεγκτές SPI/USART/I2C/I2S, και 3 16-bit χρονιστές/μετρητές. Επιπλέον ενσωματώνεται και ένας DMA controller (PDC) για άμεσες και γρήγορες εγγραφές στην μνήμη και στους διαύλους USART/I2S/SPI. Λόγο του μικρού μεγέθους της συσκευής οι USB host και η μια USART θύρες δεν χρησιμοποιούνται όπως και τα TWI/I2S/Ethernet MAC interfaces. Επειδή όμως όλα τα σήματα υπάρχουν στο βύσμα του main board που το διασυνδέει με την κάρτα επέκτασης(eDEMO board), μπορούμε να χρησιμοποιήσουμε τα παραπάνω interfaces αν προσθέσουμε τις κατάλληλες φυσικές διασυνδέσεις και γράψουμε τους αντίστοιχους drivers.
Δίαυλοι επικοινωνίας του Main Board
Η επικοινωνία μεταξύ των SPOTs και workstation γίνεται κυρίως μέσω του διαύλου USB και για την διασύνδεση υπάρχει μια υποδοχή mini USB τύπου B. Η USB client συσκευή στα SPOTs είναι συμβατή με τα πρότυπα USB 1.1 και USB 2.0 και υποστηρίζει ACM modem για την σειριακή μετάδοση. Για την επικοινωνία ανάμεσα σε εσωτερικές συσκευές του main board και μεταξύ του main board και του eDEMO board(κάρτα επέκτασης/αισθητήρων) χρησιμοποιείται το SPI και το PIO. To SPI είναι ένας σειριακός δίαυλος για την επικοινωνία με τον ασύρματο πομποδέκτη IC CC2420, τον power controller και τον έλεγχο των LEDs του eDEMO board. To PIO interface ελέγχει το activity LED που βρίσκεται αριστερά της mini USB υποδοχής καθώς και τα σήματα ελέγχου και κατάστασης του ασύρματου πομποδέκτη, όπως για παράδειγμα ότι το κανάλι είναι ελεύθερο για μετάδοση ή ότι η RX ουρά είναι πλήρης. Τέλος μέσω του PIO μεταφέρονται τα σήματα ελέγχου του κυκλώματος που ρυθμίζει την τροφοδοσία ρεύματος στην USB θύρα.
Μνήμη
Η μνήμη στο Main Board είναι η Spansion S71PL032J40, και αποτελείται από 4Mbyte NOR flash και 512Kbyte pSRAM(pseudo-SRAM) που βρίσκονται στο ίδιο chip. Ο χρόνος πρόσβασης(access time) για την pSRAM είναι 70nsec και για την Flash 65nsec και έχουν 16- bit δίαυλο δεδομένων. Και οι δυο χρησιμοποιούν τροφοδοσία 3Volt και σε κανονικές συνθήκες λειτουργίας η κατανάλωση είναι 25ma για την pSRAM και 22ma για την Flash. Τα δεδομένα στην pSRAM διατηρούνται όσο το SPOT είναι συνδεδεμένο σε κάποια τροφοδοσία ή μπαταρία. Όταν στο SPOT είναι σε κατάσταση deep-sleep, που τα περισσότερα υποσυστήματα δεν τροφοδοτούνται για εξοικονόμηση ενέργειας η pSRAM καταναλώνει περίπου 8μA για την διατήρηση των δεδομένων της ενώ η flash απενεργοποιείται. Η flash είναι προγραμματισμένη ήδη από το εργοστάσιο και περιέχει τον bootloader, την Squawk VM, τις βασικές βιβλιοθήκες και μια προ εγκατεστημένη εφαρμογή (bounce demo).
Κύκλωμα τροφοδοσίας
Το SPOT μπορεί να λειτουργήσει χρησιμοποιώντας οποιοδήποτε συνδυασμό από της εξής πηγές: την επαναφορτιζόμενη μπαταρία, USB Host ,είτε εξωτερική τροφοδοσία. Το κύκλωμα τροφοδοσίας είναι υπεύθυνο για να φορτίζει την ενσωματωμένη μπαταρία, να ρυθμίζει το ρεύμα που παρέχεται στα υποσυστήματα του Main Board και του Sensor Board(eDEMO Board) είτε το SPOT βρίσκεται σε κανονική λειτουργία είτε σε deep-sleep. Το κύκλωμα αποτελείται από δύο τμήματα-κυκλώματα, κάθε ένα με διαφορετική λειτουργία LTC3455 και το TPS79730. Το LTC3455 έχει ενσωματωμένο, ένα κύκλωμα για την φόρτιση της μπαταρίας Li-ION ένα διαχειριστή ρεύματος για την USB και ένα διπλό σταθεροποιητή τάσης. Το LTC3455 διαχειρίζεται το ρεύμα που λαμβάνεται από την USB. Ανάλογα με τις απαιτήσεις της συσκευής, ο επεξεργαστής επιτρέπει την κατανάλωση περισσότερου ρεύματος από την USB. Το TPS79730 είναι ένας σταθεροποιητής τάσης και παρέχει μικρή ποσότητα ρεύματος στα 3Volt στην περίπτωση που το SPOT εισέλθει σε κατάσταση stand-by, επίσης παρέχει σταθερό ρεύμα στον Atmega88 και στην pSRAM και σε περίπτωση που η τάση πέσει κάτω από τα ασφαλή όρια λειτουργίας του επεξεργαστή τον απενεργοποιεί. Τα SPOT έχουν ειδικό firmware για εξοικονόμηση ενέργειας που μπορεί να θέσει την συσκευή σε τρεις καταστάσεις λειτουργίας:
- Run – Είναι η βασική κατάσταση στην οποία όλοι οι επεξεργαστές και το radio τροφοδοτούνται και λειτουργούν κανονικά. Η κατανάλωση σε αυτήν την κατάσταση φτάνει κυμαίνεται από 70mA ως 120mA, ενώ η κάρτα επέκτασης μπορεί να καταναλώνει μέχρι 400mA.
- Idle - Σε αυτή την κατάσταση το ρολόι του επεξεργαστή σταματάει και το radio απενεργοποιείται ενώ η κατανάλωση πέφτει στα 24mA.
- Deep-Sleep - Σχεδόν όλα τα κυκλώματα τροφοδοσίας απενεργοποιούνται εκτός από το κύκλωμα που δίνει ελάχιστο ρεύμα για την διατήρηση των δεδομένων της pSRAM. Η επαναφορά της συσκευής από την κατάσταση Deep-Sleep διαρκεί περίπου 2msec με 10msec.
Για να εισέλθει η συσκευή σε κατάσταση χαμηλής κατανάλωσης(Deep-Sleep) πρέπει το radio να είναι απενεργοποιημένο, να μην παρέχεται ρεύμα από εξωτερική συσκευή και να μην είναι ενεργοποιημένη η USB. Το SPOT εισέρχεται στις καταστάσεις Deep-Sleep και idle καλώντας κατάλληλες συναρτήσεις της βιβλιοθήκης. Επιπλέον μπορούσαμε να θέσουμε την συσκευή σε Deep-Sleep πατώντας το attention κουμπί για περισσότερα από 3 δευτερόλεπτα. Για να εξέλθει η συσκευή από Deep-Sleep πρέπει να χρησιμοποιήσουμε κάποιο εξωτερικό interrupt ή να πιέσουμε το attention κουμπί. H παρακάτω εικόνα δείχνει τις μεταβάσεις που μπορεί να γίνουν μεταξύ των διαφορετικών καταστάσεων λειτουργίας.
Ελεγκτής τροφοδοσίας
Πρόκειται για τον 8-bit μικροελεγκτή Atmega88 της Atmel. Έχει ενσωματωμένο firmware που είναι υπεύθυνο για την λειτουργία του 64-bit ρολογιού, την επαναφορά της συσκευής σε περίπτωση που δεχτεί εξωτερικό interrupt και την επαναφορά ή είσοδό σε Deep-Sleep όταν πιεστεί το attention κουμπί. Η επικοινωνία με τον επεξεργαστή γίνεται μέσω του SPI διαύλου, από τον οποίο μεταφέρονται εντολές και δεδομένα κατάστασης από και προς τον Atmega88. Επίσης ο ελεγκτής μετράει και παρακολουθεί το φορτίο της μπαταρίας και τις τάσεις της USB, της μπαταρίας, και των εσωτερικών υποσυστημάτων χρησιμοποιώντας ένα 10-bit ACD. Ακόμα ο Atmega88 ελέγχει το power LED και δηλώνει διαφορετικές καταστάσεις(προβληματικές ή όχι) του SPOT μέσω ενδείξεων αυτού του LED. Για παράδειγμα όταν ανιχνεύσει ότι η μπαταρία έχει σχεδόν αποφορτιστεί ο ελεγκτής θα θέσει το power LED μόνιμα κόκκινο. Όλες οι πιθανές ενδείξεις παρουσιάζονται στον παρακάτω πίνακα.
Μπαταρία
Η μπαταρία που χρησιμοποιείται στα SPOT είναι επαναφορτιζόμενη ιόντων λιθίου Li-ION στα 3.7V με χωρητικότητα 720mAH. Η μπαταρία ενσωματώνει κυκλώματα για την προστασία της από πλήρη αποφόρτιση, από υπερφόρτιση και από υψηλή τάση. Η φόρτιση μπορεί να γίνει είτε χρησιμοποιώντας ένα USB καλώδιο με βύσμα τύπου B είτε από οποιαδήποτε πηγή 5Volt (+/- 10%). Όταν δεν χρησιμοποιείται χάνει περίπου 2% της χωρητικότητας κάθε μήνα και σε περιπτώσεις υψηλής θερμοκρασίας ο ρυθμός αυτός αυξάνει. Τα κυκλώματα φόρτισης και διαχείρισης ρεύματος είναι ρυθμισμένα με ακρίβεια για να λειτουργούν με τον συγκεκριμένο τύπο μπαταρίας και για αυτό δεν πρέπει να αντικατασταθεί από άλλου τύπου.
Ασύρματος πομποδέκτης (wireless radio)
Τα SPOT για την ασύρματη μετάδοση δεδομένων ενσωματώνει τον ασύρματο πομποδέκτη CC2420. Το CC2420 συμμορφώνεται με το πρότυπο IEEE 802.15.4 και λειτουργεί σε συχνότητες από 2.4GHz ως 2.4835GHz(οι συχνότητες φαίνονται στο παρακάτω πίνακα), οι συχνότητες αυτές ανήκουν στην ISM ζώνη και εξαιρούνται αδειοδότησης στην Ελλάδα σύμφωνα με τον νόμο 399/3-4-2006. Το κύκλωμα CC2420 εκτός από τον πομποδέκτη περιέχει δυο 128byte FIFOs για τα TX και RX δεδομένα, δυνατότητα για μέτρηση RSSI (received signal strength indication) με ευαισθησία 100db και ρύθμιση ισχύς του πομπού από -24dBm ως 0dBm(οι τιμές φαίνονται στο παρακάτω πίνακα). Ο πρακτικός ρυθμός μετάδοσης δεδομένων φτάνει τα 250Kbit/s ενώ η ευαισθησία του δέκτη είναι -90dBm. Για τα σήματα ελέγχου και δεδομένων από και προς το CC2420 στο Main Board χρησιμοποιούνται PIO θύρες και ο δίαυλος SPI. Στις PIO θύρες συνδέονται τα σήματα ελέγχου όπως reset, power down, start of frame(SFD) και σήματα κατάστασης όπως FIFO και FIFOP που ενημερώνουν αν η ουρά δεδομένων είναι άδεια ή αν έχουν ληφθεί δεδομένα. Ο δίαυλος SPI χρησιμοποιείται για την μεταβίβαση δεδομένων προς το CC2420. Το κύκλωμα καταναλώνει 20mA όταν ο δέκτης λαμβάνει δεδομένα και 18mA κατά την διάρκεια μετάδοσης με ισχύ 0dBm.
Η κεραία του SPOT είναι τύπου inverted-F, τυπωμένη στην άνω επιφάνεια του PCB(Printed Circuit Board) του Main Board. Είναι σχεδιασμένη για να συντονίζεται στη συχνότητα 2450MHz με ωμική αντίσταση 115Ω. Λόγο της θέσης την κεραίας θα πρέπει να αποφεύγουμε την τοποθέτηση μεταλλικών αντικειμένων ή γραμμών τροφοδοσίας κοντά σε αυτήν. Σε εξωτερικό χώρο, κάτω από καλές καιρικές συνθήκες η εμβέλεια φτάνει τα 100m ενώ σε εσωτερικούς χώρους περιορίζεται στα 30m.
Στοιχεία του eDEMO Board
To eDEMO Board είναι η κάρτα επέκτασης(daughterboard) του eSPOT. Αυτή είναι ενσωματωμένη στα SPOT που υπάρχουν στο αναπτυξιακό της SUN και προσφέρει μια ποικιλία από αισθητήρες και I/O θύρες. Στο eSPOT Main Board μπορούν να συνδεθούν και διαφορετικές κάρτες επέκτασης και αυτή την στιγμή είναι υπό σχεδίαση αρκετές κάρτες με πιο προηγμένες δυνατότητες και πιο ευαίσθητα όργανα. Προϋπόθεση για την προθήκη μιας κάρτας επέκτασης στο eSPOT είναι να συνδέεται με τον Main Board μέσω ενός βύσματος Hirose DF17-30, να υποστηρίζει το SPΙ interface αφού μέσω αυτού του διαύλου γίνεται η επικοινωνία και να περιέχει μια SPI flash για την αποθήκευση πληροφορίας σχετικά με τις παραμέτρους λειτουργίας της. Στο παρακάτω σχήμα βλέπουμε την διασύνδεση του eDEMO με τα υπόλοιπα στοιχεία του SPOT.
Το eDEMO Board αποτελεί την πλατφόρμα αισθητήρων(sensor board) του SPOT και περιέχει επιταχυνσιόμετρο που μετράει την επιτάχυνση και στους 3 άξονες, αισθητήρα φωτός και οκτώ LEDs τριών χρωμάτων. Επίσης περιλαμβάνει 2 κουμπιά, έξι αναλογικές εισόδους, τέσσερις αναλογικές εισόδους υψηλής τάσης, και πέντε ψηφιακές γενικού σκοπού I/O θύρες. Για τον χειρισμό των παραπάνω στοιχείων η SUN έχει κατάλληλους drivers και βιβλιοθήκες με κλάσεις για τον χειρισμό τους. Για παράδειγμα αν θέλουμε να ελέγξουμε το πράσινο LED πρέπει να χρησιμοποιήσουμε την κλάση Iled της βιβλιοθήκης
Iled theLed = Spot.getInstance().getGreenLed();
και για τον χειρισμό του LED:
theLed.setOn(); theLed.setOff();
Περισσότερο αναλυτικά για τον προγραμματισμό των SPOTs θα αναφερθούμε στο επόμενο κεφάλαιο. Κλείνοντας την παρουσίαση του sensor board θα παραθέσουμε μερικά τεχνικά χαρακτηριστικά των υποσυστημάτων του:










