Δευτέρα 9 Μαΐου 2016

Arduino - Βασικά χαρακτηριστικά

Ο Arduino είναι  μια  ανοιχτού  υλικού  και  κώδικα  πλατφόρμα  ανάπτυξης  ηλεκτρονικών πρωτοτύπων, βασισμένη σε ευέλικτο και εύκολο στη χρήση υλικό και λογισμικό. Το υλικό του Arduino (μοντέλο Uno, στο οποίο θα αναφερόμαστε εν συνεχεία) συναρμολογείται σε μια μικρή πλακέτα διαστάσεων 68mmx53mm.
Η πλακέτα του Arduino
Στην καρδιά του συστήματος βρίσκεται ο οκτάμπιτος μικροελεγκτής ATmega328 της Atmel χρονισμένος στα 16MHz. Ο ATmega328 διαθέτει ενσωματωμένη μνήμη τριών τύπων:
  1. 2kB στατικής μνήμης RAM στην οποία τα προγράμματα κατά την εκτέλεσή τους αποθηκεύουν μεταβλητές, πίνακες κ.λπ. Η μνήμη αυτή χάνει τα δεδομένα της όταν η παροχή ρεύματος σταματήσει ή αν γίνει επανεκκίνηση (reset) του συστήματος.
  2. 1kB μνήμης EEPROM στην οποία κατά την εκτέλεση των προγραμμάτων μπορούν να εγγραφούν/διαβαστούν δεδομένα byte προς byte. Η EEPROM δεν χάνει τα περιεχόμενά της με απώλεια τροφοδοσίας ή επανεκκίνηση του συστήματος.
  3. 32kB μνήμης Flash, από τα οποία τα 0,5kb χρησιμοποιούνται από τον bootloader του Arduino, το λογισμικό δηλ. εκείνο που είναι απαραίτητο για την εγκατάσταση των δικών μας προγραμμάτων στον μικροελεγκτή μέσω της θύρας USB, χωρίς να χρειάζεται εξωτερικός προγραμματιστής. Το υπόλοιπο της μνήμης Flash χρησιμοποιείται για την αποθήκευση αυτών ακριβώς των προγραμμάτων. Και η μνήμη Flash δε χάνει τα περιεχόμενά της με απώλεια τροφοδοσίας ή επανεκκίνηση.
Στο υλικό του μικροελεγκτή ATmega328 συμπεριλαμβάνονται και τρεις «χρονιστές»: timer0 και timer2 διακριτικής ικανότητας 8bit και ο timer1 των 16bit. Χρησιμεύουν είτε στην εισαγωγή καθυστέρησης κατά την εκτέλεση των εντολών κάποιου προγράμματος είτε στην εκτέλεση συγκεκριμένων εντολών σε καθορισμένες χρονικές στιγμές ή ανά τακτά χρονικά διαστήματα.
Ο 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.
Στην πλακέτα του Arduino οι 14 ψηφιακές είσοδου/έξοδοι καταλήγουν στις αντίστοιχες θηλυκές ακίδες σύνδεσης που καταλαμβάνουν τη μια πλευρά της πλακέτας. Στην άλλη πλευρά της πλακέτας στις ακίδες που σημαίνονται από Α0 – Α5 καταλήγουν οι 6 αναλογικές είσοδοι του Atmega328 οι οποίες μέσω πολυπλέκτη συνδέονται στον εντός του μικροελεγκτή ευρισκόμενο μετατροπέα αναλογικού σε ψηφιακό (ADC) που έχει διακριτική ικανότητα 10-bit δηλ. ψηφιοποιεί μια αναλογική τάση 0-5V σε 1024 διαφορετικές τιμές. Σχετική με τις αναλογικές εισόδους είναι η ακίδα AREF της πλακέτας μέσω της οποίας υπάρχει η δυνατότητας παροχής εξωτερικής τάσης αναφοράς για τη λειτουργία του αναλογικοψηφιακού μετατροπέα (ADC) του μικροελεγκτή. Μεγάλος αριθμός διαφορετικών αισθητήρων (π.χ. θερμοκρασίας, πίεσης, δύναμης, μαγνητικού πεδίου, φωτοπύλες κ.ά.) μπορεί να συνδεθεί στις εισόδους αυτές δίνοντάς μας τη δυνατότητα να πραγματοποιήσουμε μετρήσεις των αντίστοιχων φυσικών μεγεθών. Και οι έξι αναλογικές είσοδοι μπορούν να χρησιμοποιηθούν ως ψηφιακές είσοδοι/έξοδοι (ψηφιακές ακίδες 14 μέχρι 19), ενώ οι αναλογικές είσοδοι Α4 και Α5 με χρήση του κατάλληλου λογισμικού χρησιμοποιούνται για την υλοποίηση του δισύρματου σειριακού πρωτοκόλλου επικοινωνίας Ι2C.
Στην ίδια πλευρά της πλακέτας υπάρχει μια σειρά ακίδων σχετικών με την τροφοδοσία του συστήματος, ως εξής:
  • Vin: Η τάση τροφοδοσίας του συστήματος όταν χρησιμοποιείται εξωτερική πηγή. Μπορεί να χρησιμοποιηθεί και ως είσοδος τροφοδοσίας του συστήματος.
  • 5V: Έξοδος σταθεροποιημένης τάσης 5V. Χρησιμεύει για την τροφοδοσία συσκευών ή αισθητήρων που πρόκειται να συνδεθούν στον Arduino.
  • 3.3V: Έξοδος σταθεροποιημένης τάσης 3.3V.
  • GND: Γείωση.
  • Reset: Ακίδα επανεκκίνησης. Το σύστημα επανεκκινεί όταν η ακίδα γειωθεί.
  • IOREF: Παρέχει ένδειξη για την τάση αναφοράς με την οποία λειτουργεί ο μικροελεγκτής.
