#include <SoftwareSerial.h>
#include <Servo.h>
const int gasPin = A0; // Pin du capteur de gaz
const int buzzerPin = 8; // Pin du buzzer
const int ledPin = 9; // Pin de la LED
const int servoPin = 10; // Pin du servomoteur
const int threshold = 307; // Seuil de détection du gaz à 30% de 1023
SoftwareSerial gsm(2, 3); // RX, TX
Servo windowServo;
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(90); // Fermer la fenêtre (position initiale)
}
void loop() {
int gasLevel = analogRead(gasPin);
Serial.print("Niveau de gaz: ");
Serial.println(gasLevel); // Afficher le niveau de gaz pour le débogage
if (gasLevel > threshold) {
tone(buzzerPin, 1000); // Activer l'alarme sonore à 1000 Hz
digitalWrite(ledPin, HIGH); // Allumer la LED
windowServo.write(0); // Ouvrir la fenêtre
sendSMS("Attention! Détection de gaz!");
delay(5000); // Attendre 5 secondes avant de continuer pour éviter d'envoyer trop de SMS
} else {
noTone(buzzerPin); // Désactiver l'alarme sonore
digitalWrite(ledPin, LOW); // Éteindre la LED
windowServo.write(90); // Fermer la fenêtre
}
delay(1000); // Attendre une seconde avant de refaire la lecture
}
void sendSMS(String message) {
gsm.print("AT+CMGS=\"+212656031649\"\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
}