Πίνακας περιεχομένων:

DHT12 (i2c φθηνός αισθητήρας υγρασίας και θερμοκρασίας), γρήγορη εύκολη χρήση: 14 βήματα
DHT12 (i2c φθηνός αισθητήρας υγρασίας και θερμοκρασίας), γρήγορη εύκολη χρήση: 14 βήματα

Βίντεο: DHT12 (i2c φθηνός αισθητήρας υγρασίας και θερμοκρασίας), γρήγορη εύκολη χρήση: 14 βήματα

Βίντεο: DHT12 (i2c φθηνός αισθητήρας υγρασίας και θερμοκρασίας), γρήγορη εύκολη χρήση: 14 βήματα
Βίντεο: Проект Arduino: Учебное пособие по монитору температуры и влажности с ЖК-экраном датчика DHT11 (или DHT22). 2024, Νοέμβριος
Anonim
DHT12 (i2c Φτηνός αισθητήρας υγρασίας και θερμοκρασίας), γρήγορη εύκολη χρήση
DHT12 (i2c Φτηνός αισθητήρας υγρασίας και θερμοκρασίας), γρήγορη εύκολη χρήση

Μπορείτε να βρείτε ενημερώσεις και άλλα στον ιστότοπό μου

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

Πρόκειται για βιβλιοθήκη Arduino και esp8266 για τη σειρά DHT12 αισθητήρων θερμοκρασίας/υγρασίας πολύ χαμηλού κόστους (λιγότερο από 1 $) που λειτουργούν με σύνδεση i2c ή με ένα καλώδιο.

Πολύ χρήσιμο αν θέλετε να χρησιμοποιήσετε το esp01 (εάν χρησιμοποιείτε σειριακό έχετε μόνο 2 ακίδες) για να διαβάσετε την υγρασία και τη θερμοκρασία και να την εμφανίσετε στην οθόνη LCD i2c.

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

Βήμα 1: Πώς λειτουργεί το I2c

Πώς λειτουργεί το I2c
Πώς λειτουργεί το 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

Arduino: OneWire
Arduino: OneWire

Βήμα 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Βήμα 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Βήμα 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Βήμα 14: Ευχαριστώ

Παιδική χαρά Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

σειρά έργων i2c (Συλλογή):

  • Αισθητήρας υγρασίας θερμοκρασίας
  • Αναλογικός διαστολέας
  • Digitalηφιακός διαστολέας
  • Οθόνη LCD

Συνιστάται: