Πίνακας περιεχομένων:
- Βήμα 1: Πώς λειτουργεί το I2c
- Βήμα 2: Βιβλιοθήκη
- Βήμα 3: Συμπεριφορά
- Βήμα 4: Χρήση I2c
- Βήμα 5: Χρήση ενός καλωδίου
- Βήμα 6: Σιωπηρή ανάγνωση
- Βήμα 7: Απλή ανάγνωση
- Βήμα 8: Πλήρης ανάγνωση
- Βήμα 9: Διάγραμμα σύνδεσης
- Βήμα 10: Arduino: OneWire
- Βήμα 11: Arduino: I2c
- Βήμα 12: Esp8266 (D1Mini) OneWire
- Βήμα 13: Esp8266 (D1Mini) I2c
- Βήμα 14: Ευχαριστώ
Βίντεο: DHT12 (i2c φθηνός αισθητήρας υγρασίας και θερμοκρασίας), γρήγορη εύκολη χρήση: 14 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:34
Μπορείτε να βρείτε ενημερώσεις και άλλα στον ιστότοπό μου
Μου αρέσει ο αισθητήρας που μπορεί να χρησιμοποιηθεί με 2 καλώδια (πρωτόκολλο i2c), αλλά μου αρέσει ο φθηνός.
Πρόκειται για βιβλιοθήκη Arduino και esp8266 για τη σειρά DHT12 αισθητήρων θερμοκρασίας/υγρασίας πολύ χαμηλού κόστους (λιγότερο από 1 $) που λειτουργούν με σύνδεση i2c ή με ένα καλώδιο.
Πολύ χρήσιμο αν θέλετε να χρησιμοποιήσετε το esp01 (εάν χρησιμοποιείτε σειριακό έχετε μόνο 2 ακίδες) για να διαβάσετε την υγρασία και τη θερμοκρασία και να την εμφανίσετε στην οθόνη LCD i2c.
Η AI διάβασε ότι κάποτε φαίνεται ότι χρειάζεται βαθμονόμηση, αλλά έχω αυτό το δέντρο και παίρνω αξία πολύ παρόμοια με το DHT22. Εάν έχετε βαθμονόμηση αυτού του προβλήματος, ανοίξτε το θέμα στο github και προσθέτω εφαρμογή.
Βήμα 1: Πώς λειτουργεί το I2c
Το I2C λειτουργεί με δύο καλώδια, το SDA (γραμμή δεδομένων) και το SCL (γραμμή ρολογιού).
Και οι δύο αυτές γραμμές είναι ανοιχτής αποστράγγισης, αλλά ανασύρονται με αντιστάσεις.
Συνήθως υπάρχει ένας κύριος και ένας ή πολλοί σκλάβοι στη γραμμή, αν και μπορεί να υπάρχουν πολλοί κύριοι, αλλά θα το συζητήσουμε αργότερα.
Τόσο οι κύριοι όσο και οι σκλάβοι μπορούν να μεταδώσουν ή να λάβουν δεδομένα, επομένως, μια συσκευή μπορεί να βρίσκεται σε μία από αυτές τις τέσσερις καταστάσεις: κύρια μετάδοση, κύρια λήψη, εκπομπή σκλάβης, λήψη σκλάβου.
Βήμα 2: Βιβλιοθήκη
Μπορείτε να βρείτε τη βιβλιοθήκη μου εδώ.
Για να κατεβάσετε
Κάντε κλικ στο κουμπί DOWNLOADS στην επάνω δεξιά γωνία, μετονομάστε τον ασυμπίεστο φάκελο DHT12.
Βεβαιωθείτε ότι ο φάκελος DHT περιέχει DHT12.cpp και DHT12.h.
Τοποθετήστε το φάκελο της βιβλιοθήκης DHT στον φάκελο / βιβλιοθήκες / φάκελό σας.
Mayσως χρειαστεί να δημιουργήσετε τον υποφάκελο βιβλιοθηκών εάν είναι η πρώτη σας βιβλιοθήκη.
Επανεκκινήστε το IDE.
Βήμα 3: Συμπεριφορά
Αυτό το libray προσπαθεί να μιμηθεί τη συμπεριφορά των τυπικών αισθητήρων βιβλιοθήκης DHT (και να αντιγράψει πολύ κώδικα) και προσθέτω τον κώδικα για να διαχειριστεί το i2c olso με τον ίδιο τρόπο.
Η μέθοδος είναι η ίδια με τον αισθητήρα βιβλιοθήκης DHT, με μερικούς να προσθέτουν τη λειτουργία σημείου δρόσου.
Βήμα 4: Χρήση I2c
Για χρήση με i2c (προεπιλεγμένη διεύθυνση και προεπιλεγμένη καρφίτσα SDA SCL) ο κατασκευαστής είναι:
DHT12 dht12;
και λάβετε την προεπιλεγμένη τιμή για την καρφίτσα SDA SCL.
(Είναι δυνατός ο επαναπροσδιορισμός με καθορισμένο κατασκευαστή για το esp8266, που απαιτείται για το ESP-01). ή
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> διεύθυνση
για αλλαγή διεύθυνσης.
Βήμα 5: Χρήση ενός καλωδίου
Για να χρησιμοποιήσετε ένα καλώδιο:
DHT12 dht12 (διεύθυνση uint8_tOrPin, true)
addressOrPin -> pin
boolean value είναι η επιλογή της λειτουργίας oneWire ή i2c.
Βήμα 6: Σιωπηρή ανάγνωση
Μπορείτε να το χρησιμοποιήσετε με "σιωπηρή", "απλή ανάγνωση" ή "πλήρης ανάγνωση": Σιωπηρή, μόνο η πρώτη ανάγνωση κάνει πραγματική ανάγνωση του αισθητήρα, η άλλη ανάγνωση που γίνεται σε 2 δευτερόλεπτα. διάστημα είναι η αποθηκευμένη τιμή της πρώτης ανάγνωσης.
// Η ανάγνωση του αισθητήρα έχει 2 δευτερόλεπτα χρόνου που έχει παρέλθει, εκτός εάν περάσετε την παράμετρο δύναμης
// Διαβάστε τη θερμοκρασία ως Κελσίου (η προεπιλογή) επιπλέει t12 = dht12.readTemperature (); // Διαβάστε τη θερμοκρασία ως Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Οι ενδείξεις αισθητήρα μπορεί επίσης να είναι παλιές έως και 2 δευτερόλεπτα (είναι πολύ αργός αισθητήρας) float h12 = dht12.readHumidity (); // Υπολογισμός δείκτη θερμότητας σε Φαρενάιτ (το προεπιλεγμένο) float hif12 = dht12.computeHeatIndex (f12, h12); // Υπολογισμός του δείκτη θερμότητας σε Κελσίου (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Υπολογίστε το σημείο δρόσου σε Φαρενάιτ (το προεπιλεγμένο) float dpf12 = dht12.dewPoint (f12, h12); // Υπολογίστε το σημείο δρόσου σε Κελσίου (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Βήμα 7: Απλή ανάγνωση
Απλή ανάγνωση για να λάβετε μια κατάσταση ανάγνωσης.
// Η ανάγνωση του αισθητήρα έχει 2 δευτερόλεπτα χρόνου που έχει παρέλθει, εκτός εάν περάσετε την παράμετρο δύναμης
bool chk = dht12.read (); // η πραγματική ανάγνωση είναι εντάξει, το πρόβλημα ψευδούς ανάγνωσης
// Διαβάστε τη θερμοκρασία ως Κελσίου (η προεπιλογή)
float t12 = dht12.readTemperature (); // Διαβάστε τη θερμοκρασία ως Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Οι ενδείξεις αισθητήρα μπορεί επίσης να είναι παλιές έως και 2 δευτερόλεπτα (είναι πολύ αργός αισθητήρας) float h12 = dht12.readHumidity (); // Υπολογισμός δείκτη θερμότητας σε Φαρενάιτ (το προεπιλεγμένο) float hif12 = dht12.computeHeatIndex (f12, h12); // Υπολογισμός του δείκτη θερμότητας σε Κελσίου (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Υπολογίστε το σημείο δρόσου σε Φαρενάιτ (το προεπιλεγμένο) float dpf12 = dht12.dewPoint (f12, h12); // Υπολογίστε το σημείο δρόσου σε Κελσίου (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Βήμα 8: Πλήρης ανάγνωση
Πλήρης ανάγνωση για να λάβετε μια καθορισμένη κατάσταση.
// Η ανάγνωση του αισθητήρα έχει 2 δευτερόλεπτα χρόνου που έχει παρέλθει, εκτός εάν περάσετε την παράμετρο δύναμης
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nΔιαβάστε αισθητήρα:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); Διακοπή; περίπτωση DHT12:: ERROR_CHECKSUM: Serial.println (F ("Σφάλμα αθροίσματος ελέγχου")); Διακοπή; περίπτωση DHT12:: ERROR_TIMEOUT: Serial.println (F ("Σφάλμα λήξης χρόνου")); Διακοπή; θήκη DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Σφάλμα λήξης χρόνου σε χαμηλό σήμα, δοκιμάστε να βάλετε υψηλή αντίσταση έλξης")); Διακοπή; θήκη DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Σφάλμα λήξης χρόνου σε χαμηλό σήμα, δοκιμάστε να βάλετε χαμηλή αντίσταση έλξης")); Διακοπή; περίπτωση DHT12:: ERROR_CONNECT: Serial.println (F ("Σφάλμα σύνδεσης")); Διακοπή; περίπτωση DHT12:: ERROR_ACK_L: Serial.println (F ("σφάλμα AckL")); Διακοπή; περίπτωση DHT12:: ERROR_ACK_H: Serial.println (F ("σφάλμα AckH")); Διακοπή; περίπτωση DHT12:: ERROR_UNKNOWN: Serial.println (F ("Άγνωστο σφάλμα ΑΝΤΙΜΕΤΩΠΙΣΕ")); Διακοπή; θήκη DHT12:: NONE: Serial.println (F ("No result")); Διακοπή; προεπιλογή: Serial.println (F ("Άγνωστο σφάλμα")); Διακοπή; }
// Διαβάστε τη θερμοκρασία ως Κελσίου (η προεπιλογή)
float t12 = dht12.readTemperature (); // Διαβάστε τη θερμοκρασία ως Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Οι ενδείξεις αισθητήρα μπορεί επίσης να είναι παλιές έως και 2 δευτερόλεπτα (είναι πολύ αργός αισθητήρας) float h12 = dht12.readHumidity (); // Υπολογισμός δείκτη θερμότητας σε Φαρενάιτ (το προεπιλεγμένο) float hif12 = dht12.computeHeatIndex (f12, h12); // Υπολογισμός του δείκτη θερμότητας σε Κελσίου (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Υπολογίστε το σημείο δρόσου σε Φαρενάιτ (το προεπιλεγμένο) float dpf12 = dht12.dewPoint (f12, h12); // Υπολογίστε το σημείο δρόσου σε Κελσίου (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Βήμα 9: Διάγραμμα σύνδεσης
Με παραδείγματα, υπάρχει το διάγραμμα σύνδεσης, είναι σημαντικό να χρησιμοποιήσετε τη σωστή αντίσταση έλξης.
Χάρη στον Bobadas, το dplasa και το adafruit, που μοιράστηκαν τον κώδικα στο github (όπου παίρνω κώδικα και ιδέες).
Βήμα 10: Arduino: OneWire
Βήμα 11: Arduino: I2c
Βήμα 12: Esp8266 (D1Mini) OneWire
Βήμα 13: Esp8266 (D1Mini) I2c
Βήμα 14: Ευχαριστώ
Παιδική χαρά Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
σειρά έργων i2c (Συλλογή):
- Αισθητήρας υγρασίας θερμοκρασίας
- Αναλογικός διαστολέας
- Digitalηφιακός διαστολέας
- Οθόνη LCD
Συνιστάται:
Πώς να χρησιμοποιήσετε τον αισθητήρα υγρασίας και θερμοκρασίας DHT12 I2C με Arduino: 7 βήματα
Πώς να χρησιμοποιήσετε τον αισθητήρα υγρασίας και θερμοκρασίας DHT12 I2C με το Arduino: Σε αυτό το σεμινάριο θα μάθουμε πώς να χρησιμοποιούμε τον αισθητήρα υγρασίας και θερμοκρασίας DHT12 I2C με το Arduino και να εμφανίζουμε τις τιμές στην οθόνη OLED. Δείτε το βίντεο
Αισθητήρας θερμοκρασίας και υγρασίας με LCD και ανίχνευση ήχου: 4 βήματα
Αισθητήρας θερμοκρασίας και υγρασίας με LCD και ανίχνευση ήχου: Γεια σας παιδιά !!! Εντάξει αυτό το έργο ήταν το τελευταίο μου έτος. Ο σκοπός αυτού του έργου ήταν η παρακολούθηση της θερμοκρασίας και της υγρασίας του δωματίου στο εργαστήρι του Πανεπιστημίου μου επειδή κάποια ηλεκτρονική συσκευή δυσλειτουργούσε λόγω της δυσμενούς θερμοκρασίας και της θερμοκρασίας
Παρακολούθηση ποιότητας αέρα με MQ135 και εξωτερικός αισθητήρας θερμοκρασίας και υγρασίας πάνω από MQTT: 4 βήματα
Παρακολούθηση ποιότητας αέρα με MQ135 και εξωτερικός αισθητήρας θερμοκρασίας και υγρασίας πάνω από MQTT: Αυτό είναι για δοκιμαστικούς σκοπούς
Δημιουργία-Ειδοποίηση-Χρήση-Ubidots-ESP32+Αισθητήρας θερμοκρασίας και υγρασίας: 9 βήματα
Creating-Alert-Using-Ubidots-ESP32+Temp and Humidity Sensor: Σε αυτό το σεμινάριο, θα μετρήσουμε διαφορετικά δεδομένα θερμοκρασίας και υγρασίας χρησιμοποιώντας Temp και αισθητήρα υγρασίας. Θα μάθετε επίσης πώς να στέλνετε αυτά τα δεδομένα στο Ubidots. Για να μπορείτε να το αναλύσετε από οπουδήποτε για διαφορετική εφαρμογή. Επίσης δημιουργώντας emai
Αισθητήρας θερμοκρασίας και υγρασίας με οθόνη Arduino και LCD: 4 βήματα
Αισθητήρας θερμοκρασίας και υγρασίας με οθόνη Arduino και LCD: Γεια σας παιδιά, καλώς ήρθατε στο Artuino. Όπως είδατε, ξεκίνησα το An InstructableToday θα κάνουμε μια θερμοκρασία & Μετρητής υγρασίας με τη μονάδα DHT11. Ας ξεκινήσουμε Σκεφτείτε να εγγραφείτε και να κάνετε like στο βίντεο