Détection de passage avec module laser KY-008 et capteur LDR avec Arduino Nano
Description :
Ce projet consiste en la création d’une barrière immatérielle de détection. Le système utilise un faisceau laser dirigé vers une cellule photoélectrique (LDR). Lorsqu’un objet ou une personne traverse le faisceau, la rupture de lumière est instantanément détectée par l’Arduino, déclenchant un signal d’alerte.
Sa particularité est l’étalonnage dynamique : au démarrage, le système mesure l’intensité du laser reçu pour s’adapter à la luminosité ambiante de la pièce.
Prérequis :
- 1 x Carte Arduino Nano
- 2 × LED : 1 vertes, 1 rouges
- 2 × Résistance 220Ω
- 1 x Photorésistance (LDR)
- 1 × Résistance 10KΩ
- 1 x Module Laser KY-008
- 1 x Breadboard
Version IDE :
- Arduino IDE 2.3.5
Vidéo de démonstration :
Schéma de câblage :


Code Arduino :
#define ledPinrouge 3 // Définit le numéro de la broche pour la LED rouge (D3)
#define ledPinverte 4 // Définit le numéro de la broche pour la LED verte (D4)
#define sensorPin A0 // Définit la broche analogique utilisée pour le capteur (A0)
int SensorValue = 0; // Variable pour stocker la lecture actuelle du capteur
int SensorValueRepos; // Variable pour stocker la valeur de référence (au calme)
int Tolerancedetection = 200; // Seuil de sensibilité pour déclencher l'alerte
void setup() {
Serial.begin(9600); // Ouvre le port série pour afficher des données sur l'ordinateur
pinMode(ledPinrouge, OUTPUT); // Configure la broche 3 comme une sortie (envoie du courant)
pinMode(ledPinverte, OUTPUT); // Configure la broche 4 comme une sortie
// Lit la valeur du capteur au démarrage pour définir l'état au calme
SensorValueRepos = analogRead(sensorPin);
}
void loop() {
SensorValue = analogRead(sensorPin); // Lit la valeur actuelle du capteur (entre 0 et 1023)
Serial.println(SensorValue); // Affiche la valeur dans le Moniteur Série
// CONDITION : Si la valeur actuelle est SIGNIFICATIVEMENT plus basse que la valeur au repos
if (SensorValue < SensorValueRepos - Tolerancedetection) {
digitalWrite(ledPinrouge, HIGH); // Allume la LED rouge (Alerte)
digitalWrite(ledPinverte, LOW); // Éteint la LED verte
}
// SINON (si tout est normal)
else {
digitalWrite(ledPinverte, HIGH); // Allume la LED verte (OK)
digitalWrite(ledPinrouge, LOW); // Éteint la LED rouge
}
delay(50); // Attend 50 millisecondes avant la prochaine lecture pour stabiliser
}
