Μετράμε την βροχόπτωση στο Pictoblox

Μετράμε την βροχόπτωση στο Pictoblox

Σε αυτό το εργαστήριο θα χρησιμοποιήσουμε τον αισθητήρα βροχόπτωσης για να δημιουργήσουμε στο Pictoblox ένα έργο που θα μας πληροφορεί για την βροχή που δέχεται ο αισθητήρας, δείχνοντας στην οθόνη τις στάλες που πέφτουν!

Ο αισθητήρας βροχόπτωσης

Ο αισθητήρας βροχόπτωσης διαθέτει μια επιφάνεια η οποία μπορεί να αντιληφθεί την ποσότητα του νερού που υπάρχει πάνω της με τον εξής τρόπο:

  • Όσο περισσότερο νερό υπάρχει στην επιφάνεια τόσο περισσότερη αγωγιμότητα έχει και λιγότερη αντίσταση στο ρεύμα.
  • Όσο λιγότερο νερό υπάρχει στην επιφάνεια τόσο μικρότερη αγωγιμότητα έχει και μεγαλύτερη αντίσταση στο ρεύμα.
Βλέπουμε πως αλλάζει η αντίσταση του αισθητήρα στο ρεύμα ανάλογα με την ποσότητα νερού που έχει. Εικόνα από τους Last minute engineers

Ο αισθητήρας επιστρέφει στο Arduino μια τιμή από το 0 ως το 1023 που αντιπροσωπεύει την αντίσταση που αντιλαμβάνεται. Έτσι αν βρέχει πολύ και η αντίσταση γίνει 0 στέλνει στο Arduino το 0, ενώ αν δεν βρέχει καθόλου και η αντίσταση είναι 1023 στέλνει στο Arduino το 1023.

Αυτό σημαίνει ότι όσο πιο πολύ βρέχει τόσο μικρότερη γίνεται η τιμή του αισθητήρα που επιστρέφει στο Arduino.

Σύνδεση αισθητήρα με Arduino

Για να συνδέσουμε τον αισθητήρα με το Arduino θα χρειαστούμε τρία καλώδια:

  • Ένα καλώδιο για την παροχή ρεύματος 5V από την υποδοχή VCC του αισθητήρα στην υποδοχή 5V του Arduino. Συνήθως βάζουμε κόκκινα καλώδια για αυτές τις συνδέσεις.
  • Ένα καλώδιο για την γείωση ώστε να κλείσει το κύκλωμα, από την υποδοχή GND του αισθητήρα στην υποδοχή GND του Arduino. Συνήθως βάζουμε μαύρα ή σκούρα καφέ καλώδια για αυτές τις συνδέσεις.
  • Ένα καλώδιο για την μεταφορά δεδομένων, από την υποδοχή A0 του αισθητήρα στην υποδοχή Α0 του Arduino.
Πως συνδέουμε τον αισθητήρα με το Arduino

Σύνδεση Arduino με Pictoblox

Πριν ξεκινήσουμε να γράφουμε το πρόγραμμα μας θα συνδέσουμε πρώτα το Arduino με το Pictoblox και μετά θα κάνουμε upload firmware αφού θα δουλέψουμε σε κατάσταση Stage. Αν δεν θυμάστε πως γίνεται δείτε το αντίστοιχο εργαστήριο.

Σκηνή και αντικείμενα

Θα προσθέσουμε ένα σκηνικό από εξωτερικό χώρο ενώ θα κρατήσουμε και τον χαρακτήρα Tobi ο οποίος θα αναλάβει να σχολιάζει τα αποτελέσματα του αισθητήρα. Θα χρειαστούμε όμως να φτιάξουμε και ένα νέο αντικείμενο που θα είναι η στάλα της βροχής. Δυστυχώς δεν έχει έτοιμο χαρακτήρα στο Pictoblox και θα πρέπει να το ζωγραφίσουμε. Για να πετύχουμε την στάλα της βροχής θα χρησιμοποιήσουμε έναν τροποποιημένο κύκλο ο οποίος θα έχει χρώμα γέμισης με διαβάθμιση μπλε-διάφανο, όπως φαίνεται στο παρακάτω βίντεο.

Η διαδικασία για να ζωγραφίσουμε την στάλα βροχής

Προγραμματισμός Tobi

Ο Tobi θα αναλαμβάνει να διαβάζει την τιμή του αισθητήρα και να σχολιάζει το αποτέλεσμα. Αρχικά θα χρειαστούμε μια μεταβλητή που θα κρατάει το πόσο βροχή υπάρχει.

Ονομάζουμε την μεταβλητή βροχή και προσέχουμε να είναι τύπου Number, δηλαδή αριθμός

Μπορούμε λοιπόν να πούμε στον Tobi να αποθηκεύει συνέχεια την τιμή που διαβάζει από τον αισθητήρα βροχής στην μεταβλητή που φτιάξαμε. Θα χρειαστούμε την εντολή “read analog sensor” από την κατηγορία sensors, επιλέγοντας ως είδος αισθητήρα το raindrop και ως θέση την A0 στην οποία έχουμε συνδέσει το καλώδιο του αισθητήρα.

Η μεταβλητή παίρνει την τιμή του αισθητήρα

Μετατροπή της τιμής σε κάτι πιο κατανοητό

Ο αισθητήρας βροχής όπως είδαμε παραπάνω παίρνει τιμές από 0 ως 1023 μόνο που το 0 σημαίνει περισσότερη βροχή, ενώ όσο αυξάνει ο αριθμός σημαίνει ότι η βροχή μειώνεται. Αυτές οι τιμές και ο τρόπος που αλλάζουν δεν μας βοηθάν να συνεχίσουμε το πρόγραμμα μας με άνεση και είναι καλό πρώτα να τις μετατρέψουμε ώστε να έχουν περισσότερο νόημα. Το ιδανικό θα ήταν για εμάς όταν δεν έχει καθόλου βροχή να είναι η τιμή του αισθητήρα 0, ενώ όσο περισσότερο βροχή πέφτει η τιμή του να ανεβαίνει αντί να κατεβαίνει. Επίσης θα ήταν καλύτερα η μέγιστη τιμή να είναι για παράδειγμα στο 100 και όχι στο 1023, αφού είμαστε πιο συνηθισμένοι σε τέτοιες κλίμακες.

Πως όμως θα πετύχουμε αυτή την μετατροπή; Υπάρχει μια πολύ ενδιαφέρουσα εντολή στην κατηγορία Arduino η οποία λέγεται map.

Στο πρώτο κενό της map βάζουμε την τιμή του αισθητήρα. Το επόμενο κενό είναι η τιμή του αισθητήρα για την χαμηλότερη τιμή βροχής (1023), και μετά ακολουθεί η τιμή του αισθητήρα για την περισσότερη βροχή (0). Τα επόμενα δυο κενά είναι εκεί που θέλουμε να φτάσουμε με την μετατροπή. Αρχικά δηλώνουμε ποιος αριθμός θα είναι για την λιγότερη βροχή (0) και ποιος για την περισσότερη (100)

Σχολιασμός της βροχής από τον Tobi

Τώρα έχουμε πετύχει να παίρνουμε μια τιμή από τον αισθητήρα που θα είναι από το 0-100 ανάλογα με το ποσοστό της βροχής που πέφτει. Μπορούμε λοιπόν να φτιάξουμε χρησιμοποιώντας τις δομές Εαν…Αλλιώς ένα σενάριο ώστε ο Tobi να μας ειδοποιεί για το αν υπάρχει καταιγίδα (βροχή>70), ή απλά βροχή (μεταξύ 20-70), ή αν ψιχαλίζει (5-20) ή αν δεν βρέχει καθόλου (βροχή < 5).

Ανάλογα με το ποσοστό της βροχής έχουμε 4 διαφορετικές περιπτώσεις

Στάλες βροχής

Και τώρα μπορούμε να δείξουμε το ποσοστό της βροχής με πιο εντυπωσιακό τρόπο, από απλό κείμενο. Αφού έχουμε φτιάξει το αντικείμενο της στάλας βροχής, μπορούμε να πούμε στον tobi να δημιουργεί τόσες στάλες, όσο είναι και η τιμή του αισθητήρα!

Χρησιμοποιούμε την εντολή δημιουργίας κλώνου για να φτιάξουμε πολλά αντίγραφα της στάλας βροχής

Ωραία δημιουργούμε τώρα πολλές στάλες. Αλλά αυτές δεν πρέπει να κινούνται; Να πέφτουν στο έδαφος από ψηλά; Πάμε στο αντικείμενο της στάλας να γράψουμε τώρα εκεί το επόμενο σενάριο.

Θα χρησιμοποιήσουμε την εντολή “Όταν ξεκινήσω ως κλώνος” και θα ζητήσουμε από τις στάλες να ξεκινάν από ψηλά στην οθόνη (y περίπου στο 170) και σε τυχαία θέση x από την μια άκρη στην άλλη (από -240 ως 240). Μετά θα πέφτουν διαρκώς κάτω (μειώνουμε το y κατά 5) μέχρι να ακουμπήσουν το όριο της οθόνης, οπότε και οι κλώνοι θα διαγράφονται.

Το σενάριο για την στάλα βροχής

Το τελικό αποτέλεσμα

Μπορούμε να δοκιμάσουμε το πρόγραμμα μας χρησιμοποιώντας ένα σταγονόμετρο για να προσθέτουμε υγρασία στον αισθητήρα και ένα χαρτομάντηλο για να τον στεγνώνουμε, παρατηρώντας κάθε φορά το αποτέλεσμα στην οθόνη.

Ανάλογα με την υγρασία του αισθητήρα έχουμε την τεχνητή βροχή στο πρόγραμμα μας.

Επέκταση με την χρήση οθόνης LCD

Αφού ολοκληρώσαμε το πρόγραμμα και το αποθηκεύσαμε, πάμε τώρα να επεκτείνουμε το σύστημα μας, ώστε να λειτουργεί χωρίς τον υπολογιστή με την βοήθεια μιας οθόνης LCD. Τώρα αντί να χρειαζόμαστε τον υπολογιστή για να βλέπουμε την βροχώπτωση θα χρησιμοποιήσουμε μια μικρή οθόνη που θα την συνδέσουμε απευθείας στο Arduino.

Η οθόνη LCD 16×2

Πρόκειται για μια μικρή οθόνη υγρών κρυστάλλων που έχει 2 σειρές και η κάθε σειρά μπορεί να έχει μέχρι 16 χαρακτήρες. Είναι αρκετά φθηνές (περίπου στα 8 ευρώ με τιμές 2022) και τις χρησιμοποιούμε για να δείξουμε κάποια σύντομα μηνύματα. Δυστυχώς δέχεται μόνο αγγλικούς χαρακτήρες, οπότε θα πρέπει να γράφουμε τα μηνύματα μας στα αγγλικά.

Μια οθόνη LCD 16X2 με την μονάδα σύνδεσης στο πίσω μέρος της

Η οθόνη που διαθέτουμε στο εργαστήριο μας έχει στο πίσω μέρος της και την μονάδα σύνδεσης με το Arduino. Η μονάδα έχει 4 υποδοχές, μία για ρεύμα, μία για γείωση και 2 υποδοχές που έχουν όνομα SDA και SCL. Αυτός ο τρόπος σύνδεσης ονομάζεται I2C και το SDA είναι για δέχεται τα δεδομένα, ενώ το SCL είναι το χρονόμετρο. Στο Arduino Uno η υποδοχή SDA βρίσκεται στο Α4 ενώ η SCL στο Α5.

Σύνδεση Arduino με Breadboard

Επειδή τώρα θα έχουμε 2 συσκευές συνδεδεμένες στο Arduino (αισθητήρας και οθόνη), όπου και οι 2 χρειάζονται 5V και γείωση θα χρησιμοποιήσουμε και ένα Breadboard για να κάνουμε τις συνδέσεις των καλωδίων. Μπορείτε να δείτε περισσότερα για το πως χρησιμοποιούμε τα breadboard στο αντίστοιχο εργαστήριο.

Για να δώσουμε ρεύμα και γείωση στο Breaboard συνδέουμε τα 5V με την κόκκινη γραμμή και την γείωση (GND) με την μπλε γραμμή. Τώρα όλη η κόκκινη γραμμή έχει 5V και όλη η μπλε είναι συνδεδεμένη με την γείωση. Επίσης για τον αισθητήρα βροχόπτωσης θα χρειαστούμε την υποδοχή Α0, έτσι φέρνουμε ένα πράσινο καλώδιο από αυτήν μέχρι το Breadboard. Τέλος επειδή θα χρειαστούμε τις υποδοχές Α4 και Α5 για την οθόνη τραβάμε άλλα 2 καλώδια (μπλε και πορτοκαλί αντίστοιχα)

Σύνδεση αισθητήρα με Breadboard

Τώρα θα συνδέσουμε τον αισθητήρα βροχόπτωσης στο Breadboard και όχι απευθείας στο Arduino.

Η γείωση του αισθητήρα (GND) θα συνδεθεί με την μπλε γραμμή που έχει την γείωση του Arduino. Το VCC του αισθητήρα θα συνδεθεί με την κόκκινη γραμμή που έχει τα 5V του Arduino. Τέλος η υποδοχή Α0 του αισθητήρα θα συνδεθεί με το πράσινο καλώδιο που έρχεται από το A0 του Arduino.

Σύνδεση οθόνης με Breadboard

Τέλος πάμε τώρα να συνδέσουμε την οθόνη με το breadboard.

Το VCC της οθόνης συνδέεται με την κόκκινη γραμμή που είναι τα 5V. Το GND της οθόνης με την μπλε γραμμή που είναι η γείωση. Το SDA το συνδέουμε με το μπλε καλώδιο που είναι το Α4 και το SCL με το πορτοκαλί καλώδιο που είναι το Α5.

Προγραμματισμός

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

Αρχικά θα πρέπει να αλλάξουμε κατάσταση και από stage να πάμε στην κατάσταση upload αφού τώρα θα στέλνουμε το πρόγραμμα στο Arduino ώστε να τρέχει από εκεί και όχι από τον υπολογιστή. Μπορείτε να δείτε πιο αναλυτικά πληροφορίες για τις 2 καταστάσεις στο αντίστοιχο εργαστήριο.

Αλλάζουμε σε κατάσταση upload

Στο πρόγραμμα μας θα πρέπει να γίνει η αρχικοποίηση της οθόνης έξω από το για πάντα. Μετά μέσα στο για πάντα θα πρέπει πρώτα να καθαρίζουμε την οθόνη, μετά στην πρώτη γραμμή να γράφουμε το ποσοστό της βροχής, ενώ στη δεύτερη γραμμή να σχολιάζουμε.

Το τελικό πρόγραμμα

Για να στείλουμε το πρόγραμμα μας στο Arduino πατάμε τώρα το πλήκτρο Upload code και περιμένουμε να δούμε τι θα μας πει η οθόνη!

1 Σχόλιο

Αφήστε μια απάντηση