Ένα ιστολόγιο για όσους αγαπούν τις ηλεκτρονικές κατασκευές...

Παρασκευή 29 Νοεμβρίου 2019

Arduino: Τα πρώτα βήματα


Το άρθρο απευθύνεται σε όσους θέλουν να ασχοληθούν με το arduino και δεν έχουν καμία προηγούμενη επαφή με τους μικροελεγκτές και το arduino. Θα δούμε τι είναι το arduino και πως θα σετάρουμε τον υπολογιστή μας για να μπορούμε να γράφουμε τα δικά μας προγράμματα και να τα μεταφέρουμε στο arduino. Θα προσπαθήσω να μην συμπεριλάβω πολύπλοκους όρους και όπως λέω πάντα "σε απλά Ελληνικά". Αν παρόλα αυτά έχετε απορίες μην διστάσετε να αφήσετε μήνυμα στα σχόλια παρακάτω.





Λίγα λόγια για τους μικροελεγκτές

Ένας μικροελεγκτής είναι ένα ολοκληρωμένο κύκλωμα που μοιάζει με μικρογραφία ενός υπολογιστή.  Ένας μικροελεγκτής διαθέτει τα λεγόμενα Ι/Ο (input/output).  Αυτά είναι ποδαράκια του chip που χρησιμοποιούνται για να επικοινωνεί ο μικροελεγκτής με το περιβάλλον. Το Arduino διαθέτει 20 τέτοια Ι/Ο. Στις εισόδους συνδέουμε εξαρτήματα που θέλουμε να δώσουν στοιχεία στον ελεγκτή δηλαδή τα διάφορα αισθητήρια. Στις εξόδους συνδέουμε εξαρτήματα που θέλουμε να να μας δώσουν ενδείξεις όπως Led οθόνες LCD, ή TFT, ή να χειριστούμε πράγματα όπως ρελέ, κινητήρες ή συνδυασμό ενδείξεων και χειρισμών.
Το πρόγραμμα που εισάγουμε στον μικροελεγκτή ουσιαστικά διαβάζει τα στοιχεία που του δίνουμε στις εισόδους εκτελεί συγκρίσεις ή υπολογισμούς και αποφασίζει πότε θα δώσει έξοδο, πάντα σύμφωνα με το πρόγραμμα που θα του δώσουμε.
Για παράδειγμα θέλουμε να κάνουμε ένα διακόπτη που να ανάβει το φως όταν νυχτώνει και να το σβήνει όταν ξημερώνει. Θα χρειαστεί να συνδέσουμε ένα αισθητήριο φωτισμού ( φωτοαντίσταση) σε μία αναλογική είσοδο και σε μία έξοδο ένα ρελέ. Στο πρόγραμμα που θα γράψουμε ο μικροελεγκτής θα συγκρίνει την τιμή της φωτοαντίστασης με μια σταθερή τιμή που θα έχουμε ορίσει και εφόσον είναι μεγαλύτερη ο μικροελεγκτής θα ανάβει μία λάμπα μέσω του ρελέ. Μπορούμε επίσης να συνδέσουμε ένα ποτενσιόμετρο σε μια δεύτερη είσοδο από το οποίο να ρυθμίζουμε το επίπεδο φωτισμού κατά το οποίο θα ανάβει η λάμπα. Σε αυτή την περίπτωση θα πρέπει το πρόγραμμα μας να συγκρίνει την τιμή που θα διαβάσει από την φωτοαντίσταση με την τιμή που θα διαβάσει από το ποτενσιόμετρο και ανάλογα με το αποτέλεσμα να ανάβει ή όχι η λάμπα. Φυσικά μια τόσο απλή λειτουργία μπορεί να γίνει με απλά αναλογικά κυκλώματα αρκετά εύκολα αλλά αυτό είναι ένα μικρό παράδειγμα του τι μπορεί να κάνει ο μικροελεγκτής. Το παραπάνω παράδειγμα θα μπορούσε να συνδυαστεί με ένα αισθητήρα PIR και να ανάβει την λάμπα μόνο όταν ανιχνεύει κίνηση και μόνο νύχτα ή να προστεθεί και ένα RTC (real time clock) και να λειτουργεί μόνο συγκεκριμένες μέρες και πολλά ακόμη που περιορίζονται μόνο από την φαντασία σας.
Υπάρχει πολύ μεγάλη γκάμα αισθητηρίων και συσκευών εξόδου που μπορεί να δεχτεί το arduino. Υπάρχουν επίσης διάφορα κιτ arduino που μαζί με την πλακέτα του arduino υπάρχει πληθώρα αισθητηρίων και εξαρτημάτων για πειράματα με το arduino.

