// Inclure les bibliothèques
#include <DHT.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
/*------------------------ Pour le capteur de temperature et d'humidite DHT22 ---------------------------------------------*/
// Définition des constantes et variables
#define DHTPIN 2
#define DHTTYPE 22
// Création d'une instance DHT
DHT dht(DHTPIN, DHTTYPE);
/*------------------------ Pour l'accelometre MPU6050 ---------------------------------------------*/
//Creation d'une instance de l'objet Adafruit_MPU6050 appelée mpu
Adafruit_MPU6050 mpu;
// Déclaration d'une variable booléenne fall pour indiquer si une chute a été détectée
boolean fall = false;
void setup(void) {
// Initialisation
dht.begin();
Serial.begin(9600);
// Initialisation du MPU6050
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_250_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
delay(1000);
}
/*------------------------ Fonction principale ---------------------------------------------*/
void loop() {
/*------------------------ Pour le capteur de temperature et d'humidite DHT22 ---------------------------------------------*/
// Lecture des données du capteur
float temp = dht.readTemperature();
float hum = dht.readHumidity();
// Envoyer les données vers la passerelle toutes les 2s
// Format données: #hum,temp
// Exemple: #82.00,28.00
Serial.println("La valeur de la temperature °C et l'humidité sont :");
Serial.println(String(temp) + "," + String(hum));
delay(2000);
/*------------------------ Pour l'accelometre MPU6050 ---------------------------------------------*/
sensors_event_t a, g, tempmpu;
mpu.getEvent(&a, &g, &tempmpu);
Serial.print("X: "); Serial.print(a.acceleration.x);
Serial.print("Y: "); Serial.print(a.acceleration.y);
Serial.print("Z: "); Serial.print(a.acceleration.z);
Serial.print("X°: "); Serial.print(g.gyro.x);
Serial.print("Y°: "); Serial.print(g.gyro.y);
Serial.print("Z°: "); Serial.print(g.gyro.z);
if (!fall) {
Serial.print("FALL NOT DETECTED");
} else {
// Affiche "FALL DETECTED" lorsqu'une chute est détectée
Serial.print("FALL DETECTED");
// Tonalité d'environ 262 Hz pendant 5,00 secondes sur la broche numérique 15
tone(A3, 262, 500);
}
// Logique de détection de chute simulée
if (a.acceleration.z < 0.6 && g.gyro.z < 45) {
fall = true;
}
delay(10);
}