#define BLYNK_TEMPLATE_ID"TMPL2gTexWdmH" // Remplace par ton template ID
#define BLYNK_TEMPLATE_NAME "TEMP Ph TURB" // Remplace par ton template name
#define BLYNK_AUTH_TOKEN "oISWvW6q9BvEnLkF4RfpC0tvuVdwHAPM" // Remplace par ton token d'authentification
#include <Wire.h>
#include <LiquidCrystal.h> // Bibliothèque pour LCD classique
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
// Configurer les informations Wi-Fi
char ssid[] = "Wokwi-GUEST"; // Nom de ton réseau Wi-Fi
char pass[] = ""; // Mot de passe de ton Wi-Fi
// Définir les pins des potentiomètres et LEDs
const int potTempPin = 34; // Pin GPIO34 pour la température
const int potPhPin = 35; // Pin GPIO35 pour le pH
const int potTurbPin = 32; // Pin GPIO32 pour la turbidité
const int ledVertePin = 21; // Pin GPIO21 pour LED verte
const int ledRougePin = 22; // Pin GPIO22 pour LED rouge
// Variables pour stocker les données lues
float temperature = 0;
float ph = 0;
float turbidite = 0;
// Initialiser l'écran LCD avec les bonnes broches (RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(17, 16, 4, 5, 18, 19); // RS, E, D4, D5, D6, D7
void setup() {
// Initialisation de la connexion série
Serial.begin(115200);
// Initialiser l'écran LCD
lcd.begin(16, 2); // 16 colonnes et 2 lignes
lcd.print("Initialisation...");
// Connexion au Wi-Fi
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connexion au Wi-Fi...");
}
Serial.println("Connecté au Wi-Fi!");
// Connexion à Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Vérification de la connexion à Blynk
while (!Blynk.connect()) {
delay(1000);
Serial.println("Connexion à Blynk...");
}
Serial.println("Connecté à Blynk!");
lcd.clear();
lcd.print("Connecté à Blynk!");
// Initialiser les pins des LEDs
pinMode(ledVertePin, OUTPUT);
pinMode(ledRougePin, OUTPUT);
}
void loop() {
// Lire les valeurs des potentiomètres
int potTempValue = analogRead(potTempPin);
int potPhValue = analogRead(potPhPin);
int potTurbValue = analogRead(potTurbPin);
// Convertir les valeurs des potentiomètres
temperature = map(potTempValue, 0, 4095, 0, 100); // Température simulée entre 0 et 100°C
ph = map(potPhValue, 0, 4095, 0, 14); // pH simulé entre 0 et 14
turbidite = map(potTurbValue, 0, 4095, 0, 300); // Turbidité simulée entre 0 et 2.4 NTU
// Vérifier si les valeurs sont dans les plages acceptables
bool isTempOk = (temperature >= 20 && temperature <= 25); // Température acceptable entre 20 et 25°C
bool isPhOk = (ph >= 6.5 && ph <= 8.5); // pH acceptable entre 6.5 et 8.5
bool isTurbOk = (turbidite >= 0 && turbidite <= 240); // Turbidité acceptable entre 0 et 2.4 NTU
// Logique des LED : afficher les résultats
if (isTempOk && isPhOk && isTurbOk) {
digitalWrite(ledVertePin, HIGH); // Allumer la LED verte
digitalWrite(ledRougePin, LOW); // Éteindre la LED rouge
} else {
digitalWrite(ledVertePin, LOW); // Éteindre la LED verte
digitalWrite(ledRougePin, HIGH); // Allumer la LED rouge
}
// Envoyer les valeurs à Blynk
Blynk.virtualWrite(V1, temperature); // Envoie la température à la variable V1 dans Blynk
Blynk.virtualWrite(V2, ph); // Envoie le pH à la variable V2 dans Blynk
Blynk.virtualWrite(V3, turbidite); // Envoie la turbidité à la variable V3 dans Blynk
// Affichage des données sur l'écran LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("pH: ");
lcd.print(ph);
lcd.setCursor(0, 2);
lcd.print("Turb(10^2): ");
lcd.print(turbidite);
// Affichage dans la console série pour débogage
Serial.print("Température : ");
Serial.print(temperature);
Serial.print("°C, pH : ");
Serial.print(ph);
Serial.print(", Turbidité : ");
Serial.println(turbidite);
// Attente avant la prochaine lecture
delay(1000);
}