Λίγα λόγια για το Arduino

Το Arduino είναι μια μικρή πλακέτα που κάνει πιο εύκολη την χρήση και τον προγραμματισμό του μικροελεγκτή. Ενσωματώνει όλα όσα χρειάζονται για να λειτουργεί ο μικροελεγκτής και να επικοινωνεί με τον υπολογιστή για να τον προγραμματίσουμε. 
Υπάρχει μια μεγάλη ποικιλία από πλακέτες παραλλαγές του Arduino οι οποίες ενσωματώνουν διαφορετικό επεξεργαστή ή έχουν διαφορετικό μέγεθος και δυνατότητες. Είναι φυσιολογικό αυτό λόγω της συνεχούς εξέλιξης που κάνει κάποιους επεξεργαστές πλέον ξεπερασμένους. Παρ' όλα αυτά πολλές φορές χρησιμοποιούμε και αυτούς τους παλιούς επεξεργαστές λόγω της πολύ φτηνής τιμής τους.
   

Τα βασικά μέρη του arduino.

Διακρίνουμε τον μικροελεγκτή ATmega328 ο οποίος στην συγκεκριμένη πλακέτα είναι σε θήκη DIL28 δηλαδή 28 πόδια σε δύο σειρές τοποθετημένος πάνω σε βάση. Αυτό δίνει το πλεονέκτημα να μπορούμε να αφαιρέσουμε τον μικροελεγκτή από την πλακέτα και να τον αντικαταστήσουμε αν π.χ. τον κάψουμε ή να γράψουμε τον bootloader σε ένα καινούριο chip ή να προγραμματίσουμε τον μικροελεγκτή και να τον μεταφέρουμε σε μια άλλη πλακέτα για να δουλέψει εκεί χωρίς την πλακέτα του arduino. Υπάρχει κλώνος του arduino που ενσωματώνει τον ίδιο μικροελεγκτή αλλά σε μορφή SMD δηλαδή επιφανειακής στήριξης κολλημένο πάνω στην πλακέτα. Το arduino είναι ακριβώς το ίδιο λειτουργικά αλλά χάνει τα παραπάνω πλεονεκτήματα.
Στην αριστερή πλευρά βλέπουμε την είσοδο τροφοδοσίας (7-12V) από όπου μπορούμε να τροφοδοτήσουμε την πλακέτα με μια 9V μπαταρία ή ένα τροφοδοτικό τοίχου. Επίσης υπάρχει μια θύρα USB που συνδέουμε την πλακέτα με τον υπολογιστή μας για τον προγραμματισμό.
Στο πάνω και στο κάτω μέρος βλέπουμε δύο θηλυκές πινοσειρές όπου μπορούμε να συνδέσουμε με ειδικά καλώδια ή και απλά μονόκλωνα σύρματα τα διάφορα εξαρτήματα που θέλουμε να συνδέσουμε στο arduino.

Ασπίδες.

(Shields) Με αυτό τον όρο ονόμασαν οι δημιουργοί του arduino τις διάφορες πλακέτες που κουμπώνουν πάνω στις πινοσειρές της πλακέτας και επεκτείνουν τις δυνατότητες του arduino. Παράδειγμα μπορούμε να προσθέσουμε μια ασπίδα ethernet και το arduino να επικοινωνήσει μέσω internet. Ή να βάλουμε μια ασπίδα με ρελέ ή με οθόνη 16χ4 και μερικά πλήκτρα. Υπάρχουν πολλές ασπίδες που μπορούν να επεκτείνουν τις δυνατότητες του arduino μας.
Συνήθως οι ασπίδες έρχονται με κατάλληλα πιν ώστε να κουμπώσουν στην πλακέτα του arduino και από την πάνω μεριά έχουν πάλι διαθέσιμες πινοσειρές ώστε να δεχτούν και νέα ασπίδα. Με αυτό τον τρόπο μπορούν να μπουν περισσότερες από μία ασπίδες επέκτασης στο arduino μας.
Αριστερά βλέπετε μια ασπίδα δικής μου κατασκευής η οποία προσφέρει επέκταση των Ι/Ο πιν κατά 16 εισόδους / εξόδους.
Μπορείτε να δείτε την κατασκευή εδώ

Σύνδεση με υπολογιστή.


