Proyecto Arduino Laser Tripwire: Construye un Detector de Intrusión Simple
Componentes y Suministros
| Componente | Descripción | Cantidad |
|---|---|---|
| Arduino UNO | O placa compatible | 1 |
| Protoboard Sin Soldar Medio Tamaño | Montaje del circuito | 1 |
| Resistencia 10k ohm | Divisores de tensión para fotorresistencias | 3 |
| Cables jumper (genéricos) | Conexiones | 1 |
| Fotorresistencia (LDR) | Detección haz láser y luz ambiente | 2 |
| Diodo Láser | Fuente del haz de luz | 1 |
| Pulsador SparkFun 12mm | Cambio de modo (setup/armed) | 1 |
| Zumbador (Buzzer) | Alarma sonora | 1 |
Aplicaciones y Servicios Online
- Arduino IDE - Entorno de desarrollo
Sobre el Proyecto
Construyendo un Laser Tripwire
Componentes Necesarios
- Cables jumper
- 3 x Resistencias 10k
- 2 x Fotorresistencias (LDR)
- 1 x Pulsador
- 1 x Zumbador
- 1 x Diodo láser
- 1 x Arduino
- 1 x Protoboard
- 1 x Espejo (para reflejar el haz)
Se ha usado una protoboard separada para el circuito de detección láser, facilitando el posicionamiento del haz sobre la fotorresistencia.
Circuito Detector Láser
- Colocar dos cables jumper en tiras terminales separadas (ej. rojo y amarillo).
- Conectar una fotorresistencia entre cable rojo y una tira terminal.
- Conectar la otra fotorresistencia entre otra tira terminal y cable rojo.
- Conectar resistencia 10k desde cable amarillo a una fotorresistencia, y otra 10k entre la otra fotorresistencia y cable amarillo.
- Conectar cables verdes/naranjas en las intersecciones fotorresistencia-resistencia.
- Cable amarillo a tierra (rail negativo), rojo a positivo (rail positivo).
- Naranja a A0 (detector láser), verde a A1 (detector luz ambiente).
Circuito Zumbador
Colocar zumbador en protoboard. Negativo a rail negativo, positivo a pin 3 Arduino.
Circuito Pulsador
- Colocar pulsador entre dos tiras terminales (contacto solo al pulsar).
- Conectar última resistencia 10k a un extremo del pulsador y a tierra.
- Otro extremo del pulsador a positivo.
- Intersección pulsador-resistencia a pin 4 Arduino.
Conexión Láser
Conectar láser a pin 2 y tierra. Se usó láser barato "hackeado" con pinzas cocodrilo al muelle y carcasa, con velcro manteniendo pulsado el botón.
Lógica del Programa
El programa verifica continuamente si se pulsa el botón:
- Modo Setup (primera pulsación): Envía valores a puerto serie. LED pin 13 se enciende cuando luz en fotorresistencia es suficiente (ayuda a apuntar láser).
- Modo Armed (segunda pulsación): Reporta por serie cada 3 segundos. Verifica si valor fotorresistencia cae por haz interrumpido → inicia modo Trip.
- Modo Trip (haz interrumpido): Pita 3 veces, envía datos a serie, retorna a Armed.
Código
// 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: // Calibración
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) {
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("");
}
Esquemáticos
Proceso de manufactura
- Muñeca interactiva "El Juego del Calamar" con Arduino UNO: Proyecto DIY
- Construye un reloj en tiempo real con Arduino para horarios de oración islámica
- Robot de Detección Humana con Arduino Uno: Integración de Sensores Paso a Paso
- Servidor Web Arduino Uno WiFi: Controla un LED desde el Navegador
- Calculadora Básica con Arduino UNO - Proyecto Fácil para Principiantes
- Cómo mostrar imágenes en una pantalla TFT LCD de 1.17 pulgadas con Arduino UNO
- Construir una pantalla de persistencia de visión portátil con Arduino UNO y ATtiny85
- Control de Matriz LED 8×8 con Arduino Uno: Guía Paso a Paso
- Wi-Servo: Controla servomotores por Wi‑Fi desde un navegador web
- Control Remoto de una Bombilla con Arduino Uno, Relé y App Android
- Control de Ventilador PWM de 4 Pines a 25 kHz con Arduino Uno – Montaje, Código y Pruebas