Isi kandungan:

DHT12 (Sensor Kelembapan dan Suhu i2c Murah), Penggunaan Mudah Pantas: 14 Langkah
DHT12 (Sensor Kelembapan dan Suhu i2c Murah), Penggunaan Mudah Pantas: 14 Langkah

Video: DHT12 (Sensor Kelembapan dan Suhu i2c Murah), Penggunaan Mudah Pantas: 14 Langkah

Video: DHT12 (Sensor Kelembapan dan Suhu i2c Murah), Penggunaan Mudah Pantas: 14 Langkah
Video: Programing Arduino dan Aplikasinya pada Sistem Kontrol 2024, November
Anonim
DHT12 (Sensor Kelembapan dan Suhu i2c Murah), Penggunaan Mudah Pantas
DHT12 (Sensor Kelembapan dan Suhu i2c Murah), Penggunaan Mudah Pantas

Anda boleh mendapatkan kemas kini dan yang lain di laman web saya

Saya suka sensor yang boleh digunakan dengan 2 wayar (protokol i2c), tetapi saya suka yang murah.

Ini adalah perpustakaan Arduino dan esp8266 untuk siri DHT12 sensor suhu / kelembapan yang sangat rendah (kurang dari 1 $) yang berfungsi dengan sambungan i2c atau satu wayar.

Sangat berguna jika anda mahu menggunakan esp01 (jika anda menggunakan siri anda hanya mempunyai 2 pin) untuk membaca kelembapan dan suhu dan memaparkannya pada LCD i2c.

AI membaca bahawa kadang-kadang memerlukan penentukuran, tetapi saya mempunyai pokok ini dan mendapat nilai yang sangat serupa dengan DHT22. Sekiranya anda mempunyai penentukuran masalah ini, buka masalah di github dan saya tambahkan pelaksanaannya.

Langkah 1: Bagaimana I2c Berfungsi

Bagaimana I2c Berfungsi
Bagaimana I2c Berfungsi

I2C berfungsi dengan dua wayar, SDA (garis data) dan SCL (garis jam).

Kedua-dua garisan ini terbuka, tetapi ditarik dengan perintang.

Biasanya ada satu tuan dan satu atau beberapa hamba di talian, walaupun boleh ada banyak tuan, tetapi kita akan membincangkannya kemudian.

Baik tuan dan hamba dapat menghantar atau menerima data, oleh itu, perangkat dapat berada di salah satu dari empat keadaan ini: transmisi induk, penerima utama, transmisi hamba, penerimaan hamba.

Langkah 2: Perpustakaan

Anda boleh menemui perpustakaan saya di sini.

Untuk muat turun

Klik butang DOWNLOADS di sudut kanan atas, namakan semula folder DHT12 yang tidak dimampatkan.

Pastikan folder DHT mengandungi DHT12.cpp dan DHT12.h.

Letakkan folder perpustakaan DHT anda / pustaka / folder.

Anda mungkin perlu membuat subfolder perpustakaan jika itu adalah perpustakaan pertama anda.

Mulakan semula IDE.

Langkah 3: Behaivor

Pustaka ini cuba meniru tingkah laku sensor pustaka DHT standard (dan menyalin banyak kod), dan saya menambahkan kod untuk menguruskan i2c olso dengan cara yang sama.

Kaedahnya sama dengan sensor perpustakaan DHT, dengan beberapa fungsi penambahan seperti titik embun.

Langkah 4: Penggunaan I2c

Untuk digunakan dengan i2c (alamat lalai dan pin SDA SCL lalai) pembina adalah:

DHT12 dht12;

dan ambil nilai lalai untuk pin SDA SCL.

(Mungkin untuk mentakrifkan semula dengan kontraktor yang ditentukan untuk esp8266, diperlukan untuk ESP-01). atau

DHT12 dht12 (alamat uint8_tOrPin)

addressOrPin -> alamat

untuk menukar alamat.

Langkah 5: Penggunaan Satu Kawat

Untuk menggunakan satu wayar:

DHT12 dht12 (alamat uint8_tOrPin, benar)

addressOrPin -> pin

nilai boolean adalah pemilihan mod oneWire atau i2c.

Langkah 6: Bacaan Tersirat

Anda boleh menggunakannya dengan "implisit", "read simple" atau "fullread": Tersirat, hanya bacaan pertama yang melakukan pembacaan sensor yang benar, bacaan lain menjadi 2 saat. selang adalah nilai tersimpan dari bacaan pertama.

// Pembacaan sensor mempunyai 2 detik masa yang berlalu, kecuali jika anda melewati parameter daya

// Baca suhu sebagai Celsius (lalai) terapung t12 = dht12.readTemperature (); // Baca suhu sebagai Fahrenheit (isFahrenheit = true) apungan f12 = dht12.readTemperature (benar); // Bacaan sensor juga boleh sampai 2 saat 'lama' (ini adalah sensor yang sangat perlahan) float h12 = dht12.readHumidity (); // Hitung indeks haba di Fahrenheit (lalai) float hif12 = dht12.computeHeatIndex (f12, h12); // Mengira indeks haba dalam Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Hitung titik embun di Fahrenheit (lalai) float dpf12 = dht12.dewPoint (f12, h12); // Hitung titik embun dalam Celsius (isFahreheit = false) apungan dpc12 = dht12.dewPoint (t12, h12, false);

Langkah 7: Bacaan Ringkas

Bacaan ringkas untuk mendapatkan status membaca.

// Pembacaan sensor mempunyai 2 detik masa yang berlalu, kecuali anda melewati parameter kekuatan

bool chk = dht12.read (); // betul membaca ok, masalah membaca salah

// Baca suhu sebagai Celsius (lalai)

apungan t12 = dht12.readTemperature (); // Baca suhu sebagai Fahrenheit (isFahrenheit = true) apungan f12 = dht12.readTemperature (benar); // Pembacaan sensor juga boleh sampai 2 saat 'lama' (ini adalah sensor yang sangat perlahan) float h12 = dht12.readHumidity (); // Hitung indeks haba di Fahrenheit (lalai) float hif12 = dht12.computeHeatIndex (f12, h12); // Hitung indeks haba dalam Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Hitung titik embun di Fahrenheit (lalai) float dpf12 = dht12.dewPoint (f12, h12); // Hitung titik embun dalam Celsius (isFahreheit = false) apungan dpc12 = dht12.dewPoint (t12, h12, false);

Langkah 8: Bacaan Penuh

Baca penuh untuk mendapatkan status yang ditentukan.

// Pembacaan sensor mempunyai 2 detik masa yang berlalu, kecuali jika anda melewati parameter daya

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nBaca sensor:")); beralih (chk) {kes DHT12:: OK: Serial.println (F ("OK")); rehat; kes DHT12:: ERROR_CHECKSUM: Serial.println (F ("Kesalahan Checksum")); rehat; kes DHT12:: ERROR_TIMEOUT: Serial.println (F ("Kesalahan masa tamat")); rehat; kes DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Kesalahan masa tamat pada isyarat rendah, cuba letakkan rintangan tarik tinggi")); rehat; kes DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Kesalahan masa tamat pada isyarat rendah, cuba letakkan rintangan tarik rendah")); rehat; kes DHT12:: ERROR_CONNECT: Serial.println (F ("Ralat sambung")); rehat; kes DHT12:: ERROR_ACK_L: Serial.println (F ("Kesalahan AckL")); rehat; kes DHT12:: ERROR_ACK_H: Serial.println (F ("Kesalahan AckH")); rehat; kes DHT12:: ERROR_UNKNOWN: Serial.println (F ("Ralat tidak diketahui DETECTED")); rehat; kes DHT12:: TIADA: Serial.println (F ("Tiada hasil")); rehat; lalai: Serial.println (F ("Ralat tidak diketahui")); rehat; }

// Baca suhu sebagai Celsius (lalai)

apungan t12 = dht12.readTemperature (); // Baca suhu sebagai Fahrenheit (isFahrenheit = true) apungan f12 = dht12.readTemperature (benar); // Pembacaan sensor juga boleh sampai 2 saat 'lama' (ini adalah sensor yang sangat perlahan) float h12 = dht12.readHumidity (); // Hitung indeks haba di Fahrenheit (lalai) float hif12 = dht12.computeHeatIndex (f12, h12); // Mengira indeks haba dalam Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Hitung titik embun di Fahrenheit (lalai) float dpf12 = dht12.dewPoint (f12, h12); // Hitung titik embun dalam Celsius (isFahreheit = false) apungan dpc12 = dht12.dewPoint (t12, h12, false);

Langkah 9: Diagram Sambungan

Dengan contoh, terdapat rajah sambungan, penting untuk menggunakan penarik tarik yang betul.

Terima kasih kepada Bobadas, dplasa dan adafruit, untuk berkongsi kod dalam github (di mana saya mengambil beberapa kod dan idea).

Langkah 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Langkah 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Langkah 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Langkah 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Langkah 14: Terima kasih

Taman permainan Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

Siri projek i2c (Koleksi):

  • Sensor kelembapan suhu
  • Pengembang analog
  • Pengembang digital
  • Paparan LCD

Disyorkan: