Daftar Isi:

DHT12 (Sensor Kelembaban dan Suhu Murah i2c), Penggunaan Cepat Mudah: 14 Langkah
DHT12 (Sensor Kelembaban dan Suhu Murah i2c), Penggunaan Cepat Mudah: 14 Langkah

Video: DHT12 (Sensor Kelembaban dan Suhu Murah i2c), Penggunaan Cepat Mudah: 14 Langkah

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

Anda dapat menemukan pembaruan dan lainnya di situs saya

Saya suka sensor yang bisa digunakan dengan 2 kabel (protokol i2c), tapi saya suka yang murah.

Ini adalah perpustakaan Arduino dan esp8266 untuk seri DHT12 dari sensor suhu/kelembaban berbiaya sangat rendah (kurang dari $1) yang bekerja dengan i2c atau satu koneksi kabel.

Sangat berguna jika Anda ingin menggunakan esp01 (jika Anda menggunakan serial Anda hanya memiliki 2 pin) untuk membaca kelembaban dan suhu dan menampilkannya di LCD i2c.

AI membaca bahwa kadang-kadang tampaknya perlu kalibrasi, tetapi saya memiliki pohon ini dan mendapatkan nilai yang sangat mirip dengan DHT22. Jika Anda memiliki kalibrasi masalah ini, buka masalah di github dan saya menambahkan implementasi.

Langkah 1: Cara Kerja I2c

Bagaimana I2c Bekerja
Bagaimana I2c Bekerja

I2C bekerja dengan dua kabelnya, SDA (jalur data) dan SCL (jalur jam).

Kedua saluran ini adalah saluran terbuka, tetapi ditarik dengan resistor.

Biasanya ada satu master dan satu atau beberapa budak di telepon, meskipun bisa ada beberapa master, tapi kita akan membicarakannya nanti.

Baik master dan budak dapat mengirim atau menerima data, oleh karena itu, perangkat dapat berada di salah satu dari empat status ini: transmisi master, penerima master, transmisi slave, penerima slave.

Langkah 2: Perpustakaan

Anda dapat menemukan perpustakaan saya di sini.

Untuk mengunduh

Klik tombol UNDUH di sudut kanan atas, ganti nama folder yang tidak terkompresi DHT12.

Periksa apakah folder DHT berisi DHT12.cpp dan DHT12.h.

Tempatkan folder perpustakaan DHT folder /libraries/ Anda.

Anda mungkin perlu membuat subfolder perpustakaan jika ini adalah perpustakaan pertama Anda.

Mulai ulang IDE.

Langkah 3: Perilaku

Pustaka ini mencoba meniru perilaku sensor pustaka DHT standar (dan menyalin banyak kode), dan saya menambahkan kode untuk mengelola i2c juga dengan cara yang sama.

Metodenya sama dengan sensor library DHT, dengan beberapa penambahan seperti fungsi titik embun.

Langkah 4: Penggunaan I2c

Untuk digunakan dengan i2c (alamat default dan pin SDA SCL default) konstruktornya adalah:

DHT12 dht12;

dan ambil nilai default untuk pin SDA SCL.

(Dimungkinkan untuk mendefinisikan ulang dengan konstruktor yang ditentukan untuk esp8266, diperlukan untuk ESP-01). atau

DHT12 dht12(alamat uint8_tAtauPin)

alamatOrPin -> alamat

untuk mengubah alamat.

Langkah 5: Penggunaan Satu Kawat

Untuk menggunakan satu kawat:

DHT12 dht12(alamat uint8_tAtauPin, benar)

alamatAtauPin -> pin

nilai boolean adalah pemilihan mode oneWire atau i2c.

Langkah 6: Baca Implisit

Anda dapat menggunakannya dengan "implicit", "simple read" atau "fullread": Implicit, hanya pembacaan pertama yang melakukan pembacaan sensor yang sebenarnya, pembacaan lainnya yang menjadi dalam 2 detik. interval adalah nilai tersimpan dari pembacaan pertama.

// Pembacaan sensor memiliki 2 detik waktu berlalu, kecuali jika Anda melewati parameter gaya

