Bonjour à tous,
J'ai créé mon programme pour une gestion de serre.
Comme matériel :
- Arduino uno R3
- DHT22 ( température + hygrométrie )
- LCD I2C 20x4
- 6 LEDs
- 2 relais
Mon code fonctionne très bien mais j'aimerai aller plus loin ...
C'est à dire faire une courbe ( en direct ) des données lues. Le traceur arduino n'étant pas top j'ai vue une autre alternative. Basculer les données sur python ( en utilisant Pyzo ) et faire la courbe.
Je me sert de ce tuto, je comprend le principe, mais la le code dépasse mon compétence ( je suis très novice ) : Tuto courbes et recupérations des données arduino sur pyhton
Quelqu'un aurait du temps pour refaire ce code python pour ma lecture ? ou m'expliquer certains points ect .... Je me rend pas compte si le travail de "retape" du code python est compliqué.
Voici mon code :
#include "DHT.h"//bibliothéque
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 13 // connexion de la pin digital du capteur sur la broche n°2
#define DHTTYPE DHT22 // on appelle le capteur dht22 dans la bibliothèque
const int RELAY_Chauf = 6;
const int RELAY_Hygro = 5;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(9600); //définition de la vitesse du port
Serial.println("Lecture du climat par capteur DHT22"); // Moniteur
lcd.init(); // initialisation de l'afficheur
dht.begin(); // initialisation du capteur
//Positionnement LEDs
pinMode(10,OUTPUT); // Bleu température froide : en dessous de 20°C
pinMode(11,OUTPUT); // Vert température : tout est OK
pinMode(12,OUTPUT); // Rouge température chaude : au dessus de 25°C
pinMode(7,OUTPUT); // Blanc hygrométrie basse : en dessous de 50%
pinMode(8,OUTPUT); // Vert hygrometrie : tout est OK
pinMode(9,OUTPUT); // Jaune hygrométrie haute : au dessus de 80%
pinMode(6,OUTPUT); // Relais chauffage
pinMode(5,OUTPUT); // Relais hygrométrie
}
void loop() {
delay(2000); // attente d'2 seconde entre chaque mesure une fois la boucle revenue au début
lcd.backlight(); // eclairage LCD
float humidite = dht.readHumidity();//lecture de l'humidité.
float temperature = dht.readTemperature();//lecture de la température en degrés Celsius.
// Si la lecture ne s'effectue pas
if (isnan(humidite) || isnan(temperature)) {
Serial.println ("Probleme de lecture, verifier votre systeme");
return;}
//Ecriture sur le moniteur
Serial.print("Température: ");
Serial.print(temperature);
Serial.println (" *C");
Serial.print("Hygrométrie: ");
Serial.print(humidite);
Serial.println (" %\t ");
//Ecriture température & hygrométrie sur le LCD 20x4
lcd.setCursor(0,0);
lcd.print(" Temp : C");
lcd.setCursor(10,0);
lcd.print(temperature);
lcd.setCursor(0,2);
lcd.print(" Hygr : %");
lcd.setCursor(10,2);
lcd.print(humidite);
// Action pour température > 20 & < 30 <=== TOUT EST OK -- LED verte
if (temperature > 20.00 & temperature < 30.00) {
lcd.setCursor(0,1);
lcd.print("OK ");
digitalWrite (10, LOW);
digitalWrite (11, HIGH);
digitalWrite (12, LOW);
digitalWrite (RELAY_Chauf, LOW);
}
// Action pour température < 20 <=== TROP FROID -- LED bleu
if (temperature < 20.00) {
lcd.setCursor(0,1);
lcd.print(" Chauffage OK ");
digitalWrite (10, HIGH);
digitalWrite (11, LOW);
digitalWrite (12, LOW);
digitalWrite (RELAY_Chauf, HIGH);
}
// Action pour température > 30 <=== TROP CHAUD -- LED rouge
if (temperature > 30.00) {
lcd.setCursor(0,1);
lcd.print("Extracteur OK ");
digitalWrite (10, LOW);
digitalWrite (11, LOW);
digitalWrite (12, HIGH);
digitalWrite (RELAY_Chauf, LOW);
}
//Action pour hygrometrie >= 60 & <= 70 <=== TOUT EST OK -- LED verte
if (humidite >= 60.00 & humidite <= 70.00) {
lcd.setCursor(0,3);
lcd.print("OK ");
digitalWrite (7, LOW);
digitalWrite (8, HIGH);
digitalWrite (9, LOW);
digitalWrite (RELAY_Hygro, LOW);
}
//Action pour hygrometrie < 60 <=== TROP SEC -- LED blanc
if (humidite < 60.00) {
lcd.setCursor(0,3);
lcd.print("Humidificateur OK ");
digitalWrite (7, HIGH);
digitalWrite (8, LOW);
digitalWrite (9, LOW);
digitalWrite (RELAY_Hygro, HIGH);
}
//Action pour hygrometrie > 70 <=== TROP HUMIDE -- LED jaune
if (humidite > 70.00) {
lcd.setCursor(0,3);
lcd.print("Deshumidificateur OK");
digitalWrite (7, LOW);
digitalWrite (8, LOW);
digitalWrite (9, HIGH);
digitalWrite (RELAY_Hygro, LOW);
}
}
Bien sur je suis à l'écoute de toutes autres alternatives et d'amélioration de mon code Arduino (on m'a parlé de tableaux pour mieux organiser mes LEDs mais un peu complexe, je le reporte a plus tard)
Merci à vous.