Système de détection précoce d'inondation à base d'Arduino – Code source & schéma de circuit
Système de surveillance précoce d'inondation – Circuit & Code source du projet
Dans les pays en développement comme dans les pays développés, les inondations sont une catastrophe naturelle majeure causant pertes humaines, animales et matérielles. Inondations dues aux séismes océaniques, ouragans, pluies torrentielles et autres catastrophes surviennent chaque année partout dans le monde.
Lors de fortes pluies, des systèmes d'assainissement mal gérés dans diverses régions géographiques provoquent des inondations et de nombreuses vies sont perdues. Un système d'alerte précoce permettant de détecter la montée des eaux et d'avertir la population à l'avance permettrait d'évacuer les gens et de sauver des vies.
Ce projet présente un prototype capable de détecter le niveau d'eau dans un étang, barrage ou réservoir et d'émettre une alerte via buzzer. C'est un prototype à petite échelle utilisant un Arduino UNO, un capteur ultrasonique, un buzzer, un afficheur LCD et quelques fils de connexion.
Projets connexes :
- Système d'arrosage et d'irrigation automatique des plantes – Circuit, Code & Rapport
- Alarme pluie – Détecteur neige, eau et pluie
Schéma de circuit pour la détection précoce d'inondation

Composants requis
- Arduino UNO
- Capteur ultrasonique HC-SR04
- Buzzer
- Afficheur LCD 16×2
- Fils de connexion (jumpers)
Projets connexes :
- Mesure de distance avec Arduino et capteur ultrasonique
- Alimentation variable avec Arduino UNO – Circuit et Code
Étudions maintenant chaque composant utilisé dans ce circuit de base.
Arduino UNO
Arduino est une plateforme open-source pour développer des projets électroniques. Facilement programmable, effaçable et reprogrammable à tout moment. De nombreuses cartes existent : Arduino UNO, Nano, Mega, Lilypad, etc., avec spécifications variées.
Ce projet utilise l'Arduino UNO pour contrôler automatiquement des appareils. Il embarque un microcontrôleur ATmega328 cadencé à 16 MHz. Puissant, il supporte les protocoles USART, I2C et SPI.
La carte se programme via l'IDE Arduino avec un câble micro-USB. L'ATmega328 possède un bootloader préprogrammé facilitant le téléversement sans matériel externe. Les langages C/C++ sont utilisés, faciles à apprendre.
L'IDE Arduino structure le code en deux parties : void setup() (exécuté une fois, initialisation) et void loop() (exécuté en boucle).
La carte dispose de 6 entrées analogiques et 14 broches GPIO numériques (6 avec PWM), utilisables via pinMode(), digitalWrite(), digitalRead(), analogRead(). Les 6 canaux analogiques (A0-A5) offrent une résolution 10 bits.
Alimentation : USB (5V) ou jack DC (7-20V). Régulateur 3.3V intégré pour composants basse consommation.
Broches de communication : USART (0=Rx, 1=Tx), I2C (SDA=A4, SCL=A5), SPI (SS=10, MOSI=11, MISO=12, SCK=13).
Projets connexes :
- Sonnette automatique avec détection d'objet par Arduino
- Lampe de nuit automatique avec Arduino
Capteur ultrasonique HC-SR04
Le HC-SR04 mesure des distances sans contact, sur le principe du RADAR/SONAR, avec grande précision.
Portée théorique : 450 cm. Pratique : 2 cm à 80 cm, précision 3 mm. Alimentation 5V, <15 mA, fréquence 40 kHz.

Il comporte un émetteur et un récepteur. La distance se calcule par la formule : Distance = Vitesse × Temps.
L'émetteur envoie une onde ultrasonore. Si un objet la réfléchit dans la portée, le récepteur la capte. Vitesse de l'onde ultrasonore ≈ 330 m/s. Le temps est mesuré par le microcontrôleur : la broche Echo passe à l'état HAUT pendant la durée du trajet aller-retour de l'onde. Ainsi, on déduit la distance entre l'objet et le capteur.
Projets connexes :
- Système automatique de contrôle de passage à niveau – Circuit & Code source
- Détecteur de vitesse de voiture – Fonctionnement et Code source
Interface HC-SR04 avec Arduino UNO
Le HC-SR04 s'interface avec Arduino, PIC, Raspberry Pi, etc. Ici, on l'interface avec Arduino UNO. 4 broches : VCC, GND, Trig, Echo.
Alimentez VCC/GND sur 5V/GND Arduino. Trig (entrée) et Echo (sortie) sur broches GPIO Arduino. Pour mesurer : mettre Trig à HAUT 10 µs, puis BAS. Cela génère une onde 40 kHz vers l'objet. Si réflexion, Echo passe HAUT pendant la durée du retour. Temps × 330 m/s = distance.
Article connexe :
- Système domotique intelligent – Circuit et Code source
- Programmation PWM Arduino et ses fonctions
Afficheur LCD 16×2
L'interface LCD 16×2 avec Arduino UNO est simple. « 16×2 » = 2 lignes de 16 caractères. Piloté par contrôleur HD44780 (Hitachi). Fonctionne en mode 4 bits (4 broches de données) ou 8 bits (8 broches). Nous utilisons le mode 4 bits (moins de fils, circuit simplifié).

Description des broches du module LCD 16×2 :
| Broche LCD | Description |
|---|---|
| VSS | Masse (GND) |
| VCC | Alimentation +5V |
| VEE | Réglage contraste |
| RS | Sélection registre : Mode Données ou Commande |
| RW | Mode Lecture ou Écriture |
| E | Validation (Enable) |
| DB0-DB7 | Broches de données/commandes |
| LED+ | Anode rétroéclairage |
| LED- | Cathode rétroéclairage |
Pas de lumière propre : une LED arrière assure le rétroéclairage. L'IDE Arduino fournit la bibliothèque LiquidCrystal avec fonctions intégrées. Fonctions principales utilisées :
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
lcd.begin()
lcd.clear()
lcd.print()
Fonctionnement du système de détection d'inondation & Code source
Le capteur ultrasonique est placé à un niveau de référence, émetteur/récepteur face au niveau d'eau. L'Arduino mesure la distance capteur-niveau d'eau.
L'afficheur LCD affiche cette distance. On définit un seuil d'alerte inondation : quand l'eau atteint ce seuil, le buzzer passe à HAUT et le LCD affiche un message d'alerte.
Explication du code
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
lcd.begin(16,2);
Inclusion de la bibliothèque LCD. LiquidCrystal lcd() définit les broches de données connectées à l'Arduino. lcd.begin() initialise le LCD 16×2.
pinMode(18, OUTPUT); // broche trigger
pinMode(19, INPUT); // broche echo
pinMode(20, OUTPUT); // buzzer
Broches 18 et 20 en sortie (trigger, buzzer), broche 19 en entrée (echo).
t = pulseIn(19, HIGH);
dist = t * 340 / 20000;
Variable t = temps où Echo reste HAUT. Distance en cm stockée dans dist.
if (dist < 40) {
digitalWrite(20, HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Niveau d'eau en hausse. Evacuez !");
delay(2000);
} else {
digitalWrite(20, LOW);
delay(2000);
}
Seuil d'inondation fixé à 40 cm. Si distance < 40 cm → buzzer ON + message LCD. Sinon buzzer OFF.
Code source complet :
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
float t = 0;
float dist = 0;
void setup() {
lcd.begin(16,2);
pinMode(18, OUTPUT); // trigger
pinMode(19, INPUT); // echo
pinMode(20, OUTPUT); // buzzer
lcd.setCursor(0,1);
lcd.print(" Detecteur Niveau Eau");
delay(2000);
}
void loop() {
lcd.clear();
digitalWrite(20, LOW);
digitalWrite(18, LOW);
delayMicroseconds(2);
digitalWrite(18, HIGH);
delayMicroseconds(10);
digitalWrite(18, LOW);
delayMicroseconds(2);
t = pulseIn(19, HIGH);
dist = t * 340 / 20000;
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Distance : ");
lcd.print(dist/100);
lcd.print(" m");
delay(1000);
if (dist < 40) {
digitalWrite(20, HIGH);
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Niveau d'eau en hausse. Evacuez !");
delay(2000);
} else {
digitalWrite(20, LOW);
delay(2000);
}
}
Projets connexes :
- Contrôle feu tricolore avec CI 4017 & 555
- Chargeur téléphone simple 5V depuis 230V AC
- Commutateur relais électronique – NPN, PNP, canaux N & P
- Roulette LED avec 555 & 4017
- Disjoncteur électronique – Schéma et fonctionnement
- Détecteur de mouvement infrarouge
- Commutateur tactile simple
- Doubleur de tension avec 555
- Alimentation duale 230VAC vers ±12VDC
- Chargeur téléphone simple 5V depuis 230V AC
Technologie industrielle
- Maîtriser les directives using C# : Imports, alias et directives static
- Symphony Link : détection fuites d'eau fiable pour data centers
- Système de contrôle de température basé LM35 avec microcontrôleur AT89S52
- Construire un décodeur DTMF avec un Arduino seul – Aucun CI supplémentaire nécessaire
- Système de pointage RFID fiable avec Arduino et Python (base de données phpMyAdmin)
- Robot de détection humaine basé sur Arduino Uno : Intégration capteurs étape par étape
- SERENA : Système d'Alarme Arduino Mega 2560 Personnalisé avec Écran Tactile TFT LCD
- Système de surveillance d'incendie forestier en temps réel avec alertes SMS
- Pourquoi la détection de fuites d'eau IoT de Biz4Intellia booste l'efficacité industrielle – 5 avantages clés