Η τροφοδοσία του Arduino μπορεί να γίνει είτε μέσω της θύρας USB είτε από εξωτερική τάση (7-12V). Η πηγή τροφοδοσίας επιλέγεται αυτόματα.
Στην πλακέτα του Arduino, περιλαμβάνονται επίσης:
  • Τα κατάλληλα ηλεκτρονικά εξαρτήματα για την παροχή σταθερής τάσης τροφοδοσίας στο κύκλωμα.
  • Ένας δεύτερος μικροελεγκτής (Atmega 16U2) με τον κρύσταλλο χρονισμού του, που κατάλληλα προγραμματισμένος λειτουργεί ως μετατροπέας σειριακού σε USB για την επικοινωνία του Arduino με ηλεκτρονικό υπολογιστή.
  • Βύσμα USB για τη σύνδεση του Arduino με υπολογιστή.
  • Βύσμα τύπου jack για την τροφοδοσία του Arduino από εξωτερική πηγή.
  • Διακόπτης επανεκκίνησης (reset).
  • 4 ενδεικτικά LED (Power, Tx, Rx και L συνδεδεμένο στην ψηφιακή έξοδο 13) καθώς και μικρός ακόμη αριθμός συνοδευτικών ηλεκτρονικών εξαρτημάτων.
Σε επίπεδο υλικού πρέπει να αναφέρουμε πως έχει αναπτυχθεί μεγάλος αριθμός πλακετών (shields) οι οποίες «κουμπώνουν» κατευθείαν πάνω στην πλακέτα του 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) συμπυκνώνει χαμηλού επιπέδου πτυχές του προγραμματισμού του μικροελεγκτή (π.χ. διαχείριση καταχωρητών), επιτρέποντας στους χρήστες να επικεντρωθούν στο κάθε φορά ιδιαίτερο έργο τους και όχι στην χρονοβόρα και επίπονη διαδικασία εκμάθησης του προγραμματισμού σε χαμηλό επίπεδο. Η βιβλιοθήκη πυρήνα  εξ ορισμού συμπεριλαμβάνεται σε οποιοδήποτε πρόγραμμά μας (χωρίς αυτό να απαιτεί κάποια ιδιαίτερη ενέργεια από εμάς). Λόγω της περιορισμένης μνήμης του μικροελεγκτή, μέρος του κώδικα έχει διαχωριστεί σε επιμέρους βιβλιοθήκες οι οποίες μπορεί κατά περίπτωση να συμπεριληφθούν όταν απαιτείται σε κάποιο πρόγραμμα. Μεταξύ αυτών περιλαμβάνονται:
  • 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).
Ιδιαίτερη προσπάθεια έχει γίνει ώστε οι βιβλιοθήκες πυρήνα να απλοποιούν τη διαδικασία συγγραφής του κώδικα χωρίς να περιορίζουν υπερβολικά την ευελιξία του χρήστη. Παρ’ όλα αυτά διαδικασίες όπως η ανάγνωση μιας ψηφιακής εισόδου ή εγγραφή μιας τιμής σε κάποια ψηφιακή έξοδο (digitalRead ή digitalWrite) ή η ψηφιακή μετατροπή και ανάγνωση της επιστρεφόμενης τιμής σε μια αναλογική είσοδο (analogRead)  -διαδικασίες βασικές για ένα σύστημα μετρήσεων- μπορούν να υλοποιηθούν ώστε να τρέχουν πολλές φορές γρηγορότερα.
Επιπλέον βιβλιοθήκες έχουν αναπτυχθεί από  τα μέλη της κοινότητας των χρηστών του Arduino αυξάνοντας τόσο τη λειτουργικότητα όσο και την απόδοση της πλατφόρμας.

Σε  συνδυασμό  με  κατάλληλο  πρόγραμμα  ελέγχου  και  απεικόνισης  ο Arduino μπορεί  να χρησιμεύσει  ως  το απολύτως οικονομικό, αλλά ικανοποιητικών δυνατοτήτων εργαλείο  συγχρονικής  λήψης  (MBL) στο  εργαστήριο  Φυσικών  Επιστημών  των Γυμνασίων και Λυκείων.

Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου