Table des matières:

DHT12 (capteur d'humidité et de température bon marché i2c), utilisation simple et rapide : 14 étapes
DHT12 (capteur d'humidité et de température bon marché i2c), utilisation simple et rapide : 14 étapes

Vidéo: DHT12 (capteur d'humidité et de température bon marché i2c), utilisation simple et rapide : 14 étapes

Vidéo: DHT12 (capteur d'humidité et de température bon marché i2c), utilisation simple et rapide : 14 étapes
Vidéo: EB_#580 Mini-Plaquette - Capteur de Température et Humidité SHT30 2024, Novembre
Anonim
DHT12 (capteur d'humidité et de température bon marché i2c), utilisation rapide et facile
DHT12 (capteur d'humidité et de température bon marché i2c), utilisation rapide et facile

Vous pouvez trouver des mises à jour et autres sur mon site

J'aime le capteur qui peut être utilisé avec 2 fils (protocole i2c), mais j'aime le moins cher.

Il s'agit d'une bibliothèque Arduino et esp8266 pour la série DHT12 de capteurs de température/humidité à très faible coût (moins de 1 $) qui fonctionnent avec i2c ou une connexion filaire.

Très utile si vous voulez utiliser esp01 (si vous utilisez une série, vous n'avez que 2 broches) pour lire l'humidité et la température et les afficher sur l'écran LCD i2c.

AI a lu que cela semble parfois avoir besoin d'un étalonnage, mais j'en ai un arbre et j'obtiens une valeur très similaire à DHT22. Si vous avez ce problème de calibrage, ouvrez le problème sur github et j'ajoute l'implémentation.

Étape 1: Comment fonctionne I2c

Comment fonctionne I2c
Comment fonctionne I2c

I2C fonctionne avec ses deux fils, le SDA (ligne de données) et le SCL (ligne d'horloge).

Ces deux lignes sont à drain ouvert, mais sont tirées vers le haut avec des résistances.

Habituellement, il y a un maître et un ou plusieurs esclaves sur la ligne, bien qu'il puisse y avoir plusieurs maîtres, mais nous en reparlerons plus tard.

Les maîtres et les esclaves peuvent transmettre ou recevoir des données. Par conséquent, un appareil peut se trouver dans l'un de ces quatre états: transmission maître, réception maître, transmission esclave, réception esclave.

Étape 2: Bibliothèque

Vous pouvez trouver ma bibliothèque ici.

Télécharger

Cliquez sur le bouton TÉLÉCHARGEMENTS dans le coin supérieur droit, renommez le dossier non compressé DHT12.

Vérifiez que le dossier DHT contient DHT12.cpp et DHT12.h.

Placez le dossier de la bibliothèque DHT dans votre dossier /libraries/.

Vous devrez peut-être créer le sous-dossier des bibliothèques s'il s'agit de votre première bibliothèque.

Redémarrez l'IDE.

Étape 3: Comportement

Cette bibliothèque essaie d'émuler le comportement des capteurs de bibliothèque DHT standard (et copie beaucoup de code), et j'ajoute le code pour gérer i2c également de la même manière.

La méthode est la même que celle du capteur de bibliothèque DHT, avec certains ajouts comme la fonction de point de rosée.

Étape 4: Utilisation d'I2c

À utiliser avec i2c (adresse par défaut et broche SDA SCL par défaut), le constructeur est:

DHT12 dht12;

et prenez la valeur par défaut pour la broche SDA SCL.

(Il est possible de redéfinir avec le constructeur spécifié pour esp8266, nécessaire pour ESP-01). ou

DHT12 dht12(uint8_t addressOrPin)

adresseOuPin -> adresse

pour changer d'adresse.

Étape 5: Utilisation d'un fil

Pour utiliser un fil:

DHT12 dht12(uint8_t addressOrPin, true)

adresseOuPin -> broche

La valeur booléenne est la sélection du mode oneWire ou i2c.

Étape 6: Lecture implicite

Vous pouvez l'utiliser avec "implicite", "simple read" ou "fullread": Implicite, seule la première lecture fait une vraie lecture du capteur, l'autre lecture qui devient en 2secs. l'intervalle est la valeur stockée de la première lecture.

// La lecture du capteur a 2 secondes de temps écoulé, à moins que vous ne passiez le paramètre de force

// Lecture de la température en Celsius (valeur par défaut) float t12 = dht12.readTemperature(); // Lecture de la température en Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Les lectures du capteur peuvent également avoir jusqu'à 2 secondes d'ancienneté (c'est un capteur très lent) float h12 = dht12.readHumidity(); // Calculer l'indice de chaleur en Fahrenheit (par défaut) float hif12 = dht12.computeHeatIndex(f12, h12); // Calculer l'indice de chaleur en Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Calculer le point de rosée en Fahrenheit (par défaut) float dpf12 = dht12.dewPoint(f12, h12); // Calculer le point de rosée en Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);

Étape 7: Lecture simple

Lecture simple pour obtenir un statut de lecture.

// La lecture du capteur a 2 secondes de temps écoulé, à moins que vous ne passiez le paramètre de force

bool chk = dht12.read(); // true read is ok, false read problem

// Lecture de la température en Celsius (valeur par défaut)

float t12 = dht12.readTemperature(); // Lecture de la température en Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Les lectures du capteur peuvent également avoir jusqu'à 2 secondes d'ancienneté (c'est un capteur très lent) float h12 = dht12.readHumidity(); // Calculer l'indice de chaleur en Fahrenheit (par défaut) float hif12 = dht12.computeHeatIndex(f12, h12); // Calculer l'indice de chaleur en Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Calculer le point de rosée en Fahrenheit (par défaut) float dpf12 = dht12.dewPoint(f12, h12); // Calculer le point de rosée en Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);

Étape 8: Lecture complète

Lecture complète pour obtenir un statut spécifié.

// La lecture du capteur a 2 secondes de temps écoulé, à moins que vous ne passiez le paramètre de force

DHT12::ReadStatus chk = dht12.readStatus(); Serial.print(F("\nLire le capteur: ")); switch (chk) { case DHT12::OK: Serial.println(F("OK")); Pause; case DHT12::ERROR_CHECKSUM: Serial.println(F("Erreur de somme de contrôle")); Pause; case DHT12::ERROR_TIMEOUT: Serial.println(F("Timeout error")); Pause; case DHT12::ERROR_TIMEOUT_LOW: Serial.println(F("Erreur de délai d'attente sur signal faible, essayez de mettre une résistance de pullup élevée")); Pause; case DHT12::ERROR_TIMEOUT_HIGH: Serial.println(F("Timeout error on low signal, try put low pullup resistance")); Pause; case DHT12::ERROR_CONNECT: Serial.println(F("Connect error")); Pause; case DHT12::ERROR_ACK_L: Serial.println(F("AckL error")); Pause; case DHT12::ERROR_ACK_H: Serial.println(F("AckH error")); Pause; case DHT12::ERROR_UNKNOWN: Serial.println(F("Erreur inconnue DETECTE")); Pause; case DHT12::NONE: Serial.println(F("Aucun résultat")); Pause; par défaut: Serial.println(F("Erreur inconnue")); Pause; }

// Lecture de la température en Celsius (valeur par défaut)

float t12 = dht12.readTemperature(); // Lire la température en Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature(true); // Les lectures du capteur peuvent également avoir jusqu'à 2 secondes d'ancienneté (c'est un capteur très lent) float h12 = dht12.readHumidity(); // Calculer l'indice de chaleur en Fahrenheit (par défaut) float hif12 = dht12.computeHeatIndex(f12, h12); // Calculer l'indice de chaleur en Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Calculer le point de rosée en Fahrenheit (par défaut) float dpf12 = dht12.dewPoint(f12, h12); // Calculer le point de rosée en Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);

Étape 9: Schéma de connexion

Avec des exemples, il y a le schéma de connexion, il est important d'utiliser la bonne résistance de pullup.

Merci à Bobadas, dplasa et adafruit, de partager le code dans github (où je prends du code et des idées).

Étape 10: Arduino: OneWire

Arduino: OneWire
Arduino: OneWire

Étape 11: Arduino: I2c

Arduino: I2c
Arduino: I2c

Étape 12: Esp8266 (D1Mini) OneWire

Esp8266 (D1Mini) OneWire
Esp8266 (D1Mini) OneWire

Étape 13: Esp8266 (D1Mini) I2c

Esp8266 (D1Mini) I2c
Esp8266 (D1Mini) I2c

Étape 14: Merci

Aire de jeux Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)

Série de projets i2c (Collection):

  • Capteur de température et d'humidité
  • Extenseur analogique
  • Extenseur numérique
  • Affichage LCD

Conseillé: