- Επισκόπηση του αισθητήρα DHT11:
- Προϋποθέσεις:
- Εγκατάσταση της βιβλιοθήκης Adafruit LCD στο Raspberry Pi:
- Εγκατάσταση της βιβλιοθήκης Adafruit DHT11 στο Raspberry Pi:
- Διάγραμμα κυκλώματος:
- Προγραμματισμός Python για αισθητήρα DHT11:
- Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας Raspberry Pi:
Η θερμοκρασία και η υγρασία είναι οι πιο κοινές παράμετροι που παρακολουθούνται σε οποιοδήποτε περιβάλλον. Υπάρχουν τόνοι αισθητήρων για να διαλέξετε για τη μέτρηση της θερμοκρασίας και της υγρασίας, αλλά ο πιο χρησιμοποιούμενος είναι ο DHT11 λόγω του αξιοπρεπούς εύρους και της ακρίβειας μέτρησης. Λειτουργεί επίσης με επικοινωνία με έναν πείρο και ως εκ τούτου είναι πολύ εύκολο να συνδεθείτε με μικροελεγκτές ή μικροεπεξεργαστές. Σε αυτό το σεμινάριο θα μάθουμε πώς να συνδέουμε τον δημοφιλή αισθητήρα DHT11 με το Raspberry Pi και να εμφανίζουμε την τιμή της θερμοκρασίας και της υγρασίας σε μια οθόνη LCD 16x2. Το χρησιμοποιήσαμε ήδη για την κατασκευή του IoT Raspberry Pi Weather Station.
Επισκόπηση του αισθητήρα DHT11:
Ο αισθητήρας DHT11 μπορεί να μετρήσει τη σχετική υγρασία και θερμοκρασία με τις ακόλουθες προδιαγραφές
Εύρος θερμοκρασίας: 0-50 ° C Ακρίβεια θερμοκρασίας: ± 2 ° C Εύρος υγρασίας: 20-90% RH Ακρίβεια υγρασίας: ± 5%
Ο αισθητήρας DHT11 διατίθεται είτε σε μορφή μονάδας είτε σε μορφή αισθητήρα. Σε αυτό το σεμινάριο χρησιμοποιούμε τη μορφή μονάδας του αισθητήρα, η μόνη διαφορά μεταξύ των δύο είναι ότι στη μορφή μονάδας ο αισθητήρας έχει έναν πυκνωτή φιλτραρίσματος και μια αντίσταση έλξης συνδεδεμένη στον πείρο εξόδου του αισθητήρα. Επομένως, εάν χρησιμοποιείτε μόνο τον αισθητήρα, βεβαιωθείτε ότι έχετε προσθέσει αυτά τα δύο στοιχεία. Μάθετε επίσης τη διασύνδεση DHT11 με το Arduino.
Πώς λειτουργεί ο αισθητήρας DHT11:
Ο αισθητήρας DHT11 έρχεται με ένα μπλε ή άσπρο χρώμα περίβλημα. Μέσα σε αυτό το περίβλημα έχουμε δύο σημαντικά στοιχεία που μας βοηθούν να αισθανθούμε τη σχετική υγρασία και θερμοκρασία. Το πρώτο συστατικό είναι ένα ζεύγος ηλεκτροδίων. Η ηλεκτρική αντίσταση μεταξύ αυτών των δύο ηλεκτροδίων αποφασίζεται από ένα υπόστρωμα συγκράτησης υγρασίας. Έτσι, η μετρούμενη αντίσταση είναι αντιστρόφως ανάλογη με τη σχετική υγρασία του περιβάλλοντος. Όσο υψηλότερη η σχετική υγρασία χαμηλότερη θα είναι η τιμή της αντίστασης και το αντίστροφο. Σημειώστε επίσης ότι η σχετική υγρασία είναι διαφορετική από την πραγματική υγρασία. Η σχετική υγρασία μετρά την περιεκτικότητα του νερού στον αέρα σε σχέση με τη θερμοκρασία στον αέρα.
Το άλλο συστατικό είναι ένα NTC Thermistor. Ο όρος NTC σημαίνει αρνητικός συντελεστής θερμοκρασίας, για αύξηση της θερμοκρασίας η τιμή της αντίστασης θα μειωθεί
Προϋποθέσεις:
Υποτίθεται ότι το Raspberry Pi σας έχει ήδη αναβοσβήνει με ένα λειτουργικό σύστημα και μπορεί να συνδεθεί στο Διαδίκτυο. Εάν όχι, ακολουθήστε τον οδηγό Ξεκινώντας με το Raspberry Pi πριν συνεχίσετε.
Υποτίθεται επίσης ότι έχετε πρόσβαση στο pi σας είτε μέσω παραθύρων τερματικού είτε μέσω άλλης εφαρμογής μέσω της οποίας μπορείτε να γράψετε και να εκτελέσετε προγράμματα python και να χρησιμοποιήσετε το παράθυρο τερματικού.
Εγκατάσταση της βιβλιοθήκης Adafruit LCD στο Raspberry Pi:
Η τιμή της θερμοκρασίας και της υγρασίας θα εμφανίζεται σε οθόνη LCD 16 * 2. Το Adafruit μας παρέχει μια βιβλιοθήκη για εύκολη λειτουργία αυτής της οθόνης LCD σε λειτουργία 4-bit, οπότε ας την προσθέσουμε στο Raspberry Pi ανοίγοντας το παράθυρο τερματικού Pi και ακολουθώντας τα παρακάτω βήματα.
Βήμα 1: Εγκαταστήστε το git στο Raspberry Pi χρησιμοποιώντας την παρακάτω γραμμή. Το Git σάς επιτρέπει να κλωνοποιείτε τυχόν αρχεία έργων στο Github και να το χρησιμοποιείτε στο Raspberry pi. Η βιβλιοθήκη μας είναι στο Github, οπότε πρέπει να εγκαταστήσουμε το git για να κατεβάσουμε αυτήν τη βιβλιοθήκη στο pi.
apt-get install git
Βήμα 2: Η ακόλουθη γραμμή συνδέεται με τη σελίδα GitHub όπου υπάρχει η βιβλιοθήκη, απλώς εκτελέστε τη γραμμή για να κλωνοποιήσετε το αρχείο έργου στον αρχικό κατάλογο Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Βήμα 3: Χρησιμοποιήστε την παρακάτω εντολή για να αλλάξετε τη γραμμή καταλόγου, για να μπείτε στο αρχείο έργου που μόλις κατεβάσαμε. Η γραμμή εντολών δίνεται παρακάτω
cd Adafruit_Python_CharLCD
Βήμα 4: Μέσα στον κατάλογο θα υπάρχει ένα αρχείο που ονομάζεται setup.py , πρέπει να το εγκαταστήσουμε, να εγκαταστήσουμε τη βιβλιοθήκη. Χρησιμοποιήστε τον ακόλουθο κωδικό για να εγκαταστήσετε τη βιβλιοθήκη
sudo python setup.py εγκατάσταση
Δηλαδή, η βιβλιοθήκη θα έπρεπε να είχε εγκατασταθεί με επιτυχία. Τώρα ομοίως, ας προχωρήσουμε στην εγκατάσταση της βιβλιοθήκης DHT που είναι επίσης από το Adafruit.
Εγκατάσταση της βιβλιοθήκης Adafruit DHT11 στο Raspberry Pi:
Ο αισθητήρας DHT11 λειτουργεί με την αρχή του συστήματος ενός καλωδίου. Η τιμή της θερμοκρασίας και της υγρασίας ανιχνεύεται από τον αισθητήρα και μετά μεταδίδεται μέσω του πείρου εξόδου ως σειριακά δεδομένα. Στη συνέχεια, μπορούμε να διαβάσουμε αυτά τα δεδομένα χρησιμοποιώντας την καρφίτσα I / O σε MCU / MPU. Για να καταλάβετε πώς διαβάζονται αυτές οι τιμές, θα πρέπει να διαβάσετε το φύλλο δεδομένων του αισθητήρα DHT11, αλλά προς το παρόν για να διατηρήσουμε τα πράγματα απλά, θα χρησιμοποιήσουμε μια βιβλιοθήκη για να μιλήσουμε με τον αισθητήρα DHT11.
Η βιβλιοθήκη DHT11 που παρέχεται από την Adafruit μπορεί να χρησιμοποιηθεί και για DHT11, DHT22 και άλλους αισθητήρες θερμοκρασίας ενός καλωδίου. Η διαδικασία εγκατάστασης της βιβλιοθήκης DHT11 είναι επίσης παρόμοια με αυτήν που ακολουθήθηκε για την εγκατάσταση της βιβλιοθήκης LCD. Η μόνη γραμμή που θα αλλάξει είναι ο σύνδεσμος της σελίδας GitHub στην οποία αποθηκεύεται η βιβλιοθήκη DHT.
Εισαγάγετε τις τέσσερις γραμμές εντολών μία προς μία στο τερματικό για να εγκαταστήσετε τη βιβλιοθήκη DHT
git clone
cd Adafruit_Python_DHT sudo apt-get install build-essential python-dev sudo python setup.py εγκατάσταση
Μόλις ολοκληρωθεί, θα έχετε εγκαταστήσει με επιτυχία και οι δύο βιβλιοθήκες στο Raspberry Pi. Τώρα μπορούμε να προχωρήσουμε με τη σύνδεση υλικού.
Διάγραμμα κυκλώματος:
Το πλήρες διάγραμμα κυκλώματος Interfacing DH11 με Raspberry pi δίνεται παρακάτω, κατασκευάστηκε χρησιμοποιώντας Fritzing. Ακολουθήστε τις συνδέσεις και κάντε το κύκλωμα
Τόσο ο αισθητήρας LCD όσο και ο αισθητήρας DHT11 λειτουργούν με τροφοδοσία + 5V, οπότε χρησιμοποιούμε τους ακροδέκτες 5V στο Raspberry Pi για τροφοδοσία και των δύο. Μία αντίσταση τραβήγματος αξίας 1k χρησιμοποιείται στον πείρο εξόδου του αισθητήρα DHT11, εάν χρησιμοποιείτε μια μονάδα μπορείτε να αποφύγετε αυτήν την αντίσταση.
Ένα δοχείο κοπής 10k προστίθεται στον πείρο Vee της οθόνης LCD για τον έλεγχο του επιπέδου αντίθεσης της οθόνης LCD. Εκτός από αυτό όλες οι συνδέσεις είναι αρκετά απλές. Αλλά σημειώστε ποιες καρφίτσες GPIO χρησιμοποιείτε για να συνδέσετε τις καρφίτσες αφού θα χρειαζόμαστε στο πρόγραμμά μας. Το παρακάτω γράφημα θα σας επιτρέψει να υπολογίσετε τους αριθμούς pin GPIO.
Χρησιμοποιήστε το γράφημα και πραγματοποιήστε τις συνδέσεις σας σύμφωνα με το διάγραμμα κυκλώματος. Χρησιμοποίησα ένα καλώδιο breadboard και jumper για να κάνω τις συνδέσεις μου. Δεδομένου ότι χρησιμοποίησα τη μονάδα DHT11, το ενσύρραξα απευθείας στο Raspberry Pi. Το υλικό μου έμοιαζε έτσι παρακάτω
Προγραμματισμός Python για αισθητήρα DHT11:
Πρέπει να γράψουμε ένα πρόγραμμα για να διαβάσουμε την τιμή της θερμοκρασίας και της υγρασίας από τον αισθητήρα DHT11 και στη συνέχεια να εμφανίσουμε το ίδιο στην οθόνη LCD. Δεδομένου ότι έχουμε κατεβάσει βιβλιοθήκες τόσο για τον αισθητήρα LCD όσο και για τον αισθητήρα DHT11, ο κώδικας πρέπει να είναι σχεδόν απλός. Το πλήρες πρόγραμμα python βρίσκεται στο τέλος αυτής της σελίδας, αλλά μπορείτε να διαβάσετε περαιτέρω για να κατανοήσετε πώς λειτουργεί το πρόγραμμα.
Πρέπει να εισαγάγουμε τη βιβλιοθήκη LCD και τη βιβλιοθήκη DHT11 στο πρόγραμμά μας για να χρησιμοποιήσουμε τις συναφείς με αυτήν λειτουργίες. Εφόσον τα έχουμε ήδη κατεβάσει και εγκαταστήσει στο Pi, μπορούμε απλά να χρησιμοποιήσουμε τις ακόλουθες γραμμές για να τις εισαγάγουμε. Εισάγουμε επίσης τη βιβλιοθήκη χρόνου για να χρησιμοποιήσουμε τη λειτουργία καθυστέρησης.
χρόνος εισαγωγής # χρόνος εισαγωγής για δημιουργία καθυστέρησης εισαγωγή Adafruit_CharLCD ως LCD # Εισαγωγή βιβλιοθήκη LCD εισαγωγή Adafruit_DHT # Εισαγωγή βιβλιοθήκης DHT για αισθητήρα
Στη συνέχεια, πρέπει να καθορίσουμε σε ποιους ακροδέκτες είναι συνδεδεμένος ο αισθητήρας και σε ποιον τύπο αισθητήρα θερμοκρασίας χρησιμοποιείται. Η μεταβλητή sensor_name αντιστοιχίζεται στο Adafruit_DHT.DHT11 δεδομένου ότι χρησιμοποιούμε τον αισθητήρα DHT11 εδώ. Ο πείρος εξόδου του αισθητήρα συνδέεται με το GPIO 17 του Raspberry Pi και ως εκ τούτου αντιστοιχίζουμε 17 στη μεταβλητή sensor_pin όπως φαίνεται παρακάτω.
sensor_name = Adafruit_DHT.DHT11 # χρησιμοποιούμε τον αισθητήρα DHT11 sensor_pin = 17 # Ο αισθητήρας είναι συνδεδεμένος στο GPIO17 στο Pi
Ομοίως, πρέπει επίσης να καθορίσουμε σε ποιον ακροδέκτη GPIO είναι συνδεδεμένη η LCD. Εδώ χρησιμοποιούμε την οθόνη LCD σε λειτουργία 4-bit, επομένως θα έχουμε τέσσερις καρφίτσες δεδομένων και δύο ακίδες ελέγχου για σύνδεση με τις ακίδες GPIO του pi. Επίσης, μπορείτε να συνδέσετε τον πινέλο οπίσθιου φωτισμού σε έναν πείρο GPIO εάν θέλουμε να ελέγξουμε επίσης τον οπίσθιο φωτισμό. Αλλά προς το παρόν δεν το χρησιμοποιώ, οπότε έχω αναθέσει 0 σε αυτό.
lcd_rs = 7 #RS της LCD είναι συνδεδεμένη στο GPIO 7 σε PI lcd_en = 8 #EN της LCD είναι συνδεδεμένη στο GPIO 8 σε PI lcd_d4 = 25 # D4 της LCD είναι συνδεδεμένη με το GPIO 25 σε PI lcd_d5 = 24 # D5 της LCD είναι συνδεδεμένο στο GPIO 24 στο PI lcd_d6 = 23 # D6 της LCD είναι συνδεδεμένο στο GPIO 23 στο PI lcd_d7 = 18 # D7 της LCD είναι συνδεδεμένο με το GPIO 18 στο PI lcd_backlight = 0 #LED δεν είναι συνδεδεμένο, οπότε αντιστοιχίζουμε στο 0
Μπορείτε επίσης να συνδέσετε LCD σε λειτουργία 8-bit με Raspberry pi, αλλά στη συνέχεια θα μειωθούν οι δωρεάν καρφίτσες.
Η βιβλιοθήκη LCD από το Adafruit που κατεβάσαμε μπορεί να χρησιμοποιηθεί για όλους τους τύπους χαρακτηριστικών οθονών LCD. Εδώ στο έργο μας χρησιμοποιούμε μια οθόνη LCD 16 * 2, οπότε αναφέρουμε τον αριθμό σειρών και στηλών σε μια μεταβλητή όπως φαίνεται παρακάτω.
lcd_columns = 16 # για 16 * 2 LCD lcd_rows = 2 # για 16 * 2 LCD
Τώρα, που έχουμε δηλώσει τις καρφίτσες LCD και τον αριθμό σειρών και στηλών για την οθόνη LCD, μπορούμε να προετοιμάσουμε την οθόνη LCD χρησιμοποιώντας την ακόλουθη γραμμή που στέλνει όλες τις απαιτούμενες πληροφορίες στη βιβλιοθήκη.
lcd = LCD.Adafruit_CharLCD (lcd_rs, lcd_en, lcd_d4, lcd_d5, lcd_d6, lcd_d7, lcd_columns, lcd_rows, lcd_backlight) # Αποστολή όλων των λεπτομερειών καρφιτσών στη βιβλιοθήκη
Για να ξεκινήσετε το πρόγραμμα, προβάλλουμε ένα μικρό εισαγωγικό μήνυμα χρησιμοποιώντας τη συνάρτηση lcd.message () και μετά δίνουμε καθυστέρηση 2 δευτερολέπτων για να γίνει το μήνυμα αναγνώσιμο. Για εκτύπωση στη 2η γραμμή η εντολή \ n μπορεί να χρησιμοποιηθεί όπως φαίνεται παρακάτω
lcd .message ('DHT11 with Pi \ n -CircuitDigest') # Δώστε ένα χρόνο εισαγωγής μηνύματος. ύπνος (2) # περιμένετε για 2 δευτερόλεπτα
Τέλος, μέσα μας, ενώ βρόχο θα πρέπει να διαβάσετε την τιμή της θερμοκρασίας και της υγρασίας από τον αισθητήρα και να το εμφανίσετε στην οθόνη LCD για κάθε 2 δευτερόλεπτα. Το πλήρες πρόγραμμα μέσα στο loop loop φαίνεται παρακάτω
ενώ 1: # Άπειρος βρόχος
υγρασία, θερμοκρασία = Adafruit_DHT.read_retry (sensor_name, sensor_pin) #read από τον αισθητήρα και αποθηκεύστε τις αντίστοιχες τιμές σε θερμοκρασία και υγρασία
lcd.clear () # Καθαρίστε την οθόνη LCD lcd.message ('Temp =%.1f C'% θερμοκρασία) # Εμφάνιση της τιμής της θερμοκρασίας lcd.message ('\ nHum =%.1f %%'% υγρασία) #Display η τιμή του χρόνου υγρασίας. ύπνος (2) # Περιμένετε 2 δευτερόλεπτα και στη συνέχεια ενημερώστε τις τιμές
Μπορούμε εύκολα να πάρουμε την τιμή της θερμοκρασίας και της υγρασίας από τον αισθητήρα χρησιμοποιώντας αυτήν την απλή γραμμή παρακάτω. Όπως μπορείτε να δείτε, επιστρέφει δύο τιμές που αποθηκεύονται στη μεταβλητή υγρασία και θερμοκρασία. Τα στοιχεία sensor_name και sensor_pin περνούν ως παράμετροι. Αυτές οι τιμές ενημερώθηκαν στην αρχή του προγράμματος
υγρασία, θερμοκρασία = Adafruit_DHT.read_retry (όνομα_ αισθητήρα, sensor_pin)
Για να εμφανίσουμε ένα μεταβλητό όνομα στην οθόνη LCD μπορούμε να χρησιμοποιήσουμε τα αναγνωριστικά όπως & d,% c κ.λπ. Εδώ, καθώς εμφανίζουμε έναν αριθμό κινούμενου σημείου με ένα μόνο ψηφίο μετά το δεκαδικό σημείο, χρησιμοποιούμε το αναγνωριστικό%.1f για την εμφάνιση της τιμής στο η μεταβλητή θερμοκρασία και υγρασία
lcd .message ('Temp =%.1f C'% θερμοκρασία) lcd .message ('\ nHum =%.1f %%'% υγρασία)
Μέτρηση υγρασίας και θερμοκρασίας χρησιμοποιώντας Raspberry Pi:
Πραγματοποιήστε τις συνδέσεις σύμφωνα με το διάγραμμα κυκλώματος και εγκαταστήστε τις απαιτούμενες βιβλιοθήκες. Στη συνέχεια, ξεκινήστε το πρόγραμμα python που δίνεται στο τέλος αυτής της σελίδας. Η οθόνη LCD θα πρέπει να εμφανίζει ένα εισαγωγικό μήνυμα και, στη συνέχεια, να εμφανίζει την τρέχουσα τιμή θερμοκρασίας και υγρασίας, όπως φαίνεται στην παρακάτω εικόνα.
Εάν δεν βλέπετε τίποτα να εμφανίζεται η οθόνη LCD, ελέγξτε εάν το παράθυρο κελύφους python εμφανίζει σφάλματα, εάν δεν εμφανίζεται σφάλμα, ελέγξτε τις συνδέσεις σας ξανά και ρυθμίστε το ποτενσιόμετρο για να μεταβάλλετε το επίπεδο αντίθεσης της οθόνης LCD και ελέγξτε εάν έχετε κάτι η οθόνη.
Ελπίζω να καταλάβατε το έργο και να σας άρεσε να το φτιάξετε, αν έχετε αντιμετωπίσει κάποιο πρόβλημα με το να το κάνετε αυτό, αναφέρετέ το στην ενότητα σχολίων ή χρησιμοποιήστε το φόρουμ για τεχνική βοήθεια. Θα προσπαθήσω το καλύτερό μου για να απαντήσω σε όλα τα σχόλια.
Μπορείτε επίσης να ελέγξετε τα άλλα έργα μας χρησιμοποιώντας το DHT11 με άλλους μικροελεγκτές.