Σε αυτό το εργαστήριο θα χρησιμοποιήσουμε τον αισθητήρα βροχόπτωσης για να δημιουργήσουμε στο Pictoblox ένα έργο που θα μας πληροφορεί για την βροχή που δέχεται ο αισθητήρας, δείχνοντας στην οθόνη τις στάλες που πέφτουν!
Ο αισθητήρας βροχόπτωσης
Ο αισθητήρας βροχόπτωσης διαθέτει μια επιφάνεια η οποία μπορεί να αντιληφθεί την ποσότητα του νερού που υπάρχει πάνω της με τον εξής τρόπο:
- Όσο περισσότερο νερό υπάρχει στην επιφάνεια τόσο περισσότερη αγωγιμότητα έχει και λιγότερη αντίσταση στο ρεύμα.
- Όσο λιγότερο νερό υπάρχει στην επιφάνεια τόσο μικρότερη αγωγιμότητα έχει και μεγαλύτερη αντίσταση στο ρεύμα.
Ο αισθητήρας επιστρέφει στο Arduino μια τιμή από το 0 ως το 1023 που αντιπροσωπεύει την αντίσταση που αντιλαμβάνεται. Έτσι αν βρέχει πολύ και η αντίσταση γίνει 0 στέλνει στο Arduino το 0, ενώ αν δεν βρέχει καθόλου και η αντίσταση είναι 1023 στέλνει στο Arduino το 1023.
Αυτό σημαίνει ότι όσο πιο πολύ βρέχει τόσο μικρότερη γίνεται η τιμή του αισθητήρα που επιστρέφει στο Arduino.
Σύνδεση αισθητήρα με Arduino
Για να συνδέσουμε τον αισθητήρα με το Arduino θα χρειαστούμε τρία καλώδια:
- Ένα καλώδιο για την παροχή ρεύματος 5V από την υποδοχή VCC του αισθητήρα στην υποδοχή 5V του Arduino. Συνήθως βάζουμε κόκκινα καλώδια για αυτές τις συνδέσεις.
- Ένα καλώδιο για την γείωση ώστε να κλείσει το κύκλωμα, από την υποδοχή GND του αισθητήρα στην υποδοχή GND του Arduino. Συνήθως βάζουμε μαύρα ή σκούρα καφέ καλώδια για αυτές τις συνδέσεις.
- Ένα καλώδιο για την μεταφορά δεδομένων, από την υποδοχή A0 του αισθητήρα στην υποδοχή Α0 του Arduino.
Σύνδεση Arduino με Pictoblox
Πριν ξεκινήσουμε να γράφουμε το πρόγραμμα μας θα συνδέσουμε πρώτα το Arduino με το Pictoblox και μετά θα κάνουμε upload firmware αφού θα δουλέψουμε σε κατάσταση Stage. Αν δεν θυμάστε πως γίνεται δείτε το αντίστοιχο εργαστήριο.
Σκηνή και αντικείμενα
Θα προσθέσουμε ένα σκηνικό από εξωτερικό χώρο ενώ θα κρατήσουμε και τον χαρακτήρα Tobi ο οποίος θα αναλάβει να σχολιάζει τα αποτελέσματα του αισθητήρα. Θα χρειαστούμε όμως να φτιάξουμε και ένα νέο αντικείμενο που θα είναι η στάλα της βροχής. Δυστυχώς δεν έχει έτοιμο χαρακτήρα στο Pictoblox και θα πρέπει να το ζωγραφίσουμε. Για να πετύχουμε την στάλα της βροχής θα χρησιμοποιήσουμε έναν τροποποιημένο κύκλο ο οποίος θα έχει χρώμα γέμισης με διαβάθμιση μπλε-διάφανο, όπως φαίνεται στο παρακάτω βίντεο.
Προγραμματισμός Tobi
Ο Tobi θα αναλαμβάνει να διαβάζει την τιμή του αισθητήρα και να σχολιάζει το αποτέλεσμα. Αρχικά θα χρειαστούμε μια μεταβλητή που θα κρατάει το πόσο βροχή υπάρχει.
Μπορούμε λοιπόν να πούμε στον Tobi να αποθηκεύει συνέχεια την τιμή που διαβάζει από τον αισθητήρα βροχής στην μεταβλητή που φτιάξαμε. Θα χρειαστούμε την εντολή “read analog sensor” από την κατηγορία sensors, επιλέγοντας ως είδος αισθητήρα το raindrop και ως θέση την A0 στην οποία έχουμε συνδέσει το καλώδιο του αισθητήρα.
Μετατροπή της τιμής σε κάτι πιο κατανοητό
Ο αισθητήρας βροχής όπως είδαμε παραπάνω παίρνει τιμές από 0 ως 1023 μόνο που το 0 σημαίνει περισσότερη βροχή, ενώ όσο αυξάνει ο αριθμός σημαίνει ότι η βροχή μειώνεται. Αυτές οι τιμές και ο τρόπος που αλλάζουν δεν μας βοηθάν να συνεχίσουμε το πρόγραμμα μας με άνεση και είναι καλό πρώτα να τις μετατρέψουμε ώστε να έχουν περισσότερο νόημα. Το ιδανικό θα ήταν για εμάς όταν δεν έχει καθόλου βροχή να είναι η τιμή του αισθητήρα 0, ενώ όσο περισσότερο βροχή πέφτει η τιμή του να ανεβαίνει αντί να κατεβαίνει. Επίσης θα ήταν καλύτερα η μέγιστη τιμή να είναι για παράδειγμα στο 100 και όχι στο 1023, αφού είμαστε πιο συνηθισμένοι σε τέτοιες κλίμακες.
Πως όμως θα πετύχουμε αυτή την μετατροπή; Υπάρχει μια πολύ ενδιαφέρουσα εντολή στην κατηγορία Arduino η οποία λέγεται map.
Σχολιασμός της βροχής από τον Tobi
Τώρα έχουμε πετύχει να παίρνουμε μια τιμή από τον αισθητήρα που θα είναι από το 0-100 ανάλογα με το ποσοστό της βροχής που πέφτει. Μπορούμε λοιπόν να φτιάξουμε χρησιμοποιώντας τις δομές Εαν…Αλλιώς ένα σενάριο ώστε ο Tobi να μας ειδοποιεί για το αν υπάρχει καταιγίδα (βροχή>70), ή απλά βροχή (μεταξύ 20-70), ή αν ψιχαλίζει (5-20) ή αν δεν βρέχει καθόλου (βροχή < 5).
Στάλες βροχής
Και τώρα μπορούμε να δείξουμε το ποσοστό της βροχής με πιο εντυπωσιακό τρόπο, από απλό κείμενο. Αφού έχουμε φτιάξει το αντικείμενο της στάλας βροχής, μπορούμε να πούμε στον tobi να δημιουργεί τόσες στάλες, όσο είναι και η τιμή του αισθητήρα!
Ωραία δημιουργούμε τώρα πολλές στάλες. Αλλά αυτές δεν πρέπει να κινούνται; Να πέφτουν στο έδαφος από ψηλά; Πάμε στο αντικείμενο της στάλας να γράψουμε τώρα εκεί το επόμενο σενάριο.
Θα χρησιμοποιήσουμε την εντολή “Όταν ξεκινήσω ως κλώνος” και θα ζητήσουμε από τις στάλες να ξεκινάν από ψηλά στην οθόνη (y περίπου στο 170) και σε τυχαία θέση x από την μια άκρη στην άλλη (από -240 ως 240). Μετά θα πέφτουν διαρκώς κάτω (μειώνουμε το y κατά 5) μέχρι να ακουμπήσουν το όριο της οθόνης, οπότε και οι κλώνοι θα διαγράφονται.
Το τελικό αποτέλεσμα
Μπορούμε να δοκιμάσουμε το πρόγραμμα μας χρησιμοποιώντας ένα σταγονόμετρο για να προσθέτουμε υγρασία στον αισθητήρα και ένα χαρτομάντηλο για να τον στεγνώνουμε, παρατηρώντας κάθε φορά το αποτέλεσμα στην οθόνη.
Επέκταση με την χρήση οθόνης LCD
Αφού ολοκληρώσαμε το πρόγραμμα και το αποθηκεύσαμε, πάμε τώρα να επεκτείνουμε το σύστημα μας, ώστε να λειτουργεί χωρίς τον υπολογιστή με την βοήθεια μιας οθόνης LCD. Τώρα αντί να χρειαζόμαστε τον υπολογιστή για να βλέπουμε την βροχώπτωση θα χρησιμοποιήσουμε μια μικρή οθόνη που θα την συνδέσουμε απευθείας στο Arduino.
Η οθόνη LCD 16×2
Πρόκειται για μια μικρή οθόνη υγρών κρυστάλλων που έχει 2 σειρές και η κάθε σειρά μπορεί να έχει μέχρι 16 χαρακτήρες. Είναι αρκετά φθηνές (περίπου στα 8 ευρώ με τιμές 2022) και τις χρησιμοποιούμε για να δείξουμε κάποια σύντομα μηνύματα. Δυστυχώς δέχεται μόνο αγγλικούς χαρακτήρες, οπότε θα πρέπει να γράφουμε τα μηνύματα μας στα αγγλικά.
Η οθόνη που διαθέτουμε στο εργαστήριο μας έχει στο πίσω μέρος της και την μονάδα σύνδεσης με το Arduino. Η μονάδα έχει 4 υποδοχές, μία για ρεύμα, μία για γείωση και 2 υποδοχές που έχουν όνομα SDA και SCL. Αυτός ο τρόπος σύνδεσης ονομάζεται I2C και το SDA είναι για δέχεται τα δεδομένα, ενώ το SCL είναι το χρονόμετρο. Στο Arduino Uno η υποδοχή SDA βρίσκεται στο Α4 ενώ η SCL στο Α5.
Σύνδεση Arduino με Breadboard
Επειδή τώρα θα έχουμε 2 συσκευές συνδεδεμένες στο Arduino (αισθητήρας και οθόνη), όπου και οι 2 χρειάζονται 5V και γείωση θα χρησιμοποιήσουμε και ένα Breadboard για να κάνουμε τις συνδέσεις των καλωδίων. Μπορείτε να δείτε περισσότερα για το πως χρησιμοποιούμε τα breadboard στο αντίστοιχο εργαστήριο.
Σύνδεση αισθητήρα με Breadboard
Τώρα θα συνδέσουμε τον αισθητήρα βροχόπτωσης στο Breadboard και όχι απευθείας στο Arduino.
Σύνδεση οθόνης με Breadboard
Τέλος πάμε τώρα να συνδέσουμε την οθόνη με το breadboard.
Προγραμματισμός
Αφού έχουμε συνδέσει σωστά τις συσκευές μας ήρθε η ώρα να κάνουμε αλλαγές στο πρόγραμμα μας ώστε τα αποτελέσματα να πηγαίνουν στην οθόνη και όχι στον υπολογιστή.
Αρχικά θα πρέπει να αλλάξουμε κατάσταση και από stage να πάμε στην κατάσταση upload αφού τώρα θα στέλνουμε το πρόγραμμα στο Arduino ώστε να τρέχει από εκεί και όχι από τον υπολογιστή. Μπορείτε να δείτε πιο αναλυτικά πληροφορίες για τις 2 καταστάσεις στο αντίστοιχο εργαστήριο.
Στο πρόγραμμα μας θα πρέπει να γίνει η αρχικοποίηση της οθόνης έξω από το για πάντα. Μετά μέσα στο για πάντα θα πρέπει πρώτα να καθαρίζουμε την οθόνη, μετά στην πρώτη γραμμή να γράφουμε το ποσοστό της βροχής, ενώ στη δεύτερη γραμμή να σχολιάζουμε.
Για να στείλουμε το πρόγραμμα μας στο Arduino πατάμε τώρα το πλήκτρο Upload code και περιμένουμε να δούμε τι θα μας πει η οθόνη!
Pingback: 2η συνάντηση 2022-2023 – Μικροί Χάκερ