Talaan ng mga Nilalaman:

DHT12 (i2c Cheap Humidity and Temperature Sensor), Mabilis na Madaling Paggamit: 14 Hakbang
DHT12 (i2c Cheap Humidity and Temperature Sensor), Mabilis na Madaling Paggamit: 14 Hakbang

Video: DHT12 (i2c Cheap Humidity and Temperature Sensor), Mabilis na Madaling Paggamit: 14 Hakbang

Video: DHT12 (i2c Cheap Humidity and Temperature Sensor), Mabilis na Madaling Paggamit: 14 Hakbang
Video: Use AM2320 (DHT12 ?) to measure temperature and humidity + Arduino + LCD i2c 2024, Hulyo
Anonim
DHT12 (i2c Cheap Humidity and Temperature Sensor), Mabilis na Madaling Paggamit
DHT12 (i2c Cheap Humidity and Temperature Sensor), Mabilis na Madaling Paggamit

Maaari kang makahanap ng pag-update at iba pa sa aking site

Gusto ko ang sensor na maaaring magamit sa 2 wire (i2c protocol), ngunit gusto ko ang mura.

Ito ay isang Arduino at esp8266 library para sa serye ng DHT12 ng napakababang temperatura / mga sensor ng halumigmig na gastos (mas mababa sa 1 $) na gumagana sa i2c o isang koneksyon sa kawad.

Napaka kapaki-pakinabang kung nais mong gumamit ng esp01 (kung gumagamit ka ng serial mayroon ka lamang 2 pin) upang mabasa ang halumigmig at temperatura at ipakita ito sa i2c LCD.

Nabasa ng AI na minsan ay nangangailangan ng pag-calibrate, ngunit mayroon akong puno nito at nagkakaroon ako ng halaga na katulad sa DHT22. Kung mayroon kang pagkakalibrate sa problemang ito, buksan ang isyu sa github at nagdaragdag ako ng pagpapatupad.

Hakbang 1: Paano Gumagana ang I2c

Paano Gumagana ang I2c
Paano Gumagana ang I2c

Gumagana ang I2C kasama ang dalawang wires, ang SDA (linya ng data) at SCL (linya ng orasan).

Ang parehong mga linya na ito ay bukas-kanal, ngunit hinugot sa mga resistors.

Kadalasan mayroong isang master at isa o maraming mga alipin sa linya, bagaman maaaring maraming mga masters, ngunit pag-uusapan natin ito mamaya.

Ang parehong mga masters at alipin ay maaaring magpadala o makatanggap ng data, samakatuwid, ang isang aparato ay maaaring nasa isa sa apat na estado na ito: master transmit, master accept, slave transmit, slave accept.

Hakbang 2: Library

Mahahanap mo rito ang aking silid aklatan.

Magdownload

I-click ang pindutang DOWNLOADS sa kanang sulok sa itaas, palitan ang pangalan ng hindi naka-compress na folder na DHT12.

Suriin na ang folder ng DHT ay naglalaman ng DHT12.cpp at DHT12.h.

Ilagay ang folder ng DHT library sa iyong / mga aklatan / folder.

Maaaring kailanganin mong likhain ang mga library ng mga folder kung ito ang iyong unang silid-aklatan.

I-restart ang IDE.

Hakbang 3: Behaivor

Ang libray na ito ay subukang gayahin ang ugali ng karaniwang mga sensor ng library ng DHT (at kopyahin ang maraming code), at idinagdag ko ang code upang pamahalaan ang i2c olso sa parehong pamamaraan.

Ang pamamaraan ay pareho ng sensor ng library ng DHT, na may ilang pagdaragdag tulad ng pag-andar ng dew point.

Hakbang 4: Paggamit ng I2c

Upang magamit sa i2c (default address at default SDA SCL pin) ang tagapagbuo ay:

DHT12 dht12;

at kunin ang default na halaga para sa SDA SCL pin.

(Posibleng muling tukuyin ang tinukoy na contructor para sa esp8266, kinakailangan para sa ESP-01). o

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> address

upang baguhin ang address.

Hakbang 5: Isang Paggamit ng Wire

Upang magamit ang isang kawad:

DHT12 dht12 (uint8_t addressOrPin, totoo)

addressOrPin -> pin

Ang halaga ng boolean ay ang pagpili ng oneWire o i2c mode.

Hakbang 6: Implicit Basahin

