Sistema de Alarma para Mochila con Arduino y Brújula LSM303
Componentes y materiales
| Arduino UNO | × | 1 |
| Adafruit LSM303 - Acelerómetro + Magnetómetro (Brújula) Triple Eje | × | 1 |
| Zumbador Piezo Grande SparkFun - 3kHz | × | 1 |
| Batería 9V (genérica) | × | 1 |
| Jack hembra 6.35mm (con interruptor) | × | 1 |
| Jack macho 6.35mm | × | 1 |
| Cables jumper Macho/Hembra | × | 1 |
| Conector 9V a Jack Barril | × | 1 |
Aplicaciones y servicios online
| Arduino IDE | enlace |
Sobre este proyecto
¿Alguna vez has sentido la necesidad de una alarma para tu mochila? ¿Te has sentado en público con la mochila y temido que la roben? ¡Este es tu proyecto!
Usando la brújula/acelerómetro LSM303, suena alarma al detectar movimiento. Monitoriza la orientación mediante el magnetómetro; si hay giro >10°, activa la alarma.
Paso 1: Cablear el Arduino
Conecta la placa LSM303 al Arduino:
- SDA → SDA (A4 en UNO)
- SCL → SCL (A5 en UNO)
- VIN → 5V
- GND → GND
Más detalles: Guía Adafruit.
Conecta el zumbador piezo:
- + → Pin 13
- – → GND

Paso 2: Instalar librerías
- Descarga
Adafruit_LSM303DLHCyAdafruit_Sensorcomo .ZIP. - Abre Arduino IDE (descarga aquí si no lo tienes).
- Sketch → Include Library → Add .ZIP Library…

- Selecciona los .ZIP descargados.

Paso 3: Programar el Arduino
Nuevo sketch en Arduino IDE, borra todo, pega este código:
// Incluir librerías
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_LSM303.h>
// Ajustar sensibilidad (grados)
const int sens = 10;
// ID único para el sensor
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
void setup(void) {
// Serial.begin(9600); // Solo depuración
// Serial.println("Iniciando...");
pinMode(13, OUTPUT); // Pin zumbador
// Inicializar sensor
if(!mag.begin()) {
// Error detectando LSM303: revisa conexiones
digitalWrite(13, HIGH); delay(500);
digitalWrite(13, LOW); delay(500);
digitalWrite(13, HIGH); delay(500);
digitalWrite(13, LOW); delay(500);
while(1); // Bucle infinito
}
// Espera 5 segundos para colocar mochila
delay(5000);
// Beep de confirmación inicio
digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW);
}
// Obtener rumbo magnético en grados (0-359)
int getDeg(void) {
sensors_event_t event;
mag.getEvent(&event);
float Pi = 3.14159;
float heading = int((atan2(event.magnetic.y, event.magnetic.x) * 180) / Pi);
if (heading < 0) heading = 360 + heading;
return heading;
}
void loop(void) {
int oldDeg = getDeg();
delay(1000);
int newDeg = getDeg();
// Detectar cambio > sensibilidad
if (newDeg < (oldDeg - sens) && oldDeg != 0 && newDeg != 0) {
digitalWrite(13, HIGH); // Alarma
// Serial.println("Disparado");
}
else if (newDeg > (oldDeg + sens) && oldDeg != 0 && newDeg != 0) {
digitalWrite(13, HIGH); // Alarma
// Serial.println("Disparado");
}
// Serial.print("Nuevo:"); Serial.println(newDeg);
// Serial.print("Viejo:"); Serial.println(oldDeg);
}
Conecta Arduino, compila y sube.
Paso 4: ¡Prueba!
Si todo va bien, tras reset: unos beeps, 3s silencio, beep largo. Gira el LSM303 → suena alarma. Si muy sensible, aumenta sens; si poco, disminúyelo.
Si 2 beeps largos antes de los 3s: problema cableado. Revisa conexiones.
Si no funciona: puede ser nombres librerías. Borra #include iniciales y usa Sketch → Include Library → selecciona 'Wire', 'Adafruit LSM303DLHC', 'Adafruit Unified Sensor'. Si persiste: aleja de campos magnéticos fuertes (otra habitación, exterior). Asegura placa nivelada y paralela al suelo.
Paso 5: Añadir llave de armado/desarmado
Ya tienes alarma funcional. Conecta batería 9V al jack barril, monta en mochila. Pero enchufar/desenchufar cada vez es molesto. Aquí entra el jack 6.35mm: más seguro que jack 3.5mm (común en auriculares). Si tienes interruptor con llave u otro, úsalo.
Cablea el interruptor/llave entre la batería y el jack barril.

Si usas conector barril con terminales: corta un cable, alarga si hace falta, inserta interruptor. Yo usé terminal block jack y cableé así. Mi "llave" es un simple interruptor toggle, pero sé creativo: reed switch + imán, RFID, ¡app smartphone!
Paso 6: ¡Monta en la mochila!



¡Listo! Taladra agujero lateral para zumbador y otro para llave. Usé bridas, pero puedes fijar más permanente. Asegura: sensor paralelo al suelo y orificio zumbador despejado.
Más allá
Esta alarma no es solo para mochilas. Ponla en una puerta, tarro de galletas, nevera, ¡lo que quieras proteger! Las posibilidades son infinitas.
Código
Código (Arduino)
// Incluir librerías
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_LSM303.h>
// Ajustar sensibilidad
const int sens = 10;
// ID único para el sensor
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
void setup(void) {
// Serial.begin(9600); // Serial.println("Starting...");
pinMode(13, OUTPUT);
if(!mag.begin()) {
digitalWrite(13, HIGH); delay(500);
digitalWrite(13, LOW); delay(500);
digitalWrite(13, HIGH); delay(500);
digitalWrite(13, LOW); delay(500);
while(1);
}
delay(5000);
digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW);
}
int getDeg(void) {
sensors_event_t event;
mag.getEvent(&event);
float Pi = 3.14159;
float heading = int((atan2(event.magnetic.y, event.magnetic.x) * 180) / Pi);
if (heading < 0) heading = 360 + heading;
return heading;
}
void loop(void) {
int oldDeg = getDeg();
delay(1000);
int newDeg = getDeg();
if (newDeg < (oldDeg - sens) && oldDeg != 0 && newDeg != 0) {
digitalWrite(13, HIGH);
// Serial.println("Triggered");
} else if (newDeg > (oldDeg + sens) && oldDeg != 0 && newDeg != 0) {
digitalWrite(13, HIGH);
// Serial.println("Triggered");
}
// Serial.print("New:"); Serial.println(newDeg);
// Serial.print("Old:"); Serial.println(oldDeg);
}
Esquemáticos
Hacia la Brújula:
Azul – SDA
Amarillo – SCL
Negro – GND
Rojo – VIN

Proceso de manufactura
- Monitorización segura del hogar con Home Assistant en Raspberry Pi: Movimiento, alarma y captura de vídeo
- Construya una Alarma de Agua Headless para Raspberry Pi 2 con Adafruit T‑Cobbler Plus
- Sistema de Alarma por Detección de Movimiento con Java y Reactive Blocks – Despliegue en Raspberry Pi y Envío de SMS
- Robot Despertador Rodante: Sistema Inteligente y Móvil de Despertar con Raspberry Pi y Google Calendar
- Alerta de Sed Inteligente para Plantas: Sensor DIY para Riego Óptimo
- SERENA: Sistema de Alarma Personalizado Arduino Mega 2560 con Pantalla TFT LCD Táctil
- Evaluación de seguridad de sistemas de alarma con Arduino y módulos RF 433 MHz
- Monitor de distancia ultrasónica y temperatura con Arduino y LCD con sistema de alarma
- Construye un reloj despertador fiable con RTC DS1302 y Arduino UNO
- Construye un Sistema de Seguridad y Alarma con Arduino: Tutorial Paso a Paso
- Diseño de sistemas de control a prueba de fallos para seguridad y fiabilidad