[RÉSOLU] Activer un relais avec un DHT11 a 22 °C

Bonjour à tous.
J'ai un projet de serre autonome, et la touche final serait d'activer un relais, relié à un ventilo en 12 V, à partir de la valeur d'un DHT11, et ce, a partir de 22 °C.

Si quelqu'un à un tuyau... :wink:
Merci d'avance...

on fait généralement une hystérèse

if (temperature >= 22) digitalWrite(pinRelaiVentilo, HIGH); // allume au dessus de 22°
else
if (temperature <= 20) digitalWrite(pinRelaiVentilo, LOW);  // éteint en dessous de 20°

1 Like

Bonjour @pandaroux007

Aucune diffculté pour ce projet : mesurer une température avec un DHT11 et gérer l'état d'u relais avec une de cartes Arduino sont deux sujets traités en long et en large, les tutoriels abondent.....

je ne serai pas surpris par ailleurs qu'un moteur de recherche popose des solutions associant DHT11 et relais..... As-tu cherché ?

Tu n'auras aucun mal à combiner les deux fonctions dans un programme et, en cas de difficulté ,venir montrer ce qui coince pour avoir un coup de pouce sur la base de ce que tu auras produit

1 Like

Ok, merci. j'avais un peu cherché, mais c'étaient des trucs qui ne collaient pas avec ma librairie... :sleepy:

En'utilisant pas ce composant pour les relevés de température et/ou hygrométrie je ne saurai quelle bibliothèque conseiller.

En général les bibliothèques viennent avec des exemples, il faut donc partir d'un exemple basique proposé

Dautres ici sauront conseiller en fonction de la carte utiisée : carte 8 bits Uno, Nano, Mega....carte 32 bits avec un ESP8266 ou ESP32... carte MKR.... le choix est vaste

1 Like

Bonjour
La "valeur d'un DHT11", tu l'as déjà dans ton code ou pas ? l'affiches tu ou l'utilises tu quelque part déjà.

Si oui la réponse de J-M-L doit te permettre de commander le relais.
Si non, il faut nous expliquer où est le problème en montrant le code (que le code qui concerne le DHT11)

1 Like

C'est pour de l'arrosage ? :smile:

Sérieusement il existait des bibliothèques qui posaient problèmes, car trop lente pour le DHT11 (un DHT22 serait plus précis).
Actuellement, elles ont toutes disparues.

Certaines font juste le travail et le font bien, d'autres font papa, maman, la bonne et moi, bref, elles demandent un investissement pour comprendre le mode de pensée de leur auteur qui me déroute.

Je m'étais intéressé à ce produit il y a plein d'années maintenant, aujourd'hui, je ne saurais quelle bibliothèque bien précise est la meilleure.
Si tu en trouves une simple d'emploi, pour cela voir les exemples comme te l'a conseillé @al1fch, tu prends.

Notes :
Pour voir les bibliothèques, il n'est pas obligatoire de les installer, et de les désinstaller si elles ne te conviennent pas.
Les bibliothèques sont sur github où il est simple de les parcourir (exemples compris) avec un simple navigateur.
Je viens de lancer une recherche : "github dtht11 library"
et j'ai de nombreuses réponses.

Du temps où peu de bibliothèques DHT11 étaient correctes, celle de Rob Tillaart sortait du lot, je conseille.

1 Like

j'utilise un Arduino UNO classique. Je vais essayer la réponse de @J-M-L. Désoler pour l'histoire de la libraire, je vous est embrouillés. Non, @68tjs , c'est pour la ventilation de ma serre autonome... Merci du conseil pour la librairie, moi j'utilise celle de DFRobot.

Ma question n'était même pas complète :sleepy:...

Re-bonjour, je viens de tester positivement le code, sur les conseils de @J-M-L.
J'ai simplifier le code de la serre pour faire un essai avec juste le DHT11 et le ventilo...

#include "DHT.h"                // définition de la librairie du DHT11

#define DHTPIN 2       // definition de la pin digital du DHT11
#define DHTTYPE DHT11  // définition du type de capteur, ici un DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() 
{
Serial.begin(9600); // définir la vitesse du moniteur serie sur 9600 bauds
Serial.println("démarage du système"); // écrire sur le moniteur serie "démarage du système"

Serial.println(F("DHT11 test!")); // écrire sur le moniteur serie "DHT11 test!"
dht.begin();

pinMode(11, OUTPUT);

}
void loop() 
{
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  Serial.print(F("température: "));
  Serial.println(t);

  delay(300);

  if (t <= 23)
  {
    digitalWrite(11, LOW);
  }
  if (t > 25)
  {
    digitalWrite(11, HIGH);
  }
}

Merci beaucoup pour votre aide !

le else entre les 2 if ne mange pas de pain :wink:

Hystérésis et Hérésie

"L'hystérésis divise le réglage en deux, légèrement plus petit et légèrement plus grand, par la taille de la fenêtre d'hystérésis. "

une exemple

 #define RELAY_PIN 2
  float setpoint = 50.0;  //PC 
  float hyster = 2;  //largeur de la fenêtre d'hystérésis
// ...............
  static bool relayState = false;  // // doit être global ou statique!
  if (temp < (setpoint - hyster )) relayState = true;
  else if (temp > (setpoint + hyster )) relayState = false;  
  digitalWrite(RELAY_PIN, relayState);

la une version plus riche

https://civade.com/post/2011/05/25/Snootlab-Essai-de-l-Arduino-i2C-Power-proto-shield-ventilateurs-pwm-ds1820-fanduino

"Mon cahier des charges est assez simple. Je souhaite commander 2 ventilateurs indépendamment, qui soient asservis à la température. Comme il faut pour qu'un ventilateur tourne, qu'il y ait un minimum de tension (de l'ordre de 5 volts), il va falloir faire varier le PWM d'une valeur mini (environ 50/60) à la valeur max (255). Je souhaite que le ventilo ne tourne pas en dessous de 25 degrés, puis commence progressivement à fonctionner jusqu'à la valeur de température max que j'ai déterminé (50 degrés). Au delà des 50 degrés, le ventilateur restera à fond."

Ce else est il vraiment utile ?
Je n'ai pas regardé le code généré (je ne sais pas où regarder sur Arduino) mais je ne serais pas étonné que le compilateur optimise strictement de la même manière avec ou sans le else. En tous cas la taille du code est identique dans les 2 cas.

Oui parce que le code du test y est forcément c’est juste le parcours qui change
Avec des valeurs entières constantes oui il se peut que le compilateur voit l’optimisation

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.