// 📌 Importation des bibliothèques nécessaires
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
// 📌 Définition des broches des capteurs
#define DHTPIN 3 // Broche du DHT22
#define DHTTYPE DHT22 // Type du DHT22
#define MQ2_PIN A0 // Broche du capteur de gaz MQ2
#define VIBRATION_PIN 6 // Broche du capteur de vibration
#define ACS712_PIN A1 // Broche du capteur de courant ACS712
#define PIR_PIN 7 // Broche du capteur de mouvement PIR
#define LDR_PIN A2 // Broche du capteur de lumière LDR
#define TRIG_PIN 9 // Broche Trig du HC-SR04
#define ECHO_PIN 10 // Broche Echo du HC-SR04
// 📌 Configuration de l'écran OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// 📌 Initialisation du capteur DHT
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
dht.begin();
// Initialisation de l'écran OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("Échec de l'initialisation OLED"));
for (;;);
}
display.clearDisplay();
// Définition des broches en entrée
pinMode(MQ2_PIN, INPUT);
pinMode(VIBRATION_PIN, INPUT);
pinMode(ACS712_PIN, INPUT);
pinMode(PIR_PIN, INPUT);
pinMode(LDR_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
// 🔹 Lecture des capteurs
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
int smokeValue = analogRead(MQ2_PIN);
int vibrationValue = digitalRead(VIBRATION_PIN);
int currentValue = analogRead(ACS712_PIN);
int motionDetected = digitalRead(PIR_PIN);
int lightValue = analogRead(LDR_PIN);
float distance = getDistance();
// 🔹 Affichage sur le Moniteur Série
Serial.print("Température : "); Serial.print(temperature); Serial.println(" °C");
Serial.print("Humidité : "); Serial.print(humidity); Serial.println(" %");
Serial.print("Fumée : "); Serial.println(smokeValue);
Serial.print("Vibration : "); Serial.println(vibrationValue ? "OUI" : "NON");
Serial.print("Courant : "); Serial.println(currentValue);
Serial.print("Mouvement : "); Serial.println(motionDetected ? "OUI" : "NON");
Serial.print("Lumière : "); Serial.println(lightValue);
Serial.print("Distance : "); Serial.print(distance); Serial.println(" cm");
Serial.println("--------------------------------");
// 🔹 Affichage sur l'écran OLED
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.println("Temp: " + String(temperature) + " C");
display.println("Hum: " + String(humidity) + " %");
display.println("Gaz: " + String(smokeValue));
display.println("Vibration: " + String(vibrationValue ? "OUI" : "NON"));
display.println("Courant: " + String(currentValue));
display.println("Mvt: " + String(motionDetected ? "OUI" : "NON"));
display.println("Lumiere: " + String(lightValue));
display.println("Dist: " + String(distance) + " cm");
display.display();
delay(2000); // Pause de 2 secondes
}
// 📌 Fonction pour obtenir la distance avec le capteur HC-SR04
float getDistance() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
float distance = duration * 0.034 / 2; // Conversion en cm
return distance;
}