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

Υπάρχει μια μεγάλη ποικιλία από πλακέτες παραλλαγές του Arduino οι οποίες ενσωματώνουν διαφορετικό επεξεργαστή ή έχουν διαφορετικό μέγεθος και δυνατότητες. Είναι φυσιολογικό αυτό λόγω της συνεχούς εξέλιξης που κάνει κάποιους επεξεργαστές πλέον ξεπερασμένους. Παρ' όλα αυτά πολλές φορές χρησιμοποιούμε και αυτούς τους παλιούς επεξεργαστές λόγω της πολύ φτηνής τιμής τους.
Στην αριστερή πλευρά βλέπουμε την είσοδο τροφοδοσίας (7-12V) από όπου μπορούμε να τροφοδοτήσουμε την πλακέτα με μια 9V μπαταρία ή ένα τροφοδοτικό τοίχου. Επίσης υπάρχει μια θύρα USB που συνδέουμε την πλακέτα με τον υπολογιστή μας για τον προγραμματισμό.
Στο πάνω και στο κάτω μέρος βλέπουμε δύο θηλυκές πινοσειρές όπου μπορούμε να συνδέσουμε με ειδικά καλώδια ή και απλά μονόκλωνα σύρματα τα διάφορα εξαρτήματα που θέλουμε να συνδέσουμε στο arduino.
Συνήθως οι ασπίδες έρχονται με κατάλληλα πιν ώστε να κουμπώσουν στην πλακέτα του arduino και από την πάνω μεριά έχουν πάλι διαθέσιμες πινοσειρές ώστε να δεχτούν και νέα ασπίδα. Με αυτό τον τρόπο μπορούν να μπουν περισσότερες από μία ασπίδες επέκτασης στο arduino μας.
Αριστερά βλέπετε μια ασπίδα δικής μου κατασκευής η οποία προσφέρει επέκταση των Ι/Ο πιν κατά 16 εισόδους / εξόδους.
Μπορείτε να δείτε την κατασκευή εδώ
Η σύνδεση με τον υπολογιστή γίνεται με ένα απλό καλώδιο USB (A->B) που συνήθως συνοδεύει το arduino.
Το καλύτερο μέρος της υπόθεσης είναι ότι οι άνθρωποι που κατασκεύασαν το Arduino έγραψαν ένα περιβάλλον προγραμματισμού για PC μέσω του οποίου συντάσσουμε το πρόγραμμα μας στον κειμενογράφο - διορθωτή που διαθέτει και στη συνέχεια το ίδιο το περιβάλλον μετατρέπει το πρόγραμμα μας σε γλώσσα μηχανής και τον φορτώνει στον μικροελεγκτή, εφόσον πατήσουμε το κατάλληλο πλήκτρο.
Μπορείτε να το κατεβάσετε από εδώ
Τα βασικά μέρη του arduino.
Διακρίνουμε τον μικροελεγκτή ATmega328 ο οποίος στην συγκεκριμένη πλακέτα είναι σε θήκη DIL28 δηλαδή 28 πόδια σε δύο σειρές τοποθετημένος πάνω σε βάση. Αυτό δίνει το πλεονέκτημα να μπορούμε να αφαιρέσουμε τον μικροελεγκτή από την πλακέτα και να τον αντικαταστήσουμε αν π.χ. τον κάψουμε ή να γράψουμε τον bootloader σε ένα καινούριο chip ή να προγραμματίσουμε τον μικροελεγκτή και να τον μεταφέρουμε σε μια άλλη πλακέτα για να δουλέψει εκεί χωρίς την πλακέτα του arduino. Υπάρχει κλώνος του arduino που ενσωματώνει τον ίδιο μικροελεγκτή αλλά σε μορφή SMD δηλαδή επιφανειακής στήριξης κολλημένο πάνω στην πλακέτα. Το arduino είναι ακριβώς το ίδιο λειτουργικά αλλά χάνει τα παραπάνω πλεονεκτήματα.Στην αριστερή πλευρά βλέπουμε την είσοδο τροφοδοσίας (7-12V) από όπου μπορούμε να τροφοδοτήσουμε την πλακέτα με μια 9V μπαταρία ή ένα τροφοδοτικό τοίχου. Επίσης υπάρχει μια θύρα USB που συνδέουμε την πλακέτα με τον υπολογιστή μας για τον προγραμματισμό.
Στο πάνω και στο κάτω μέρος βλέπουμε δύο θηλυκές πινοσειρές όπου μπορούμε να συνδέσουμε με ειδικά καλώδια ή και απλά μονόκλωνα σύρματα τα διάφορα εξαρτήματα που θέλουμε να συνδέσουμε στο arduino.
Ασπίδες.
(Shields) Με αυτό τον όρο ονόμασαν οι δημιουργοί του arduino τις διάφορες πλακέτες που κουμπώνουν πάνω στις πινοσειρές της πλακέτας και επεκτείνουν τις δυνατότητες του arduino. Παράδειγμα μπορούμε να προσθέσουμε μια ασπίδα ethernet και το arduino να επικοινωνήσει μέσω internet. Ή να βάλουμε μια ασπίδα με ρελέ ή με οθόνη 16χ4 και μερικά πλήκτρα. Υπάρχουν πολλές ασπίδες που μπορούν να επεκτείνουν τις δυνατότητες του arduino μας.Αριστερά βλέπετε μια ασπίδα δικής μου κατασκευής η οποία προσφέρει επέκταση των Ι/Ο πιν κατά 16 εισόδους / εξόδους.
Μπορείτε να δείτε την κατασκευή εδώ
Σύνδεση με υπολογιστή.
Το καλύτερο μέρος της υπόθεσης είναι ότι οι άνθρωποι που κατασκεύασαν το 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.
Μετά τις εγκαταστάσεις του software και των drivers μπορούμε να ξεκινήσουμε την πρώτη μας εφαρμογή/δοκιμή.
Ανοίξτε το arduino IDE και συνδέστε την πλακέτα με το USB καλώδιο. Από το μενού της εφαρμογής - Εργαλεία επιλέξτε πλακέτα arduino και από τις πλακέτες που εμφανίζονται επιλέξτε arduino UNO ή όποια άλλη πλακέτα έχετε συνδέσει. Στην συνέχεια επιλέξτε Θύρα COM και από τις θύρες που εμφανίζει επιλέξτε την θύρα που είναι συνδεδεμένη η πλακέτα, συνήθως ο υπολογιστής έχει αναγνωρίσει την θύρα οπότε απλά επιλέξτε την.
Εφόσον όλα έχουν πάει καλά στην δεξιά κάτω γωνία του προγράμματος arduino IDE εμφανίζεται ένα μήνυμα με την πλακέτα και την θύρα που είναι συνδεδεμένη.
Για να δοκιμάσετε την πλακέτα σας ανοίξτε από τα παραδείγματα το sketsh blink. Αυτό το sketsh κάνει χρήση του LED που είναι ενσωματωμένο πάνω στο arduino στο D13 οπότε για την δοκιμή δεν θα χρειαστεί καθόλου εξωτερικό κύκλωμα.
Πατήστε από τα πλήκτρα συντόμευσης το δεύτερο (βελάκι δεξιά) αφού πρώτα το πρόγραμμα κάνει έλεγχο το sketsh θα το μεταφράσει σε γλώσσα μηχανής (combilation) και στη συνέχεια θα το ανεβάσει στην πλακέτα.
Μετά το ανέβασμα προγράμματος το arduino κάνει αυτόματα reset και ξεκινάει να τρέχει το πρόγραμμα που μόλις ανέβηκε, οπότε θα δείτε το LED να αναβοσβήνει.
Φυσικά το πρόγραμμα αυτό δεν κάνει κάτι το ιδιαίτερο για να απασχολήσει έναν μικροελεγκτή αλλά επιβεβαιώνει ότι η όλη διαδικασία λειτούργησε σωστά.
Τώρα πλέον είστε έτοιμοι να ανεβάσετε τα δικά σας προγράμματα στο arduino.
Ευχαριστούμε Μάρκο ήταν αρκετά κατατοπιστικά όλα αυτά για έναν αρχάριο. έχεις να προτείνεις κάτι (βιβλιοθήκη μάλλον απ' ότι κατάλαβα) για να γίνει ο Arduino μετρητής απόστασης με υπερήχους;
ΑπάντησηΔιαγραφήΔεν έχω κάνει κάτι με το module υπερήχων, μπορείς να δεις εδώ έναν οδηγό χρήσης για το HC-SR04
Διαγραφήhttps://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/
Ευχαριστώ θα το ψάξω.
ΑπάντησηΔιαγραφήΜάρκο καλησπέρα. Έχω δύο ερωτήσεις. Η μία είναι πώς μπορεί να σβήσει ο μικροελεγκτης; Έχει ένα reset πάνω ή πλακέτα του Arduino από εκεί; Αν και το πάτησα δεν νομίζω να έσβησε κάτι. Και η δεύτερη ερώτηση κατέβασα έναν κώδικα από ένα Arduino oscilloscope προσπαθώ να τόν περάσω στο Arduino αλλά βγάζει μήνυμα σφάλματος ότι δεν είναι έγκυρη η βιβλιοθήκη. Τί γίνεται σε αυτή την περίπτωση; Ευχαριστώ.
ΑπάντησηΔιαγραφήΕρώτηση 1: Δεν χρειάζεται να σβήσεις το περιεχόμενο, μπορείς να γράψεις νέο πρόγραμμα πάνω από το παλιό. (το σβήσιμο γίνεται αυτόματα από το πρόγραμμα) Το reset πάνω στην πλακέτα του arduino κάνει αυτό που λέει, δηλαδή κάνει reset την ροή του προγράμματος. Ειναι ιδιαιτερα χρήσιμο όταν το πρόγραμμα ή ο μικροελεγκτής κολλήσουν.
ΔιαγραφήΕρώτηση 2: Σε αυτή την περίπτωση (μάλλον) δεν έχεις καθόλου την βιβλιοθήκη. Συνήθως όταν κάποιος δίνει κώδικα δίνει και τις βιβλιοθήκες, δηλαδή κάποιο σύνδεσμο όπου μπορείς να βρεις την βιβλιοθήκη. Αφού την κατεβασεις την κάνεις εγκατάσταση και μετά ανεβάζεις τον κώδικα. Επίσης σε κάποιες περιπτώσεις μπορεί να έχεις κάποια βιβλιοθήκη με το ίδιο όνομα από άλλο κατασκευαστή βιβλιοθήκης, ή να έχεις διπλή βιβλιοθήκη από άλλους κατασκευαστές οπότε γίνεται μπέρδεμα. Θέλει προσοχή με τις βιβλιοθήκες γιατί σε κάποιες περιπτώσεις είναι μπελάς.
Ευχαριστώ Μάρκο. Πράγματι εκ των υστέρων είδα αυτό με τις βιβλιοθήκες που είπες, τις εγκατέστησα και μπόρεσα να ανεβάσω τον κώδικα. Κάτι άλλο που θέλω να ρωτήσω (αν δεν γίνομαι κουραστικός) για την συγκεκριμένη εφαρμογή. Χρησιμοποιείται μια οθόνη ο.96 ίντσες 128χ64 Ι2c. Ποσό εύκολο είναι να αντικαταστήσω την οθόνη με μια μεγαλύτερη; π.χ. 1,5 ίντσες 128χ128.
ΔιαγραφήΓειά σου και πάλι, οι οθόνες γενικώς χαρακτηρίζονται από το driver chip που έχουν ενσωματωμένο επάνω τους. Αν η μεγαλύτερη οθόνη έχει διαφορετικό driver chip θα θέλει και διαφορετική βιβλιοθήκη και προφανώς αλλαγές και στο software. Αν έχει το ίδιο driver chip το πιο πιθανό είναι ότι θα παίζει σωστά αλλά θα δείχνει ότι έδειχνε και στην μικρότερη οθόνη αφήνοντας την υπόλοιπη περιοχή αρχησιμοποίητη. Για να δείξει σε όλη την περιοχή της οθόνης θα χρειαστεί και πάλι αλλαγές στο software.
ΔιαγραφήΕυχαριστώ Μάρκο.
ΑπάντησηΔιαγραφήΚαλημέρα Μάρκο, τι εξωτερικά εξαρτήματα χρειάζεται το 328 για να δουλέψει αυτόνομα εκτός πλακέτας; Υπάρχει κάποιο σχηματικό; Επίσης μπορούμε να βάλουμε κωδικό από uno σε nano;
ΑπάντησηΔιαγραφήΚαλημέρα, χρειάζεται μόνο τον κρύσταλλο 16ΜHz και τους δύο πυκνωτές 22n. Αναζήτησε στο google το "atmega328 pinout" για να δεις που αντιστοιχούν οι τάσεις και τα Ι/Ο στα πόδια του μικροελεγκτή.
ΔιαγραφήΝαι, μπορείς να βάλεις κώδικα από το UNO σε Nano. Δεν μπορείς το αντίθετο σε περίπτωση που χρησιμοποιούνται τα Α6,Α7 (αναλογικές είσοδοι) επειδή δεν υπάρχουν στο UNO. Μπορεί να δουλέψει και σε arduino Mega2560 αλλά πιθανόν να χρειάζονται αλλαγές (στον κώδικα και στο σχέδιο) γιατί τα πόδια δεν ταιριάζουν ακριβώς π.χ. η έξοδος I2C στο UNO και στο nano είναι Α4-Α5 ενώ στο Mega2560 είναι D20,D21.
Ευχαριστώ πολύ Μάρκο. Ήταν χρήσιμες οι πληροφορίες σου.
ΑπάντησηΔιαγραφή