Dorian1975

Arduino sonde température et ventilateur

Recommended Posts

Dorian1975

Bonjour

J'ai fait un petit programme pour arduino avec une sonde de température de type DTH22 ( il fait aussi le taux d'humidité) 

Bref le programme a juste pour bute de lancer une ventilation pour faire redescendre la température quand celle ci atteint un seuil donner dans le programme 25° modifiable facilement en plus ou en moins chaud.

Une fois la valeur atteinte il déclenche un relay qui va allumer une ventilation jusqu'à la refaire passer en dessous des 25° , et se coupé une fois la température inférieur a 25°

Rien d extra ordinaire mais a un coup relativement bas pour maintenir une température .

J ai aussi un affichage 16x2 pour avoir les valeurs en temps réel 

 

Le programme open source 

#include <DHT.h> // inclure les librairies
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

const int relayPin = A2; // PIN a2 pour test modifiable en A1 A3 A4 au choix
const int DHTPIN = A0;

// Type de capteur utiliser

#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);// Initialise le capteur DHT22
LiquidCrystal_I2C lcd(0x38, 16,2); // Initialise le module 1602 I2C modifiable en fonction des modèles l'adresse peu être différente

void setup() {
  Serial.begin(9600);
  pinMode(relayPin, OUTPUT);
  dht.begin();
  // Définit l'écran LCD 16 colonnes par 2 lignes
  lcd.init();
  // Réglage du rétroéclairage
  lcd.setBacklight(HIGH);
}
void loop()
{
 
  
  float h = dht.readHumidity();
  // Lit la temperature en degres Celsius (valeur par defaut
  float t = dht.readTemperature();
  float c = dht.readTemperature(true);

  // Vérifie si toutes les lectures ont échoué et quitte le début (pour réessayer).
  if (isnan(h) || isnan(t) || isnan(c)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  lcd.setCursor(0, 0);
  lcd.print("Temp = ");
  lcd.print(t);
  lcd.print(" *C ");
  lcd.setCursor(0, 1);
  lcd.print(" Hum = ");
  lcd.print(h);
  lcd.print(" % ");

  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
 
  Serial.print("Humidity = ");
  Serial.print(h);
  Serial.print(" %\t ");
  Serial.println();

  if (t >= 20 && t <= 25) // si temperature est = ou sup. a 20 ET t infer. ou = a 25 relais ouvert içi on peu modifie la température limite avant le déclanchement du relay.

{
    digitalWrite(relayPin, HIGH);
  }
  delay(2000);// Delai deux seconde entre les mesures modifiable 1000 pour l'avoir toute les secondes par exemple
  }

 

Si cela peu dépanner quelqu'un :)

 


 

 

 

 

 

aff.jpg

  • Like 1

Share this post


Link to post
Share on other sites
Dorian1975
Il faut compter 21€ livrer l'ensemble sur un site bien connue chinois .
 
 

Share this post


Link to post
Share on other sites
Gen

Yop

 

Tout cela n'a pas lieu d'être ,une fois le programme chargé

  Serial.print("Temperature = ");
  Serial.print(t);
  Serial.print(" *C ");
 
  Serial.print("Humidity = ");
  Serial.print(h);
  Serial.print(" %\t ");
  Serial.println();

 

de plus ceci, ce n'est pas vers le Serial que cela doit-être envoyé, mais vers le LCD sinon comment savoir que la sonde ne fonctionne pas ?

if (isnan(h) || isnan(t) || isnan(c)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

 

PS : Nous avons rencontré trop de problème avec les DHT, il est préférable d'utiliser les AM2320

 

Bon bricolage

++

GEN

 

 

Share this post


Link to post
Share on other sites
Dorian1975

Merci pour les info toujours bon a prendre , pour mon info perso quel sont les pb en particulier avec le DHT? 

Share this post


Link to post
Share on other sites
Gen

Yop

 

des blocages intempestifs des process

 

++

GEN

  • Like 1

Share this post


Link to post
Share on other sites