Μετρώντας τη στάθμη του νερού στο Pictoblox

Μετρώντας τη στάθμη του νερού στο Pictoblox

Σε αυτό το εργαστήριο θα χρησιμοποιήσουμε τον αισθητήρα στάθμης νερού για να δημιουργήσουμε στο Pictoblox ένα έργο που θα μας πληροφορεί με ένα ενδιαφέρον animation για το πόσο πολύ νερό υπάρχει σε ένα δοχείο.

Ο αισθητήρας στάθμης

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

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

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

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

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

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

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

Σύνδεση Arduino με Pictoblox

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

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

Για να δείξουμε την αλλαγή της στάθμης του νερού στο Pictoblox θα αξιοποιήσουμε και τον Tobi ο οποίος θέλουμε να επιπλέει με την βοήθεια μιας σανίδας πάνω στο νερό. Αρχικά θα διαγράψουμε τις ενδυμασίες που δεν χρειαζόμαστε (στην ουσία κρατάμε μόνο την πρώτη ενδυμασία). Στη συνέχεια ζωγραφίζουμε ένα ορθογώνιο στα πόδια του Tobi που θα είναι η σανίδα με την οποία θα επιπλέει. Τέλος πολύ σημαντικό είναι να αλλάξουμε το κέντρο της ενδυμασίας! Επειδή θα δώσουμε αργότερα εντολή στον Tobi να πηγαίνει εκεί που είναι η στάθμη του νερού θα πρέπει να ορίσουμε ως κέντρο της ενδυμασίας την σανίδα που έχει στα πόδια του.

Διαγράφουμε τις ενδυμασίες που δεν χρειαζόμαστε, προσθέτουμε την σανίδα και αλλάζουμε το κέντρο της ενδυμασίας

Εκτός από τον Tobi θα χρειαστούμε άλλον έναν χαρακτήρα που θα αντιπροσωπεύει το νερό στη σκηνή μας. Στην ουσία θέλουμε ένα γαλάζιο ορθογώνιο το οποίο να καλύπτει όλο το πλάτος της σκηνής (δεν μας πειράζει να βγαίνει και εκτός ορίων). Σημαντικό είναι επίσης να ορίσουμε ως κέντρο της ενδυμασίας το πάνω μέρος του νερού! Έτσι όταν δίνουμε οδηγίες στον Tobi να πηγαίνει στο νερό, θα ακουμπάει το πάνω μέρος του.

Δημιουργούμε τον χαρακτήρα του νερού

Προγραμματισμός νερού

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

Ονομάζουμε την μεταβλητή “Στάθμη” και την κάνουμε αριθμητική

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

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

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

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

Το ύψος του χαρακτήρα στην οθόνη του Pictoblox μπορούμε να το δούμε από την τιμή y. Θα πρέπει να βρούμε ποιες είναι οι δύο τιμές y που θέλουμε να έχει το νερό στην οθόνη όταν το δοχείο είναι άδειο και όταν είναι γεμάτο. Μπορούμε να μετακινήσουμε τον χαρακτήρα με το ποντίκι στην αρχική και τελική του θέση και να σημειώσουμε τις τιμές του y.

Άρα τώρα ξέρουμε ότι όταν ο αισθητήρας είναι 1023 το y του νερού στο Pictoblox πρέπει να είναι -160 και όσο η τιμή του αισθητήρα μειώνεται θα μεγαλώνει το y μέχρι να φτάσει το 50. Πως θα το πετύχουμε αυτό; Υπάρχει μια πολύ ενδιαφέρουσα εντολή στην κατηγορία Arduino η οποία λέγεται map.

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

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

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

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

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

Το τελικό αποτέλεσμα καθώς γεμίζουμε το δοχείο

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

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

Η οθόνη DOT Matrix

Οι οθόνες Dot Matrix είναι συστοιχίες από led λαμπάκια. Οι πιο συνηθισμένες που κυκλοφορούν στην αγορά έχουν 64 led σε 8 σειρές και 8 στήλες. Όπως είναι εύκολα κατανοητό με ανάλυση 8×8 δεν μπορούν να συγκριθούν με τις υπόλοιπες LED και TFT οθόνες, αλλά για αναπαράσταση κειμένου και απλών γραφικών μπορούν να κάνουν ικανοποιητική δουλειά.

Led Matrix οθόνη με ενσωματωμένο τον οδηγό MAX7219

Σύνδεση Arduino με Breadboard

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

Αρχικά συνδέουμε με ένα κόκκινο καλώδιο τα 5V με την κόκκινη γραμμή του Bradboard και με ένα μαύρο καλώδιο το GND με την μπλε γραμμή του Breadboard. Μετά φέρνουμε ένα πράσινο καλώδιο από την υποδοχή Α0, το οποίο θα το χρησιμοποιήσουμε για τον αισθητήρα. Τέλος φέρνουμε άλλα τρία καλώδια: Ένα μπλε από την υποδοχή 3, ένα πορτοκαλί από την υποδοχή 5 και ένα κίτρινο από την υποδοχή 6. Σε αυτά θα συνδέσουμε την οθόνη.

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

Συνδέουμε το + του αισθητήρα με την κόκκινη γραμμή του breadboard και το με την μπλε. Τέλος συνδέουμε το S με το πράσινο καλώδιο στο breadboard.

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

Για να δώσουμε ρεύμα στην οθόνη συνδέουμε το VCC με την κόκκινη γραμμή και το GND με την μπλε στο breadboard. Μετά συνδέουμε την υποδοχή DIN με το μπλε καλώδιο που έρχεται από την υποδοχή 3 του Arduino. Επίσης συνδέουμε την υποδοχή CS με το πορτοκαλί καλώδιο που έρχεται από την υποδοχή 5 του Arduino. Τέλος συνδέουμε την υποδοχή CLK με το κίτρινο καλώδιο που έρχεται από την υποδοχή 6 του Arduino.

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

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

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

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

Πάμε τώρα να φτιάξουμε το πρόγραμμα μας.

Αρχικοποιούμε την οθόνη LED Matrix ορίζοντας τις υποδοχές στις οποίες την έχουμε συνδέσει.

Δημιουργούμε μια μεταβλητή με το όνομα στάθμη στην οποία θα αποθηκεύουμε την τιμή του αισθητήρα. Επειδή όμως ο αισθητήρας στέλνει τιμές από το 1023 (καθόλου νερό) μέχρι 0 (γεμάτο νερό) θα χρησιμοποιήσουμε την εντολή map για να μετατρέψουμε τις τιμές αυτές από 1 (καθόλου νερό) ως 8 (γεμάτο νερό). Και γιατί μέχρι 8; Γιατί η οθόνη έχει 8 σειρές, άρα όταν είναι γεμάτο το ποτήρι θα γεμίζει και η οθόνη.

Και τώρα με συνεχόμενα Εαν… τότε θα ανάβουμε τα κατάλληλα led στην οθόνη.

Θα συνεχίσουμε μέχρι και το Εαν Στάθμη =8

1 Σχόλιο

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