Mündəricat:
- Addım 1: I2c necə işləyir
- Addım 2: Kitabxana
- Addım 3: Behaivor
- Addım 4: I2c İstifadəsi
- Addım 5: Bir Tel İstifadəsi
- Addım 6: Gizli Oxu
- Addım 7: Sadə Oxu
- Addım 8: Tam Oxu
- Addım 9: Bağlantı Şeması
- Addım 10: Arduino: OneWire
- Addım 11: Arduino: I2c
- Addım 12: Esp8266 (D1Mini) OneWire
- Addım 13: Esp8266 (D1Mini) I2c
- Addım 14: Təşəkkürlər
Video: DHT12 (i2c Ucuz Nəmlik və İstilik Sensoru), Tez Asan İstifadə: 14 Addım
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:45
Yeniləməni və digərlərini https://www.mischianti.org/2019/01/01/dht12-library-en/ saytımda tapa bilərsiniz.
2 telli (i2c protokolu) istifadə edilə bilən sensoru sevirəm, amma ucuz olanı sevirəm.
Bu, i2c və ya bir tel bağlantısı ilə işləyən çox aşağı qiymətli temperatur/rütubət (1 dollardan aşağı) DHT12 seriyası üçün bir Arduino və esp8266 kitabxanasıdır.
Nəmliyi və temperaturu oxumaq və i2c LCD -də göstərmək üçün esp01 istifadə etmək istəyirsinizsə (serialdan istifadə edirsinizsə yalnız 2 pininiz var) çox faydalıdır.
AI oxudu ki, nə vaxtsa kalibrləməyə ehtiyac var, amma bunun ağacı var və DHT22 -yə çox oxşar dəyər alıram. Bu problemi kalibr edirsinizsə, github -da problemi açın və tətbiqini əlavə edin.
Addım 1: I2c necə işləyir
I2C iki tel ilə işləyir: SDA (məlumat xətti) və SCL (saat xətti).
Bu xətlərin hər ikisi açıq drenajdır, lakin rezistorlar ilə çəkilir.
Adətən xətdə bir usta və bir və ya birdən çox qul var, baxmayaraq ki, birdən çox usta ola bilər, amma bu barədə sonra danışacağıq.
Həm ustalar, həm də qullar məlumatları ötürə və ya ala bilərlər, buna görə də bir cihaz bu dörd vəziyyətdən birində ola bilər: usta ötürmə, usta qəbulu, kölə ötürmə, kölə qəbulu.
Addım 2: Kitabxana
Kitabxanamı burada tapa bilərsiniz.
Yükləmək üçün
Sağ üst köşedeki YÜKLƏMƏ düyməsini basın, sıxılmamış qovluğun adını DHT12 adlandırın.
DHT qovluğunda DHT12.cpp və DHT12.h olduğunu yoxlayın.
DHT kitabxana qovluğunu / libraries / qovluğunuza yerləşdirin.
İlk kitabxananız varsa, kitabxanalar alt qovluğunu yaratmağınız lazım ola bilər.
IDE -ni yenidən başladın.
Addım 3: Behaivor
Bu kitabxana standart DHT kitabxana sensorlarının davranışını təqlid etməyə çalışır (və bir çox kodu kopyalayır) və i2c olso -nu eyni qaydada idarə etmək üçün kodu əlavə edirəm.
Metod DHT kitabxana sensoru ilə eynidir, bəziləri çiy nöqtəsi funksiyasını əlavə edir.
Addım 4: I2c İstifadəsi
İ2c ilə (standart ünvan və standart SDA SCL pin) istifadə etmək üçün konstruktor:
DHT12 dht12;
və SDA SCL pin üçün standart dəyəri götürün.
(ESP-01 üçün lazım olan esp8266 üçün müəyyən edilmiş konstruktorla yenidən təyin etmək mümkündür). və ya
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> ünvan
ünvanı dəyişdirmək üçün.
Addım 5: Bir Tel İstifadəsi
Bir tel istifadə etmək üçün:
DHT12 dht12 (uint8_t addressOrPin, doğru)
addressOrPin -> pin
boolean dəyər, OneWire və ya i2c rejiminin seçilməsidir.
Addım 6: Gizli Oxu
Bunu "örtük", "sadə oxumaq" və ya "tam oxu" ilə istifadə edə bilərsiniz: Gizli, yalnız ilk oxuyucunun həqiqi oxunuşu, digər oxunuş 2 saniyəyə çevrilir. interval ilk oxunuşun saxlanılan dəyəridir.
// Sensorun oxunması, güc parametrini keçməyincə, 2 saniyə keçən vaxta malikdir
// İstiliyi Celsius olaraq oxuyun (standart) float t12 = dht12.readTemperature (); // İstiliyi Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (doğru) olaraq oxuyun; // Sensor oxunuşları 2 saniyəyə qədər də ola bilər (çox yavaş bir sensordur) float h12 = dht12.readHumidity (); // Fahrenheit -də istilik indeksini hesablayın (standart) float hif12 = dht12.computeHeatIndex (f12, h12); // İstilik indeksini Selsi ilə hesablayın (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Fahrenheitdəki çiy nöqtəsini hesablayın (standart) float dpf12 = dht12.dewPoint (f12, h12); // Celsiusda çiy nöqtəsini hesablayın (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Addım 7: Sadə Oxu
Oxuma statusu əldə etmək üçün sadə oxu.
// Sensorun oxunması, güc parametrini keçməsəniz, 2 saniyə keçən vaxta malikdir
bool chk = dht12.read (); // əsl oxumaq yaxşıdır, yalan oxumaq problemidir
// İstiliyi Selsi olaraq oxuyun (standart)
float t12 = dht12.readTemperature (); // İstiliyi Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (doğru) olaraq oxuyun; // Sensor oxunuşları da 2 saniyəyə qədər ola bilər (çox yavaş bir sensordur) float h12 = dht12.readHumidity (); // Fahrenheit -də istilik indeksini hesablayın (standart) float hif12 = dht12.computeHeatIndex (f12, h12); // İstilik indeksini Selsi ilə hesablayın (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Fahrenheitdəki çiy nöqtəsini hesablayın (standart) float dpf12 = dht12.dewPoint (f12, h12); // Celsiusda çiy nöqtəsini hesablayın (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Addım 8: Tam Oxu
Müəyyən bir vəziyyət əldə etmək üçün tam oxuyun.
// Sensorun oxunması, güc parametrini keçməyincə, 2 saniyə keçən vaxta malikdir
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nOxuyan sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); fasilə; halda DHT12:: ERROR_CHECKSUM: Serial.println (F ("Sağlama məbləği xətası")); fasilə; halda DHT12:: ERROR_TIMEOUT: Serial.println (F ("Zaman aşımı xətası")); fasilə; halda DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Aşağı siqnalda zaman aşımı xətası, yüksək çəkmə müqaviməti qoymağa çalışın")); fasilə; halda DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Aşağı siqnalda zaman aşımı xətası, aşağı çəkmə müqaviməti qoymağa çalışın")); fasilə; halda DHT12:: ERROR_CONNECT: Serial.println (F ("Bağlama xətası")); fasilə; halda DHT12:: ERROR_ACK_L: Serial.println (F ("AckL xətası")); fasilə; halda DHT12:: ERROR_ACK_H: Serial.println (F ("AckH xətası")); fasilə; hal DHT12:: ERROR_UNKNOWN: Serial.println (F ("Naməlum səhv DETECTED")); fasilə; halda DHT12:: YOX: Serial.println (F ("Nəticə yoxdur")); fasilə; default: Serial.println (F ("Naməlum səhv")); fasilə; }
// İstiliyi Selsi olaraq oxuyun (standart)
float t12 = dht12.readTemperature (); // İstiliyi Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (doğru) olaraq oxuyun; // Sensor oxunuşları 2 saniyəyə qədər də ola bilər (çox yavaş bir sensordur) float h12 = dht12.readHumidity (); // Fahrenheit -də istilik indeksini hesablayın (standart) float hif12 = dht12.computeHeatIndex (f12, h12); // İstilik indeksini Selsi ilə hesablayın (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Fahrenheitdəki çiy nöqtəsini hesablayın (standart) float dpf12 = dht12.dewPoint (f12, h12); // Celsiusda çiy nöqtəsini hesablayın (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Addım 9: Bağlantı Şeması
Nümunələrlə, əlaqə diaqramı var, düzgün çəkmə rezistorundan istifadə etmək vacibdir.
Github -da kodu paylaşmaq üçün Bobadas, dplasa və adafruit sayəsində (bəzi kod və fikirlər aldığım yer).
Addım 10: Arduino: OneWire
Addım 11: Arduino: I2c
Addım 12: Esp8266 (D1Mini) OneWire
Addım 13: Esp8266 (D1Mini) I2c
Addım 14: Təşəkkürlər
Arduino oyun meydançası (https://playground.arduino.cc/Main/DHT12SensorLibrary)
i2c layihə seriyası (Kolleksiya):
- Rütubət sensoru
- Analog genişləndirici
- Rəqəmsal genişləndirici
- LCD Ekran
Tövsiyə:
DHT21 Arduino ilə Rəqəmsal İstilik və Nəmlik Sensoru: 6 addım
DHT21 Arduino ilə Rəqəmsal Temperatur və Rütubət Sensoru: Bu dərslikdə DHT21 Nəmlik və Temperatur Sensorunun Arduino ilə necə istifadə ediləcəyini və dəyərlərin OLED Ekranda necə göstəriləcəyini öyrənəcəyik
DHT12 I2C Nəmlik və Temperatur Sensorunu Arduino ilə necə istifadə etmək olar: 7 addım
DHT12 I2C Nəmlik və Temperatur Sensorunu Arduino ilə necə istifadə etməli: Bu dərslikdə DHT12 I2C Nəmlik və Temperatur Sensorunun Arduino ilə necə istifadə ediləcəyini və OLED Ekranda dəyərlərin göstərilməsini öyrənəcəyik
Lcd və Səs Algılama ilə İstilik və Nəmlik Sensoru: 4 addım
Lcd və Səs Algılamalı İstilik və Nəmlik Sensoru: Salam uşaqlar !!! Tamam bu layihə mənim son il layihəm idi. Bu layihənin məqsədi, universitetimdəki atelyedə otaq temperaturu və rütubətini izləmək idi, çünki bəzi elektron komponentlər əlverişsiz temperatur və temperatur səbəbiylə arızalanırdı
Arduino Günəş Enerjili İstilik və Nəmlik Sensoru 433mhz Oregon Sensoru Olaraq: 6 Addım
Arduino Günəş Enerjili İstilik və Rütubət Sensoru 433mhz Oregon Sensoru olaraq: Bu günəş enerjisi ilə işləyən bir temperatur və rütubət sensoru qurğusudur. Sensor 433mhz Oregon sensorunu təqlid edir və Telldus Net şlüzündə görünür. Nə lazımdır: 1x "10-LED Günəş enerjisi hərəkət sensoru " ebaydan. 3.7v xəmir olduğunu yazdığınızdan əmin olun
Raspberry Pi - HIH6130 I2C Nəmlik və İstilik Sensoru Java Dərsliyi: 4 addım
Raspberry Pi - HIH6130 I2C Rütubət və Temperatur Sensoru Java Dərsliyi: HIH6130 rəqəmsal çıxışı olan rütubət və temperatur sensoru. Bu sensorlar ± 4% RH dəqiqlik səviyyəsi təmin edir. Sektorun aparıcı uzunmüddətli sabitliyi, əsl temperaturla kompensasiya edilmiş rəqəmsal I2C, Sənayenin qabaqcıl etibarlılığı, Enerji səmərəliliyi