Arduino


Για την πρώτη γνωριμία με το Arduino

 Το Arduino είναι ένας μικροελεγκτής μονής πλακέτας, δηλαδή μια απλή μητρική πλακέτα ανοικτού κώδικα με ενσωματωμένο μικροελεγκτή και εισόδους/εξόδους, η οποία μπορεί να προγραμματιστεί με τη γλώσσα Wiring (ουσιαστικά πρόκειται για τη γλώσσα προγραμματισμού C++ και ένα σύνολο από βιβλιοθήκες, υλοποιημένες επίσης στην C++ ). Το Arduino μπορεί να χρησιμοποιηθεί για την ανάπτυξη ανεξάρτητων διαδραστικών αντικειμένων αλλά και να συνδεθεί με υπολογιστή μέσω προγραμμάτων σε Processing, Max/MSP, Pure Data, SuperCollider. Οι περισσότερες εκδόσεις του Arduino μπορούν να αγοραστούν προ-συναρμολογημένες· το διάγραμμα και πληροφορίες για το υλικό είναι ελεύθερα διαθέσιμα για αυτούς που θέλουν να συναρμολογήσουν το Arduino μόνοι τους.
Το πρόγραμμα Arduino έλαβε τιμητική μνεία στην κατηγορία Digital Communities στο Prix Ars Electronica το 2006.

Ιστορικό


Η πλακέτα του Arduino UNO 3
Το 2005 ένα σχέδιο κίνησε προκειμένου να φτιαχτεί μία συσκευή για τον έλεγχο προγραμμάτων διαδραστικών σχεδίων από μαθητές, η οποία θα ήταν πιο φθηνή από άλλα πρωτότυπα συστήματα διαθέσιμα εκείνη την περίοδο. Οι ιδρυτές Massimo Banzi και David Cueartielles ονόμασαν το σχέδιο από τον Arduin της Ivrea[1] και ξεκίνησαν να παράγουν πλακέτες σε ένα μικρό εργοστάσιο στην Ιβρέα, κωμόπολη της επαρχίας Τορίνο στην περιοχή Πεδεμόντιο της βορειοδυτικής Ιταλίας - την ίδια περιοχή στην οποία στεγαζόταν η εταιρία υπολογιστών Olivetti[2].
Το σχέδιο Arduino είναι μία διακλάδωση της πλατφόρμας Wiring για λογισμικό ανοικτού κώδικα και προγραμματίζεται χρησιμοποιώντας μια γλώσσα βασισμένη στο Wiring (σύνταξη και βιβλιοθήκες), παρόμοια με την C++ με απλοποιήσεις και αλλαγές, καθώς και ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE).

Εκδόσεις

  • Τον Σεπτέμβριο του 2006 ανακοινώθηκε το Arduino Mini [3]
  • Τον Οκτώβρη του 2008 ανακοινώθηκε το Arduino Duemilanove. Αρχικά βασίστηκε στο Atmel Atmega168, αλλά μετά στάλθηκε με το ATmega328[3].
  • Τον Μάρτιο του 2009 ανακοινώθηκε το Arduino Mega. Είναι βασισμένο στο Atmel ATmega1280[3]
  • Από τον Μάιο του 2011 πάνω από 300.000 Arduino ήταν σε χρήση σε όλο τον κόσμο[4]
  • Τον Ιούλιο του 2012 ανακοινώθηκε το Arduino Leonardo. Είναι βασισμένο στο Atmel ATmega32u4[5]
  • Τον Οκτώβριο του 2012 ανακοινώθηκε το Arduino Due. Είναι βασισμένο στο Atmel SAM3X8E, που είχε πυρήνα ARM Cortex-M3[6]
  • Τον Νοέμβριο του 2012 ανακοινώθηκε το Arduino Micro. Είναι βασισμένο στο Atmel ATmega32u4[7]
  • Τον Μάιο του 2013 ανακοινώθηκε το Arduino Robot. Είναι βασισμένο στο Atmel ATmega32u4 και ήταν το πρώτο επίσημο Arduino με ρόδες[8]
  • Τον Μάιο του 2013 ανακοινώθηκε το Arduino Yun. Είναι βασισμένο στο ATmega32u4 και στο Atheros AR9331 και ήταν το πρώτο προϊόν wifi που συνδύαζε το Arduino με το Linux.

Πλατφόρμα

Υλικό (Hardware)


Η πλακέτα του Arduino Diecimila
Μία πλακέτα Arduino αποτελείται από ένα μικροελεγκτή Atmel AVR (ATmega328 και ATmega168 στις νεότερες εκδόσεις, ATmega8 στις παλαιότερες) και συμπληρωματικά εξαρτήματα για την διευκόλυνση του χρήστη στον προγραμματισμό και την ενσωμάτωσή του σε άλλα κυκλώματα. Όλες οι πλακέτες περιλαμβάνουν ένα γραμμικό ρυθμιστή τάσης 5V και έναν κρυσταλλικό ταλαντωτή 16MHz (ή κεραμικό αντηχητή σε κάποιες παραλλαγές). Ο μικροελεγκτής είναι από κατασκευής προγραμματισμένος με ένα bootloader, έτσι ώστε να μην χρειάζεται εξωτερικός προγραμματιστής.
Σε εννοιολογικό επίπεδο, στην χρήση του Arduino software stack, όλα τα boards προγραμματίζονται με μία RS-232 σειριακή σύνδεση, αλλά ο τρόπος που επιτυγχάνεται αυτό διαφέρει σε κάθε hardware εκδοχή. Οι σειριακές πλάκες Arduino περιέχουν ένα απλό level shifter κύκλωμα για να μετατρέπει μεταξύ σήματος επιπέδου RS-232 και TTL. Τα τωρινά Arduino προγραμματίζονται μέσω USB· αυτό καθίσταται δυνατό μέσω της εφαρμογής προσαρμοστικών chip USB-to-Serial όπως το FTDI FT232. Κάποιες παραλλαγές, όπως το Arduino mini και το ανεπίσημο Boarduino, χρησιμοποιούν ένα αφαιρούμενο USB-to-Serial καλώδιο ή board, Bluetooth ή άλλες μεθόδους. (Όταν χρησιμοποιείται με παραδοσιακά εργαλεία microcontroller αντί για το Arduino IDE, χρησιμοποιείται πρότυπος προγραμματισμός AVR ISP).
Ο πίνακας Arduino εκθέτει τα περισσότερα microcontroller I/O pins για χρήση από άλλα κυκλώματα. Τα Diecimila, Duemilanove και το τρέχον Uno παρέχουν 14 ψηφιακά I/O pins, έξι από τα οποία μπορούν να παράγουν pulse-width διαμορφωμένα σήματα, και έξι αναλογικά δεδομένα. Αυτά τα pins βρίσκονται στην κορυφή του πίνακα μέσω female headers 0.1 ιντσών (2,2mm). Διάφορες εφαρμογές ασπίδων plug-in είναι εμπορικώς διαθέσιμες.
Το Arduino nano και το Arduino-Compatible Bare Bones Board και Boarduino Board ενδέχεται να παρέχουν male header pins στο κάτω μέρος του board προκειμένου να συνδέονται σε Breadboards. Υπάρχουν πολλά boards συμβατά με και προερχόμενα από Arduino boards. Κάποια είναι λειτουργικά ισάξια με ένα Arduino και μπορεί να χρησιμοποιηθούν εναλλακτικά. Πολλοί είναι το βασικό Arduino με την προσθήκη καινοτόμων output drivers, συχνά για την χρήση σχολικής μόρφωσης για να απλοποιήσουν την κατασκευή buggies και μικρών robot. Άλλες είναι ηλεκτρικά ισάξιες αλλά αλλάζουν τον παράγοντα μορφής, επιτρέποντας κάποιες φορές την συνεχόμενη χρήση των Shields ενώ κάποιες όχι. Κάποιες παραλλαγές είναι τελείως διαφορετικοί επεξεργαστές, με ποικίλα επίπεδα συμβατότητας.

Επίσημες πλακέτες


Η πλακέτα του Arduino Lilypad
Το πρωτότυπο υλικολογισμικό του Arduino κατασκευάζεται από την Ιταλική εταιρία Smart Projects.[9] Κάποιες πλακέτες με την μάρκα του Arduino έχουν σχεδιαστεί απο την Αμερικάνικη εταιρία SparkFun Electronics.[10] Δεκαέξι εκδοχές του Arduino Hardware έχουν χρησιμοποιηθεί εμπορικά μέχρι τώρα:
  1. Το Serial Arduino, προγραμματισμένο με μία σειριακή DE-9 σύνδεση χρησιμοποιώντας τεχνολογία ATmega8.
  2. Το Arduino Extreme, με ένα USB interface για προγραμματισμό χρησιμοποιώντας τεχνολογία ATmega8.
  3. Το Arduino Mini, μία έκδοση μινιατούρας του Arduino χρησιμοποιώντας τεχνολογία surface-mounted ATmega168.
  4. Το Arduino Nano, ένα ακόμα πιο μικρό, USB τροφοδοτούμενη εκδοχή του Arduino χρησιμοποιώντας τεχνολογία surface-mounted ATmega168 (ATmega328 για την νεότερη έκδοση).
  5. Το LilyPad Arduino, ένα μινιμαλιστικό σχέδιο για εφαρμογές ένδυσης και E-textiles χρησιμοποιώντας τεχνολογία surface-mounted AT-mega328.
  6. Το Arduino NG, με ένα USB interface για προγραμματισμό και χρησιμοποιώντας τεχνολογία ATmega8.
  7. Το Arduino NG plus, με ένα USB interface για προγραμματισμό και χρησιμοποιώντας τεχνολογία ATmega168.
  8. Το Arduino Bluetooth, με Bluetooth interface για προγραμματισμό χρησιμοποιώντας τεχνολογία ATmega168.
  9. Το Arduino Diecimila, με ένα USB interface και χρησιμοποιεί τεχνολογία ATmega168 σε ένα DIP28 πακέτο.
  10. Το Arduino Duemilanove (“2009”), χρησιμοποιεί τεχνολογία ATmega168 (ATmega328 για την καινούργια έκδοση) και τροφοδοτείται μέσω ενέργειας USB/DC, αυτόματα εναλλασσόμενης.
  11. Το Arduino Mega, χρησιμοποιώντας τεχνολογία surface-mounted ATmega1280 για περαιτέρω I/O και μνήμη[11].
  12. Το Arduino Uno, χρησιμοποιώντας την ίδια τεχνολογία ATmega328 όπως το τελευταίο μοντέλο Duemilanove, αλλά ενώ το Duemilanove χρησιμοποιεί ένα FTDI chipset για το USB, το Uno χρησιμοποιεί τεχνολογία ATmega8U2 προγραμματισμένο ως σειριακός μετατροπέας.
  13. Το Arduino Mega2560, χρησιμοποιεί τεχνολογία surface-mounted ATmega2560 φέρνοντας την ολική μνήμη στα 256kB. Επίσης ενσωματώνει τη νέα τεχνολογία ATmega8U2 (ATmega16U2 σε αναθεώρηση τύπου 3) USB chipset.
  14. Το Arduino Leonardo, με ένα ATmega32U4 chip που εξαλείφει την ανάγκη για συνδεσιμότητα μέσω USB και μπορεί να χρησιμοποιηθεί ως ψηφιακό πληκτρολόγιο ή ποντίκι. Κυκλοφόρησε στο Maker Faire Bay Area το 2012.
  15. Το Arduino Esplora, με εμφάνιση που παραπέμπει σε χειριστήριο κονσόλας βιντεοπαιχνιδιών με joystick και ενσωματωμένους αισθητήρες για ήχο, φώς, θερμοκρασία και επιτάχυνση.
  16. Το Arduino Due είναι ένα μικροχειριστήριο board βασισμένο στην τεχνολογία Atmel SAM3X8E ARM Cortex-M3 CPU. Είναι το πρώτο board της Arduino βασισμένη σε επεξεργαστή 32-bit ARM microcontroller[12][6].

Shields

Τα Arduino και τα Arduino συμβατά boards χρησιμοποιούν την τεχνολογία των shields, τυπωμένων boards επεκτάσεων κυκλωμάτων που συνδέονται στα κανονικά παρεχόμενα Arduino pin-headers. Τα shields μπορούν να παρέχουν έλεγχο στα motors, GPS, Ethernet, LCD εικόνας ή breadboarding (προτυποποίησης). Ένας αριθμός από ασπίδες μπορεί επίσης να γίνει και DIY[13][14][15]

Λογισμικό


Στιγμιότυπο του λογισμικού του Arduino.
Το ολοκληρωμένο περιβάλλον ανάπτυξης (IDE) του Arduino είναι μία εφαρμογή γραμμένη σε Java, που λειτουργεί σε πολλές πλατφόρμες και προέρχεται από το IDE για τη γλώσσα προγραμματισμού Processing και το σχέδιο Wiring. Έχει σχεδιαστεί για να εισαγάγει τον προγραμματισμό στους καλλιτέχνες και τους νέους που δεν είναι εξοικειωμένοι με την ανάπτυξη λογισμικού. Περιλαμβάνει ένα πρόγραμμα επεξεργασίας κώδικα με χαρακτηριστικά όπως είναι η επισήμανση σύνταξης και ο συνδυασμός αγκύλων και είναι επίσης σε θέση να μεταγλωττίζει και να φορτώνει προγράμματα στην πλακέτα με ένα μόνο κλικ. Δεν υπάρχει συνήθως καμία ανάγκη να επεξεργαστείτε αρχεία make ή να τρέξετε προγράμματα σε ένα περιβάλλον γραμμής εντολών. Ένα πρόγραμμα ή κώδικας που γράφτηκε για Arduino ονομάζεται σκίτσο (sketch)[16].
Τα Arduino προγράμματα είναι γραμμένα σε C ή C++. Το Arduino IDE έρχεται με μια βιβλιοθήκη λογισμικού που ονομάζεται "Wiring", από το πρωτότυπο σχέδιο Wiring, γεγονός που καθιστά πολλές κοινές λειτουργίες εισόδου/εξόδου πολύ πιο εύκολες. Οι χρήστες πρέπει μόνο να ορίσουν δύο λειτουργίες για να κάνουν ένα πρόγραμμα κυκλικής εκτέλεσης:
-setup():μία συνάρτηση που τρέχει μία φορά στην αρχή του προγράμματος η οποία αρχικοποιεί τις ρυθμίσεις
-loop():μία συνάρτηση που καλείται συνέχεια μέχρι η πλακέτα να απενεργοποιηθεί
Ένα τυπικό πρώτο πρόγραμμα για έναν μικροελεγκτή αναβοσβήνει απλά ένα LED. Στο περιβάλλον του Arduino, ο χρήστης μπορεί να γράψει ένα πρόγραμμα σαν αυτό: [17]
#define LED_PIN 13
 
void setup () {
 pinMode (LED_PIN, OUTPUT); // enable pin 13 for digital output
}
 
void loop () {
 digitalWrite (LED_PIN, HIGH); // turn on the LED
 delay (1000); // wait one second (1000 milliseconds)
 digitalWrite (LED_PIN, LOW); // turn off the LED
 delay (1000); // wait one second
}
Είναι ένα χαρακτηριστικό των περισσότερων πλακετών Arduino ότι έχουν ένα LED και μία αντίσταση φορτίου που συνδέονται μεταξύ του pin 13 και του εδάφους, ένα βολικό χαρακτηριστικό για πολλά απλά τεστ. [17] Ο προηγούμενος κώδικας δεν θα αναγνωριστεί από ένα κανονικό μεταγλωττιστή C + + ως έγκυρο πρόγραμμα, έτσι ώστε όταν ο χρήστης κάνει κλικ στο κουμπί "Upload to I / O board" στο IDE, ένα αντίγραφο του κώδικα θα γραφτεί σε ένα προσωρινό αρχείο με ένα παραπάνω include στην κορυφή και μία πολύ απλή συνάρτηση main() στο τέλος, για να φτιάξει ένα έγκυρο C++ πρόγραμμα.
Το IDE του Arduino χρησιμοποιεί το GNU toolchain και το AVR Libc για να μεταγλωττίζει προγράμματα και το avrdude για να φορτώνει προγράμματα στην πλακέτα.
Δεδομένου ότι η πλατφόρμα Arduino χρησιμοποιεί Atmel μικροελεγκτές, το περιβάλλον ανάπτυξης της Atmel, το AVR Studio ή το νεότερη έκδοση του Atmel Studio, μπορεί επίσης να χρησιμοποιηθεί για την ανάπτυξη λογισμικού για το Arduino. [18] [19]

Ανάπτυξη

Η κύρια ομάδα ανάπτυξης του Arduino αποτελείται από τους: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis και Nicholas Zambetti. Ο Massimo Banzi έδωσε συνέντευξη στις 21 Μαρτίου του 2009 στο επεισόδιο 61 του FLOSS Weekly στο κανάλι TWiT.tv, στο οποίο συζήτησε την ιστορία και τους στόχους του προγράμματος Arduino. [20] Επίσης, έδωσε μια ομιλία στο TEDGlobal 2012 Conference , όπου περιέγραψε διάφορες χρήσεις των πλακετών Arduino σε όλο τον κόσμο. [21]
Το Arduino είναι υλισμικό ανοιχτού λογισμικού: τα σχέδια αναφοράς του υλισμικού του Arduino διανέμονται υπό την Creative Commons Attribution Share-Alike 2.5 άδεια και είναι διαθέσιμα στην ιστοσελίδα του Arduino. Ο σχεδιασμός και η παραγωγή αρχείων για κάποιες εκδόσεις του υλισμικού Arduino είναι επίσης διαθέσιμοι. Ο πηγαίος κώδικας για το IDE είναι διαθέσιμος και διανέμεται υπό την GNU General Public License, έκδοση 2.[22] Παρά το γεγονός ότι το υλισμικό και τα σχέδια του λογισμικού είναι διαθέσιμα ελεύθερα υπό άδειες πνευματικών δικαιωμάτων, οι προγραμματιστές έχουν ζητήσει η ονομασία "Arduino" είναι αποκλειστική για το επίσημο προϊόν και δεν πρέπει να χρησιμοποιείται για τις εργασίες χωρίς άδεια. Το επίσημο έγγραφο πολιτικής σχετικά με τη χρήση του ονόματος Arduino τονίζει ότι το πρόγραμμα είναι ανοιχτό στη συνεργασία με άλλους στο επίσημο προϊόν. [23] Αρκετά προϊόντα συμβατά με Arduino που κυκλοφορούν στο εμπόριο έχουν αποφύγει το όνομα “Arduino” χρησιμοποιώντας την κατάληξη “-duino” με παραλλαγές στο όνομα. [24]


ARDUINO
Το  εργαλείο του συγχρόνου εκπαιδευτικού
Σκοπός του σεμιναρίου είναι να αποκτήσουν οι συμμετέχοντες τις γνώσεις εκείνες που θα τους επιτρέψουν στη συνέχεια να σχεδιάζουν και να υλοποιούν τις δικές τους εφαρμογές με το Arduino.
Στα πλαίσια του σεμιναρίου θα γίνει αρχικά μία εισαγωγή στο Arduino και σε κάποια βασικά εργαλεία λογισμικού. Στη συνέχεια θα παρουσιαστούν διάφορα θέματα (κυκλωμάτων, ηλεκτρονικής, προγραμματισμού κ.α.) μέσα από μία σειρά εφαρμογών, οι οποίες θα υλοποιούνται ζωντανά τόσο από τον εισηγητή όσο και από τους συμμετέχοντες.
Ως μέρος του σεμιναρίου οι συμμετέχοντες θα κληθούν να υλοποιήσουν και στη συνέχεια να παρουσιάσουν τις δικές τους εφαρμογές.

Παρακάτω παρουσιάζεται η γενική δομή του σεμιναρίου καθώς και τα θέματα που θα παρουσιαστούν και θα συζητηθούν στα πλαίσια κάθε ενότητας.
  1. Εισαγωγή