Maaari mong gamitin ito sa "implicit", "simpleng basahin" o "fullread": Implicit, ang unang basahin lamang na gumagawa ng isang tunay na basahin ang sensor, ang iba pang nabasa na naging sa 2secs. agwat ay ang nakaimbak na halaga ng unang nabasa.

// Ang nabasa ng sensor ay mayroong 2secs ng lumipas na oras, maliban kung pumasa ka sa parameter ng puwersa

// Basahin ang temperatura bilang Celsius (ang default) float t12 = dht12.readTemperature (); // Read temperatura as Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Ang mga pagbasa ng sensor ay maaari ding hanggang sa 2 segundo 'luma' (ito ay isang napakabagal ng sensor) lumutang h12 = dht12.readHumidity (); // Compute heat index sa Fahrenheit (ang default) float hif12 = dht12.computeHeatIndex (f12, h12); // Compute heat index in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Compute dew point in Fahrenheit (the default) float dpf12 = dht12.dewPoint (f12, h12); // Compute dew point in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Hakbang 7: Simpleng Basahin

Simpleng basahin upang makakuha ng katayuan ng nabasa.

// Ang nabasa ng sensor ay mayroong 2secs ng lumipas na oras, maliban kung pumasa ka sa parameter ng puwersa

bool chk = dht12.read (); // totoong basahin ay ok, maling basahin ang problema

// Basahin ang temperatura bilang Celsius (ang default)

float t12 = dht12.readTemperature (); // Read temperatura as Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Ang mga pagbasa ng sensor ay maaari ding hanggang sa 2 segundo 'luma' (ito ay isang napakabagal ng sensor) lumutang h12 = dht12.readHumidity (); // Compute heat index sa Fahrenheit (ang default) float hif12 = dht12.computeHeatIndex (f12, h12); // Compute heat index in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Compute dew point in Fahrenheit (the default) float dpf12 = dht12.dewPoint (f12, h12); // Compute dew point in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Hakbang 8: Buong Basahin

Buong basahin upang makakuha ng isang tinukoy na katayuan.

// Ang nabasa ng sensor ay mayroong 2secs ng lumipas na oras, maliban kung pumasa ka sa parameter ng puwersa

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nRead sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); pahinga; kaso DHT12:: ERROR_CHECKSUM: Serial.println (F ("Checksum error")); pahinga; kaso DHT12:: ERROR_TIMEOUT: Serial.println (F ("Timeout error")); pahinga; case DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Timeout error sa mababang signal, subukang ilagay ang paglaban ng mataas na pullup")); pahinga; case DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Timeout error sa mababang signal, subukang ilagay ang mababang resistensya ng pullup")); pahinga; kaso DHT12:: ERROR_CONNECT: Serial.println (F ("Connect error")); pahinga; kaso DHT12:: ERROR_ACK_L: Serial.println (F ("AckL error")); pahinga; kaso DHT12:: ERROR_ACK_H: Serial.println (F ("AckH error")); pahinga; kaso DHT12:: ERROR_UNKNOWN: Serial.println (F ("Hindi kilalang error DETected")); pahinga; kaso DHT12:: WALA: Serial.println (F ("Walang resulta")); pahinga; default: Serial.println (F ("Hindi kilalang error")); pahinga; }

// Basahin ang temperatura bilang Celsius (ang default)

float t12 = dht12.readTemperature (); // Read temperatura as Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Ang mga pagbasa ng sensor ay maaari ding hanggang sa 2 segundo 'luma' (ito ay isang napakabagal ng sensor) lumutang h12 = dht12.readHumidity (); // Compute heat index sa Fahrenheit (ang default) float hif12 = dht12.computeHeatIndex (f12, h12); // Compute heat index in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Compute dew point in Fahrenheit (the default) float dpf12 = dht12.dewPoint (f12, h12); // Compute dew point in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Hakbang 9: Diagram ng Koneksyon

Sa mga halimbawa, mayroong diagram ng koneksyon, mahalagang gumamit ng wastong pullup risistor.

Salamat kay Bobadas, dplasa at adafruit, upang ibahagi ang code sa github (kung saan kumukuha ako ng ilang code at ideya).

Hakbang 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Hakbang 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Hakbang 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Hakbang 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Hakbang 14: Salamat

Palaruan ng Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

serye ng proyekto ng i2c (Koleksyon):

  • Temperatura sensor ng kahalumigmigan
  • Analog expander
  • Digital expander
  • LCD Display

Inirerekumendang: