#include <SoftwareSerial.h>
#include <Servo.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
#define BLYNK_TEMPLATE_ID "TMPL2U3ivyWAY"
#define BLYNK_TEMPLATE_NAME "gaz"
#define BLYNK_AUTH_TOKEN "CI-lLHOMK_Y18aH7Jsyfn-ZZz5Elg19U"
const int gasPin = 2; // Pin du capteur de gaz
const int buzzerPin = 23; // Pin du buzzer
const int ledPin = 34; // Pin de la LED
const int servoPin = 18; // Pin du servomoteur
const int threshold = 307; // Seuil de détection du gaz à 30% de 1023
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
SoftwareSerial gsm(25, 33); // RX, TX
Servo windowServo;
char auth[] = BLYNK_AUTH_TOKEN; // Remplacez par votre token d'authentification Blynk
void setup() {
pinMode(gasPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
windowServo.attach(servoPin);
Serial.begin(9600);
gsm.begin(9600);
// Initialisation du module GSM
gsm.println("AT");
delay(100);
gsm.println("AT+CMGF=1"); // Mode texte pour les SMS
delay(100);
// Initialisation du servomoteur
windowServo.write(0); // Fermer la fenêtre (position initiale)
// Initialisation de Blynk
Blynk.begin(auth, Serial);
}
void loop() {
Blynk.run(); // Gérer les connexions Blynk
int gasLevel = analogRead(gasPin);
int gasPercentage = map(gasLevel, 0, 1023, 0, 100); // Convertir le niveau analogique en pourcentage
// Envoyer le pourcentage de gaz à Blynk
Blynk.virtualWrite(V0, gasPercentage); // V0 est le numéro du widget dans Blynk
if (gasLevel > threshold) {
digitalWrite(buzzerPin, HIGH); // Activer l'alarme sonore
digitalWrite(ledPin, HIGH); // Allumer la LED
windowServo.write(90); // Ouvrir la fenêtre
sendSMS("Attention! Détection de gaz!");
// Envoyer un message d'alerte à Blynk
Blynk.notify("Attention! Détection de gaz!");
delay(5000); // Attendre 5 secondes avant de continuer pour éviter d'envoyer trop de SMS
} else {
digitalWrite(buzzerPin, LOW); // Désactiver l'alarme sonore
digitalWrite(ledPin, LOW); // Éteindre la LED
windowServo.write(0); // Fermer la fenêtre
}
delay(1000); // Attendre une seconde avant de refaire la lecture
}
void sendSMS(String message) {
gsm.print("AT+CMGS=\"+216922148952\"\r"); // Remplacer par le numéro de téléphone destinataire
delay(100);
gsm.print(message);
delay(100);
gsm.write(26); // Caractère de fin de message pour le module GSM
delay(1000); // Attendre la confirmation d'envoi
}