Η σύνδεση με τον υπολογιστή γίνεται με ένα απλό καλώδιο USB (A->B) που συνήθως συνοδεύει το arduino. 
Το καλύτερο μέρος της υπόθεσης είναι ότι οι άνθρωποι που κατασκεύασαν το Arduino έγραψαν ένα περιβάλλον προγραμματισμού για PC μέσω του οποίου συντάσσουμε το πρόγραμμα μας στον κειμενογράφο - διορθωτή που διαθέτει και στη συνέχεια το ίδιο το περιβάλλον μετατρέπει το πρόγραμμα μας σε γλώσσα μηχανής και τον φορτώνει στον μικροελεγκτή, εφόσον πατήσουμε το κατάλληλο πλήκτρο.
Μπορείτε να το κατεβάσετε από εδώ 
Αφού κατεβάσετε και εγκαταστήσετε το πρόγραμμα στον υπολογιστή σας θα πρέπει να εγκαταστήσετε τους κατάλληλους drivers για να μπορεί ο υπολογιστής να αναγνωρίσει τις πλακέτες arduino. Οι πλακέτες κλώνοι του arduino από την Κίνα χρησιμοποιούν συνήθως το chip CH340. Τους drivers  για αυτό το chip μπορείτε να τους κατεβάσετε από εδώ.
Εάν έχετε κάποιο module  serial to USB με το FTDI μπορείτε να κατεβάσετε drivers από εδώ

Μετά τις εγκαταστάσεις του software και των drivers μπορούμε να ξεκινήσουμε την πρώτη μας εφαρμογή/δοκιμή.
Ανοίξτε το arduino IDE και συνδέστε την πλακέτα με το USB καλώδιο. Από το μενού της εφαρμογής - Εργαλεία επιλέξτε πλακέτα arduino και από τις πλακέτες που εμφανίζονται επιλέξτε arduino UNO ή όποια άλλη πλακέτα έχετε συνδέσει. Στην συνέχεια επιλέξτε Θύρα COM  και από τις θύρες που εμφανίζει επιλέξτε την θύρα που είναι συνδεδεμένη η πλακέτα, συνήθως ο υπολογιστής έχει αναγνωρίσει την θύρα οπότε απλά επιλέξτε την.
Εφόσον όλα έχουν πάει καλά στην δεξιά κάτω γωνία του προγράμματος arduino IDE εμφανίζεται ένα μήνυμα με την πλακέτα και την θύρα που είναι συνδεδεμένη.
Για να δοκιμάσετε την πλακέτα σας ανοίξτε από τα παραδείγματα το sketsh blink. Αυτό το sketsh κάνει χρήση του LED που είναι ενσωματωμένο πάνω στο arduino στο D13 οπότε για την δοκιμή δεν θα χρειαστεί καθόλου εξωτερικό κύκλωμα.
Πατήστε από τα πλήκτρα συντόμευσης το δεύτερο (βελάκι δεξιά) αφού πρώτα το πρόγραμμα κάνει έλεγχο το sketsh θα το μεταφράσει σε γλώσσα μηχανής (combilation) και στη συνέχεια θα το ανεβάσει στην πλακέτα.
Μετά το ανέβασμα προγράμματος το arduino κάνει αυτόματα reset και ξεκινάει να τρέχει το πρόγραμμα που μόλις ανέβηκε, οπότε θα δείτε το LED  να αναβοσβήνει.
Φυσικά το πρόγραμμα αυτό δεν κάνει κάτι το ιδιαίτερο για να απασχολήσει έναν μικροελεγκτή αλλά επιβεβαιώνει ότι η όλη διαδικασία λειτούργησε σωστά.

Τώρα πλέον είστε έτοιμοι να ανεβάσετε τα δικά σας προγράμματα στο arduino.


3 σχόλια:

  1. Ευχαριστούμε Μάρκο ήταν αρκετά κατατοπιστικά όλα αυτά για έναν αρχάριο. έχεις να προτείνεις κάτι (βιβλιοθήκη μάλλον απ' ότι κατάλαβα) για να γίνει ο Arduino μετρητής απόστασης με υπερήχους;

    ΑπάντησηΔιαγραφή
    Απαντήσεις
    1. Δεν έχω κάνει κάτι με το module υπερήχων, μπορείς να δεις εδώ έναν οδηγό χρήσης για το HC-SR04
      https://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/

      Διαγραφή
  2. Ευχαριστώ θα το ψάξω.

    ΑπάντησηΔιαγραφή

Count down timer - χρονικό αντίστροφης μέτρησης

Μια απλή κατασκευή χρονομέτρου με αντίστροφη μέτρηση. Μπορεί να μετρήσει μέχρι 100 λεπτά με βήμα του ενός δευτερολέπτου. Είναι ιδανικό για ...