Τετάρτη 21 Ιανουαρίου 2026

Μάθημα 6 - Αισθητήρες και Οθόνες

 

 

β1: Η ενότητα ολοκληρώθηκε

β2: Η ενότητα ολοκληρώθηκε

Στόχοι μαθήματος:

  • Να συνδέσουμε και να προγραμματίσουμε έναν υπερηχητικό αισθητήρα (HC-SR04) για μέτρηση απόστασης και απλή ένδειξη.
  • Να εισαγάγουμε και να ελέγξουμε μια οθόνη LCD 16x2 ως συσκευή εξόδου για να εμφανίσουμε πληροφορίες.

 

Τα project που δημιουργήσαμε στο Tinkercad:

Project 1: Την πρώτη ώρα χρησιμοποιήσαμε τον αισθητήρα απόστασης HC - SR04 μαζί με ένα active buzzer, ώστε να προσομοιώσουμε τον αισθητήρα παρκαρίσματος σε ένα αυτοκίνητο. Συγκεκριμένα, ο αισθητήρας απόστασης ήταν συνδεδεμένος με το pin Trig στο pin 9 του μικροεπεξεργαστή και το pin Echo στο pin 8. Ο active buzzer ήταν συνδεδεμένος στο pin 12. Ο κώδικας που χρησιμοποιήθηκε έκανε το κύκλωμα να λειτουργεί ως εξής: αν ο αισθητήρας αντιλαμβανόταν απόσταση μεγαλύτερη από 50 εκατοστά, τότε δεν ενεργοποιούνταν ο buzzer. Όταν η απόσταση ήταν μεταξύ των 10 και των 50 εκατοστών, ο buzzer ενεργοποιούνταν, βγάζοντας συνεχόμενα "μπιπ". Ο χρόνος από το ένα "μπιπ" ως το επόμενο γινόταν μικρότερος, όσο μικρότερη γινόταν η απόσταση. Τέλος, όταν η απόσταση γινόταν μικρότερη από 10 εκατοστά, ο buzzer έβγαζε συνεχόμενο προειδοποιητικό ήχο.  

 Εδώ θα βρείτε το project 1 που κάναμε στην τάξη

Η αλήθεια είναι ότι το στοιχείο piezo του Tinkercad δεν αποδίδει πλήρως τη λειτουργικότητα του κυκλώματος που φτιάξαμε στην τάξη, αλλά δεν μπορεί να γίνει κάτι άλλο, αφού το Tinkercad αυτόν έχει. Το παραπάνω link σας πηγαίνει στο αρχείο του Tinkercad, στο οποίο φαίνεται το κύκλωμα και ο κώδικας που το προγραμμάτισε. Μπορείτε να επέμβετε στο παραπάνω αρχείο, αν θέλετε. Δεν θα το συνιστούσα, ώστε να δουν όλοι το ίδιο αποτέλεσμα. Ωστόσο αν κάνετε αλλαγές φροντίστε να τις αναιρέσετε μετά. 

Project 2: 

Εδώ θα βρείτε το project 2 που κάναμε στην τάξη

Η οθόνη είναι lcd 16x2 με I2C. Αν δείτε την αρχή του κώδικα αναφέρεται το "lcd(0x27)". Αυτή η ρύθμιση είναι σημαντική. Φροντίστε πατώντας πάνω στην οθόνη στο Tinkercad να έχετε αυτή τη ρύθμιση, για να λειτουργήσουν όλα σωστά. Θα δείτε ότι το κείμενο που εμφανίζεται είναι το "Hello!", το οποίο μετά σέρνεται προς τα αριστερά κι εξαφανίζεται. Αυτή η κίνηση του μηνύματος δεν χρησιμοποιήθηκε στο project της τάξης, αλλά το πρόσθεσα γιατί μου άρεσε και ήθελα να σας δείξω κάποιες από τις δυνατότητες προβολής κειμένου στην lcd οθόνη.   

Επισημάνσεις μαθήματος 

1. Ο αισθητήρας HC-SR04 είναι ένας αισθητήρας απόστασης, ο οποίος λειτουργεί χρησιμοποιώντας ένα τύπο ήχων που ονομάζονται υπέρηχοι και δεν γίνονται αντιληπτοί από το ανθρώπινο αυτί. Συγκεκριμένα, στέλνει ένα πακέτο υπερήχων και υπολογίζει την απόσταση από το χρόνο που χρειάζεται ο ήχος να επιστρέψει, αφού ανακλαστεί από ένα αντικείμενο. Στην μπροστινή του πλευρά διαθέτει δύο κυκλικά μέρη (το ένα είναι ο πομπός και το άλλο ο δέκτης), όπως φαίνεται στην παρακάτω εικόνα. Διαθέτει τέσσερις ακροδέκτες (VCC, GND, Trig και Echo) οι οποίοι έχουν συγκεκριμένη λειτουργία και πολικότητα, επομένως έχει σημασία πώς θα συνδεθούν. 
2. Ο τρόπος με τον οποίο συνδέουμε σε ένα κύκλωμα τον αισθητήρα απόστασης φαίνεται στην παρακάτω εικόνα. 

Το αριστερό ποδαράκι (Vcc) συνδέεται στο pin των 5V, όπως δείχνει το κόκκινο καλώδιο, το δεύτερο κατά σειρά (Trig) συνδέεται με κάποιο από τα pin 2 - 12, όπως και το τρίτο (Echo) (δείτε το πράσινο και το κίτρινο καλώδιο). Τέλος, το δεξί ποδαράκι (GND) συνδέεται με το pin GND, όπως δείχνει το μαύρο καλώδιο.
 
3. Ο αισθητήρας απόστασης HC-SR04 διαθέτει δύο βασικούς ψηφιακούς ακροδέκτες: τον Trig (Trigger - Σκανδάλη) και τον Echo (Ηχώ). Στο κύκλωμά μας, ο Trig συνδέεται σε μία ψηφιακή θύρα εξόδου (π.χ. pin 2) και ο Echo σε μία άλλη ψηφιακή θύρα εισόδου (π.χ. pin 3) του Arduino.
  1. Αποστολή παλμού: Ο μικροελεγκτής (π.χ. Arduino) στέλνει έναν σύντομο ηλεκτρικό σήμα στον ακροδέκτη Trig. Αυτό το σήμα παλμός λειτουργεί ως εντολή για τον αισθητήρα να εκπέμψει ένα πακέτο υπερήχων (8 ηχητικοί παλμών στα 40.000Hz).

  2. Λήψη ανταπόκρισης: Μόλις ο αισθητήρας εντοπίσει τον ανακλώμενο ήχο (ηχώ), ο ακροδέκτης Echo παράγει ένα ηλεκτρικό σήμα, του οποίου η διάρκεια είναι ανάλογη με τον χρόνο όπου το πακέτο των υπέρηχων ταξίδεψε από τον αισθητήρα ως το εμπόδιο και πίσω. Δηλαδή, η θύρα Echo παραμένει σε κατάσταση HIGH για όσο χρονικό διάστημα ταξίδεψε ο υπέρηχος.

  3. Μετατροπή σε απόσταση: Ο μικροελεγκτής μετράει τη διάρκεια (σε μικροδευτερόλεπτα) αυτού του ηλεκτρικού σήματος από τον Echo και, γνωρίζοντας την ταχύτητα του ήχου στον αέρα (περίπου 343 m/s), υπολογίζει την απόσταση από τον τύπο:
    Απόσταση = (Διάρκεια παλμού * Ταχύτητα ήχου) / 2
    (Η διαίρεση με το 2 γίνεται γιατί ο ήχος διανύει τη διαδρομή πηγή-αντικείμενο-πηγή, δηλαδή τη διπλή απόσταση).

Η υπολογισμένη απόσταση αυτή, μπορεί στη συνέχεια να χρησιμοποιηθεί από τον μικροελεγκτή για να ελέγξει κάποιο άλλο στοιχείο του κυκλώματος, όπως να ανάψει ένα LED όταν ένα αντικείμενο είναι πολύ κοντά, να ενεργοποιήσει έναν βομβητή, να ελέγξει την ταχύτητα ενός κινητήρα, κ.λπ.

 
4. Φαντάσου μια μικρή οθόνη σαν αυτές στα παλιά ψηφιακά ραδιόφωνα, που μπορεί να σου γράψει μηνύματα. Αυτή η οθόνη έχει 2 γραμμές και σε κάθε γραμμή χωράνε 16 γράμματα ή αριθμοί (γι' αυτό λέγεται 16x2). Τη χρησιμοποιούμε για να μας δείξει πράγματα που μετράει το Arduino, όπως η απόσταση από ένα αντικείμενο, η θερμοκρασία ή απλά ένα "Γεια σου!". Στις δραστηριότητες στο σχολείο θα χρησιμοποιήσουμε την οθόνη LCD 16x2 με το ειδικό στοιχείο IC2, το οποίο είναι συνδεδεμένο πάνω της, όπως φαίνεται στην παρακάτω εικόνα. Ωστόσο δεν έχουν όλες οι LCD οθόνες το στοιχείο IC2. 

5.
 Η οθόνη LCD με το στοιχείο IC2 ενσωματωμένο φαίνεται στην παρακάτω εικόνα, στην οποία έχουν σημειωθεί τα 4 pin που έχει το στοιχείο IC2, μέσω των οποίων θα συνδεθεί η οθόνη στο μικροεπεξεργαστή. 
Το στοιχείο IC2 λειτουργεί σαν μικρός διερμηνέας. Εμείς λέμε στο μικροεπεξεργαστή να στείλει το μήνυμα (π.χ., "Καλημέρα") μέσω δύο καλωδίων, και αυτός ο "διερμηνέας" το μεταφράζει σε γλώσσα που καταλαβαίνει η οθόνη. 
Τα υπερ του είναι η εξοικονόμηση θυρών στο μικροεπεξεργαστή και η πολύ εύκολη σύνδεση, καθώς απαιτούνται μόνο 4 καλώδια. Θα δείτε παρακάτω την εναλλακτική πρόταση σύνδεσης της οθόνης χωρίς το στοιχείο IC2 στο μικροεπεξεργαστή και θα καταλάβετε τι σημαίνει ευκολότερη σύνδεση. Επιπλέον, μπορείς να έχεις δύο τέτοιες οθόνες στο ίδιο κύκλωμα χωρίς να μπερδευτούν, γιατί η κάθε μία μπορεί να πάρει ένα διαφορετικό "όνομα" (διεύθυνση).
Ο τρόπος σύνδεσης της οθόνης μέσω του IC2 στο μικροεπεξεργαστή είναι ο εξής: το pin GND στο GND του μικροεπεξεργαστή, το pin Vcc στο pin 5V, το pin SDA πάντα στο pin A4 και τέλος το pin SCL πάντα στο pin A5. 
 
6. Στο περιβάλλον του Tinkercad η αντίστοιχη LCD 16x2 οθόνη με IC2 θα βρεθεί όπως δείχνει η παρακάτω εικόνα. Αρχικά στο menu "Components" επιλέγετε το "All" και στο μενού με τα ηλεκτρικά στοιχεία που εμφανίζεται θα βρείτε στην κατηγορία "Output" την οθόνη LCD 16x2 (I2C). 
Αν κάνετε κλικ πάνω στην οθόνη LCD στο Tinkercad θα εμφανιστεί η καρτέλα με τα χαρακτηριστικά της. Φροντίστε τα χαρακτηριστικά να είναι όπως φαίνονται στην παρακάτω εικόνα. Στην καρτέλα "Type" φροντίστε να είναι επιλεγμένο το "MCP23008-based" και στην καρτέλα "Address" το "39 (0x27). 
Προσοχή! Αυτά τα χαρακτηριστικά καλό είναι να τα δηλώσετε στο ΑΙ κατά τη δημιουργία του κώδικα.  

Η οθόνη LED με I2C στο Tinkercad φαίνεται στην παρακάτω εικόνα και μάλιστα με την κατάλληλη σύνδεση στο μικροεπεξεργαστή. 
    

7. Αν κάνετε κάποιο κύκλωμα με πραγματικά υλικά, τότε ο προγραμματισμός της οθόνης LCD με το στοιχείο I2C μέσω του Arduino Ide απαιτεί την εγκατάσταση μιας βοηθητικής βιβλιοθήκης στο Ide, η οποία ονομάζεται "LiquidCrystal_I2C". 
Για να την εγκαταστήσετε στο Arduino Ide κάνετε τα βήματα που δείχνουν οι παρακάτω εικόνες: στο Ide επιλέγουμε το Sketch, μετά το Include Library και τέλος το Manage Libraries. Στην επόμενη καρτέλα που θα βγει γράφεται τη φράση "LiquidCrystal_I2C" και πατάτε "Install". Είστε έτοιμοι! 

  
 
8. Όπως προείπαμε δεν έχουν όλες οι LED οθόνες το στοιχείο I2C, αξίζει να δούμε πώς συνδέεται μια LED οθόνη 16x2 χωρίς το συγκεκριμένο στοιχείο. Η αλήθεια είναι ότι σε αυτή την περίπτωση η σύνδεση της οθόνης με το μικροεπεξεργαστή είναι πιο σύνθετη. 
Οι βασικοί ακροδέκτες που χρησιμοποιούμε έχουν σημειωθεί στην παρακάτω εικόνα, παρόλο που συνήθως δεν χρησιμοποιούμε και τα 16 pin που εικονίζονται. 

Η σύνδεση είναι η εξής: 
GND -> στο pin GND
VDD -> στο pin 5V
V0 -> συνδέεται με το μεσαίο pin ενός ποτενσιόμετρου ή με το GND. Βοηθά στη ρύθμιση της αντίθεσης (contrast) της οθόνης 
RS -> στο pin 12 
RW -> GND 
E -> pin 11
D0, D1, D2, D3 -> δεν συνδέονται σε κάποιο pin
D4 -> pin 5
D5 -> pin 4
D6 -> pin 3
D7 -> pin 2
BLA -> pin 5V μέσω αντιστάτη των 220Ω
BLK -> pin GND 
 

Η παραπάνω σύνδεση που όπως βλέπετε είναι πιο πολύπλοκη από αυτή με τη χρήση του στοιχείο I2C φαίνεται στο παρακάτω link στο Tinkercad:

Η οθόνη LCD 16x2 (χωρίς το στοιχείο I2C) στο Tinkercad 

Προσοχή! Στην παραπάνω προσομοίωση περιστρέψτε το ποτενσιόμετρο μέχρι να φανεί το κείμενο. 
 
9. Οι βασικές διαφορές ανάμεσα στην lcd οθόνη με I2C και σε αυτή χωρίς, συνοψίζοντας, είναι οι εξής: η οθόνη lcd με I2C έχει πιο απλή σύνδεση (μόνο 4 καλώδια), δεν απαιτεί τη σύνδεση ποτενσιόμετρου, αφού η αντίθεση (contrast) ρυθμίζεται με τις εντολές του κώδικα και απαιτεί τη χρήση άλλης βιβλιοθήκης στο Arduino Ide. Συγκεκριμένα για οθόνη με I2C απαιτείται η εγκατάσταση της βιβλιοθήκης "LiquidCrystal_I2C", ενώ για οθόνη χωρίς I2C απαιτείται η εγκατάσταση της βιβλιοθήκης "LiquidCrystal". 
Οι δραστηριότητες στην τάξη και στις προτεινόμενες εργασίες έχουν στηθεί πάνω στη χρήση της lcd οθόνης με I2C.  

 
Εργασίες για το σπίτι (Tinkercad ή πραγματικό kit)
 
Εργασίες για το σπίτι για τους μαθητές που δεν μπορούν να κάνουν τις εργασίες στο Tinkercad ή με πραγματικό kit