Contrôle de ventilation DHT22 et LCD — Arduino Uno simulation

Système de contrôle de ventilateur avec DHT22, LCD I2C et relais pour moteur DC.

An interactive Arduino Uno circuit simulation you can run free in your browser on Velxio, by alexis-pal.

Components

Sketch code

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
 #include <SoftwareSerial.h>
 
// Configuration du capteur DHT22 sur la broche 8
SoftwareSerial mySerial(2,3);//tx,rx
#define DHTPIN 8
#define DHTTYPE DHT22
#define RELAY_PIN 10
DHT dht(DHTPIN, DHTTYPE);
// Configuration de l'écran LCD I2C (Adresse 0x27, 16 colonnes, 2 lignes) 
// Utilisation explicite du constructeur compatible avec la bonne bibliothèque
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
 	mySerial.begin(9600);
  Serial.begin(9600);
 	 // Initialisation du capteur DHT
  dht.begin();
	  // Initialisation de l'écran LCD
  lcd.init();
  lcd.backlight();
	mySerial.print("projet serre");// nom du blouthos
	  // Configuration des broches de sortie
  pinMode(6, OUTPUT); // LED Rouge
  pinMode(5, OUTPUT); // LED Verte
  pinMode(10, OUTPUT); // Relais / Moteur
  delay(2000);
  lcd.clear();
 
}
 
void loop() {
 
 	 // Lecture des données du capteur
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 	 // Vérification si la lecture a échoué
 
  if (isnan(h) || isnan(t)) {
 
    Serial.println("Erreur de lecture DHT");
    lcd.setCursor(0, 0);
    lcd.print("Erreur Capteur  ");
    lcd.setCursor(0, 1);
    lcd.print("                ");
  } else {
 
    // Affichage dans le moniteur série
 
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("H: ");
    lcd.print(h);
    lcd.print(" %");
 
    lcd.setCursor(0, 1);
    lcd.print("T: ");
    lcd.print(t);
    lcd.print((char)223);
    lcd.print("C");
 // écriture daans le moniteur serie 
	Serial.print("Humidite: ");
  Serial.print(h);
  Serial.print("% | ");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.println(" C");
//envoi des donné en blouthos 
 	 mySerial.print("Humidite: ");
    mySerial.print(h);
    mySerial.print("% | ");
    mySerial.print("Temperature: ");
    mySerial.print(t);
    mySerial.println(" C");
// 
  if (mySerial.available()){
    Serial.write(mySerial.read());
  }

  }
 
  // Logique de contrôle de l'humidité (> 60%) -> LED Rouge (pin 7)
 
  if (h >= 60) {
    digitalWrite(6, HIGH);
  	digitalWrite(10, HIGH); //
  } else {
    digitalWrite(10, LOW);  
    digitalWrite(6, LOW);
  }
 	// Logique de contrôle de la température (>= 26°C) -> LED Verte (pin 6) & Relais (pin 9)
 int relay = digitalRead(10);
  if (relay ==LOW ){
   if (t >= 26) {
    digitalWrite(5, HIGH);
    digitalWrite(10, HIGH); // Active le relais / moteur
  } else {//
    digitalWrite(5, LOW);
    digitalWrite(10, LOW);  // Désactive le relais / moteur
  }
 }
  delay(2000); // Attente de 2 secondes avant la prochaine lecture
}

More projects by alexis-pal