Το παρόν άρθρο είναι μια εισαγωγή στον μικροελεγκτή (microcontroller) Arduino και καλύπτει τα παρακάτω θέματα:

  • Τί είναι το Arduino
  • Γιατί να επιλέξετε το Arduino
  • Aνάλυση της βασικής δομής του Hardware
  • Ανάλυση της βασικής δομής του Software

Τι είναι το Arduino

Το Arduino είναι ένας μικροελεγκτής, που αποτελείται κυρίως από ένα chip, κάποιες εισόδους και κάποιες εξόδους. Δίνει την δυνατότητα σε κάθε προγραμματιστή να μπορεί να αλληλεπιδράσει με το περιβάλλον. Αυτό σημαίνει οτι με ένα Arduino, ο προγραμματιστής είναι σε θέση να «διαβάσει» καταστάσεις του περιβάλλοντος π.χ. θερμοκρασία, υγρασία, φωτεινότητα κτλ αλλά και να «γράψει» στις προκαθορισμένες εξόδους, μέσω επενεργητών όπως π.χ. κίνηση μοτέρ, “άναμμα” LED, ενεργοποίηση ενός buzzer κ.τ.λ.

Εν συντομία λοιπόν, το Arduino μπορούμε να το δούμε σαν ένα σύστημα που δέχεται κάποιες εισόδους από το περιβάλλον, τις επεξεργάζεται και τέλος εκτελεί κάποια ενέργεια, ανάλογα με τα αποτελέσματα της παραπάνω επεξεργασίας.

arduino_idea

Υπάρχουν διάφορες πλακέτες Arduino ανάλογα με το εκάστοτε project πχ. Nano, Uno, Mega, Leonardo, Yun κ.τ.λ. Μπορείτε να βρείτε όλες τις διαθέσιμες πλακέτες στο official site. Η κάθε μια πλακέτα διαφέρει από την άλλη τόσο στο hardware όσο και στον τρόπο με τον οποίο την χειριζόμαστε. Το παρόν άρθρο βασίζεται στην πιο διαδεδομένη και βασική πλακέτα, το Arduino Uno.

Γιατί Arduino

Αν και η τιμή αγοράς, εξαρτάται από το μοντέλο που θα αγοράσετε, μπορείτε να βρείτε έναν κλώνο του με μόλις 3$ απο καταστήματα όπως το amazon.de η μέσω ebay.com. Η πιο φτηνή πλακέτα ειναι το Arduino nano. Το Arduino λοιπόν, είναι μια πολύ φτηνή λύση για διάφορα προβλήματα και αυτοματισμούς. Επιπλέον, είναι Opensource και αυτό σημαίνει ότι τόσο το hardware, δηλαδή το πως είναι δομημένη η πλακέτα με τα ηλεκτρονικά της αλλά και το software είναι ελεύθερα στο διαδίκτυο. Μπορεί ο καθένας να τα βρεί, να τα τροποποιήσει και να φτιάξει τον δικό του κλώνο. Η κοινότητα που τα υποστηρίζει ειναι τεράστια και μπορείτε να το επιβεβαιώσετε απο το forum. Ο προγραμματισμός του είναι εύκολος. Η γλώσσα προγραμματισμού λέγεται Wiring και είναι σχετικά εύκολη. Προσφέρει ελευθερία αλλά και δημιουργικότητα! Ωστόσο, οι δυνατότητες του είναι περιορισμένες όσο αναφορά την επεξεργαστική ισχύ. Αυτό σημαίνει πως το arduino είναι ένας μικροελεγκτής και όχι υπολογιστής. Έχει περιορισμένες ικανότητες και μνήμη. Έτσι δυστυχώς δεν μπορείτε να παίξετε κάποιο παιχνίδι με γραφικά αλλά σίγουρα μπορείτε να παίξετε κάποιο arcade παιχνίδι της δεκαετίας των 80s και 90s.

Συνοψίζοντας λοιπόν, το Arduino:

  • Έχει χαμηλό κόστος
  • Είναι εύκολο στην χρήση
  • Είναι Opensource (hardware και software)
  • Έχει περιορισμένες δυνατότητες λόγω σε CPU και μνήμη
  • Είναι μικροελεγκτής (δεν είναι Υπολογιστής)

Πού όμως μπορεί να χρησιμοποιηθεί το Arduino; Τι μπορούμε να φτιάξουμε και πόσο εύκολα; Με το arduino λοιπόν, μπορούμε να ελέγξουμε συσκευές που δουλεύουν με 5V άμεσα, αλλά και μέχρι 220V (όπως οι συσκευές στο σπίτι μας) έμεσα, μέσω κάποιον ειδικών εξαρτημάτων όπως ένας ρελές ή ένα shield. Η ιδέα είναι πως με το arduino ελέγχουμε έναν ρελέ και αυτό με την σειρά του ελέγχει κάποια συσκευή που λειτουργεί με 200V. Ένας ρελές είναι μια συσκευή όπως φαίνεται και παρακάτω με την οποία μπορούμε να συνδέσουμε ένα καλώδιο ρεύματος (το κόβουμε στην μέσα και συνδέουμε το καλώδιο στις 2 υποδοχές).

relay

Επιπλέον συνδέουμε στα θηλυκά pins με το arduino, στο οποιό αργότερα μπορούμε να δώσουμε ένα σήμα και να ανοίξουμε η να κλείσουμε το κύκλωμα ρεύματος. Με αυτόν τον τρόπο μπορούμε να κάνουμε μια συσκευή μας να λειτοργεί η όχι. Τι κερδίζουμε έτσι; Πλήρη έλεγχο του θερμοσίφωνα, της καφετιέρας, λάμπας, της πόρτας του γκαράζ και οι συσκευές δεν έχουν τέλος. Οτιδήποτε χρειάζεται ρεύμα μπορούμε να το συνδέσουμε με ένα arduino και αν λάβουμε υπόψην οτι το arduino συνδέεται και με το Internet μπορούμε να ελέγξουμε η να κάνουμε monitor το σπίτι μας απο οποιοδήποτε μέρος στον πλανήτη. Αυτή η ιδέα λέγεται IoT (Internet of things) και θα αναλυθεί και σε επόμενο άρθρο.

Ανάλυση του Hardware

Η δομή του hardware είναι ελεύθερη στο διαδίκτυο. Αυτό σημαίνει ότι, μπορείτε να βρείτε την αρχιτεκτονική του ολοκληρωμένου (schematic) εδώ. Η βασική UNO πλακέτα αποτελείται από  ένα USB interface για σύνδεση με τον υπολογιστή, δίνοντας έτσι την δυνατότητα να την προγραμματίσουμε.

arduino_usb

Εκτός από το USB interface, στην πλακέτα υπάρχει και ένα μαύρο jack (όπως φαίνεται στην παρακάτω εικόνα) το οποίο είναι η εξωτερική τροφοδοσία. Εκεί μπορούμε να συνδέσουμε έναν μετασχηματιστή (9V έως 12V) ή μια μπαταρία ανάλογης τάσης.

arduino_externalbattery

Αφού το Arduino μας έχει ρεύμα, το μόνο που μένει είναι τα pins. Υπάρχουν 2 ειδών pins, αναλογικά και ψηφιακά. Τα ψηφιακά pins μας επιτρέπουν να γράψουμε/διαβάσουμε δυο μόνο τιμές, το 0 και το 1. Υπάρχουν στο πλήθος 13 pins με το pin0(TX) και το pin1(RX) συνήθως να χρησιμοποιούνται για επικοινωνία με TX/RX δηλαδή με τηλεκατευθύνσεις η άλλες συσκευές επικοινωνίας. Η ~ σε κάποια απο αυτά δηλώνει PWM παλμό (δηλαδή χρήση των digital pins ως analog με παλμους). Περισότερα για PWM εδώ και εδώ.

arduino_digitalpins

Τα αναλογικά pins είναι σε πλήθος 6, αριθμημένα απο A0 σε Α5 και μας επιτρέπουν να διαβάσουμε/γράψουμε τιμές στο εύρος από 0 μέχρι 255. Ο λόγος που υπάρχουν και τα ψηφιακά και τα αναλογικά είναι γιατί κάποιες φορές χρειάζεται κάποιο ψηφιακό pin και κάποιες άλλες κάποιο αναλογικό. Για παράδειγμα, σε ένα LED υπάρχουν μόνο δυο καταστάσεις (ΟΝ και OFF) ενώ σε έναν αισθητήρα ήχου υπάρχουν διάφορες τιμές ανάλογα την ένταση του ήχου.

arduino_analogpins

Τέλος υπάρχουν και κάποια pins (όπως φαίνεται παρακάτω), που σχετίζονται με την γείωση (GND) και το  ρεύμα των 5V με το οποίο μπορεί το Arduino να τροφοδοτήσει διάφορους αισθητήρες ή άλλες εξωτερικές συσκευές.

arduino_powerpins

Ανάλυση του Software

Ο πιό εύκολος τρόπος για να γράψουμε και να φορτώσουμε τον κώδικα μας στο arduino είναι μέσω του arduino IDE. Είναι ένα πρόγραμμα που τρέχει σε Windows, Linux αλλά και Mac σχετικά ελαφρύ και εύχρηστο. Μπορείτε να το βρείτε δωρεάν εδώ. Αφού το κατεβάσετε στον υπολογιστή σας, θα δείτε οτι στο File έχει κάποια παραδείγματα απο τα οποία το πιο απλό χωρίς να χρειάζεται να έχετε τίποτα παραπάνω εκτός απο ένα Arduino είναι το «Blink» όπως θα δούμε και παρακάτω.

