Projet Fil Laser Arduino : Construire un Détecteur d'Intrusion Simple
Composants et fournitures
| Composant | Description | Quantité |
|---|---|---|
| Arduino UNO | Ou carte compatible | 1 |
| Plaque d'essai sans soudure demi-taille | Montage | 1 |
| Résistance 10 kΩ | Pour diviseurs de tension | 3 |
| Fils de liaison (jumper wires) génériques | Connexions | 1 |
| Photorésistance (LDR) | Détection du faisceau laser | 2 |
| Diode laser | Source du faisceau | 1 |
| Bouton poussoir 12mm SparkFun | Changement de mode (configuration/armé) | 1 |
| Buzzer | Alarme sonore | 1 |
Applications et services en ligne
- Arduino IDE
À propos du projet
Construction d'un fil laser (Laser Tripwire)
Composants
- Fils de liaison
- 3 × résistances 10 kΩ
- 2 × photorésistances
- Un bouton poussoir
- Un buzzer
- Une diode laser
- Un Arduino
- Une plaque d'essai
- Un miroir (pour refléchir le faisceau)
L'auteur a utilisé une plaque d'essai séparée pour le circuit de détection laser, facilitant l'alignement du laser sur la photorésistance.
Fabrication du détecteur laser
Deux photorésistances sont montées en diviseurs de tension avec les résistances 10 kΩ. L'une détecte le faisceau laser (connectée sur A0), l'autre mesure la lumière ambiante (connectée sur A1) pour compenser les variations d'éclairage. Les sorties sont reliées aux entrées analogiques de l'Arduino.
Installation du buzzer
Le buzzer est connecté entre la borne négative (rail GND) et la broche 3 de l'Arduino (PWM).
Fabrication du bouton
Le bouton est monté avec une résistance de rappel 10 kΩ vers la masse. L'intersection bouton/résistance est connectée à la broche 4 de l'Arduino. L'autre borne du bouton va au +5V.
Connexion du laser
Le laser est alimenté par la broche 2 (commande) et la masse. Un laser bon marché a été « hacké » en connectant des pinces crocodile au ressort et au boîtier, avec du Velcro pour maintenir le bouton enfoncé.
Logique du programme
Le programme vérifie en permanence l'état du bouton :
- Appui unique → mode configuration
- Second appui → mode armé
Mode configuration :
- Envoie les valeurs des capteurs sur le port série.
- Allume la LED broche 13 quand la lumière sur la photorésistance est suffisante (aide à l'alignement du laser).
Mode armé :
- Envoie un rapport série toutes les 3 secondes.
- Surveille la photorésistance : si la valeur chute (faisceau coupé), passe en mode alarme.
Mode alarme (Trip) :
- Émet 3 bips, envoie les données sur le port série.
- Revient au mode armé.
Code
// Fil laser 5 broches
int mode = 1;
int ambiant;
int trip = 1000;
int minLight = 900;
int makeBeep = 1;
int atAverage;
long millisCount;
int laserPin = 2;
int ledPin = 13;
int buzzerPin = 3;
String modeNames[3] = {"SETTINGS","ARMED","TRIP"};
int modePin = 4;
int tripPin = A0;
int ambiantPin = A1;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(laserPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(modePin, INPUT);
Serial.begin(9600);
}
void loop() {
if (digitalRead(modePin) == 1) {
trip = analogRead(tripPin);
mode = mode + 1;
if (mode >= 2) mode = 0;
beep(1);
delay(300);
}
switch (mode) {
case 0: // Calibration
digitalWrite(laserPin, HIGH);
ambiant = analogRead(ambiantPin);
trip = analogRead(tripPin);
atAverage = ambiant + ((trip - ambiant)/2);
stats();
if (trip >= minLight) digitalWrite(ledPin, HIGH);
else digitalWrite(ledPin, LOW);
break;
case 1: // Armé
digitalWrite(laserPin, HIGH);
digitalWrite(ledPin, LOW);
ambiant = analogRead(ambiantPin);
atAverage = ambiant + ((trip - ambiant)/2);
if (analogRead(tripPin) < atAverage) mode = 2;
if ((millis() - millisCount) >= 3000) {
millisCount = millis();
stats();
}
break;
case 2: // Alarme
if ((millis() - millisCount) >= 1000) {
millisCount = millis();
stats();
beep(3);
mode = 1;
}
break;
}
delay(1);
}
void beep(int qty) {
if (makeBeep == 1) {
for (int count = 1; count <= qty; count++) {
digitalWrite(buzzerPin, HIGH);
delay(50);
digitalWrite(buzzerPin, LOW);
delay(50);
}
}
}
void stats() {
Serial.print("A:"); Serial.print(ambiant);
Serial.print(" T:"); Serial.print(trip);
Serial.print(" AT:"); Serial.print(atAverage);
Serial.print(" MODE:"); Serial.print(modeNames[mode]);
Serial.println("");
}
Schémas
Vue plaque d'essai et schéma électrique fournis en images.
Processus de fabrication
- Poupée interactive « Squid Game » avec Arduino UNO – Projet DIY
- Horloge Arduino temps réel pour les heures de prière islamiques
- Robot de détection humaine basé sur Arduino Uno : Intégration capteurs étape par étape
- Serveur Web Arduino Uno WiFi : Commander une LED via Navigateur
- Calculatrice basique Arduino UNO - Projet facile pour débutants
- Afficher des images sur un écran TFT 1,17 pouces avec Arduino UNO
- Construire un affichage à persistance rétinienne portable avec Arduino UNO et ATtiny85
- Maîtriser une matrice LED 8×8 avec Arduino Uno : Guide pas à pas
- Contrôle de ventilateur PWM 4 broches 25 kHz avec Arduino Uno – Construction, code et test