Περιγραφή
Με τον αισθητήρα DHT11 μετράμε την υγρασία και την θερμοκρασία της ατμόσφαιρας και τυπώνουμε τις τιμές σε οθόνη LCD I2C.
Εξαρτήματα και συνδέσεις
- Arduino Uno
- αισθητήρας DHT11
- οθόνη LCD I2C
Με τον αισθητήρα DHT11 μετράμε την υγρασία και την θερμοκρασία της ατμόσφαιρας και τυπώνουμε τις τιμές σε οθόνη LCD I2C.
Ο αισθητήρας βροχόπτωσης μπορεί να ανιχνεύει σταγόνες νερού επειδή η παρουσία των σταγόνων νερού στην επιφάνειά του έχει σαν αποτέλεσμα την μεταβολή της αντίστασής του. Συγκεκριμένα:
Ο αισθητήρας παράγει τάση εξόδου ανάλογη της αντίστασης, και έτσι, μπορούμε να προσδιορίσουμε εάν βρέχει ή όχι. Λειτουργεί με δύο τρόπους, αναλογικό ή ψηφιακό, και διαθέτει δύο εξόδους σήματος, Α0 και D0 αντίστοιχα. Εδώ ο αισθητήρας λειτουργεί με ψηφιακό τρόπο. Αρχικά, περιστρέφοντας το ποτενσιόμετρο της πλακέτας, θα καθορίσουμε την ευαισθησία του αισθητήρα, με βαθμονόμηση όπως περιγράφεται στην ανάρτηση εδώ. Ο αισθητήρας σε ψηφιακή λειτουργία δίνει στην έξοδο D0 δύο δυνατές τιμές LOW ή HIGH, που ισοδυναμούν με τις δυνατές τιμές ON ή OFF ενός διακόπτη. Στην πλακέτα του αισθητήρα, ένα ενσωματωμένο LED πληροφορεί για αυτήν την κατάσταση ON/OFF.
Όταν βρέχει, η έξοδος είναι ΟΝ, η κόκκινη λυχνία LED ανάβει και το buzzer ηχεί, διαφορετικά η πράσινη λυχνία είναι αναμμένη.
Ο αισθητήρας βροχόπτωσης μπορεί να ανιχνεύει σταγόνες νερού επειδή η παρουσία των σταγόνων νερού στην επιφάνειά του έχει σαν αποτέλεσμα την μεταβολή της αντίστασής του. Συγκεκριμένα:
Ο αισθητήρας παράγει τάση εξόδου ανάλογη της αντίστασης, και έτσι, μπορούμε να προσδιορίσουμε εάν βρέχει ή όχι. Λειτουργεί με δύο τρόπους, αναλογικό ή ψηφιακό, και διαθέτει δύο εξόδους σήματος, Α0 και D0 αντίστοιχα. Εδώ ο αισθητήρας λειτουργεί με αναλογικό τρόπο.
Όταν βρέχει, η κόκκινη λυχνία LED ανάβει, διαφορετικά η πράσινη λυχνία είναι αναμμένη.
Εξαρτήματα και συνδέσεις
Ο αισθητήρας βροχόπτωσης μπορεί να ανιχνεύει σταγόνες νερού επειδή η παρουσία των σταγόνων νερού στην επιφάνειά του έχει σαν αποτέλεσμα την μεταβολή της αντίστασής του. Συγκεκριμένα:
Λειτουργεί με δύο τρόπους, αναλογικό ή ψηφιακό, και διαθέτει δύο εξόδους σήματος, Α0 και D0 αντίστοιχα. Εδώ ο αισθητήρας λειτουργεί με ψηφιακό τρόπο.
Για να δίνει ακριβείς μετρήσεις ο αισθητήρας, συνιστάται να έχει βαθμονομηθεί. Η μονάδα (module) διαθέτει ενσωματωμένο ποτενσιόμετρο για τη βαθμονόμηση της ψηφιακής εξόδου (D0) και ένα LED. Περιστρέφοντας το κουμπί του ποτενσιόμετρου, ορίζεται ένα κατώφλι. Έτσι, όταν η ποσότητα νερού υπερβαίνει την τιμή κατωφλίου, η λυχνία LED ανάβει και η ψηφιακή έξοδος (D0) δίνει την τιμή LOW.
Για τη βαθμονόμηση του αισθητήρα, συνδέουμε με την πλακέτα Arduino ώστε να τροφοδοτείται, ψεκάζουμε με την ποσότητα νερού που θέλουμε να ανιχνεύουμε, περιστρέφουμε το ποτενσιόμετρο δεξιόστροφα, έτσι ώστε το LED να ανάψει και, στη συνέχεια, ρυθμίζουμε το ποτενσιόμετρο αριστερόστροφα, προς τα πίσω μέχρι μόλις να σβήσει το LED.
Ο αισθητήρας βροχόπτωσης μπορεί να ανιχνεύει σταγόνες νερού επειδή η παρουσία των σταγόνων νερού στην επιφάνειά του έχει σαν αποτέλεσμα την μεταβολή της αντίστασής του. Συγκεκριμένα:
Ο αισθητήρας παράγει τάση εξόδου ανάλογη της αντίστασης, και έτσι, μπορούμε να προσδιορίσουμε εάν βρέχει ή όχι. Λειτουργεί με δύο τρόπους, αναλογικό ή ψηφιακό, και διαθέτει δύο εξόδους σήματος, Α0 και D0 αντίστοιχα. Εδώ ο αισθητήρας λειτουργεί με αναλογικό τρόπο.
Στην σειριακή οθόνη εκτυπώνονται οι αναλογικές τιμές τάσης όταν η επιφάνεια είναι στεγνή και όταν έχουμε ψεκάσει με σταγόνες νερού. Αυτές οι τιμές πρέπει να είναι γνωστές όταν θέλουμε να δημιουργήσουμε αυτοματισμούς που βασίζονται στον αισθητήρα βροχόπτωσης όπως για παράδειγμα όταν βρέχει ένας λαμπτήρας LED ανάβει ή ένα buzzer ηχεί. Στις περιπτώσεις αυτές, μπορούμε να χρησιμοποιούμε τις τιμές 0-1023, ωστόσο η λειτουργία του αισθητήρα δεν είναι τόσο αποδοτική.
Ένα μικρόφωνο καταγράφει τιμές πλάτους των ηχητικών κυμάτων ομιλίας, υπολογίζει τη μέση τιμή και την συγκρίνει με μια τιμή κατωφλίου που ορίζεται μετά από παρακολούθηση των τιμών στην σειριακή οθόνη. Ένα λευκό LED είναι αναμμένο. Όταν η ένταση ξεπερνά την τιμή κατωφλίου, ένα κόκκινο LED ανάβει για μικρό χρονικό διάστημα και το λευκό LED σβήνει.
Ο αισθητήρας δίνει τιμές που εξαρτώνται από την υγρασία εδάφους. Ορίζεται μια τιμή κατωφλίου και με το άναμα των δύο LED διαφορετικού χρώματος δίνεται η πληροφορία από την σύγκριση της τιμής του αισθητήρα με την τιμή κατωφλίου. Οι τιμές και η πληροφορία τυπώνονται στην σειριακή οθόνη.
Ο αισθητήρας συνδέεται στον αναλογικό ακροδέκτη A1, οι τιμές τάσης του αισθητήρα μετατρέπονται σε τιμές 0-1023 που εμφανίζονται στη σειριακή οθόνη. Ορίζουμε μια ελάχιστη τιμή – τιμή κατωφλίου – ας πούμε 500. Όταν η τιμή στην A1 είναι μικρότερη αυτής της τιμής, τότε στην σειριακή οθόνη τυπώνεται "NO NEED FOR WATERING". Ενώ, όταν η τιμή στην A1 είναι μεγαλύτερη, τυπώνεται "NEED FOR WATERING". Επίσης, δύο λαμπτήρες LED κόκκινου και πράσινου χρώματος έχουν συνδεθεί στους ακροδέκτες 10 και 9, μέσω αντιστάσεων 220Ω δίνοντας οπτική πληροφορία να πότισμα ή μη πότισμα, αντίστοιχα.
Ο αισθητήρας LM35 συνδέεται στην αναλογική είσοδο Α0 και οι τιμές της θερμοκρασίας του περιβάλλοντος εμφανίζονται στη φορητή οθόνη υγρών κρυστάλλων.
Στον κώδικα έχει χρησιμοποιηθεί η βιβλιοθήκη LiquidCrystal_I2C.h και για τις μετρήσεις του αισθητήρα LM35 έχει οριστεί η τάση αναφοράς 1,1 V, όπως αναλυτικά περιγράφεται στην ανάρτηση εδώ.
Κώδικας IDE
#include <LiquidCrystal_I2C.h>
Κώδικας IDE
Οι ακροδέκτες SCL και SDA συνδέονται στις δύο τελευταίες αναλογικές ακίδες Α5 και Α4 αντίστοιχα.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
lcd.init();
lcd.clear();
lcd.backlight(); // έλεγξε τον φωτισμό!
// Τύπωση το όνομα της ομάδας σου στην 1η γραμμή και το σχολείο σου στη 2η γραμμή
lcd.setCursor(0,0);
lcd.print("arduino.TEAM-21!");
lcd.setCursor(0,1); 1
lcd.print("1st GYMN @Koropi");
}
void loop() {
}
Ένας λαμπτήρας LED στην ακίδα 13 της πλακέτας ανάβει και σβήνει μέσω του μικροφώνου και ενός σύντομου ήχου με τα χέρια ή τη φωνή. Το module λειτουργεί ως διακόπτης ON/OFF είτε χρησιμοποιώντας μια τιμή κατωφλίου και την εντολή if στον κώδικα (software) είτε ρυθμίζοντας την ευαισθησία με το ποτενσιόμετρο (hardware). Αναλυτικότερα, για αυτές τις δύο τεχνικές:
1. Με πειραματισμό μπορούμε να βρούμε μια αποτελεσματική τιμή κατωφλίου παρακολουθώντας μεταβολές στις τιμές εξόδου πχ στη σειριακή οθόνη, όπως στο σκετς της αναλογικής λειτουργίας
2. Με την αυξομείωση της λεγόμενης ευαισθησίας, περιστρέφοντας με ένα μικρό κατσαβίδι το ποτενσιόμετρο στον μπλε αντιστάτη της πλακέτας του μικροφώνου, όπως στο σκετς της ψηφιακής λειτουργίας.
LED on pin 13 and GND
"+" to a 5V power output οn the board
G to a ground on the board
AΟ σε κάποια αναλογική ακίδα του Arduino, εδώ στην A0, ή
DO σε κάποια ψηφιακή ακίδα του Arduino, εδώ στην 2
Όταν το επίπεδο του ήχου που διαβάζει η A0 είναι μεγαλύτερο της τιμής κατωφλίου, αν η LED είναι αναμμένη, τότε σβήνει, ενώ αν η LED σβηστή, τότε ανάβει. Η τιμή κατωφλίου στο σκετς ορίζεται ως 525, αλλά επειδή εξαρτάται κάθε φορά από τις ιδιαίτερες συνθήκες, πιθανά να χρειαστεί διαφορετική τιμή.
Όταν η ψηφιακή ακίδα 2 διαβάζει 1 ή HIGH, αν η LED είναι αναμμένη, τότε σβήνει, ενώ αν η LED σβηστή, τότε ανάβει. Η ψηφιακή τιμή 1/HIGH ή 0/LOW προέρχεται από την σύγκριση της τιμής του μικροφώνου με την τιμή από το ποτενσιόμετρο στον LM393. Χρειάζεται να προηγηθεί πειραματισμός με αυξομείωση της λεγόμενης ευαισθησίας, περιστρέφοντας με ένα μικρό κατσαβίδι το ποτενσιόμετρο στον μπλε αντιστάτη της πλακέτας του μικροφώνου. Το LED2 του module ανάβει (πράσινο χρώμα) για την ψηφιακή τιμή 1/HIGH. Όταν περιστρέφω δεξιόστροφα, η τιμή από το ποτενσιόμετρο ελαττώνεται και από κάποια θέση και μετά θα δούμε το LED2 να ανάβει (1/HIGH). Έτσι, επιστρέφουμε σε μια θέση πριν το σημείο αυτό ώστε το LED2 να είναι σβηστό (0/LOW), και να ανάβει με τον σύντομο ήχο χεριών ή φωνής, αλλάζοντας το 0/LOW σε 1/HIGH.
int buttonstate;
int ledstate;
void setup() {
pinMode(13, OUTPUT);
pinMode(2, INPUT);
}
void loop(){
buttonstate = digitalRead(2);
ledstate = digitalRead(13);
if (ledstate == HIGH && buttonstate == 1) {
delay(250);
digitalWrite(13, LOW);
delay(250);
}
if (ledstate == LOW && buttonstate == 1) {
delay(250);
digitalWrite(13, HIGH);
delay(250);
}
}
Εγκατάσταση βιβλιοθήκης
Άνοιγμα Παραδείγματος
Τα εξαρτήματα συνδέονται (α) απευθείας στην πλακέτα και (β) με χρήση breadboard.
Για το έργο και την προσομοίωση στο tinkercad πατήστε στην εικόνα
Στον κώδικα χρησιμοποιούμε τη συνάρτηση map για να αντιστοιχίσουμε τις 1024 δυνατές τιμές του 10-bit μετατροπέα ADC της αναλογικής εισόδου Α0, στις 256 δυνατές τιμές της ψευδοαναλογικής εξόδου ~11.