Table des matières:
- Étape 1: Comment fonctionne I2c
- Étape 2: Bibliothèque
- Étape 3: Comportement
- Étape 4: Utilisation d'I2c
- Étape 5: Utilisation d'un fil
- Étape 6: Lecture implicite
- Étape 7: Lecture simple
- Étape 8: Lecture complète
- Étape 9: Schéma de connexion
- Étape 10: Arduino: OneWire
- Étape 11: Arduino: I2c
- Étape 12: Esp8266 (D1Mini) OneWire
- Étape 13: Esp8266 (D1Mini) I2c
- Étape 14: Merci
Vidéo: DHT12 (capteur d'humidité et de température bon marché i2c), utilisation simple et rapide : 14 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
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
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
Étape 11: Arduino: I2c
Étape 12: Esp8266 (D1Mini) OneWire
Étape 13: 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é:
Comment utiliser le capteur d'humidité et de température DHT12 I2C avec Arduino: 7 étapes
Comment utiliser le capteur d'humidité et de température DHT12 I2C avec Arduino : Dans ce tutoriel, nous allons apprendre à utiliser le capteur d'humidité et de température DHT12 I2C avec Arduino et afficher les valeurs sur l'écran OLED.Regardez la vidéo
Capteur tactile simple, bon marché et fiable avec seulement 3 parties : 3 étapes
Capteur tactile facile, bon marché et fiable avec seulement 3 parties : contrôler toutes sortes d'appareils électroniques avec le toucher du doigt peut être très utile. Dans ce instructable, je vais vous montrer comment construire un capteur tactile simple mais puissant qui fonctionne parfaitement. Tout ce dont vous avez besoin est un transistor standard et deux
Boîte/boîtier personnalisé inhabituel (rapide, facile, modulaire, bon marché) : 7 étapes
Boîte/boîtier personnalisé inhabituel (rapide, facile, modulaire, bon marché) : le but de ce Instructables est de vous montrer comment faire une boîte/boîtier modulaire bon marché, personnalisé. Je vais vous montrer, comment le faire avec un nombre limité outils et budget. Ceci est mon premier Instructables (aussi l'anglais n'est pas ma première langue), alors soyez s'il vous plaît
PCF8591 (extenseur d'E/S analogiques i2c) Utilisation simple et rapide : 9 étapes
PCF8591 (extenseur d'E/S analogiques i2c) Utilisation rapide et facile : bibliothèque pour utiliser le circuit intégré i2c pcf8591 avec arduino et esp8266. Ce circuit intégré peut contrôler (jusqu'à 4) entrée analogique et/ou 1 sortie analogique comme mesurer la tension, lire la valeur de la thermistance ou atténuer une LED. Peut lire la valeur analogique et écrire la valeur analogique avec seulement 2 fils (parfait
Éclairage de pièce à LED rapide, rapide, bon marché et esthétique (pour tout le monde) : 5 étapes (avec photos)
Éclairage de salle LED rapide, rapide, bon marché et beau (pour tout le monde) : Bienvenue à tous :-) Ceci est mon premier instructable, donc les commentaires sont les bienvenus :-) Ce que j'espère vous montrer, c'est comment faire un TINY buget.Ce dont vous avez besoin :CâblesLEDsRésistances (510Ohms pour 12V)AgrafesFer à souderCutters et autres basi