Ο κώδικας στο Arduino έχει αρκετές ομοιότητες με τον κώδικα σε C. Αποτελείται από 2 κυρίως συναρτήσεις, την setup() και την loop(). Φυσικά μπορείτε καθώς αναπτύσσετε το πρόγραμμά σας να χρησιμοποιήστε όσες συναρτήσεις και δομές θέλετε, να ορίσετε μεταβλητές καθώς και βιβλιοθήκες.

Η setup() συνάρτηση εκτελείται μια μόνο φορά στην αρχή και κάνει κάποιες αρχικοποιήσεις καθώς και ορίζει παραμέτρους για το σύστημά μας.

Η loop() συνάρτηση είναι στην ουσία μια while(true), δηλαδή μια συνάρτηση που εκτελείται συνεχώς μέχρι να τελειώσει η μπαταρία η να αποσυνδέσουμε το arduino από το ρεύμα.

Το παρακάτω παράδειγμα είναι ένα έτοιμο script που βρίσκεται στα προεγκατεστημένα παραδείγματα που έχει το Arduino IDE, το οποίο έχει το όνομα “Blink”. Μπορείτε να το βρείτε μέσα από το arduino IDE στο File>Examples>0.1Basics>Blink. Το sketch αναβοσβήνει ένα LED που βρίσκεται πάνω στο arduino (ενσωματωμένο με την πλακέτα). Αυτό το LED είναι συνδεδεμένο με το digital pin 13. Για κάθε pin πρέπει να ορίσουμε αν θα είναι είσοδος η έξοδος, αν θα γράφουμε η θα διαβάζουμε δηλαδή. Αυτό γίνεται με την εντολή

pinMode(<PinNumber>, <INPUT/OUTPUT>)

αν γράψουμε δηλαδή

void setup() {
    pinMode(13, OUTPUT);
}

αυτό σημαίνει πως στο digital pin 13 έχουμε κάποιον επενεργητή, ένα LED, ένα μοτέρ, ένα servo η κάτι παρόμοιο. Αν θέλουμε να διαβάσουμε μια τιμή από αισθητήρα ώστε να πάρουμε κάποιο ερέθισμα από το περιβάλλον το ορίζουμε ως INPUT.

void setup() {
    pinMode(13, INPUT);
}

Όσο αναφορά την loop() συνήθως υπάρχει πάντα ένα digitalWrite() η digitalRead() για να γράψουμε η να διαβάσουμε από κάποιο ψηφιακό pin.

Παρακάτω γράφουμε στο pin 13 την τιμή 1 (δηλαδή HIGH), μετά περιμένουμε 1 sec, γράφουμε την τιμή 0 (δηλαδή LOW) και τέλος περιμένουμε 1 sec.

void loop() {
    digitalWrite(13, HIGH);    // turn the LED on (HIGH is the voltage level)
    delay(1000);               // wait for a second
    digitalWrite(13, LOW);     // turn the LED off by making the voltage LOW
    delay(1000);               // wait for a second
}

για να εκτελέσετε ανοίξτε το Arduino IDE και φορτώσετε το παράδειγμα πηγαίνοντας στο File>Examples>0.1Basics>Blink. Έπειτα θα πρέπει να συνδέσετε το Arduino σας με το usb στον υπολογιστή και να επιλέξετε απο το μενου Tools>Board και Tools>Port. Στο board επιλέγουμε προφανώς αυτό που έχουμε πχ. Uno, Nano, Yun κτλ.

arduino-ide-board-installed

Στο Port σε Windows επιλέγουμε κάποιο COM και σε Linux κάποιο /dev. Αν όλα πάνε καλά και ο υπολογιστής το αναγνωρίσει θα τα βγάλει ως επιλογές αυτόματα.

board

Αφού έχουμε καθορίσει αυτες τις παραμέτρους μπορούμε να πατήσουμε το δεύτερο κουμπάκι που γράφει «Upload» και να φορτώσουμε τον κώδικα. Χρειάζεται περίπου 4 δευτερόλεπτα και έπειτα μπορούμε να δούμε το LED να αναβοσβήνει. Μόλις υλοποιήσατε το πρώτο σας project!

arduinoide

Καλως ήρθατε στον κόσμο του Arduino, ένα κόσμο γεμάτο διασκέδαση και δημιουργία. Stay tuned για το επόμενο άρθρο.

Εισαγωγη με το Arduino

2 σχόλια στο Εισαγωγη με το Arduino

Τα σχόλια είναι κλειστά.