Ο Arduino είναι μια ανοιχτού
υλικού και κώδικα
πλατφόρμα ανάπτυξης ηλεκτρονικών πρωτοτύπων, βασισμένη σε
ευέλικτο και εύκολο στη χρήση υλικό και λογισμικό. Το υλικό του Arduino (μοντέλο Uno, στο οποίο θα αναφερόμαστε εν συνεχεία)
συναρμολογείται σε μια μικρή πλακέτα διαστάσεων 68mmx53mm.
Η πλακέτα του Arduino |
Στην καρδιά του συστήματος βρίσκεται ο οκτάμπιτος μικροελεγκτής ATmega328 της Atmel χρονισμένος στα 16MHz. Ο ATmega328 διαθέτει ενσωματωμένη μνήμη τριών τύπων:
Ο Atmega328 διαθέτει 14 ψηφιακές εισόδους/εξόδους. Λειτουργούν στα 5V και μπορούν να δώσουν ή να «αντλήσουν» μέχρι 40mA ρεύματος. Μπορούν για παράδειγμα ως έξοδοι να χρησιμοποιηθούν για να ανάψουν ή να σβήσουν ένα LED ή ως είσοδοι να καταγράψουν την κατάσταση ενός διακόπτη. Όλες οι ψηφιακές είσοδοι/έξοδοι έχουν εσωτερικές pull-up (πρόσδεσης στην τροφοδοσία) αντιστάσεις των 20-50 kΩ οι οποίες εξ ορισμού είναι απενεργοποιημένες. Μερικές από τις ψηφιακές εισόδους/εξόδους, έχουν και ειδικές χρήσεις:
Στην ίδια πλευρά της πλακέτας υπάρχει μια σειρά ακίδων σχετικών με την τροφοδοσία του συστήματος, ως εξής:
Στην πλακέτα του Arduino, περιλαμβάνονται επίσης:
Το λογισμικό που συνοδεύει την πλατφόρμα Arduino διακρίνεται σε:
1. Bootloader : Είναι ένα μικρού μεγέθους πρόγραμμα (0,5 kb στην περίπτωση του Arduino Uno) προεγκατεστημένο από τον κατασκευαστή στη μνήμη flash του μικροελεγκτή που εκτελείται κατά την τροφοδοσία ή την επανεκκίνηση του Arduino. Ο ρόλος του είναι να επιτρέπει τη μεταφόρτωση των προγραμμάτων μας στη μνήμη του Arduino από τον υπολογιστή μέσω του καλωδίου USB χωρίς να είναι απαραίτητη για το σκοπό αυτό η χρήση ειδικών συσκευών προγραμματισμού.
2. Ολοκληρωμένο περιβάλλον ανάπτυξης (Arduino IDE) : Είναι μια εφαρμογή που εκτελείται στον υπολογιστή στον οποίο μέσω της θύρας USB συνδέεται ο Arduino. Είναι γραμμένη σε Java και προέρχεται από το IDE της γλώσσας προγραμματισμού Processing. Η σχεδίασή του είναι μινιμαλιστική. Περιλαμβάνει ένα επεξεργαστή κειμένου για τη συγγραφή των προγραμμάτων (που στη γλώσσα του Arduino αποκαλούνται sketches) ενώ με τη χρήση εξωτερικών προγραμμάτων εκτελεί τη μεταγλώττιση του προγράμματος σε κώδικα κατανοητό από τον μικροελεγκτή, και μεταφορτώνει με ένα «κλικ» τον κώδικα στον Arduino. Περιλαμβάνει επίσης μια σειριακή κονσόλα μέσω της οποίας ο χρήστης μπορεί να αλληλεπιδρά με το σύστημα Arduino είτε στέλνοντας κατάλληλες εντολές είτε λαμβάνοντας δεδομένα. Παρότι ο έμπειρος προγραμματιστής μπορεί να το βρει αρκετά περιοριστικό, το ολοκληρωμένο περιβάλλον του Arduino παρέχει στον αρχάριο όλα όσα χρειάζεται για τη διαχείριση του Arduino από τον υπολογιστή.
3. Βιβλιοθήκες : Είναι αρχεία κώδικα γραμμένα σε C ή C++ που παρέχουν επιπλέον λειτουργικότητα στη διαχείριση του υλικού και των δεδομένων και βελτιώνουν την αναγνωσιμότητα του κώδικα. Η βιβλιοθήκη πυρήνα (core library) συμπυκνώνει χαμηλού επιπέδου πτυχές του προγραμματισμού του μικροελεγκτή (π.χ. διαχείριση καταχωρητών), επιτρέποντας στους χρήστες να επικεντρωθούν στο κάθε φορά ιδιαίτερο έργο τους και όχι στην χρονοβόρα και επίπονη διαδικασία εκμάθησης του προγραμματισμού σε χαμηλό επίπεδο. Η βιβλιοθήκη πυρήνα εξ ορισμού συμπεριλαμβάνεται σε οποιοδήποτε πρόγραμμά μας (χωρίς αυτό να απαιτεί κάποια ιδιαίτερη ενέργεια από εμάς). Λόγω της περιορισμένης μνήμης του μικροελεγκτή, μέρος του κώδικα έχει διαχωριστεί σε επιμέρους βιβλιοθήκες οι οποίες μπορεί κατά περίπτωση να συμπεριληφθούν όταν απαιτείται σε κάποιο πρόγραμμα. Μεταξύ αυτών περιλαμβάνονται:
Επιπλέον βιβλιοθήκες έχουν αναπτυχθεί από τα μέλη της κοινότητας των χρηστών του Arduino αυξάνοντας τόσο τη λειτουργικότητα όσο και την απόδοση της πλατφόρμας.
- 2kB στατικής μνήμης RAM στην οποία τα προγράμματα κατά την εκτέλεσή τους αποθηκεύουν μεταβλητές, πίνακες κ.λπ. Η μνήμη αυτή χάνει τα δεδομένα της όταν η παροχή ρεύματος σταματήσει ή αν γίνει επανεκκίνηση (reset) του συστήματος.
- 1kB μνήμης EEPROM στην οποία κατά την εκτέλεση των προγραμμάτων μπορούν να εγγραφούν/διαβαστούν δεδομένα byte προς byte. Η EEPROM δεν χάνει τα περιεχόμενά της με απώλεια τροφοδοσίας ή επανεκκίνηση του συστήματος.
- 32kB μνήμης Flash, από τα οποία τα 0,5kb χρησιμοποιούνται από τον bootloader του Arduino, το λογισμικό δηλ. εκείνο που είναι απαραίτητο για την εγκατάσταση των δικών μας προγραμμάτων στον μικροελεγκτή μέσω της θύρας USB, χωρίς να χρειάζεται εξωτερικός προγραμματιστής. Το υπόλοιπο της μνήμης Flash χρησιμοποιείται για την αποθήκευση αυτών ακριβώς των προγραμμάτων. Και η μνήμη Flash δε χάνει τα περιεχόμενά της με απώλεια τροφοδοσίας ή επανεκκίνηση.
Ο Atmega328 διαθέτει 14 ψηφιακές εισόδους/εξόδους. Λειτουργούν στα 5V και μπορούν να δώσουν ή να «αντλήσουν» μέχρι 40mA ρεύματος. Μπορούν για παράδειγμα ως έξοδοι να χρησιμοποιηθούν για να ανάψουν ή να σβήσουν ένα LED ή ως είσοδοι να καταγράψουν την κατάσταση ενός διακόπτη. Όλες οι ψηφιακές είσοδοι/έξοδοι έχουν εσωτερικές pull-up (πρόσδεσης στην τροφοδοσία) αντιστάσεις των 20-50 kΩ οι οποίες εξ ορισμού είναι απενεργοποιημένες. Μερικές από τις ψηφιακές εισόδους/εξόδους, έχουν και ειδικές χρήσεις:
- Οι είσοδοι 0 και 1 χρησιμοποιούνται για τη λήψη και μετάδοση σειριακών δεδομένων.
- Oι είσοδοι 3, 5, 6, 9, 10, 11 λειτουργούν ως «ψευδοαναλογικές» έξοδοι (PWM) των 8-bit.
- Οι είσοδοι 2 και 3 μπορούν να ρυθμιστούν ώστε να προκαλέσουν εξωτερική διακοπή (interrupt) του εκτελούμενου κώδικα στον μικροελεγκτή.
- Οι είσοδοι 10, 11, 12 και 13 υποστηρίζουν τη σειριακή επικοινωνία SPI.
Στην ίδια πλευρά της πλακέτας υπάρχει μια σειρά ακίδων σχετικών με την τροφοδοσία του συστήματος, ως εξής:
- Vin: Η τάση τροφοδοσίας του συστήματος όταν χρησιμοποιείται εξωτερική πηγή. Μπορεί να χρησιμοποιηθεί και ως είσοδος τροφοδοσίας του συστήματος.
- 5V: Έξοδος σταθεροποιημένης τάσης 5V. Χρησιμεύει για την τροφοδοσία συσκευών ή αισθητήρων που πρόκειται να συνδεθούν στον Arduino.
- 3.3V: Έξοδος σταθεροποιημένης τάσης 3.3V.
- GND: Γείωση.
- Reset: Ακίδα επανεκκίνησης. Το σύστημα επανεκκινεί όταν η ακίδα γειωθεί.
- IOREF: Παρέχει ένδειξη για την τάση αναφοράς με την οποία λειτουργεί ο μικροελεγκτής.
Στην πλακέτα του Arduino, περιλαμβάνονται επίσης:
- Τα κατάλληλα ηλεκτρονικά εξαρτήματα για την παροχή σταθερής τάσης τροφοδοσίας στο κύκλωμα.
- Ένας δεύτερος μικροελεγκτής (Atmega 16U2) με τον κρύσταλλο χρονισμού του, που κατάλληλα προγραμματισμένος λειτουργεί ως μετατροπέας σειριακού σε USB για την επικοινωνία του Arduino με ηλεκτρονικό υπολογιστή.
- Βύσμα USB για τη σύνδεση του Arduino με υπολογιστή.
- Βύσμα τύπου jack για την τροφοδοσία του Arduino από εξωτερική πηγή.
- Διακόπτης επανεκκίνησης (reset).
- 4 ενδεικτικά LED (Power, Tx, Rx και L συνδεδεμένο στην ψηφιακή έξοδο 13) καθώς και μικρός ακόμη αριθμός συνοδευτικών ηλεκτρονικών εξαρτημάτων.
Το λογισμικό που συνοδεύει την πλατφόρμα Arduino διακρίνεται σε:
1. Bootloader : Είναι ένα μικρού μεγέθους πρόγραμμα (0,5 kb στην περίπτωση του Arduino Uno) προεγκατεστημένο από τον κατασκευαστή στη μνήμη flash του μικροελεγκτή που εκτελείται κατά την τροφοδοσία ή την επανεκκίνηση του Arduino. Ο ρόλος του είναι να επιτρέπει τη μεταφόρτωση των προγραμμάτων μας στη μνήμη του Arduino από τον υπολογιστή μέσω του καλωδίου USB χωρίς να είναι απαραίτητη για το σκοπό αυτό η χρήση ειδικών συσκευών προγραμματισμού.
2. Ολοκληρωμένο περιβάλλον ανάπτυξης (Arduino IDE) : Είναι μια εφαρμογή που εκτελείται στον υπολογιστή στον οποίο μέσω της θύρας USB συνδέεται ο Arduino. Είναι γραμμένη σε Java και προέρχεται από το IDE της γλώσσας προγραμματισμού Processing. Η σχεδίασή του είναι μινιμαλιστική. Περιλαμβάνει ένα επεξεργαστή κειμένου για τη συγγραφή των προγραμμάτων (που στη γλώσσα του Arduino αποκαλούνται sketches) ενώ με τη χρήση εξωτερικών προγραμμάτων εκτελεί τη μεταγλώττιση του προγράμματος σε κώδικα κατανοητό από τον μικροελεγκτή, και μεταφορτώνει με ένα «κλικ» τον κώδικα στον Arduino. Περιλαμβάνει επίσης μια σειριακή κονσόλα μέσω της οποίας ο χρήστης μπορεί να αλληλεπιδρά με το σύστημα Arduino είτε στέλνοντας κατάλληλες εντολές είτε λαμβάνοντας δεδομένα. Παρότι ο έμπειρος προγραμματιστής μπορεί να το βρει αρκετά περιοριστικό, το ολοκληρωμένο περιβάλλον του Arduino παρέχει στον αρχάριο όλα όσα χρειάζεται για τη διαχείριση του Arduino από τον υπολογιστή.
3. Βιβλιοθήκες : Είναι αρχεία κώδικα γραμμένα σε C ή C++ που παρέχουν επιπλέον λειτουργικότητα στη διαχείριση του υλικού και των δεδομένων και βελτιώνουν την αναγνωσιμότητα του κώδικα. Η βιβλιοθήκη πυρήνα (core library) συμπυκνώνει χαμηλού επιπέδου πτυχές του προγραμματισμού του μικροελεγκτή (π.χ. διαχείριση καταχωρητών), επιτρέποντας στους χρήστες να επικεντρωθούν στο κάθε φορά ιδιαίτερο έργο τους και όχι στην χρονοβόρα και επίπονη διαδικασία εκμάθησης του προγραμματισμού σε χαμηλό επίπεδο. Η βιβλιοθήκη πυρήνα εξ ορισμού συμπεριλαμβάνεται σε οποιοδήποτε πρόγραμμά μας (χωρίς αυτό να απαιτεί κάποια ιδιαίτερη ενέργεια από εμάς). Λόγω της περιορισμένης μνήμης του μικροελεγκτή, μέρος του κώδικα έχει διαχωριστεί σε επιμέρους βιβλιοθήκες οι οποίες μπορεί κατά περίπτωση να συμπεριληφθούν όταν απαιτείται σε κάποιο πρόγραμμα. Μεταξύ αυτών περιλαμβάνονται:
- EEPROM – διαχείριση της μνήμης EEPROM του μικροελεγκτή
- Ethernet – Για σύνδεση στο διαδίκτυο μέσω του Ethernet Shield
- Firmata – Για την επικοινωνία με εφαρμογές στον υπολογιστή χρησιμοποιώντας το τυπικό σειριακό πρωτόκολλο.
- GSM – για τη σύνδεση σε ένα δίκτυο GSM/GRPS με το GSM shield.
- LiquidCrystal – για τον έλεγχο οθόνης υγρών κρυστάλλων (LCD).
- SD – διαχείριση καρτών μνήμης SD.
- Servo – για τον έλεγχο σερβοκινητήρων.
- SPI – για την επικοινωνία με συσκευές μέσω του Serial Peripheral Interface (SPI) Bus
- SoftwareSerial – για τη σειριακή επικοινωνία με χρήση οποιωνδήποτε ψηφιακών ακίδων.
- Stepper – για τον έλεγχο βηματικών κινητήρων.
- TFT – για τον έλεγχο οθόνης TFT.
- WiFi – Για ασύρματη σύνδεση στο διαδίκτυο μέσω του Arduino WiFi shield.
- Wire – για την επικοινωνία με συσκευές μέσω του Two Wire Interface (TWI/I2C).
Επιπλέον βιβλιοθήκες έχουν αναπτυχθεί από τα μέλη της κοινότητας των χρηστών του Arduino αυξάνοντας τόσο τη λειτουργικότητα όσο και την απόδοση της πλατφόρμας.
Σε συνδυασμό
με κατάλληλο πρόγραμμα
ελέγχου και απεικόνισης ο Arduino μπορεί να χρησιμεύσει ως το
απολύτως οικονομικό, αλλά ικανοποιητικών δυνατοτήτων εργαλείο συγχρονικής
λήψης (MBL) στο
εργαστήριο Φυσικών Επιστημών
των Γυμνασίων και Λυκείων.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου