İçindekiler:
- Adım 1: I2c Nasıl Çalışır?
- 2. Adım: Kitaplık
- Adım 3: Davranış
- Adım 4: I2c Kullanımı
- Adım 5: Tek Tel Kullanımı
- Adım 6: Örtülü Okuma
- 7. Adım: Basit Okuma
- Adım 8: Tam Okuma
- Adım 9: Bağlantı Şeması
- Adım 10: Arduino: OneWire
- Adım 11: Arduino: I2c
- Adım 12: Esp8266 (D1Mini) OneWire
- Adım 13: Esp8266 (D1Mini) I2c
- Adım 14: Teşekkürler
Video: DHT12 (i2c Ucuz Nem ve Sıcaklık Sensörü), Hızlı Kolay Kullanım: 14 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Güncelleme ve diğerlerini sitemde bulabilirsiniz https://www.mischianti.org/2019/01/01/dht12-library-en/.
2 telli (i2c protokolü) kullanılabilen sensörü seviyorum ama ucuz olanı seviyorum.
Bu, i2c veya tek kablolu bağlantı ile çalışan çok düşük maliyetli sıcaklık/nem sensörlerinin (1$'dan az) DHT12 serisi için bir Arduino ve esp8266 kütüphanesidir.
Nem ve sıcaklığı okumak ve i2c LCD'de görüntülemek için esp01 (seri kullanıyorsanız sadece 2 pininiz var) kullanmak istiyorsanız çok kullanışlıdır.
AI, bazen kalibrasyona ihtiyaç duyduğunu okudu, ancak bunun ağacına sahibim ve DHT22'ye çok benzer bir değer elde ettim. Bu sorunu kalibrasyonunuz varsa, github'da sorunu açın ve uygulama eklerim.
Adım 1: I2c Nasıl Çalışır?
I2C, SDA(veri hattı) ve SCL(saat hattı) olmak üzere iki kablosuyla çalışır.
Bu hatların her ikisi de açık drenajdır, ancak dirençlerle çekilir.
Genellikle hatta bir master ve bir veya daha fazla slave bulunur, ancak birden fazla master olabilir, ancak bunu daha sonra konuşacağız.
Hem master hem de slave'ler veri iletebilir veya alabilir, bu nedenle bir cihaz şu dört durumdan birinde olabilir: ana iletim, ana alma, bağımlı iletim, köle alma.
2. Adım: Kitaplık
Kütüphaneme buradan ulaşabilirsiniz.
İndirmek
Sağ üst köşedeki DOWNLOADS düğmesine tıklayın, sıkıştırılmamış DHT12 klasörünü yeniden adlandırın.
DHT klasörünün DHT12.cpp ve DHT12.h içerdiğini kontrol edin.
DHT kütüphane klasörünü /libraries/ klasörünüze yerleştirin.
İlk kitaplığınızsa, kitaplıklar alt klasörünü oluşturmanız gerekebilir.
IDE'yi yeniden başlatın.
Adım 3: Davranış
Bu kitaplık, standart DHT kitaplığı sensörlerinin davranışını taklit etmeye çalışır (ve birçok kodu kopyalar) ve ben de aynı şekilde i2c'yi yönetmek için kodu ekliyorum.
Yöntem, DHT kütüphane sensörünün aynısıdır, bazıları çiy noktası işlevi gibi ekler.
Adım 4: I2c Kullanımı
i2c (varsayılan adres ve varsayılan SDA SCL pini) ile kullanmak için yapıcı:
DHT12 dht12;
ve SDA SCL pini için varsayılan değeri alın.
(ESP-01 için gerekli olan esp8266 için belirtilen kurucu ile yeniden tanımlamak mümkündür). veya
DHT12 dht12(uint8_t addressOrPin)
addressOrPin -> adres
adresi değiştirmek için.
Adım 5: Tek Tel Kullanımı
Bir tel kullanmak için:
DHT12 dht12(uint8_t addressOrPin, true)
addressOrPin -> pin
boole değeri, oneWire veya i2c modunun seçimidir.
Adım 6: Örtülü Okuma
"Örtük", "basit okuma" veya "tam okuma" ile kullanabilirsiniz: Örtük, yalnızca sensörün gerçek okumasını yapan ilk okuma, 2 saniye içinde olan diğer okuma. aralık, ilk okumanın saklanan değeridir.
// Force parametresini geçmediğiniz sürece sensörün okuması 2 saniyelik bir süreye sahiptir.
// Sıcaklığı Celsius (varsayılan) olarak oku float t12 = dht12.readTemperature(); // Sıcaklığı Fahrenheit olarak oku (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Sensör okumaları 2 saniyeye kadar da olabilir 'eski' (çok yavaş bir sensör) float h12 = dht12.readHumidity(); // Isı endeksini Fahrenhayt cinsinden hesapla (varsayılan) float hif12 = dht12.computeHeatIndex(f12, h12); // Isı endeksini Celsius cinsinden hesaplayın (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Çiy noktasını Fahrenhayt cinsinden hesapla (varsayılan) float dpf12 = dht12.dewPoint(f12, h12); // Çiy noktasını Celsius cinsinden hesapla (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
7. Adım: Basit Okuma
Okuma durumu almak için basit okuma.
// Force parametresini geçmediğiniz sürece sensörün okuması 2 saniyelik bir süreye sahiptir.
bool chk = dht12.read(); // doğru okuma tamam, yanlış okuma sorunu
// Sıcaklığı Celsius olarak oku (varsayılan)
float t12 = dht12.readTemperature(); // Sıcaklığı Fahrenheit olarak oku (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Sensör okumaları 2 saniyeye kadar da olabilir 'eski' (çok yavaş bir sensör) float h12 = dht12.readHumidity(); // Isı endeksini Fahrenhayt cinsinden hesapla (varsayılan) float hif12 = dht12.computeHeatIndex(f12, h12); // Isı endeksini Celsius cinsinden hesaplayın (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Çiy noktasını Fahrenhayt cinsinden hesapla (varsayılan) float dpf12 = dht12.dewPoint(f12, h12); // Çiy noktasını Celsius cinsinden hesapla (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Adım 8: Tam Okuma
Belirtilen durumu elde etmek için tam okuma.
// Force parametresini geçmediğiniz sürece sensörün okuması 2 saniyelik bir süreye sahiptir.
DHT12::ReadStatus chk = dht12.readStatus(); Serial.print(F("\nOkuma sensörü: ")); switch (chk) { case DHT12::OK: Serial.println(F("OK")); kırmak; case DHT12::ERROR_CHECKSUM: Serial.println(F("Kontrol toplamı hatası")); kırmak; case DHT12::ERROR_TIMEOUT: Serial.println(F("Zaman aşımı hatası")); kırmak; case DHT12::ERROR_TIMEOUT_LOW: Serial.println(F("Düşük sinyalde zaman aşımı hatası, yüksek çekme direnci koymayı deneyin")); kırmak; case DHT12::ERROR_TIMEOUT_HIGH: Serial.println(F("Düşük sinyalde zaman aşımı hatası, düşük çekme direnci koymayı deneyin")); kırmak; case DHT12::ERROR_CONNECT: Serial.println(F("Bağlantı hatası")); kırmak; case DHT12::ERROR_ACK_L: Serial.println(F("AckL hatası")); kırmak; case DHT12::ERROR_ACK_H: Serial.println(F("AckH hatası")); kırmak; case DHT12::ERROR_UNKNOWN: Serial.println(F("Bilinmeyen hata ALGILANDI")); kırmak; case DHT12::NONE: Serial.println(F("Sonuç yok")); kırmak; varsayılan: Serial.println(F("Bilinmeyen hata")); kırmak; }
// Sıcaklığı Celsius olarak oku (varsayılan)
float t12 = dht12.readTemperature(); // Sıcaklığı Fahrenheit olarak oku (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Sensör okumaları 2 saniyeye kadar da olabilir 'eski' (çok yavaş bir sensör) float h12 = dht12.readHumidity(); // Isı endeksini Fahrenhayt cinsinden hesapla (varsayılan) float hif12 = dht12.computeHeatIndex(f12, h12); // Isı endeksini Celsius cinsinden hesaplayın (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Çiy noktasını Fahrenhayt cinsinden hesapla (varsayılan) float dpf12 = dht12.dewPoint(f12, h12); // Çiy noktasını Celsius cinsinden hesapla (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Adım 9: Bağlantı Şeması
Örneklerle, bağlantı şeması var, doğru çekme direncini kullanmak önemlidir.
Bobadas, dplasa ve adafruit sayesinde kodu github'da (bazı kod ve fikirleri aldığım yer) paylaşmak için.
Adım 10: Arduino: OneWire
Adım 11: Arduino: I2c
Adım 12: Esp8266 (D1Mini) OneWire
Adım 13: Esp8266 (D1Mini) I2c
Adım 14: Teşekkürler
Arduino oyun alanı (https://playground.arduino.cc/Main/DHT12SensorLibrary)
i2c proje serisi (Koleksiyon):
- Sıcaklık nem sensörü
- Analog genişletici
- Dijital genişletici
- LCD ekran
Önerilen:
Arduino İle DHT12 I2C Nem ve Sıcaklık Sensörü Nasıl Kullanılır: 7 Adım
Arduino İle DHT12 I2C Nem ve Sıcaklık Sensörü Nasıl Kullanılır: Bu dersimizde DHT12 I2C Nem ve Sıcaklık Sensörünü Arduino ile nasıl kullanacağımızı öğreneceğiz ve değerleri OLED Ekranda göstereceğiz.Videoyu izle
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Python Eğitimi: 4 Adım
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Python Eğitimi: HIH6130, dijital çıkışlı bir nem ve sıcaklık sensörüdür. Bu sensörler, ±%4 RH doğruluk seviyesi sağlar. Endüstri lideri uzun vadeli kararlılık, gerçek sıcaklık kompanzasyonlu dijital I2C, Endüstri lideri güvenilirlik, Enerji verimliliği ile
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Java Eğitimi: 4 Adım
Raspberry Pi - HIH6130 I2C Nem ve Sıcaklık Sensörü Java Eğitimi: HIH6130, dijital çıkışlı bir nem ve sıcaklık sensörüdür. Bu sensörler, ±%4 RH doğruluk seviyesi sağlar. Endüstri lideri uzun vadeli kararlılık, gerçek sıcaklık kompanzasyonlu dijital I2C, Endüstri lideri güvenilirlik, Enerji verimliliği ile
PCF8591 (i2c Analog I/O Genişletici) Hızlı Kolay Kullanım: 9 Adım
PCF8591 (i2c Analog I/O Genişletici) Hızlı Kolay Kullanım: i2c pcf8591 IC'yi arduino ve esp8266 ile kullanmak için kitaplık. Bu IC (4'e kadar) analog giriş ve/veya 1 analog çıkışı kontrol edebilir, örneğin voltaj ölçebilir, termistör değerini okuyabilir veya bir led'i söndürebilir. Sadece 2 kablo ile analog değeri okuyabilir ve analog değer yazabilir (mükemmel
Hızlı, Hızlı, Ucuz, İyi Görünümlü LED Oda Aydınlatması (Herkes İçin): 5 Adım (Resimli)
Hızlı, Hızlı, Ucuz, İyi Görünümlü LED Oda Aydınlatması (Herkes için): Herkese hoş geldiniz :-) Bu benim ilk talimatım, bu yüzden yorumları bekliyoruz :-) Size göstermeyi umduğum şey, KÜÇÜK bütçe.Neye ihtiyacınız var:KabloLED'lerDirençler (12V için 510Ohm)ZımbalarLehimleme demirKesiciler ve diğer temel