// Baca suhu sebagai Celcius (default) float t12 = dht12.readTemperature(); // Baca suhu sebagai Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Pembacaan sensor juga bisa sampai 2 detik 'lama' (sensornya sangat lambat) float h12 = dht12.readHumidity(); // Hitung indeks panas dalam Fahrenheit (default) float hif12 = dht12.computeHeatIndex(f12, h12); // Hitung indeks panas dalam Celcius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Hitung titik embun dalam Fahrenheit (default) float dpf12 = dht12.dewPoint(f12, h12); // Hitung titik embun dalam Celcius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);

Langkah 7: Baca Sederhana

Baca sederhana untuk mendapatkan status dibaca.

// Pembacaan sensor memiliki 2 detik waktu berlalu, kecuali jika Anda melewati parameter gaya

bool chk = dht12.read(); // pembacaan benar tidak apa-apa, masalah pembacaan salah

// Baca suhu sebagai Celcius (default)

float t12 = dht12.readTemperature(); // Baca suhu sebagai Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Pembacaan sensor juga bisa sampai 2 detik 'lama' (sensornya sangat lambat) float h12 = dht12.readHumidity(); // Hitung indeks panas dalam Fahrenheit (default) float hif12 = dht12.computeHeatIndex(f12, h12); // Hitung indeks panas dalam Celcius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Hitung titik embun dalam Fahrenheit (default) float dpf12 = dht12.dewPoint(f12, h12); // Hitung titik embun dalam Celcius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);

Langkah 8: Baca Penuh

Baca penuh untuk mendapatkan status tertentu.

// Pembacaan sensor memiliki 2 detik waktu berlalu, kecuali jika Anda melewati parameter gaya

DHT12::ReadStatus chk = dht12.readStatus(); Serial.print(F("\nBaca sensor: ")); switch (chk) { kasus DHT12::OK: Serial.println(F("OK")); merusak; kasus DHT12::ERROR_CHECKSUM: Serial.println(F("Checksum error")); merusak; kasus DHT12::ERROR_TIMEOUT: Serial.println(F("Kesalahan batas waktu")); merusak; case DHT12::ERROR_TIMEOUT_LOW: Serial.println(F("Timeout error pada sinyal rendah, coba pasang resistansi pullup tinggi")); merusak; case DHT12::ERROR_TIMEOUT_HIGH: Serial.println(F("Timeout error pada sinyal rendah, coba pasang resistansi pullup rendah")); merusak; kasus DHT12::ERROR_CONNECT: Serial.println(F("Sambungkan error")); merusak; kasus DHT12::ERROR_ACK_L: Serial.println(F("AckL error")); merusak; kasus DHT12::ERROR_ACK_H: Serial.println(F("AckH error")); merusak; kasus DHT12::ERROR_UNKNOWN: Serial.println(F("Kesalahan tidak diketahui TERDETEKSI")); merusak; case DHT12::NONE: Serial.println(F("Tidak ada hasil")); merusak; default: Serial.println(F("Kesalahan tidak diketahui")); merusak; }

// Baca suhu sebagai Celcius (default)

float t12 = dht12.readTemperature(); // Baca suhu sebagai Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Pembacaan sensor juga bisa sampai 2 detik 'lama' (sensornya sangat lambat) float h12 = dht12.readHumidity(); // Hitung indeks panas dalam Fahrenheit (default) float hif12 = dht12.computeHeatIndex(f12, h12); // Hitung indeks panas dalam Celcius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Hitung titik embun dalam Fahrenheit (default) float dpf12 = dht12.dewPoint(f12, h12); // Hitung titik embun dalam Celcius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);

Langkah 9: Diagram Koneksi

Dengan contoh, ada diagram koneksi, penting untuk menggunakan resistor pullup yang benar.

Terima kasih kepada Bobadas, dplasa dan adafruit, untuk membagikan kode di github (tempat saya mengambil beberapa kode dan ide).

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 bermain Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

seri proyek i2c (Koleksi):

  • Sensor kelembaban suhu
  • Ekspander analog
  • Ekspander digital
  • Layar LCD

Direkomendasikan: