#include <WiFi.h>
#include <DHTesp.h>
#include <Adafruit_ILI9341.h>
// Définition des broches pour le capteur DHT22
const int dhtPin = 32; // Broche D5
// Création des objets
DHTesp dht;
// Définition des broches pour l'écran ILI9341
#define TFT_DC 2
#define TFT_CS 15
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// Définition des broches pour le capteur PIR
const int pirPin = 26; // Broche D4
// Définition des broches pour le capteur HC-SR04
const int trigPin = 12; // Broche D12
const int echoPin = 14; // Broche D14
void setup() {
Serial.begin(115200);
// Initialisation du capteur DHT22
dht.setup(dhtPin, DHTesp::DHT22);
// Initialisation de l'écran ILI9341
tft.begin();
tft.setRotation(1); // Rotation de l'écran (à ajuster selon vos besoins)
tft.fillScreen(ILI9341_BLACK); // Effacer l'écran
tft.setTextSize(2);
tft.setTextColor(ILI9341_WHITE);
// Initialisation du capteur PIR
pinMode(pirPin, INPUT);
// Initialisation du capteur HC-SR04
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// Lecture des données du capteur DHT22
TempAndHumidity lastRead = dht.getTempAndHumidity();
// Lecture de l'état du capteur PIR
int pirState = digitalRead(pirPin);
String pirStatus = (pirState == HIGH)? "Mouvement détecté" : "Aucun mouvement";
// Lecture de la distance avec le capteur HC-SR04
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = (duration / 2) * 0.034; // Calcul de la distance en cm
// Affichage des données sur l'écran ILI9341
tft.fillScreen(ILI9341_BLACK); // Effacer l'écran
tft.setCursor(10, 10);
tft.print("Temperature: ");
tft.print(lastRead.temperature, 1);
tft.println(" C");
tft.setCursor(10, 30);
tft.print("Humidite: ");
tft.print(lastRead.humidity, 1);
tft.println(" %");
tft.setCursor(10, 50);
tft.print("PIR: ");
tft.println(pirStatus);
tft.setCursor(10, 70);
tft.print("Distance: ");
tft.print(distance);
tft.println(" cm");
// Affichage dans la console sérielle
Serial.print("Température: ");
Serial.print(lastRead.temperature, 1);
Serial.println(" °C");
Serial.print("Humidité: ");
Serial.print(lastRead.humidity, 1);
Serial.println(" %");
Serial.println(pirStatus);
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
// Attente de 2 secondes avant la prochaine lecture
delay(2000);
}