Τι είναι το Arduino
Τι είναι οι μικροελεγκτές
Ιστορία του Arduino
Βασικά στοιχεία της πλατφόρμας Arduino
Πλεονεκτήματα
Εκδόσεις πλακετών Arduino
Παρουσίαση Arduino uno
Βασικά εργαλεία λογισμικού Fritzing Arduino IDE Ardublock
  1. Εφαρμογές
2.1 Έξοδοι
Εφαρμογή 1: Έλεγχος LED με το Arduino
Χρήση του breadboard
Βασική δομή προγράμματος
Λειτουργία και ρόλος βασικών συναρτήσεων προγράμματος
Χειρισμός ψηφιακών εξόδων Arduino
Εφαρμογή 2: LED με μεταβαλλόμενη φωτεινότητα
Η τεχνική PWM
Χειρισμός αναλογικών εξόδων Arduino
Προγραμματιστική δομή επανάληψης με την εντολή for
Εφαρμογή 3: Χειρισμός LED με το πληκτρολόγιο
Αμφίδρομη σειριακή επικοινωνία Arduino – Υπολογιστή
Εργαλείο serial monitor του Arduino IDE
Προγραμματιστική δομή επιλογής
2.2 Είσοδοι
Εφαρμογή 4: LED με κουμπί
Παρουσίαση pushbutton
Εναλλακτικές συνδεσμολογίες pushbutton
Χειρισμός ψηφιακών εισόδων Arduino
Εφαρμογή 5: Ρύθμιση έντασης LED με ποτενσιόμετρο
Συνδεσμολογίες και χρήσεις ποτενσιόμετρου
Χειρισμός αναλογικών εισόδων Arduino
Συνάρτηση αντιστοίχισης τιμών
Εφαρμογή 6: LED που αναβοσβήνει και δεύτερο LED με κουμπί
Διαχείριση χρόνου εκτέλεσης
Συνάρτηση millis()
Προγραμματιστική δομή επανάληψης με την εντολή while
Τι είναι οι διακοπές (interrupts)
Χειρισμός εξωτερικών διακοπών
2.3 Αισθητήρες – μοτέρ
Εφαρμογή 7: Αυτόματο φωτάκι νυκτός
Φωτοαντιστάσεις
Κατασκευή αισθητήρα φωτός
Ρύθμιση (callibration) αισθητήρων
Εφαρμογή 8: Ηλεκτρονικό θερμόμετρο
Αισθητήρας LM35
Σφάλμα ψηφιοποίησης – ακρίβεια μετρήσεων
Τάση αναφοράς αναλογικής εισόδου
Υπολογισμός θερμοκρασίας
Οθόνη LCD 16×2
Λειτουργία των pin και συνδεσμολογία της LCD 16×2
Εφαρμογή 9: Αισθητήρας παρκαρίσματος
Αισθητήρας απόστασης HC-SR04
Υπολογισμός απόστασης
Βιβλιοθήκες
Πίνακας (δομή δεδομένων)
Εφαρμογή 10: Μοτέρ με μεταβαλλόμενη ταχύτητα
Τύποι μοτέρ και χρήσεις
Χαρακτηριστικά μοτέρ dc
Τρανζίστορ
Δίοδος
Χειρισμός μοτέρ dc
Κυκλώματα οδήγησης μοτέρ
2.4 Απεικόνιση – Επεξεργασία μετρήσεων
Εφαρμογή 11: Απεικόνιση μετρήσεων
Αισθητήρας θερμοκρασίας – υγρασίας dht11
Η γλώσσα processing
Γραφική απεικόνιση δεδομένων σε πραγματικό χρόνο
Εφαρμογή 12: Καταγραφή μετρήσεων
Αποθήκευση μετρήσεων σε αρχείο
Επεξεργασία αποθηκευμένων μετρήσεων
  1. Το Arduino στην Εκπαίδευση
Χαρακτηριστικά – πλεονεκτήματα
Χρήσιμα εργαλεία λογισμικού (A4S, Codebender)
Παραδείγματα αξιοποίησης στη φυσική

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

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

Τι είναι η Τεχνητή Νοημοσύνη

Ο όρος τεχνητή νοημοσύνη αναφέρεται στον κλάδο της πληροφορικής ο οποίος ασχολείται με τη σχεδίαση και την υλοποίηση υπολογιστικών συστη...