Tabla de contenido:
- Paso 1: Cómo funciona I2c
- Paso 2: biblioteca
- Paso 3: comportamiento
- Paso 4: uso de I2c
- Paso 5: uso de un cable
- Paso 6: lectura implícita
- Paso 7: lectura simple
- Paso 8: lectura completa
- Paso 9: Diagrama de conexión
- Paso 10: Arduino: OneWire
- Paso 11: Arduino: I2c
- Paso 12: Esp8266 (D1Mini) OneWire
- Paso 13: Esp8266 (D1Mini) I2c
- Paso 14: Gracias
Video: DHT12 (sensor de temperatura y humedad económico i2c), uso rápido y fácil: 14 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Puede encontrar actualizaciones y otras en mi sitio
Me gusta el sensor que se puede usar con 2 cables (protocolo i2c), pero me encanta el económico.
Esta es una biblioteca Arduino y esp8266 para la serie DHT12 de sensores de temperatura / humedad de muy bajo costo (menos de 1 $) que funcionan con i2c o una conexión de cable.
Muy útil si desea usar esp01 (si usa serial, solo tiene 2 pines) para leer la humedad y la temperatura y mostrarlas en la pantalla LCD i2c.
AI leyó que en algún momento parece que necesita calibración, pero tengo un árbol de esto y obtengo un valor muy similar al DHT22. Si tiene este problema de calibración, abra el problema en github y agrego la implementación.
Paso 1: Cómo funciona I2c
I2C funciona con sus dos cables, SDA (línea de datos) y SCL (línea de reloj).
Ambas líneas son de drenaje abierto, pero se levantan con resistencias.
Por lo general, hay un maestro y uno o varios esclavos en la línea, aunque puede haber varios maestros, pero hablaremos de eso más adelante.
Tanto los maestros como los esclavos pueden transmitir o recibir datos, por lo tanto, un dispositivo puede estar en uno de estos cuatro estados: maestro de transmisión, maestro de recepción, esclavo de transmisión, esclavo de recepción.
Paso 2: biblioteca
Puedes encontrar mi biblioteca aquí.
Descargar
Haga clic en el botón DESCARGAS en la esquina superior derecha, cambie el nombre de la carpeta sin comprimir DHT12.
Verifique que la carpeta DHT contenga DHT12.cpp y DHT12.h.
Coloque la carpeta de la biblioteca DHT en su carpeta / libraries /.
Es posible que deba crear la subcarpeta de bibliotecas si es su primera biblioteca.
Reinicie el IDE.
Paso 3: comportamiento
Esta biblioteca intenta emular el comportamiento de los sensores de la biblioteca DHT estándar (y copia mucho código), y agrego el código para administrar i2c olso de la misma manera.
El método es el mismo que el del sensor de biblioteca DHT, con algunos agregados como la función de punto de rocío.
Paso 4: uso de I2c
Para usar con i2c (dirección predeterminada y pin SDA SCL predeterminado), el constructor es:
DHT12 dht12;
y tome el valor predeterminado para el pin SDA SCL.
(Es posible redefinir con el constructor especificado para esp8266, necesario para ESP-01). o
DHT12 dht12 (uint8_t direcciónOrPin)
addressOrPin -> dirección
para cambiar de dirección.
Paso 5: uso de un cable
Para usar un cable:
DHT12 dht12 (uint8_t addressOrPin, verdadero)
addressOrPin -> pin
El valor booleano es la selección del modo oneWire o i2c.
Paso 6: lectura implícita
Puede usarlo con "implícito", "lectura simple" o "lectura completa": Implícito, solo la primera lectura hace una lectura verdadera del sensor, la otra lectura que se convierte en 2seg. intervalo son el valor almacenado de la primera lectura.
// La lectura del sensor tiene 2 segundos de tiempo transcurrido, a menos que pase el parámetro de fuerza
// Leer la temperatura como Celsius (por defecto) float t12 = dht12.readTemperature (); // Lee la temperatura como Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Las lecturas del sensor también pueden tener hasta 2 segundos de antigüedad (es un sensor muy lento) float h12 = dht12.readHumidity (); // Calcular el índice de calor en Fahrenheit (el valor predeterminado) float hif12 = dht12.computeHeatIndex (f12, h12); // Calcular el índice de calor en grados Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calcular el punto de rocío en Fahrenheit (predeterminado) float dpf12 = dht12.dewPoint (f12, h12); // Calcular el punto de rocío en grados Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Paso 7: lectura simple
Lectura simple para obtener un estado de lectura.
// La lectura del sensor tiene 2 segundos de tiempo transcurrido, a menos que pase el parámetro de fuerza
bool chk = dht12.read (); // la lectura verdadera está bien, problema de lectura falsa
// Leer la temperatura en grados Celsius (por defecto)
flotador t12 = dht12.readTemperature (); // Lee la temperatura como Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Las lecturas del sensor también pueden tener hasta 2 segundos de antigüedad (es un sensor muy lento) float h12 = dht12.readHumidity (); // Calcular el índice de calor en Fahrenheit (el valor predeterminado) float hif12 = dht12.computeHeatIndex (f12, h12); // Calcular el índice de calor en grados Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calcular el punto de rocío en Fahrenheit (predeterminado) float dpf12 = dht12.dewPoint (f12, h12); // Calcular el punto de rocío en grados Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Paso 8: lectura completa
Lectura completa para obtener un estado específico.
// La lectura del sensor tiene 2 segundos de tiempo transcurrido, a menos que pase el parámetro de fuerza
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nRead sensor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); rotura; case DHT12:: ERROR_CHECKSUM: Serial.println (F ("Error de suma de comprobación")); rotura; case DHT12:: ERROR_TIMEOUT: Serial.println (F ("Error de tiempo de espera")); rotura; case DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Error de tiempo de espera en señal baja, intente poner resistencia de pullup alta")); rotura; case DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Error de tiempo de espera en señal baja, intente poner resistencia de pullup baja")); rotura; case DHT12:: ERROR_CONNECT: Serial.println (F ("Error de conexión")); rotura; case DHT12:: ERROR_ACK_L: Serial.println (F ("Error de AckL")); rotura; case DHT12:: ERROR_ACK_H: Serial.println (F ("Error de AckH")); rotura; case DHT12:: ERROR_UNKNOWN: Serial.println (F ("Error desconocido DETECTADO")); rotura; case DHT12:: NONE: Serial.println (F ("Sin resultado")); rotura; predeterminado: Serial.println (F ("Error desconocido")); rotura; }
// Leer la temperatura en grados Celsius (por defecto)
flotador t12 = dht12.readTemperature (); // Lee la temperatura como Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Las lecturas del sensor también pueden tener hasta 2 segundos de antigüedad (es un sensor muy lento) float h12 = dht12.readHumidity (); // Calcula el índice de calor en Fahrenheit (el valor predeterminado) float hif12 = dht12.computeHeatIndex (f12, h12); // Calcular el índice de calor en grados Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Calcular el punto de rocío en Fahrenheit (predeterminado) float dpf12 = dht12.dewPoint (f12, h12); // Calcular el punto de rocío en grados Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Paso 9: Diagrama de conexión
Con ejemplos, está el diagrama de conexión, es importante usar la resistencia pullup correcta.
Gracias a Bobadas, dplasa y adafruit, por compartir el código en github (donde tomo código e ideas).
Paso 10: Arduino: OneWire
Paso 11: Arduino: I2c
Paso 12: Esp8266 (D1Mini) OneWire
Paso 13: Esp8266 (D1Mini) I2c
Paso 14: Gracias
Zona de juegos de Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
Serie de proyectos i2c (Colección):
- Sensor de temperatura y humedad
- Expansor analógico
- Expansor digital
- Pantalla LCD
Recomendado:
Cómo usar el sensor de temperatura y humedad DHT12 I2C con Arduino: 7 pasos
Cómo usar el sensor de temperatura y humedad DHT12 I2C con Arduino: En este tutorial aprenderemos a usar el sensor de temperatura y humedad DHT12 I2C con Arduino y mostraremos los valores en la pantalla OLED. ¡Mira el video
Caja / recinto personalizado inusual (rápido, fácil, modular, económico): 7 pasos
Caja / caja personalizada inusual (Rápido, Fácil, Modular, Barato): El propósito de este Instructables es mostrarle cómo hacer una caja / caja modular barata, personalizada. Voy a mostrarle cómo hacerlo con limitaciones herramientas y presupuesto. Este es mi primer Instructables (también el inglés no es mi primer idioma), así que por favor
PCF8591 (expansor de E / S analógicas i2c) Uso rápido y fácil: 9 pasos
PCF8591 (expansor de E / S analógicas i2c) Uso rápido y fácil: biblioteca para usar i2c pcf8591 IC con arduino y esp8266. Este IC puede controlar (hasta 4) entradas analógicas y / o 1 salida analógica como medir voltaje, leer el valor del termistor o desvanecer un LED. Puede leer el valor analógico y escribir el valor analógico con solo 2 cables (perfec
¡Colgador Echo Dot, fácil, rápido y económico !: 7 pasos
Echo Dot Hanger, Easy, Quick and Cheap !: Por mrcisaleaffan Publicado el 26 de julio de 2018 Si disfruta de este Instructable, vote por él en el " Uso incorrecto creativo " Introducción: Echo Dot Hanger, Easy, Quick and Cheap Esta Navidad pasada recibí un altavoz inteligente Alexa Echo. Sinc
Cree un cuadro de proyecto: rápido, económico & Fácil .: 5 pasos
Cree un cuadro de proyecto: rápido, económico & Fácil: necesitábamos una caja protectora para proyectos en nuestro taller con un frente con ventana para poder vigilar el estado de nuestros componentes. Las cajas para proyectos que encontramos en línea no funcionaron. -Los que tenían un precio correcto eran demasiado pequeños para adaptarse a nuestros componentes