Arduino Laser-Lichtschranke: Einfacher Einbruchmelder selbst bauen
Komponenten und Zubehör
| Komponente | Beschreibung | Anzahl |
|---|---|---|
| Arduino UNO | Oder kompatibles Arduino Uno Board | 1 |
| Lötfreies Steckbrett (Halbgröße) | Für Aufbau | 1 |
| Widerstand 10k Ohm | Für Fotowiderstände und Taster | 3 |
| Jumper-Kabel (generic) | Verbindungen | 1 |
| Fotowiderstand (LDR) | Laser- und Umgebungslicht-Erkennung | 2 |
| Laser-Diode | Lichtquelle für Lichtschranke | 1 |
| Taster 12mm | Modus-Umschaltung (Setup/Armed) | 1 |
| Summer | Alarmton | 1 |
Apps und Online-Dienste
- Arduino IDE
Über dieses Projekt
Laser-Lichtschranke bauen
Komponenten
- Einige Jumper-Kabel
- 3 x 10k Widerstände
- 2 x Fotowiderstände
- Ein Taster
- Ein Summer
- Ein Laser
- Ein Arduino
- Ein Steckbrett
- Ein Spiegel
Ich habe auch ein separates Steckbrett für den Laser-Erkennungsschaltkreis verwendet (erleichtert die Ausrichtung des Lasers auf den Fotowiderstand).
Laser-Detektor bauen
Zwei Jumper-Kabel in separate Terminalstreifen stecken. Einen Fotowiderstand an den roten Leiter und einen Terminalstreifen anschließen. Den anderen Fotowiderstand zwischen einen anderen Terminalstreifen und den roten Leiter verbinden. Einen 10k-Widerstand vom gelben Leiter zu einem Fotowiderstand und den anderen 10k-Widerstand zwischen den anderen Fotowiderstand und den gelben Leiter schalten. Zwei weitere Kabel an jede Kreuzung von Fotowiderstand und 10k-Widerstand anschließen (grün und orange).
Gelben Leiter an Minus-Schiene, roten an Plus-Schiene des Steckbretts anschließen. Orange an A0 (Laser-Detektor), Grün an A1 (Umgebungslicht-Detektor).
Summer anschließen
Summer auf Steckbrett platzieren. Minus-Schiene mit Summer-Minus verbinden. Summer-Plus an Arduino Pin 3.
Taster bauen
Taster zwischen zwei Terminalstreifen platzieren (Kontakt nur bei Druck). Letzten 10k-Widerstand an ein Taster-Ende und Minus-Pin anschließen (Jumper-Kabel an Masse-Schiene). Anderes Taster-Ende an Plus-Schiene. Kreuzung Taster/Widerstand an Arduino Pin 4.
Laser anschließen
Laser an Pin 2 und Masse anschließen. Billiglaser „gehackt“ durch Krokodilklemmen an Feder und Gehäuse mit Klettband, das den Taster gedrückt hält.
Programmablauf
Das Programm prüft kontinuierlich, ob der Taster gedrückt ist. Einmal gedrückt = Setup-Modus, zweimal = Armed-Modus.
Setup-Modus: Werte an Serial Port ausgeben. Bei hellem Licht auf Fotowiderstand leuchtet Pin 13 (Laser-Ausrichtung).
Armed-Modus: Alle 3 Sekunden Serial-Report. Prüft, ob Fotowiderstand-Wert durch Laserunterbrechung sinkt → Trip-Modus starten.
Trip-Modus: 3x piepen, Daten an Serial Port, zurück zu Armed-Modus.
Code
Laser Tripwire (Arduino)
// 5 pins trip wire
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: // Kalibrierung
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: // Armed
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: // Trip
if ((millis() - millisCount) >= 1000) {
millisCount = millis();
stats();
beep(3);
mode = 1;
}
break;
}
delay(1);
}
void beep(int qty) {
int count;
if (makeBeep == 1) {
for (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("");
}
Schaltpläne
Steckbrett-Ansicht und Schaltplan sind im Originalprojekt als Bilder enthalten.
Herstellungsprozess
- Squid Game Puppe mit Arduino UNO bauen – Interaktives DIY-Projekt
- Arduino Echtzeituhr für islamische Gebetszeiten bauen
- Arduino-Uno-Roboter zur Personenerkennung – Sensorintegration Schritt für Schritt
- Arduino UNO WiFi Webserver: LED per Browser steuern
- Einfacher Taschenrechner mit Arduino UNO – Einsteigerprojekt
- Bilder auf 1,17-Zoll-TFT-LCD mit Arduino UNO anzeigen
- Tragbares Persistence-of-Vision-Display mit Arduino UNO und ATtiny85 bauen
- 8×8 LED-Matrix mit Arduino Uno meistern: Schritt-für-Schritt-Anleitung
- Wi-Servo: Servomotoren per WLAN über Webbrowser steuern
- 25-kHz-4-Pin-PWM-Lüftersteuerung mit Arduino Uno – Bau, Code & Test