
Εκπαιδευτική Ρομποτική Με Τον Μικροελεγκτή Arduino.
Εκπαιδευτική Ρομποτική Με Τον Μικροελεγκτή Arduino.
Φανουράκη
Εκπαιδευτική Ρομποτική
με τον μικροελεγκτή Arduino.
ISBN : 978-618-00-1548-5
Nikolaos A. Fanourakis
1
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Εκπαιδευτική Ρομποτική
με τον μικροελεγκτή Arduino.
ISBN : 978-618-00-1548-5
2
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Όλες οι φωτογραφίες, εκτός από αυτές που αναφέρεται ρητά η πηγή, έχουν
τραβηχτεί από τον Νικόλαο Α. Φανουράκη.
Πρώτη ψηφιακή έκδοση: Οκτώβριος 2019, Ασήμι Ηρακλείου Κρήτης Τ.Κ. 70016.
3
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Ευχαριστίες
Θα ήθελα να εκφράσω τις θερμές ευχαριστίες μου προς: τον Τζωρτζάκη Ιωάννη,
Συντονιστή Εκπαιδευτικού Έργου ΠΕ81 (Πολιτικών Μηχανικών και Αρχιτεκτόνων),
για την τιμή που μου έκανε να προλογίσει το βιβλίο και για τις χρήσιμες επισημάνσεις
του, τον Χανιωτάκη Ευάγγελο (Ηλεκτρολόγο Μηχ. [Link].) για τις εύστοχες
παρατηρήσεις του, το Δασκαλάκη Ιωάννη (Ηλεκτρολόγο Μηχανικό και Τεχν.
Υπολογιστών) για την ανατροφοδότηση του πριν την έκδοση, τη Δωράκη Χρυσάνθη
(Φιλόλογο M.A.) για την επιμέλεια των κειμένων του βιβλίου και ιδιαιτέρως την
οικογένεια μου για την υπομονή και την αμέριστη συμπαράστασή της σε όλες μου τις
πρωτοβουλίες.
4
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας Περιεχομένων
Πρόλογος.................................................................................................................................. 7
Εισαγωγή.................................................................................................................................. 8
Κεφάλαιο 1 ............................................................................................................................ 10
5
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Παράρτημα ............................................................................................................................ 88
1. Ηχοδιακόπτης ................................................................................................................ 88
2. Φασαριόμετρο ................................................................................................................ 90
6
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πρόλογος
Μια έρευνα στα σύγχρονα εκπαιδευτικά συστήματα, εύκολα αποκαλύπτει κοινά
σημεία που σχετίζονται κυρίως με τις μαθητοκεντρικές προσεγγίσεις στη διδασκαλία
και την προσπάθεια η μάθηση να έχει νόημα για τους μαθητές και συνάφεια με
πρακτικά ζητήματα της ζωής. Η εισαγωγή των ερευνητικών εργασιών και άλλων
συναφών αντικειμένων που αξιοποιούν τη διερευνητική μάθηση, την επίλυση
προβλημάτων και τη μέθοδο project, ήταν ένα πολύ θετικό βήμα του ελληνικού
εκπαιδευτικού συστήματος προς αυτή την κατεύθυνση. Παράλληλα, πρωτοπόροι
εκπαιδευτικοί, με δική τους πρωτοβουλία και κάποιες φορές, επεκτείνοντας τα όρια
των αναλυτικών προγραμμάτων και των σχολικών βιβλίων, προχωρούν περισσότερο,
εισάγοντας μοντέλα όπως αυτό του STEAM και αντικείμενα που κάποτε αποτελούσαν
αρμοδιότητα λίγων εξειδικευμένων «μυστών».
Ένας τέτοιος εκπαιδευτικός είναι ο Νίκος Φανουράκης, με τον οποίο είχα την τύχη να
συνεργαστώ, ως παιδαγωγικά υπεύθυνος στο ΕΚ Ηρακλείου, όπου διδάσκει και
καινοτομεί. Το βιβλίο αυτό, πετυχαίνει κάτι πολύ σημαντικό με απλό τρόπο,
καταφέρνει να δείξει όλα τα βήματα για τη δημιουργία προχωρημένων ηλεκτρονικών
κατασκευών, αξιοποιώντας το δημοφιλέστατο Arduino, χωρίς να απευθύνεται σε
προχωρημένους μαθητές και χωρίς να χρειάζεται να το εφαρμόσουν εκπαιδευτικοί
ειδικοτήτων πληροφορικής ή ηλεκτρονικών. Αυτό το πετυχαίνει έχοντας ουσιαστικά
καλύψει όλες τις πιθανές ερωτήσεις που θα μπορούσε ένας αρχάριος να θέσει, από το
«που θα τα βρω αυτά» και «πώς θα τα συναρμολογήσω», μέχρι το «πώς θα γράψω τον
κώδικα». Επιπλέον, όχι μόνο δίνει έτοιμο τον κώδικα για εγκατάσταση, αλλά επεξηγεί
και τα επιμέρους σημεία του, επιτρέποντας έτσι να ασχοληθούν δημιουργικά από τους
πλέον αρχάριους έως τους πιο προχωρημένους μαθητές.
Γιάννης Τζωρτζάκης
7
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Εισαγωγή
Το εγχειρίδιο αυτό απευθύνεται σε μαθητές και εκπαιδευτικούς όλων των βαθμίδων
αλλά και σε αρχάριους, χομπίστες, λάτρεις των ηλεκτρικών – ηλεκτρονικών
κατασκευών. Η ελληνική βιβλιογραφία στο συγκεκριμένο αντικείμενο της
Εκπαιδευτικής Ρομποτικής (ιδιαίτερα αναφορικά με τον μικροελεγκτή Arduino) είναι
ιδιαίτερα ελλιπής οπότε ο εμπλουτισμός της κρίνεται απαραίτητος. Δεν έχει σκοπό να
εισάγει τον αναγνώστη στον Προγραμματισμό ή στη Βασική Ηλεκτροτεχνία, καθώς
υπάρχουν αρκετά και αξιόλογα εγχειρίδια γι’ αυτό το σκοπό, αλλά φιλοδοξεί να δώσει
τη δυνατότητα στον κάθε ενδιαφερόμενο να νιώσει την ικανοποίηση της ολοκλήρωσης
και της λειτουργίας μιας κατασκευής.
Το βιβλίο αποτελείται από δυο κεφάλαια και ένα παράρτημα. Στο πρώτο κεφάλαιο
καταγράφονται όλα τα υλικά που χρησιμοποιήθηκαν, όπως το Arduino Uno, διάφορα
περιφερειακά εξαρτήματα, αγωγοί κ.α. Παρουσιάζονται η λειτουργία, η
συνδεσμολογία, τα τεχνικά τους χαρακτηριστικά καθώς και οι φωτογραφίες των
πραγματικών υλικών. Επίσης, για κάθε υλικό υπάρχει ένας πίνακας με το ενδεικτικό
κόστος αγοράς του από ένα ελληνικό κατάστημα (τιμή αγοράς με τους φόρους) και
συγκριτικά το κόστος αγοράς από διαδικτυακά καταστήματα του εξωτερικού (τιμή
αγοράς με τους φόρους και τα μεταφορικά).
8
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Οι κατασκευές αυτές πρέπει να υλοποιούνται πάντα υπό την επίβλεψη του υπεύθυνου
εκπαιδευτικού και να τηρούνται όλα τα απαραίτητα μέτρα ασφαλείας. Η παρουσίαση
των κατασκευών έγινε με τη λογική του ΄΄πρωτοτύπου΄΄ και στην περίπτωση που θα
ήθελε κάποιος αναγνώστης να προχωρήσει σε μόνιμες ολοκληρωμένες κατασκευές,
απαιτούνται θήκες, διακόπτες, ασφάλειες, ασφαλειοθήκες κτλ. τα οποία είναι εύκολο
να προμηθευτεί μαζί με τα υπόλοιπα υλικά.
9
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Κεφάλαιο 1
Η υλοποίηση των κατασκευών έγινε με όσο το δυνατόν πιο απλά υλικά, τα οποία
μπορεί εύκολα να βρει ο κάθε ενδιαφερόμενος σε οποιοδήποτε κατάστημα
ηλεκτρολογικού – ηλεκτρονικού υλικού ή σε κάποιο διαδικτυακό κατάστημα της
Ελλάδας (τα οποία πλέον είναι αρκετά με ανταγωνιστικές τιμές και ικανοποιητικές
διαθεσιμότητες) ή ακόμα και του εξωτερικού. Οι κατασκευές έχουν ως σκοπό την
επίδειξη της συνδεσμολογίας του ηλεκτρικού κυκλώματος και της λειτουργίας τους και
όχι την παρουσίαση ενός άρτιου οπτικά και λειτουργικά αποτελέσματος (π.χ. δε
χρησιμοποιούνται κουτιά και διακόπτες on-off, τα οποία όμως μπορούν να
προστεθούν εύκολα εκ των υστέρων). Έτσι τα υλικά των κατασκευών είναι κατά
κανόνα τα φθηνότερα στην κατηγορία τους, χωρίς θήκες, βάσεις, τροφοδοτικά και
περιττά εξαρτήματα, πράγμα που τα καθιστά πολύ προσιτά και οικονομικά μολονότι
δεν υστερούν λειτουργικά για τις συγκεκριμένες εφαρμογές.
10
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
1.1 Μικροελεγκτής
Η αναπτυξιακή πλακέτα που χρησιμοποιείται είναι ένας κλώνος του Arduino Uno R3,
ο οποίος διαθέτει 14 ψηφιακές εισόδους/εξόδους (6 από αυτές με δυνατότητα PWM),
6 αναλογικές εισόδους, ρολόι στα 16 MHz, σύνδεση USB, υποδοχή τροφοδοσίας,
υποδοχή ICSP, ένα κρύσταλλο χαλαζία 16 MHz, μια σύνδεση USB, μια υποδοχή
ρεύματος και ένα κουμπί επαναφοράς.
Περιέχει όλα όσα χρειάζονται για τη στήριξη του μικροελεγκτή, απλά θα πρέπει να
συνδεθεί με έναν υπολογιστή με καλώδιο USB ή με ένα προσαρμογέα AC σε DC ή
μπαταρία για να ξεκινήσει. Οι μικροελεγκτές Arduino έχουν γίνει διάσημοι για την
ευκολία και την απλότητα χρήσης τους και σήμερα χρησιμοποιούνται ευρέως από
απλές μαθητικές εφαρμογές μέχρι και εξελιγμένους Ρομποτικούς μηχανισμούς σε όλο
τον κόσμο.
Παρακάτω γίνεται μια σύντομη περιγραφή των Εισόδων και Εξόδων του Arduino
Uno R3 πάνω στον οποίο στηρίχθηκαν οι κατασκευές.
Σχήμα 1.1.1
11
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
VIN. Η τάση εισόδου στην πλακέτα Arduino κατά τη χρήση μιας εξωτερικής πηγής
ενέργειας (σε αντιδιαστολή των 5V από τη σύνδεση USB ή άλλες πηγή ενέργειας).
Μπορεί να τροφοδοτηθεί με τάση μέσω αυτού του ακροδέκτη από 5V ως 20V.
5V. Αυτός ο ακροδέκτης εξάγει μια ρυθμιζόμενη 5V από τον ρυθμιστή της κεντρικής
πλακέτας.
Σχήμα 1.1.2
3,3V. Αυτός ο ακροδέκτης εξάγει μια ρυθμιζόμενη 3,3V από τον ρυθμιστή της
κεντρικής πλακέτας. Η μέγιστη κατανάλωση ρεύματος είναι 50 mA.
Κάθε ένας από τους 14 ψηφιακούς ακροδέκτες και τους 6 αναλογικούς για το UNO
μπορεί να χρησιμοποιηθεί ως είσοδος ή έξοδος εφαρμόζοντας τις εντολές pinMode(),
digitalWrite(), και digitalRead(). Οι αναλογικοί ακροδέκτες δοκιμάζουν τα επίπεδα
τάσης και αναφέρουν μια ψηφιακή τιμή χρησιμοποιώντας την εντολή analogRead().
Οι αναλογικοί ακροδέκτες και ένα υποσύνολο των ψηφιακών προσφέρουν Pulse
Width Modulation (PWM) χρησιμοποιώντας την εντολή analogWrite().
Κάθε ακροδέκτης λειτουργεί σε ηλεκτρική τάση 0-5V DC, μπορεί να παρέχει ή να λάβει
ηλεκτρικό ρεύμα με ανώτατο όριο 40mA (συνιστάται 20mA) και έχει εσωτερική
αντίσταση pull-up 20-50 kOhms.
12
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 1.1.3
Εξειδικευμένες Λειτουργίες.
Κωδικός: Serial 0 (RX) και 1 (TX). Χρησιμοποιείται για τη λήψη (RX) και διαβίβαση
σειριακών δεδομένων (TX) TTL.
Pins 0 και 1 είναι επίσης συνδεδεμένα με τα αντίστοιχα του Serial τσιπ USB-to-TTL.
LED: 13. Υπάρχει ένα ενσωματωμένο LED που συνδέεται με τον ψηφιακό ακροδέκτη
13. Το LED είναι αναμμένο με το 1, είναι κλειστό με το 0.
I2C/TWI: SDA και SCL, I2C υποστήριξη IIC, επικοινωνία TWI χρησιμοποιώντας τη
βιβλιοθήκη Wire.
Αναλογικές Είσοδοι.
Το Uno έχει 6 αναλογικές εισόδους κάθε μία από τις οποίες παρέχει 10 bit (δηλαδή
1024 διαφορετικές τιμές). Εξ’ ορισμού μετρούν από τη γείωση (0V) σε 5V, αλλά είναι
δυνατόν να αλλάξει το άνω άκρο του εύρους τους χρησιμοποιώντας τον AREF και την
εντολή analogReference ().
13
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Τεχνικά Χαρακτηριστικά:
o Μικροελεγκτής: ATmega328P
o Τάση λειτουργίας: 5V
o Τάση εισόδου (συνιστώμενη): 7-12V
o Τάση εισόδου (όριο): 6-20V
o Ψηφιακοί I/O ακροδέκτες : 14 (6 εκ των οποίων παρέχουν έξοδο PWM)
o Αναλογικοί ακροδέκτες Εισόδου: 6
o DC ρεύμα ανά I/O ακροδέκτη: 20 mA
o DC ρεύμα για 3,3V ακροδέκτη: 50 mA
o Flash Memory: 32 KB εκ των οποίων 0.5 KB χρησιμοποιείται από τον
bootloader
o SRAM: 2 KB
o EEPROM: 1 KB
o Clock Speed: 16 MHz
o Μήκος: 68,6 mm
o Πλάτος: 53,4 mm
o Βάρος: 25 g
14
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 1.1
Προκειμένου να γίνει η οδήγηση των κινητήρων που δίνουν κίνηση στις ρόδες του
ρομπότ της τελευταίας κατασκευής (βλ. Κεφ.2.5), χρησιμοποιείται το ολοκληρωμένο
L298Ν Dual H-Bridge, που είναι μια διάταξη Η-γέφυρας για έλεγχο ως 2 DC
κινητήρων στέλνοντας PWM σήμα ταχύτητας και φοράς περιστροφής. Η γέφυρα
λειτουργεί μέσω 6 σημάτων (ΙΝ1, ΙΝ2 και ΕΝΑ για τον Α’ κινητήρα και αντίστοιχα
για τον Β’) που παρέχονται από τον μικροελεγκτή. Η ενεργοποίηση/απενεργοποίηση
της γέφυρας καθώς και η φορά περιστροφής για τον Α’ κινητήρα καθορίζεται από τις
τιμές των IN1 και ΙΝ2, ενώ η ταχύτητα ρυθμίζεται μέσω ενός PWM σήματος (duty
cycle, δηλαδή ρύθμιση των κύκλων εργασίας οι οποίοι περιγράφουν το χρόνο επί τοις
εκατό ενός ενεργού σήματος) στον ακροδέκτη ΕΝΑ.
15
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Η διάταξη Η-γέφυρας
που χρησιμοποιήθηκε,
το ολοκληρωμένο
L298Ν Dual H-Bridge.
Σχήμα 1.2.1
Αυτό σημαίνει πρακτικά ότι για 8 Bit έλεγχο έχουμε 256 επίπεδα ταχύτητας γράφοντας
έναν αριθμό από 0 ως 255 στην εντολή analogWrite(pin, value). Αν δοθεί τιμή 0, έχουμε
0VDC στους ακροδέκτες OUT της πλακέτας του, αν όμως δοθεί τιμή 255, έχουμε το
μέγιστο της τάσης τροφοδοσίας η οποία εφαρμόζεται στον ακροδέκτη +12V (+7VDC
ως +35VDC) να εφαρμόζεται ανάμεσα στους ακροδέκτες OUT1 – OUT2. Αντίστοιχα
και ανεξάρτητα μπορεί να ρυθμιστεί η ταχύτητα και η φορά περιστροφής για τον Β’
κινητήρα.
Σχήμα 1.2.2
Συνδεσμολογία:
16
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 1.2.1
17
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 1.2.2
18
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Ο αισθητήρας υπερήχων
HC-SR04.
Σχήμα 1.3.1
Σχήμα 1.3.2
Για τις εφαρμογές που χρησιμοποιείται αυτός ο αισθητήρας πρέπει να ληφθεί υπόψη
ότι τα επίπεδα αντικείμενα μπορούν να ανακλούν καλύτερα τα ηχητικά κύματα και
να ανιχνεύονται ευκολότερα ενώ τα αιχμηρά και μικρά αντικείμενα ή τα αντικείμενα
που εκτρέπουν τα ηχητικά κύματα σε άλλη κατεύθυνση από εκείνη του αισθητήρα, δεν
μπορούν να ανιχνευθούν επαρκώς.
19
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Τεχνικά Χαρακτηριστικά:
Πίνακας 1.3.1
Η σύνδεση της οθόνης γίνεται με τους ακροδέκτες του μικροελεγκτή SDA, SCL για
την παροχή δεδομένων και 5V, GROUND για την παροχή ισχύος, όπως καταγράφεται
παρακάτω:
20
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Οθόνη Χαρακτήρων
16 στηλών επί 2 γραμμών.
Σχήμα 1.4.1
Σχήμα 1.4.2
21
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Τεχνικά Χαρακτηριστικά:
Πίνακας 1.4.1
1.5 Ηλεκτρονόμος
Η χρήση φορτίων με απαιτήσεις σε ηλεκτρικό ρεύμα και τάση μεγαλύτερων από τις
δυνατότητες της πλακέτας του μικροελεγκτή, όπως ο ανεμιστήρας και η αντλία νερού
στις κατασκευές που παρουσιάζονται, καθιστά αναγκαία τη χρήση ηλεκτρονόμων
(ρελέ) για τον έλεγχο τους, καθώς το Arduino Uno μπορεί να παρέχει από τους
22
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
ακροδέκτες του έως 5V τάση και 20mA ρεύμα. Στην παρακάτω εικόνα είναι η πλακέτα
με τον ηλεκτρονόμο που χρησιμοποιήθηκε, η οποία μπορεί να ελέγχει διάφορες
συσκευές με μεγάλη τάση (έως AC250V/DC30V) και ισχυρό ρεύμα (έως AC 16Α).
Σχήμα 1.5.1
Πλακέτα 1 ηλεκτρονόμου,
(σχήμα από το Fritzing).
Σχήμα 1.5.2
Τεχνικά Χαρακτηριστικά:
23
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 1.5.1
1.6 Μικρόφωνο
Μικρόφωνο MAX9812.
Σχήμα 1.6.1
24
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Το μικρόφωνο αυτό έχει τρεις ακροδέκτες: την τάση τροφοδοσίας, που μπορεί να είναι
3,3V και 5V, τη γείωση και την έξοδο (σήμα), η οποία είναι μια τάση έως 5V ανάλογα
με το επίπεδο του θορύβου που ανιχνεύει.
Μικρόφωνο MAX9812,
(σχήμα από το Fritzing).
Σχήμα 1.6.2
Τεχνικά Χαρακτηριστικά:
Πίνακας 1.6.1
25
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 1.7.1
26
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Αισθητήρας Θερμοκρασίας -
Υγρασίας DHT22,
(σχήμα από το Fritzing).
Σχήμα 1.7.2
Τεχνικά Χαρακτηριστικά:
Πίνακας 1.7.1
27
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 1.8.1
28
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Αισθητήρας Υγρασίας
Εδάφους FC-28,
(σχήμα από το Fritzing).
Σχήμα 1.8.2
Τεχνικά Χαρακτηριστικά:
Πίνακας 1.8.1
29
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
1.9 Αντλία
Σχήμα 1.9.1
30
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Τεχνικά Χαρακτηριστικά:
Πίνακας 1.9.1
31
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 1.10.1
Πίνακας 1.10.1
32
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 1.10.2
33
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 1.11.1
Συσσωρευτής 9V
Σχήμα 1.11.2
Συσσωρευτής 1,5V
Σχήμα 1.11.3
34
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Προσαρμογέας συσσωρευτή 9V
σε ακροδέκτη 5.5/2.1
Σχήμα 1.11.6
Σχήμα 1.11.7
Σχήμα 1.11.8
Σχήμα 1.11.9
Σχήμα 1.11.10
35
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
8. Ξύλο κόντρα πλακέ πάχους 4mm € 2,00 με Φ.Π.Α € 4,00 με φόρους και
(περίπου 15x20cm). μεταφορικά.
Πίνακας 1.11.1
36
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
1.12 Λογισμικό.
4. Δημιουργήστε
ένα νέο σκίτσο.
37
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
38
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
8. Επιλέξτε Εργαλεία → Πίνακας → Arduino Uno για να βρείτε την πλακέτα σας
στο μενού Arduino.
9. Βρείτε μια λίστα με όλες τις διαθέσιμες σειριακές θύρες επιλέγοντας Εργαλεία
→ Σειριακή θύρα → comX. Το Χ σηματοδοτεί έναν διαδοχικό ή τυχαίο αριθμό.
10. Πολλές συσκευές μπορούν να καταχωρηθούν στη λίστα θύρας COM και αν
συνδέσετε πολλές πλακέτες, θα τους δοθεί ένας νέος αριθμός. Αν δεν έχετε άλλο
Arduino συνδεδεμένο, θα πρέπει να είναι ο μόνος ορατός.
12. Πατήστε Μεταφόρτωση – UPLOAD (το οριζόντιο βελάκι πάνω αριστερά) και
περιμένετε μερικά δευτερόλεπτα μέχρι να ολοκληρωθεί η διαδικασία.
39
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Εναλλακτικά:
1. Πατήστε την υπερσύνδεση που υπάρχει στο τέλος κάθε κατασκευής στο
κεφάλαιο 2.
40
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Κεφάλαιο 2 - Κατασκευές
41
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
2.1 Ηχοδιακόπτης
2.1.1 Εισαγωγή
Σχήμα 2.1.1.α
42
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Αν είναι αναμμένη με ένα παλαμάκι θα σβήσει και ούτω καθεξής. Αυτή η κατασκευή
είναι αρκετά απλή και μπορεί να έχει χρηστική αξία αν στη θέση της λυχνίας
τοποθετηθεί ένας ηλεκτρονόμος (ρελέ). Αυτός μπορεί να ελέγξει μεγαλύτερα φορτία
και φορτία διαφορετικής ονομαστικής τάσης από την τροφοδοσία του μικροελεγκτή,
όπως ένα φωτιστικό οικίας, έναν ανεμιστήρα κ.α. Ένα τέτοιο ηχοδιακόπτη μπορούμε
να τοποθετήσουμε π.χ. στα φώτα ενός σαλονιού και με ένα παλαμάκι να τα ελέγξουμε.
Σχήμα 2.1.1.β
43
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 2.1.2
Στη συνέχεια για την κατασκευή του κυκλώματος, εφαρμόστε τα παρακάτω βήματα
όπως καταγράφονται και πάνω στο σχήμα 2.1.3:
1. Συνδέστε το ένα άκρο ενός αγωγού (jumper wire – male to male) κόκκινου
χρώματος με τον ακροδέκτη 5V του μικροελεγκτή και το άλλο άκρο με μια από
τις οπές της κάτω θετικής ράγας τροφοδοσίας (οριζόντια κόκκινη γραμμή) της
πλακέτας δοκιμών (Breadboard).
2. Συνδέστε το ένα άκρο ενός αγωγού γαλάζιου χρώματος με τον ακροδέκτη GND
(γείωση) του μικροελεγκτή και το άλλο άκρο με μια από τις οπές της κάτω
αρνητικής ράγας τροφοδοσίας (γαλάζιας γραμμής) της πλακέτας δοκιμών
(Breadboard).
44
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.1.3
45
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Ένας συνήθης κι απλός κώδικας, όπως ο παρακάτω, αποτελείται από τρία μέρη: στο
πρώτο ορίζονται οι σταθερές, έπειτα οι μεταβλητές που θα χρησιμοποιηθούν και τέλος
οι αρχικές τιμές τους.
46
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Στη συνέχεια, στη ρουτίνα Setup που «τρέχει» μόνο μια φορά, γίνεται η απαραίτητη
αρχικοποίηση, δηλαδή δηλώνεται ποιοι από τους ακροδέκτες θα λειτουργούν ως
είσοδοι και ποιοι ως έξοδοι. Εδώ ο ακροδέκτης 2 της λυχνίας θα δηλωθεί ως έξοδος ενώ
ο Α5 θα δηλωθεί ως είσοδος. Επίσης, ξεκίνα η σειριακή επικοινωνία του μικροελεγκτή
με τον Η/Υ.
Τέλος, έχουμε τη ρουτίνα Loop σαν ένα ατέρμονα βρόχο, η οποία εκτελείται ξανά και
ξανά για όσο λειτουργεί το πρόγραμμα. Εδώ κάθε φορά «διαβάζεται» η τρέχουσα τιμή
της εισόδου και αποδίδεται στη μεταβλητή SignalMic. Έπειτα, η τιμή (LOW ή HIGH)
της μεταβλητής LedState (κατάσταση της λυχνίας) δίνεται στη σταθερά PinLed
(ακροδέκτης της λυχνίας, δηλαδή ο 2), αυτό σημαίνει ότι αν η μεταβλητή LedState
είναι LOW τότε ο ακροδέκτης 2, με τον οποίο είναι συνδεδεμένη η λυχνία, θα πάρει
0V και η λυχνία θα είναι σβηστή. Αν όμως η μεταβλητή LedState είναι HIGH τότε ο
ακροδέκτης 2, με τον οποίο είναι συνδεδεμένη η λυχνία, θα πάρει 5V και η λυχνία θα
ανάβει. Ακολούθως, εκτυπώνεται στην οθόνη του Η/Υ η τρέχουσα κατάσταση της
λυχνίας και η τρέχουσα τιμή του σήματος μικροφώνου.
Ύστερα από αυτά, ο κώδικας έχει μια IF η οποία ελέγχει την τρέχουσα τιμή του
σήματος SignalMic με το όριο κατωφλίου ThresholdValue του σήματος πάνω από το
οποίο θα αλλάζει η κατάσταση της λυχνίας. Αν η τιμή είναι μεγαλύτερη, τότε αλλάζει
την τιμή της μεταβλητής ‘’κατάσταση’’ της λυχνίας LedState και περιμένει 200
millisecs για να αποφύγει ψευδή ανάμματα και σβησίματα. Τέλος, περιμένει 1 millisec
βελτιώνοντας την ευστάθεια του βρόχου πριν αρχίσει ξανά από την αρχή να εκτελεί
τις εντολές της Loop.
Παρατηρήσεις :
47
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.1.4
48
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
2.2 Φασαριόμετρο.
2.2.1 Εισαγωγή
Η κατασκευή του Φασαριόμετρου είναι αρκετά διασκεδαστική και έχει χρηστική αξία
μέσα στη σχολική τάξη όταν ολοκληρωθεί.
Σχήμα 2.2.1.α
49
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.2.1.β
Ένα πρόσθετο πλεονέκτημα είναι ότι επειδή η κατασκευή μπορεί να δουλέψει με μια
απλή μπαταρία 9V, 12V ή με ένα τροφοδοτικό DCV, μπορεί να μεταφερθεί και να
δανειστεί από τάξη σε τάξη και να διασκεδάσουν περισσότεροι μαθητές. Από
διαπιστώσεις εκπαιδευτικών που έχουν χρησιμοποιήσει τη συγκεκριμένη εφαρμογή
50
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.2.1.γ
51
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 2.2.2
Στη συνέχεια για την κατασκευή του κυκλώματος, όπως απεικονίζεται στο Σχήμα 2.2.3,
υλοποιήστε τα παρακάτω βήματα:
1. Συνδέστε το ένα άκρο ενός αγωγού (jumper wire – male to male) κόκκινου
χρώματος με τον ακροδέκτη 5V του μικροελεγκτή και το άλλο άκρο με μια από
τις οπές της κάτω θετικής ράγας τροφοδοσίας (οριζόντια κόκκινη γραμμή) της
πλακέτας δοκιμών (Breadboard).
2. Συνδέστε το ένα άκρο ενός αγωγού γαλάζιου χρώματος με τον ακροδέκτη GND
(γείωση) του μικροελεγκτή και το άλλο άκρο με μια από τις οπές της κάτω
αρνητικής ράγας τροφοδοσίας (γαλάζιας γραμμής) της πλακέτας δοκιμών
(Breadboard).
52
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.2.3
53
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
5. Συνδέστε το ένα άκρο ενός άλλου αγωγού γαλάζιου χρώματος με μια οπή από
την πεντάδα οπών της πλακέτας δοκιμών με την οποία συνδέθηκε ο
ακροδέκτης GND του μικροφώνου και το άλλο άκρο με μια από τις οπές της
κάτω αρνητικής ράγας τροφοδοσίας της πλακέτας δοκιμών.
6. Συνδέστε το ένα άκρο ενός αγωγού π.χ. ιώδους (μωβ) χρώματος με τον
ακροδέκτη Α5 του μικροελεγκτή και το άλλο άκρο με την πεντάδα οπών της
πλακέτας δοκιμών με την οποία συνδέθηκε ο ακροδέκτης OUT του
μικροφώνου.
7. Καρφώστε την πρώτη λυχνία (Led) γαλάζιου χρώματος στην πλακέτα δοκιμών
με τους δυο ακροδέκτες σε δύο διαδοχικές πεντάδες οπών κάθετης γραμμής.
8. Συνδέστε το ένα άκρο ενός άλλου αγωγού γαλάζιου χρώματος με μια οπή από
την πεντάδα οπών της πλακέτας δοκιμών με την οποία συνδέθηκε το
μακρύτερο άκρο της λυχνίας Άνοδος (+) και το άλλο άκρο με τον ακροδέκτη 8
του μικροελεγκτή.
9. Συνδέστε το ένα άκρο μιας αντίστασης 220Ω με μια οπή από την πεντάδα οπών
της πλακέτας δοκιμών με την οποία συνδέθηκε το πιο κοντό άκρο της λυχνίας
Κάθοδος (-) και το άλλο άκρο της αντίστασης με μια από τις οπές της κάτω
αρνητικής ράγας τροφοδοσίας της πλακέτας δοκιμών.
54
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Οι σταθερές είναι:
SampleTime
Η διάρκεια χρονικού διαστήματος Μέτρησης με αρχική τιμή 100 millisecs.
LightsOnTime
Η διάρκεια χρονικού διαστήματος που παραμένουν αναμμένες οι λυχνίες με
αρχική τιμή 100 millisecs.
Gain
Προσαύξηση τιμής στάθμης από Κορυφή σε Κορυφή (PeakToPeak) με αρχική
τιμή 200 μονάδες.
MicPin
Ο ακροδέκτης σύνδεσης του μικροφώνου με αρχική τιμή Α5.
BluePin
Ο ακροδέκτης σύνδεσης της γαλάζιας λυχνίας LED με αρχική τιμή 8.
GreenPin
Ο ακροδέκτης σύνδεσης της πράσινης λυχνίας LED με αρχική τιμή 9.
YellowPin
Ο ακροδέκτης σύνδεσης της κίτρινης λυχνίας LED με αρχική τιμή 10.
OrangePin
Ο ακροδέκτης σύνδεσης της πορτοκαλί λυχνίας LED με αρχική τιμή 11.
RedPin
Ο ακροδέκτης σύνδεσης της κόκκινης λυχνίας LED με αρχική τιμή 12.
Στη ρουτίνα Setup, που τρέχει μόνο μια φορά, γίνεται η απαραίτητη αρχικοποίηση,
δηλαδή δηλώνεται ποιοι από τους ακροδέκτες θα λειτουργούν ως είσοδοι και ποιοι ως
έξοδοι. Εδώ οι ακροδέκτες 8 ως 12 θα δηλωθούν ως έξοδοι ενώ ο Α5 θα δηλωθεί ως
είσοδος. Επίσης, ξεκίνα η σειριακή επικοινωνία του μικροελεγκτή με τον Η/Υ και ως
οπτική ένδειξη εκκίνησης του προγράμματος με χρήση της εντολής FOR ανάβουν οι
λυχνίες 2 φορές πάνω – κάτω.
55
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Η ρουτίνα Loop, σαν ένας ατέρμονας βρόχος, εκτελείται ξανά και ξανά για όσο χρόνο
λειτουργεί το πρόγραμμα και σε αυτήν γράφεται ο κύριος κώδικας κάθε
προγράμματος.
Στη συνέχεια, με μια εντολή while ορίζεται ένα χρονικό διάστημα ίσο με τη σταθερά
sampleTime στη διάρκεια του οποίου καταμετράται το σήμα του μικροφώνου,
αποθηκεύεται η Μέγιστη και η Ελάχιστη τιμή του και υπολογίζεται από τα
προηγούμενα το Εύρος από Κορυφή σε Κορυφή PeakToPeak. Επίσης, προσαυξάνεται
η τιμή του, αθροίζοντας τη σταθερά Gain. Η σταθερά αυτή είναι ίση με διακόσιες
μονάδες καθώς αντιστοιχεί αποτελεσματικότερα στο εύρος των 1023 του σήματος του
μικροφώνου και αποκτά μεγαλύτερη ευαισθησία. Ακολούθως, μετατρέπεται το εύρος
στη μεταβλητή NoiseValue (Στάθμη Θορύβου) αντιστοιχώντας τα 1023 σε 5 επίπεδα.
Παρατηρήσεις:
56
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.2.4
57
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
2.3.1 Εισαγωγή
Η τρίτη κατά σειρά κατασκευή είναι μια προσομοίωση λειτουργίας ενός θερμοκηπίου
και πιο συγκεκριμένα ο έλεγχος της θερμοκρασίας και της σχετικής υγρασίας στο
εσωτερικό του. Οι θερμοκηπιακές καλλιέργειες είναι πολύ διαδεδομένες στο τόπο μας
και πολλοί ντόπιοι έχουν αρκετές αντίστοιχες εμπειρίες, οπότε η κατασκευή αυτή πολύ
πιθανόν να κεντρίσει το ενδιαφέρον των μαθητών.
Σχήμα 2.3.1.α
58
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.3.1.β
Έστω ότι έχουμε ένα θερμοκήπιο όπου τα φυτά που καλλιεργούνται πρέπει να
βρίσκονται συνεχώς κάτω από 35 βαθμούς Κελσίου και κάτω από το 80% σχετικής
υγρασίας της ατμόσφαιρας (οι τιμές αυτές μπορούν να αλλάξουν πολύ εύκολα από
τον κώδικα προγραμματισμού). Το σύστημα λοιπόν μετρά αυτά τα δύο μεγέθη ανά
τακτά χρονικά διαστήματα (τα οποία έχουν οριστεί στον κώδικα), τα τυπώνει στην
οθόνη και ελέγχει αν έχει ξεπεράσει η θερμοκρασία ή η υγρασία τα προκαθορισμένα
μέγιστα όρια. Αν υπερβεί τα όρια έστω και ένα από αυτά τα δύο, τότε ενεργοποιείται
ο ανεμιστήρας ο οποίος με τον φρέσκο αέρα ψύχει την ατμόσφαιρα και μειώνει την
59
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 2.3.2
60
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Στη συνέχεια, για την κατασκευή του κυκλώματος, όπως απεικονίζεται στο Σχήμα
2.3.3, υλοποιήστε τα παρακάτω βήματα:
Σχήμα 2.3.3
1. Συνδέστε το ένα άκρο ενός αγωγού (jumper wire – male to male) κόκκινου
χρώματος με τον ακροδέκτη 5V του μικροελεγκτή και το άλλο άκρο με μια από
61
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
τις οπές της κάτω θετικής ράγας τροφοδοσίας (οριζόντια κόκκινη γραμμή) της
πλακέτας δοκιμών (Breadboard).
2. Συνδέστε το ένα άκρο ενός αγωγού γαλάζιου χρώματος με τον ακροδέκτη GND
(γείωση) του μικροελεγκτή και το άλλο άκρο με μια από τις οπές της κάτω
αρνητικής ράγας τροφοδοσίας (γαλάζιας γραμμής) της πλακέτας δοκιμών
(Breadboard).
11. Συνδέστε το ένα άκρο ενός άλλου αγωγού κόκκινου χρώματος με τον
ακροδέκτη Vcc του ηλεκτρονόμου (ρελέ) και το άλλο άκρο με μια από τις οπές
της κάτω θετικής ράγας τροφοδοσίας της πλακέτας δοκιμών.
62
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
12. Συνδέστε το ένα άκρο ενός άλλου αγωγού γαλάζιου χρώματος με τον
ακροδέκτη GND του ηλεκτρονόμου και το άλλο άκρο με μια από τις οπές της
κάτω αρνητικής ράγας τροφοδοσίας της πλακέτας δοκιμών.
13. Συνδέστε το ένα άκρο ενός αγωγού π.χ. ιώδους χρώματος με τον ακροδέκτη IN1
του ηλεκτρονόμου και το άλλο άκρο με τον ακροδέκτη 8 του μικροελεγκτή.
14. Συνδέστε τον προσαρμογέα συσσωρευτή 9V και βιδώστε το κόκκινο άκρο του
στον ακροδέκτη N.O. (Normally Open) του ηλεκτρονόμου με κατσαβίδι
15. Συνδέστε το μαύρο άκρο του προσαρμογέα με το πρώτο άκρο του κινητήρα του
ανεμιστήρα (μαύρο άκρο στο σχήμα).
16. Βιδώστε το ένα άκρο ενός αγωγού π.χ. πράσινου χρώματος στον ακροδέκτη C
(Common) του ηλεκτρονόμου με κατσαβίδι ενώ το άλλο άκρο του συνδέστε το
με το δεύτερο άκρο του κινητήρα του ανεμιστήρα (κόκκινο άκρο στο σχήμα).
63
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Temp
Θερμοκρασία σε βαθμούς Κελσίου.
Σχήμα 2.3.4
64
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
στήλες 2 γραμμές και ενεργοποίηση του οπίσθιου φωτισμού της οθόνης. Στη συνέχεια
έχουμε την εκτύπωση του αρχικού μηνύματος το οποίο είναι:
Η ρουτίνα Loop ξεκινά με την μέτρηση από τον αισθητήρα των τιμών των δυο
μεταβλητών δηλαδή της σχετικής υγρασίας επί τοις εκατό (Hum) και της
θερμοκρασίας σε βαθμούς Κελσίου (Temp). Στη συνέχεια με μια εντολή IF γίνεται
έλεγχος για το αν η μέτρηση από τον αισθητήρα είναι επιτυχής. Αν δεν είναι,
επιστρέφει και προσπαθεί ξανά.
Παρατηρήσεις:
65
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
2.4.1 Εισαγωγή
Ένα πολύ συνηθισμένο πρόβλημα για όσους έχουν γλάστρες με λουλούδια, λαχανικά,
βότανα κ.α. είναι αυτό του ποτίσματος. Άλλες φορές τα φυτά ποτίζονται πολύ συχνά,
άλλες λιγότερο από αυτό που χρειάζονται ενώ άλλες φορές ο ιδιοκτήτης λείπει σε
ταξίδι και τα φυτά μένουν άνυδρα για μέρες. Η λύση σε αυτό το πρόβλημα είναι μια
κατασκευή που ποτίζει όσο πρέπει τα φυτά αυτόματα
Σχήμα 2.4.1.α
66
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
υγρασία στο χώμα της, ενεργοποιείται η αντλία για μερικά δευτερόλεπτα έτσι ώστε να
στείλει νερό από ένα δοχείο για να ποτιστεί το χώμα. Στη συνέχεια, το πρόγραμμα
περιμένει για ένα χρονικό διάστημα μερικών δευτερολέπτων ανάμεσα στις μετρήσεις,
καθώς το νερό που παρέχεται σε κάθε πότισμα χρειάζεται λίγο χρόνο για να διαχυθεί
στο χώμα και να ανεβάσει τη μετρήσιμη σχετική υγρασία. Στην επόμενη μέτρηση αν
η υγρασία παραμένει χαμηλή, το πρόγραμμα επαναλαμβάνει τη διαδικασία
ποτίζοντας τη γλάστρα και περιμένοντας για την επόμενη μέτρηση. Η διαδικασία
επαναλαμβάνεται μέχρι να αλλάξουν τα επίπεδα υγρασίας του χώματος. Αν η
μέτρηση δείξει ότι η γλάστρα έχει ποτιστεί επαρκώς, τότε το πρόγραμμα μπαίνει σε μια
μεγαλύτερη αναμονή πριν μετρήσει ξανά. Για εκπαιδευτικούς λόγους εδώ ο χρόνος
αναμονής έχει οριστεί ένα λεπτό, όμως σε πραγματικές συνθήκες μπορεί να οριστεί
π.χ. μερικές ώρες ή μέχρι και μια μέρα.
Αριστερά: Η τιμή της υγρασίας στο χώμα δεν είναι η επιθυμητή, βρίσκεται σε μέτριο
επίπεδο, τοποθετείται ανάμεσα στο ''Ξηρό'' και στο ‘’Ποτισμένο’’, οπότε ανάβει η
πορτοκαλί λυχνία.
Δεξιά: Το χώμα θεωρείται ‘’Ποτισμένο’’ οπότε ανάβει η πράσινη λυχνία.
Σχήμα 2.4.1.β
67
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 2.4.2
Για την κατασκευή του κυκλώματος, όπως απεικονίζεται στο Σχήμα 2.4.3 αρχικά
μεταφορτώστε το πρόγραμμα στον μικροελεγκτή από το περιβάλλον
προγραμματισμού Arduino IDE και στη συνέχεια υλοποιήστε τα παρακάτω βήματα:,
1. Συνδέστε το ένα άκρο ενός αγωγού (jumper wire – male to male) κόκκινου
χρώματος με τον ακροδέκτη 5V του μικροελεγκτή και το άλλο άκρο με μια από
τις οπές της κάτω θετικής ράγας τροφοδοσίας (οριζόντια κόκκινη γραμμή) της
πλακέτας δοκιμών (Breadboard).
2. Συνδέστε το ένα άκρο ενός αγωγού γαλάζιου χρώματος με τον ακροδέκτη GND
(γείωση) του μικροελεγκτή και το άλλο άκρο με μια από τις οπές της κάτω
68
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.4.3
69
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
13. Συνδέστε το ένα άκρο ενός άλλου αγωγού κόκκινου χρώματος με τον
ακροδέκτη Vcc του ηλεκτρονόμου (ρελέ) και το άλλο άκρο με μια από τις οπές
της κάτω θετικής ράγας τροφοδοσίας της πλακέτας δοκιμών.
70
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
14. Συνδέστε το ένα άκρο ενός άλλου αγωγού γαλάζιου χρώματος με τον
ακροδέκτη GND του ηλεκτρονόμου και το άλλο άκρο με μια από τις οπές της
κάτω αρνητικής ράγας τροφοδοσίας της πλακέτας δοκιμών.
15. Συνδέστε το ένα άκρο ενός αγωγού π.χ. ιώδους χρώματος με τον ακροδέκτη IN1
του ηλεκτρονόμου και το άλλο άκρο με τον ακροδέκτη 8 του μικροελεγκτή.
WateringTime
Ο χρόνος ποτίσματος με αρχική τιμή 3000 (millisecs).
CheckTime
Ο χρόνος αναμονής πριν μετρήσει ξανά σε κάθε κύκλο προγράμματος με
αρχική τιμή 5000 (millisecs).
AdditionalTime
Ο επιπλέον χρόνος αναμονής όταν είναι ''Ποτισμένο'' το χώμα με αρχική τιμή
60000 (millisecs), δηλαδή ένα λεπτό της ώρας.
DryLimit
Η τιμή ορίου Σχετικής Υγρασίας κάτω από το οποίο θεωρείται ''Ξηρό'' το χώμα
με αρχική τιμή 40.
WateredLimit
Η τιμή ορίου Σχετικής Υγρασίας πάνω από το οποίο θεωρείται ''Ποτισμένο'' το
χώμα με αρχική τιμή 70.
71
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
SensorPin
Ο ακροδέκτης σύνδεσης του αισθητήρα o οποίος είναι ο A0.
PumpPin
Ο ακροδέκτης σύνδεσης της αντλίας o οποίος είναι ο 8.
GreenPin
Ο ακροδέκτης σύνδεσης της πράσινης λυχνίας LED o οποίος είναι ο 7.
OrangePin
Ο ακροδέκτης σύνδεσης της πορτοκαλί λυχνίας LED o οποίος είναι ο 6.
RedPin
Ο ακροδέκτης σύνδεσης της κόκκινης λυχνίας LED o οποίος είναι ο 5.
Σχήμα 2.4.4
72
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Η ρουτίνα Loop ξεκινά με την ανάγνωση του σήματος από τον αισθητήρα, την
αποθήκευση της τρέχουσας τιμής του στη μεταβλητή SignalValue και τη μετατροπή
του σε Σχετική Υγρασία επί τοις εκατό (MoistureValue). Στη συνέχεια, εκτυπώνονται
οι τιμές του σήματος του αισθητήρα και της Σχετικής Υγρασίας (%) στην οθόνη του
Η/Υ. Ακολουθεί η κατάταξη της τιμής υγρασίας σε τρείς διαφορετικές περιπτώσεις
και η εκτέλεση των ανάλογων εντολών.
Στην πρώτη περίπτωση αν η υγρασία είναι μικρότερη ή ίση από το όριο ‘’Ξηρό’’,
ενεργοποιείται η αντλία (οπλίζει ο ηλεκτρονόμος με LOW), εκτυπώνεται ένα μήνυμα
στην οθόνη του Η/Υ, ανάβει μόνο η κόκκινη λυχνία, περιμένει (ποτίζοντας ωστόσο)
για χρόνο WateringTime και στη συνέχεια σταμάτα να ποτίζει εκτυπώνοντας το
ανάλογο μήνυμα στην οθόνη του Η/Υ.
Διαφορετικά, αν (δεύτερη περίπτωση) η Σχετική Υγρασία (%) είναι μεγαλύτερη από
το όριο ''Ξηρό'' και ταυτόχρονα μικρότερη από το όριο ''Ποτισμένο'', ενεργοποιείται η
αντλία, εκτυπώνεται ένα μήνυμα στην οθόνη του Η/Υ και ανάβει μόνο η πορτοκαλί
λυχνία. Στη συνέχεια, ποτίζει για χρόνο WateringTime και έπειτα σταματά
εκτυπώνοντας το ανάλογο μήνυμα στην οθόνη του Η/Υ.
Αν το χώμα θεωρείται ‘’ποτισμένο’’ (η Σχετική Υγρασία είναι μεγαλύτερη ή ίση με το
70%), απενεργοποιείται η αντλία, ανάβει μόνο η πράσινη λυχνία και το πρόγραμμα
περιμένει για επιπλέον χρόνο (AdditionalTime).
Παρατηρήσεις:
73
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
74
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.5.1.α
75
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.5.1.β
76
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Στη συνέχεια, ελέγχει τις δυο αποστάσεις και ψάχνει να βρει τον καλύτερο δυνατό
τρόπο για να γυρίσει. Αν έχει περισσότερο χώρο αριστερά, τότε στρίβει προς τα
αριστερά, αν έχει περισσότερο χώρο δεξιά, τότε στρίβει προς τα δεξιά, αλλάζοντας έτσι
συνεχώς την πορεία του αριστερά ή δεξιά ανάλογα με τα εμπόδια που θα βρεθούν στο
δρόμο του.
Σχήμα 2.5.1.γ
77
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Πίνακας 2.5.2
Για την κατασκευή του κυκλώματος, όπως απεικονίζεται στο Σχήμα 2.5.3 αρχικά
μεταφορτώστε το πρόγραμμα στον μικροελεγκτή από το περιβάλλον
προγραμματισμού Arduino IDE και στη συνέχεια υλοποιήστε τα παρακάτω βήματα:
1. Συνδέστε το ένα άκρο ενός αγωγού (jumper wire – male to male) κόκκινου
χρώματος με τον ακροδέκτη 5V του μικροελεγκτή και το άλλο άκρο με μια από
τις οπές της πάνω θετικής ράγας τροφοδοσίας (οριζόντια κόκκινη γραμμή) της
πλακέτας δοκιμών (Breadboard).
78
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.5.3
79
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
2. Συνδέστε το ένα άκρο ενός αγωγού γαλάζιου χρώματος με τον ακροδέκτη GND
(γείωση) του μικροελεγκτή και το άλλο άκρο με μια από τις οπές της πάνω
αρνητικής ράγας τροφοδοσίας (οριζόντια γαλάζια γραμμής της πλακέτας
δοκιμών (Breadboard).
80
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
13. Συνδέστε το ένα άκρο ενός αγωγού (jumper wire – male to female) π.χ.
πορτοκαλί χρώματος με τον ακροδέκτη EΝΑ της πλακέτας της Η-γέφυρας
L298Ν και το άλλο άκρο με τον ακροδέκτη 11 του μικροελεγκτή.
14. Συνδέστε το ένα άκρο ενός αγωγού π.χ. κίτρινου χρώματος με τον ακροδέκτη
ΙΝ1 της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο με τον ακροδέκτη 13
του μικροελεγκτή.
15. Συνδέστε το ένα άκρο ενός αγωγού π.χ. πράσινου χρώματος με τον ακροδέκτη
ΙΝ2 της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο με τον ακροδέκτη 12
του μικροελεγκτή.
16. Συνδέστε το ένα άκρο ενός αγωγού π.χ. ιώδους χρώματος με τον ακροδέκτη
EΝΒ της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο με τον ακροδέκτη
10 του μικροελεγκτή.
17. Συνδέστε το ένα άκρο ενός αγωγού π.χ. καφέ χρώματος με τον ακροδέκτη ΙΝ3
της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο με τον ακροδέκτη 9 του
μικροελεγκτή.
18. Συνδέστε το ένα άκρο ενός αγωγού π.χ. γκρι χρώματος με τον ακροδέκτη ΙΝ4
της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο με τον ακροδέκτη 8 του
μικροελεγκτή.
19. Βιδώστε (με κατσαβίδι) το ένα άκρο ενός αγωγού π.χ. κίτρινου χρώματος με τον
ακροδέκτη OUT1 της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο
συνδέστε το με τον έναν ακροδέκτη του κινητήρα της αριστερής ρόδας.
20. Βιδώστε (με κατσαβίδι) το ένα άκρο ενός αγωγού π.χ. πράσινου χρώματος με
τον ακροδέκτη OUT2 της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο με
τον άλλον ακροδέκτη του κινητήρα της αριστερής ρόδας.
21. Βιδώστε (με κατσαβίδι) το ένα άκρο ενός αγωγού π.χ. κίτρινου χρώματος με τον
ακροδέκτη OUT4 της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο
συνδέστε το με τον έναν ακροδέκτη του κινητήρα της δεξιάς ρόδας.
22. Βιδώστε (με κατσαβίδι) το ένα άκρο ενός αγωγού π.χ. πράσινου χρώματος με
τον ακροδέκτη OUT3 της πλακέτας της Η-γέφυρας L298Ν και το άλλο άκρο
συνδέστε το με τον άλλον ακροδέκτη του κινητήρα της δεξιάς ρόδας.
23. Συνδέστε τον προσαρμογέα του πρώτου συσσωρευτή 9V με ακροδέκτη 2.2 και
το κόκκινο άκρο του βιδώστε το στον ακροδέκτη +12V της πλακέτας της Η-
γέφυρας L298Ν με κατσαβίδι.
24. Βιδώστε το μαύρο άκρο του προσαρμογέα στον ακροδέκτη GND της πλακέτας
της Η-γέφυρας L298Ν με κατσαβίδι.
25. Βιδώστε στον ακροδέκτη +5V της πλακέτας της Η-γέφυρας L298Ν το ένα άκρο
ενός αγωγού π.χ. κόκκινου χρώματος με κατσαβίδι και το άλλο άκρο συνδέστε
81
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
το με μια από τις οπές της πάνω θετικής ράγας τροφοδοσίας (οριζόντια
κόκκινη γραμμή) της πλακέτας δοκιμών.
SpeedLeftMotor
Τιμή (PWM) που καθορίζει τη ταχύτητα του αριστερού κινητήρα (0 ως 255), με
αρχική τιμή 120.
SpeedRightMotor
Τιμή (PWM) που καθορίζει τη ταχύτητα του δεξιού κινητήρα (0 ως 255), με
αρχική τιμή 120.
StopTime
Ο χρόνος αναμονής του Ρομπότ σταματημένο (millisecs), με αρχική τιμή 700.
TurnTime
Ο χρόνος που το Ρομπότ στρίβει (millisecs), με αρχική τιμή 500.
BackwardTime
Ο χρόνος που το Ρομπότ κινείται προς τα πίσω (millisecs), με αρχική τιμή 800.
LeftMinObstDist
Ελάχιστη απόσταση εμποδίου από αριστερό αισθητήρα (cm), με αρχική τιμή 35.
RightMinObstDist
Ελάχιστη απόσταση εμποδίου από δεξιό αισθητήρα (cm) με αρχική τιμή 35.
TrigPinL
Ο ακροδέκτης σύνδεσης Trigger του αριστερού αισθητήρα, ο οποίος είναι ο 3.
EchoPinL
Ο ακροδέκτης σύνδεσης Echo του αριστερού αισθητήρα, ο οποίος είναι ο 2.
TrigPinR
Ο ακροδέκτης σύνδεσης Trigger του δεξιού αισθητήρα, ο οποίος είναι ο 7.
EchoPinR
Ο ακροδέκτης σύνδεσης Echo του δεξιού αισθητήρα, ο οποίος είναι ο 6.
82
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
IN1
Ο ακροδέκτης σύνδεσης της Εισόδου 1 της Η-γέφυρας ο οποίος είναι ο 13.
IN2
Ο ακροδέκτης σύνδεσης της Εισόδου 2 της Η-γέφυρας ο οποίος είναι ο 12.
SpeedPinL
Ο ακροδέκτης ελέγχου ταχύτητας αριστερού κινητήρα (ΕΝΑ) ο οποίος
είναι ο 11.
IN3
Ο ακροδέκτης σύνδεσης της Εισόδου 3 της Η-γέφυρας ο οποίος είναι ο 9.
IN4
Ο ακροδέκτης σύνδεσης της Εισόδου 4 της Η-γέφυρας ο οποίος είναι ο 8.
SpeedPinR
Ο ακροδέκτης ελέγχου ταχύτητας δεξιού κινητήρα (ΕΝΒ) ο οποίος είναι ο 10.
Σχήμα 2.5.4.α
83
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Στη ρουτίνα Setup, η οποία τρέχει μόνο μια φορά, γίνεται η απαραίτητη
αρχικοποίηση, δηλαδή ο ορισμός των εισόδων, των εξόδων κτλ. Έτσι, οι ακροδέκτες
EchoPinL και EchoPinR ορίζονται ως είσοδοι ενώ οι TrigPinL, TrigPinR των
αισθητήρων απόστασης ορίζονται ως έξοδοι. Επίσης, οι ακροδέκτες του Uno με τους
οποίους συνδέονται οι IN1, IN2, IN3, IN4, SpeedPinL, SpeedPinR της Η-γέφυρας
ορίζονται ως έξοδοι. Με αυτόν το τρόπο, ξεκινά η σειριακή επικοινωνία.
84
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Σχήμα 2.5.4.β
Στην Ρουτίνα Loop, η οποία εκτελείται επαναλαμβανόμενα για όσο λειτουργεί η
κατασκευή, καταγράφεται το κύριο πρόγραμμα το οποίο όμως έχει αυξημένη
πολυπλοκότητα σε σχέση με τα προηγούμενα παραδείγματα. Γι’ αυτόν τον λόγο
υπάρχουν έξι υπορουτίνες οι οποίες ενεργοποιούνται όποτε είναι απαραίτητο με
αποτέλεσμα ο κώδικας να γίνεται πιο εύκολα κατανοητός.
Σχήμα 2.5.4.γ
Read_DistanceL
Υπορουτίνα η οποία υπολογίζει την απόσταση των εμποδίων από τον αριστερό
αισθητήρα.
Read_DistanceR
Υπορουτίνα η οποία υπολογίζει την απόσταση των εμποδίων από τον δεξιό
αισθητήρα.
Turn_Right
85
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Ξεκινώντας την εκτέλεση των εντολών στη Ρουτίνα Loop, αρχικά καλούνται οι δυο
υπορουτίνες υπολογισμού των αποστάσεων των εμποδίων από τον αριστερό και δεξιό
αισθητήρα (Read_DistanceL, Read_DistanceR). Μετά τον υπολογισμό εκτυπώνονται
οι τιμές αυτές των αποστάσεων των εμποδίων στην οθόνη του Η/Υ σε εκατοστά του
μέτρου (cm).
Στη συνέχεια, με μια εντολή IF ελέγχεται αν η απόσταση του εμποδίου από τον
αριστερό ή τον δεξιό αισθητήρα είναι μικρότερη από το ελάχιστο όριο. Αν ισχύει αυτό,
εκτυπώνεται ένα μήνυμα κινδύνου μαζί με τις αποστάσεις αριστερά - δεξιά στην οθόνη
του Η/Υ σε cm και καλείται η υπορουτίνα να οδηγήσει το Ρομπότ λίγο πίσω
(Go_Backward).
Επανερχόμενη στην πρώτη εντολή IF, αν δεν ισχύει η συνθήκη η οποία ελέγχθηκε (αν
δηλαδή η απόσταση του εμποδίου από τον αριστερό ή δεξιό αισθητήρα είναι
μικρότερη από το ελάχιστο όριο) τότε προχωρά το πρόγραμμα στην εκτέλεση των
επόμενων εντολών μετά το ELSE, δηλαδή τυπώνει ένα μήνυμα στην οθόνη του Η/Υ
ότι δεν υπάρχει εμπόδιο και μπορεί να κινηθεί προς τα εμπρός. Επομένως, καλείται η
αντίστοιχη υπορουτίνα (Go_Forward) και στην τελευταία γραμμή του κώδικα
υπάρχει μια καθυστέρηση 1ms για την αύξηση της ευστάθειας του βρόχου.
86
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Παρατηρήσεις:
87
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Παράρτημα
1. Ηχοδιακόπτης
/*****************************************************************************
1. Ηχοδιακόπτης
******************************************************************************/
/*** Ορισμός εισόδων, εξόδων, αρχικοποιήσεις κτλ., (τρέχει μόνο μια φορά). ***/
void setup() {
pinMode(PinMic, INPUT); // Ορισμός ακροδέκτη μικροφώνου ως είσοδος.
pinMode(PinLed, OUTPUT); // Ορισμός ακροδέκτη λυχνίας ως έξοδος.
[Link](9600); // Έναρξη σειριακής επικοινωνίας.
}
88
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
[Link](" --- SignalMic : "); // Εκτύπωσε στην οθόνη αυτούς τους χαρακτήρες.
[Link](SignalMic); // Εκτύπωσε στην οθόνη τη τρέχουσα τιμή του σήματος.
[Link]("==================================="); // Εκτύπωσε στην οθόνη
αυτούς τους χαρακτήρες.
/* Αν η τρέχουσα τιμή του σήματος είναι μεγαλύτερη του ορίου πρέπει να αλλάξει η κατάσταση
της λυχνίας. */
if (SignalMic > ThresholdValue){
LedState = !LedState;
delay(200); // Καθυστέρηση 200 millisecs για αποφυγή ψευδοαλλαγών.
}
89
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
2. Φασαριόμετρο
/*****************************************************************************
2. Φασαριόμετρο
******************************************************************************/
/*** Ορισμός εισόδων, εξόδων, αρχικοποιήσεις κτλ., (τρέχει μόνο μια φορά). ***/
void setup() {
[Link](9600); // Έναρξη σειριακής επικοινωνίας.
pinMode(MicPin,INPUT); // Ορισμός ακροδέκτη ως είσοδος.
pinMode(GreenPin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
pinMode(BluePin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
pinMode(YellowPin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
pinMode(OrangePin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
pinMode(RedPin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
/*** Άναψε τις λυχνίες, πάνω - κάτω 2 φορές ως ένδειξη εκκίνησης του προγράμματος. ***/
for(int k = 0; k < 2; k++){
for(int i = 8; i < 13; i++){
digitalWrite(i, HIGH);
delay(20);
digitalWrite(i, LOW);
delay(20);
90
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
}
for(int i = 13; i > 7; i--){
digitalWrite(i, HIGH);
delay(20);
digitalWrite(i, LOW);
delay(20);
}
}
}
[Link]("===========================================================
==========");
[Link]("SignalMin : "); [Link](SignalMin);
[Link](" SignalMax : "); [Link](SignalMax);
[Link]("PeakToPeak : "); [Link](PeakToPeak);
[Link](" NoiseValue : "); [Link](NoiseValue);
switch (NoiseValue) {
91
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
92
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
delay(LightsOnTime);
break;
}
}
93
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
/*****************************************************************************
3. Έλεγχος Θερμοκρασίας – Υγρασίας Θερμοκηπίου.
******************************************************************************/
/*** Ορισμός εισόδων, εξόδων, αρχικοποιήσεις κτλ. (τρέχει μόνο μια φορά). ***/
void setup() {
pinMode(FanPin, OUTPUT); // Ορισμός ακροδέκτη ανεμιστήρα ως έξοδος.
digitalWrite(FanPin, HIGH); // Εκκίνηση με απενεργοποιημένο ανεμιστήρα.
[Link](9600); // Έναρξη σειριακής επικοινωνίας.
[Link](); // Εκκίνηση και Αρχικοποίηση βιβλιοθήκης του αισθητήρα.
[Link](16,2); // Εκκίνηση και Αρχικοποίηση οθόνης.
[Link](); // Εκκίνηση οπίσθιου φωτισμού οθόνης.
[Link](1, 0);
[Link]("-*- ELEGXOS -*-"); // Εκτύπωση αρχικού μηνύματος.
[Link](0, 1);
[Link](" THERMOKHPIOY "); // Στην οθόνη χαρακτήρων lcd.
delay(2000); // Περίμενε για 2000 millisecs.
[Link](); // Καθαρισμός χαρακτήρων αρχικού μηνύματος.
}
94
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
95
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
/*****************************************************************************
4. Αυτόματο Πότισμα Γλάστρας.
******************************************************************************/
/*** Ορισμός εισόδων, εξόδων, αρχικοποιήσεις κτλ.,(τρέχει μόνο μια φορά). ***/
void setup() {
pinMode(SensorPin,INPUT); // Ορισμός ακροδέκτη ως είσοδος.
pinMode(PumpPin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
digitalWrite(PumpPin, HIGH); // Αρχικά αφοπλισμένο.
pinMode(GreenPin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
pinMode(OrangePin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
pinMode(RedPin, OUTPUT); // Ορισμός ακροδέκτη ως έξοδος.
[Link](9600); // Έναρξη σειριακής επικοινωνίας.
[Link]("Εκκίνηση..."); // Εκτύπωση μηνύματος στην οθόνη του Η/Υ.
/* Άναψε τις λυχνίες, πάνω - κάτω 2 φορές ως ένδειξη εκκίνησης του προγράμματος. */
for(int k = 0; k < 2; k++){
for(int i = 5; i < 8; i++){
digitalWrite(i, HIGH);
96
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
delay(20);
digitalWrite(i, LOW);
delay(20);
}
for(int i = 8; i > 4; i--){
digitalWrite(i, HIGH);
delay(20);
digitalWrite(i, LOW);
delay(20);
}
}
}
/* Διάβασε το σήμα από τον αισθητήρα και μετάτρεψε το σε Σχετική Υγρασία επί τοις εκατό
(%). */
SensorSignal = analogRead(SensorPin);
MoistureValue = map(SensorSignal, 1023, 0, 0, 100);
/* Εκτύπωση σήματος του αισθητήρα και της Σχετικής Υγρασίας (%) στην οθόνη του Η/Υ. */
[Link]("SensorSignal : ");
[Link](SensorSignal);
[Link](" Moisture : ");
[Link](MoistureValue);
[Link]("%");
97
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
/* Αλλιώς αν η Σχετική Υγρασία (%) είναι μεγαλύτερη από το όριο ''Ξηρό'' ΚΑΙ ταυτόχρονα
* μικρότερη από το όριο ''Ποτισμένο'' (αν 40 < MoistureValue < 70), ενεργοποίησε την
* αντλία και άναψε την πορτοκαλί λυχνία. *********************************************/
else if ((MoistureValue > DryLimit) && (MoistureValue < WateredLimit))
{
digitalWrite(PumpPin, LOW); // Οπλίζει με LOW.
[Link]("Χρειάζεται κι αλλο. Πότιζε... Άναψε την πορτοκαλί λυχνία. ");
digitalWrite(GreenPin, LOW); // Σβήσε την πράσινη λυχνία.
digitalWrite(OrangePin, HIGH); // Άναψε την πορτοκαλί λυχνία.
digitalWrite(RedPin, LOW); // Σβήσε την κόκκινη λυχνία.
delay(WateringTime); // Περίμενε για χρόνο Watering_Time.
digitalWrite(PumpPin, HIGH); // Αφοπλίζει με HIGH.
[Link]("Σταμάτα να ποτίζεις. Περίμενε λίγο πριν μετρήσεις. ");
}
98
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
/*****************************************************************************************
5. Ρομπότ Αποφυγής Εμποδίων.
*****************************************************************************************/
const int IN1 = 13; // Ο ακροδέκτης σύνδεσης της Εισόδου 1 της Η-γέφυρας.
const int IN2 = 12; // Ο ακροδέκτης σύνδεσης της Εισόδου 2 της Η-γέφυρας.
const int SpeedPinL = 11; // Ο ακροδέκτης ελέγχου ταχύτητας αριστερού κινητήρα (ΕΝΑ).
const int IN3 = 9; // Ο ακροδέκτης σύνδεσης της Εισόδου 3 της Η-γέφυρας.
const int IN4 = 8; // Ο ακροδέκτης σύνδεσης της Εισόδου 4 της Η-γέφυρας.
const int SpeedPinR = 10; // Ο ακροδέκτης ελέγχου ταχύτητας του δεξιού κινητήρα (ΕΝΒ).
long DurationL ; // Ο χρόνος που ταξίδεψε ο παλμός από τον αριστερό αισθητήρα στο
εμπόδιο και πίσω (microsecs).
int DistanceL ; // Απόσταση εμποδίου από τον αριστερό αισθητήρα (cm).
long DurationR ; // Ο χρόνος που ταξίδεψε ο παλμός από τον δεξιό αισθητήρα στο εμπόδιο
και πίσω (microsecs).
int DistanceR ; // Απόσταση εμποδίου από τον δεξιό αισθητήρα (cm).
/*** Ορισμός εισόδων, εξόδων, αρχικοποιήσεις κτλ.,(τρέχει μόνο μια φορά). ***/
void setup() {
99
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
/* Εκτύπωσε το μήνυμα κινδύνου και τις αποστάσεις αριστερά - δεξιά στην οθόνη του Η/Υ.
*/
[Link] ("Κίνδυνος, εμπόδιο μπροστά! Οι απόστασεις είναι :" );
[Link] (" Αριστερά: " );
[Link] ( DistanceL);
[Link] ( " cm ");
[Link] (" --- Δεξιά: " );
[Link] (DistanceR);
[Link] ( " cm ");
100
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Go_Backward();
/* Αλλιώς (αν δεν υπάρχει εμπόδιο κοντά) εκτύπωσε το παρακάτω μήνυμα οθόνη του Η/Υ. */
else
{
[Link] (" Δεν υπάρχει εμπόδιο. Πήγαινε προς τα εμπρός.");
/* Εκτέλεση Υπορουτίνας, πήγαινε προς τα εμπρός. */
Go_Forward();
}
delay(1); // Καθυστέρηση 1ms για την αύξηση της ευστάθειας του βρόχου.
}
/*** Υπορουτίνα η οποία υπολογίζει την απόσταση του εμποδίου από τον αριστερό αισθητήρα.
***/
void Read_DistanceL(){
/* Εκπομπή παλμού ηχητκού κύματος από τον αριστερό αισθητήρα. */
digitalWrite(TrigPinL, LOW);
delayMicroseconds(2);
digitalWrite(TrigPinL, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPinL, LOW);
/* Διάβασε το σήμα από τον αισθητήρα το οποίο είναι η διάρκεια (Microsecs) ενός HIGH
παλμού. */
DurationL = pulseIn(EchoPinL, HIGH);
/* Μετατροπή της χρονικής διάρκειας σε απόσταση (cm). */
DistanceL = (DurationL/2) / 29.1; // Διαίρεσε με 29.1 για cm
return DistanceL;
}
101
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
/*** Υπορουτίνα η οποία υπολογίζει την απόσταση του εμποδίου από τον δεξιό αισθητήρα.
***/
void Read_DistanceR(){
/* Εκπομπή παλμού ηχητικού κύματος από τον δεξιό αισθητήρα. */
digitalWrite(TrigPinR, LOW);
delayMicroseconds(2);
digitalWrite(TrigPinR, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPinR, LOW);
/* Διάβασε το σήμα από τον αισθητήρα το οποίο είναι η διάρκεια (Microsecs) ενός HIGH
παλμού. */
DurationR = pulseIn(EchoPinR, HIGH);
/* Μετατροπή της χρονικής διάρκειας σε απόσταση (cm). */
DistanceR = (DurationR/2) / 29.1; // Διαίρεσε με 29.1 για cm
return DistanceR;
}
102
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
103
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
104
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
1. [Link]
2. [Link]
3. [Link]
4. [Link]
5. Ζούλης Ν., Καφφετζάκης Π., Σούλτης Γ., Συστήματα Αυτοματισμών,
Τ.Ε.Ε. Β’ Τάξη 1ου κύκλου, Α’ τόμος, 2000, Εκδ. Λιβάνη
6. Μπιτζιώνη, Β. (1997). Ηλεκτρικές Μετρήσεις, Εκδ. Τζιόλα
7. Τοπαλής Φ., Χαραλαμπακης Ν., Χριστοδούλου Θ.,
Ηλεκτρολογικό Εργαστήριο, Τ.Ε.Ε. Α’ Τάξη 1ου κύκλου, 2007, Ο.Ε.Δ.Β.
8. Δημόπουλος Φ., Παγιάτης Χ., Πάγκαλος Στ., Στοιχεία Ηλεκτρολογίας, Τ.Ε.Ε.
Α’ Τάξη 1ου κύκλου, 2007, Ο.Ε.Δ.Β.
9. Πουλάκης , Ε. (2015). Προγραμματίζοντας με τον μικροελεγκτή Arduino.
Ε. Πουλάκης : Ηράκλειο.
10. Σφακιωτάκης Μ. (2015). Σημειώσεις μαθήματος “Ενσωματωμένα Συστήματα
Ελέγχου”, Δ.Π.Μ.Σ. «Προηγμένα Συστήματα Παραγωγής, Αυτοματισμού και
Ρομποτικής», Τ.Ε.Ι. Κρήτης, Ηράκλειο
11. Κατασκευή «Φασαριόμετρου» Ν. Φανουράκης, Ε. Φανουράκη,
Σάββατο 8 Απριλίου 2017, 10o Πανελλήνιο Συνέδριο Διδακτικής των Φυσικών
Επιστημών και Νέων Τεχνολογιών στην Εκπαίδευση. «ΓΕΦΥΡΩΝΟΝΤΑΣ ΤΟ
ΧΑΣΜΑ ΜΕΤΑΞΥ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΚΟΙΝΩΝΙΑΣ ΚΑΙ
ΕΚΠΑΙΔΕΥΤΙΚΗΣ ΠΡΑΞΗΣ» 7-9 Απριλίου 2017, Πανεπιστήμιο Κρήτης,
Παιδαγωγικό Τμήμα Δημοτικής Εκπαίδευσης, Εργαστήριο Διδακτικής
Θετικών Επιστημών, Πανεπιστημιούπολη Ρεθύμνου σε συνεργασία με την
Ένωση για την Εκπαίδευση στις Φυσικές Επιστήμες και την Τεχνολογία
(ΕΝΕΦΕΤ). Πρακτικά 10ου Πανελληνίου Συνεδρίου 2018, Τόμος 10, ISBN: 978-
960-86978-3-6
[11]
105
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
[[
***
106
Νικολάου Α. Φανουράκη Εκπαιδευτική Ρομποτική με τον μικροελεγκτή Arduino.
Νικολάου Α. Φανουράκη
ISBN : 978-618-00-1548-5
2019
107