Taula de continguts:

DHT12 (sensor d’humitat i temperatura barat i2c), d’ús fàcil i ràpid: 14 passos
DHT12 (sensor d’humitat i temperatura barat i2c), d’ús fàcil i ràpid: 14 passos

Vídeo: DHT12 (sensor d’humitat i temperatura barat i2c), d’ús fàcil i ràpid: 14 passos

Vídeo: DHT12 (sensor d’humitat i temperatura barat i2c), d’ús fàcil i ràpid: 14 passos
Vídeo: DHT11 DHT12 DHT22 Temperature Humidity Sensor Test 2024, De novembre
Anonim
DHT12 (sensor d’humitat i temperatura barat i2c), d’ús fàcil i ràpid
DHT12 (sensor d’humitat i temperatura barat i2c), d’ús fàcil i ràpid

Podeu trobar actualitzacions i altres al meu lloc

M'agrada el sensor que es pot utilitzar amb 2 fils (protocol i2c), però m'encanta el de baix cost.

Es tracta d’una biblioteca Arduino i esp8266 per a la sèrie DHT12 de sensors de temperatura / humitat de molt baix cost (menys d’1 $) que funcionen amb connexió i2c o un cable.

Molt útil si voleu utilitzar esp01 (si utilitzeu sèrie només teniu 2 pins) per llegir la humitat i la temperatura i mostrar-les a la pantalla LCD i2c.

He llegit que alguna vegada sembla que necessiten un calibratge, però tinc arbre d’això i tinc un valor molt similar al DHT22. Si teniu calibratge d’aquest problema, obriu el número a github i hi afegeixo implementació.

Pas 1: Com funciona I2c

Com funciona I2c
Com funciona I2c

I2C funciona amb els seus dos cables, l'SDA (línia de dades) i SCL (línia de rellotge).

Ambdues línies són de drenatge obert, però estan arrossegades amb resistències.

Normalment hi ha un mestre i un o diversos esclaus a la línia, tot i que hi pot haver diversos mestres, però en parlarem més endavant.

Tant els amos com els esclaus poden transmetre o rebre dades, per tant, un dispositiu pot estar en un d’aquests quatre estats: transmissió mestra, recepció del mestre, transmissió d’esclau, recepció d’esclaus.

Pas 2: Biblioteca

Podeu trobar la meva biblioteca aquí.

Per descarregar

Feu clic al botó DESCÀRREGUES de l'extrem superior dret i canvieu el nom de la carpeta sense comprimir DHT12.

Comproveu que la carpeta DHT contingui DHT12.cpp i DHT12.h.

Col·loqueu la carpeta de la biblioteca DHT a la vostra carpeta / libraries /.

És possible que hàgiu de crear la subcarpeta de biblioteques si és la vostra primera biblioteca.

Reinicieu l'IDE.

Pas 3: Comportador

Aquest libray intenta emular el comportador dels sensors de biblioteca DHT estàndard (i copio molt de codi), i afegeixo el codi per gestionar i2c també de la mateixa manera.

El mètode és el mateix que el sensor de la biblioteca DHT, amb alguns que afegeixen com a funció de punt de rosada.

Pas 4: Ús d’I2c

Per utilitzar amb i2c (adreça predeterminada i pin SDL SCA per defecte), el constructor és:

DHT12 dht12;

i agafeu el valor per defecte del pin SDL SCA.

(És possible redefinir amb un controlador especificat per a esp8266, necessari per a ESP-01). o bé

DHT12 dht12 (uint8_t addressOrPin)

addressOrPin -> address

per canviar d'adreça.

Pas 5: Ús d'un cable

Per utilitzar un cable:

DHT12 dht12 (uint8_t addressOrPin, true)

addressOrPin -> pin

El valor booleà és la selecció del mode oneWire o i2c.

Pas 6: lectura implícita

Podeu utilitzar-lo amb "implícita", "lectura simple" o "lectura completa": implícita, només la primera lectura que fa una lectura real del sensor, l'altra lectura que es converteix en 2 segons. interval són el valor emmagatzemat de la primera lectura.

// La lectura del sensor té 2 segons de temps transcorregut, tret que passi el paràmetre de força

// Llegiu la temperatura com Celsius (per defecte) flotant t12 = dht12.readTemperature (); // Llegiu la temperatura com Fahrenheit (isFahrenheit = true) flotant f12 = dht12.readTemperature (true); // Les lectures del sensor també poden tenir una antiguitat de fins a 2 segons (és un sensor molt lent) flotant h12 = dht12.readHumidity (); // Calculeu l'índex de calor a Fahrenheit (per defecte) float hif12 = dht12.computeHeatIndex (f12, h12); // Calculeu l'índex de calor en centígrads (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calculeu el punt de rosada a Fahrenheit (per defecte) flotant dpf12 = dht12.dewPoint (f12, h12); // Calculeu el punt de rosada en centígrads (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Pas 7: lectura senzilla

Lectura senzilla per obtenir un estat de lectura.

// La lectura del sensor té 2 segons de temps transcorregut, tret que passi el paràmetre de força

bool chk = dht12.read (); // veritat de lectura està bé, problema de lectura falsa

// Llegiu la temperatura com Celsius (per defecte)

flotador t12 = dht12.readTemperature (); // Llegiu la temperatura com Fahrenheit (isFahrenheit = true) flotant f12 = dht12.readTemperature (true); // Les lectures del sensor també poden tenir una antiguitat de fins a 2 segons (és un sensor molt lent) flotant h12 = dht12.readHumidity (); // Calculeu l'índex de calor a Fahrenheit (per defecte) float hif12 = dht12.computeHeatIndex (f12, h12); // Calculeu l'índex de calor en centígrads (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calculeu el punt de rosada a Fahrenheit (per defecte) flotant dpf12 = dht12.dewPoint (f12, h12); // Calculeu el punt de rosada en centígrads (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Pas 8: lectura completa

Lectura completa per obtenir un estat especificat.

// La lectura del sensor té 2 segons de temps transcorregut, tret que passi el paràmetre de força

DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nSensor de lectura:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); trencar; cas DHT12:: ERROR_CHECKSUM: Serial.println (F ("Error de suma de comprovació")); trencar; cas DHT12:: ERROR_TIMEOUT: Serial.println (F ("Error de temps d'espera")); trencar; cas DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Error de temps d'espera en senyal baix, intenteu posar una alta resistència a la tracció")); trencar; cas DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Error de temps d'espera en senyal baix, proveu de posar baixa resistència a la tracció")); trencar; cas DHT12:: ERROR_CONNECT: Serial.println (F ("Error de connexió")); trencar; cas DHT12:: ERROR_ACK_L: Serial.println (F ("error AckL")); trencar; cas DHT12:: ERROR_ACK_H: Serial.println (F ("error AckH")); trencar; cas DHT12:: ERROR_UNKNOWN: Serial.println (F ("Error desconegut DETECTAT")); trencar; cas DHT12:: NONE: Serial.println (F ("Cap resultat")); trencar; per defecte: Serial.println (F ("Error desconegut")); trencar; }

// Llegiu la temperatura com Celsius (per defecte)

flotador t12 = dht12.readTemperature (); // Llegiu la temperatura com Fahrenheit (isFahrenheit = true) flotant f12 = dht12.readTemperature (true); // Les lectures del sensor també poden tenir una antiguitat de fins a 2 segons (és un sensor molt lent) flotant h12 = dht12.readHumidity (); // Calculeu l'índex de calor a Fahrenheit (per defecte) float hif12 = dht12.computeHeatIndex (f12, h12); // Calculeu l'índex de calor en centígrads (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calculeu el punt de rosada a Fahrenheit (per defecte) flotant dpf12 = dht12.dewPoint (f12, h12); // Calculeu el punt de rosada en centígrads (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);

Pas 9: diagrama de connexió

Amb exemples, hi ha el diagrama de connexió, és important utilitzar una resistència de tracció correcta.

Gràcies a Bobadas, dplasa i adafruit per compartir el codi a github (on agafo algunes idees i codi).

Pas 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Pas 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Pas 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Pas 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Pas 14: gràcies

Parc infantil Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

Sèrie de projectes i2c (Col·lecció):

  • Sensor d'humitat de temperatura
  • Expansor analògic
  • Expander digital
  • Pantalla LCD

Recomanat: