Alarme para Mochila com Arduino e Bússola LSM303 – Detecção de Movimento
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| Adafruit LSM303 - Acelerômetro + Magnetômetro (Bússola) Triple-axis | 1 |
| Buzzer Piezo Grande 3kHz - SparkFun | 1 |
| Bateria 9V (genérica) | 1 |
| Jack fêmea 6.35mm (com chave) - Opcional | 1 |
| Plug 6.35mm - Opcional | 1 |
| Jumpers Macho/Fêmea | 1 kit |
| Conector 9V para Jack Barril | 1 |
Aplicativos e Serviços
Sobre o Projeto
Já sentiu necessidade de alarme para mochila? Sentou em área pública com a mochila e temeu roubo? Este projeto é para você!
Usando a bússola/acelerômetro LSM303, o alarme dispara quando a mochila é movida. Monitora a orientação via bússola; se houver movimento > 10°, soa o alarme.
Passo 1: Ligar o Arduino
Conecte o breakout LSM303 ao Arduino:
- SDA → SDA
- SCL → SCL
- VIN → 5V
- GND → GND
Detalhes no guia Adafruit.
Buzzer piezo:
- + → Pino 13
- - → GND

Passo 2: Instalar Bibliotecas
- Baixe
Adafruit_LSM303DLHCeAdafruit_Sensorcomo ZIP - Abra Arduino IDE (baixe aqui se não tiver)
- Sketch → Include Library → Add .ZIP Library...


Passo 3: Programar o Arduino
Novo arquivo na IDE, apague tudo, cole o código:
// Incluir Bibliotecas
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_LSM303.h>
// Ajustar sensibilidade (graus)
const int sens = 10;
// ID único para o sensor
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
void setup(void) {
// Serial.begin(9600); // Para debug
// Serial.println("Iniciando...");
pinMode(13, OUTPUT);
if(!mag.begin()) {
// Problema detectando LSM303 - verifique conexões
digitalWrite(13, HIGH); delay(500);
digitalWrite(13, LOW); delay(500);
digitalWrite(13, HIGH); delay(500);
digitalWrite(13, LOW); delay(500);
while(1);
}
delay(5000); // Aguarda 5 segundos
// Alerta de pronto
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); // Alarme
// Serial.println("Disparado");
} else if (newDeg > (oldDeg + sens) && oldDeg != 0 && newDeg != 0) {
digitalWrite(13, HIGH); // Alarme
// Serial.println("Disparado");
}
// Serial.print("Novo:"); Serial.println(newDeg);
// Serial.print("Antigo:"); Serial.println(oldDeg);
// Serial.println();
}
Compile e carregue.
Passo 4: Testar
Após reset: alguns bips, 3s silêncio, bip longo. Gire o LSM303 → alarme soa. Ajuste sens (aumente para menos sensível, diminua para mais).
2 bips longos antes dos 3s = problema na fiação. Verifique conexões.
Se não funcionar: remova #include iniciais, use Sketch → Include Library → selecione Wire, Adafruit LSM303DLHC, Adafruit Unified Sensor. Evite campos magnéticos fortes (mude de cômodo ou vá fora). Mantenha breakout nivelado e paralelo ao solo.
Passo 5: Adicionar Chave (Arm/Desarm)
Bateria 9V no jack barril do Arduino, monte na mochila. Mas desplugar/repluggar para armar/desarmar é chato. Use jack 6.35mm (mais seguro que 3.5mm de fone). Ou chave comutada, reed switch + ímã, RFID, app smartphone.

Corte um fio da bateria, estenda se necessário, intercale a chave. Usei terminal block barrel jack. Minha chave é toggle simples, mas seja criativo.
Passo 6: Instalar na Mochila



Fure lateral para buzzer e chave. Usei zip ties (solução permanente melhor). Sensor deve ficar paralelo ao solo; furo do buzzer desobstruído.
Indo Além
Não se limita a mochilas. Adicione a porta, pote de biscoitos, geladeira, ou qualquer coisa que queira proteger. Possibilidades infinitas!
Código
Código (Arduino)
// Incluir Bibliotecas
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_LSM303.h>
// Ajustar sensibilidade
const int sens = 10;
// ID único para o sensor
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
void setup(void) {
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);
} else if (newDeg > (oldDeg + sens) && oldDeg != 0 && newDeg != 0) {
digitalWrite(13, HIGH);
}
}
Esquemáticos
Para a Bússola:
Azul - SDA
Amarelo - SCL
Preto - GND
Vermelho - VIN

Processo de manufatura
- Projetando Sistemas de Controle Fail-Safe para Segurança e Confiabilidade
- Monitoramento Residencial Seguro com Home Assistant no Raspberry Pi: Movimento, Alarme e Captura de Vídeo
- Construa um Alarme de Água Headless para Raspberry Pi 2 com Adafruit T-Cobbler Plus
- Sistema de Alarme de Detecção de Movimento com Java e Reactive Blocks – Deploy no Raspberry Pi e Envio de SMS
- Robô Alarme Rolante: Sistema Móvel Inteligente de Despertar com Raspberry Pi e Google Calendar
- Alerta Inteligente de Sede para Plantas – Sensor DIY para Hidratação Ideal
- SERENA: Sistema de Alarme Personalizado Arduino Mega 2560 com Touchscreen TFT LCD
- Avaliando a Segurança de Sistemas de Alarme com Arduino e Módulos RF
- Monitor de Distância Ultrassônica e Temperatura com Arduino, LCD e Sistema de Alarme
- Construa um Relógio Despertador Confiável com RTC DS1302 e Arduino UNO