DIY 背包防盗报警器:Arduino + LSM303 指南针/加速度计
项目背景
在公共场所放下背包时常担心被顺走?本项目利用 LSM303 三轴磁力计(指南针)监测背包姿态,一旦检测到水平面旋转超过 10° 即触发蜂鸣器报警。电路简单、成本低廉,适合初学者制作。
材料清单
| 元件 | 数量 | 备注 |
|---|---|---|
| Arduino UNO | 1 | 或 Nano/Pro Mini 更紧凑 |
| LSM303DLHC 模块 | 1 | I²C 接口,含加速度计+磁力计 |
| 大功率压电蜂鸣器 3kHz | 1 | 引脚直插 D13/GND |
| 9V 电池 + 电池扣 | 1 | 经 DC 插座供电 |
| 6.35mm 音频插座/插头 (可选) | 1套 | 做物理钥匙开关,防误触 |
| 公母杜邦线 | 若干 |
接线指南
LSM303 Arduino UNO SDA ──────── A4 (SDA) SCL ──────── A5 (SCL) VIN ──────── 5V GND ──────── GND 蜂鸣器 + ──── D13 蜂鸣器 - ──── GND 可选钥匙开关:9V 电池正极 → 开关 → DC 插座正极
库安装
- 下载 Adafruit_LSM303DLHC 与 Adafruit_Sensor ZIP 包
- Arduino IDE → 草图 → 包含库 → 添加 .ZIP 库 依次导入
核心代码
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_LSM303_U.h>
#include <Adafruit_LSM303.h>
const int sens = 10; // 触发阈值:±10°
Adafruit_LSM303_Mag_Unified mag = Adafruit_LSM303_Mag_Unified(12345);
void setup() {
pinMode(13, OUTPUT);
if (!mag.begin()) { // 传感器未检测到 → 快速闪烁报警
while (1) { digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); delay(500); }
}
delay(5000); // 5 秒稳定期
digitalWrite(13, HIGH); delay(500); digitalWrite(13, LOW); // 启动提示音
}
int getDeg() {
sensors_event_t event; mag.getEvent(&event);
float heading = atan2(event.magnetic.y, event.magnetic.x) * 180 / PI;
if (heading < 0) heading += 360;
return (int)heading;
}
void loop() {
int oldDeg = getDeg();
delay(1000);
int newDeg = getDeg();
if ((newDeg < oldDeg - sens || newDeg > oldDeg + sens) && oldDeg && newDeg) {
digitalWrite(13, HIGH); // 持续鸣响直到复位
// Serial.println("Triggered");
}
// Serial.print("New:"); Serial.println(newDeg);
// Serial.print("Old:"); Serial.println(oldDeg);
}
测试与调试
- 上传代码后按复位键:应听到「滴-滴-滴—」启动音(两短一长)
- 旋转 LSM303 模块 >10° → 蜂鸣器持续鸣叫
- 过于灵敏 → 增大
sens;不够灵敏 → 减小sens - 若启动即双长鸣 → 检查 I²C 接线(SDA/SCL 是否反接、是否缺上拉)
- 避开强磁场环境(变压器、电机、金属桌脚),保持模块大致水平
加装物理钥匙(可选)
将 9V 电池盒的一根线剪断,串联 6.35mm 音频插座/插头(或簧片开关+磁铁、RFID、按键开关)。拔出插头=断电=解除武装,插入=上电=布防。6.35mm 接口比 3.5mm 更难被普通耳机插头误触发。
安装入包
- 在背包侧壁开两小孔:一孔露出蜂鸣器发声孔,一孔安装钥匙插座
- 用扎带或热熔胶固定主板与电池,确保 LSM303 大致水平贴合包内壁
- 蜂鸣器发声孔不可遮挡
拓展应用
同原理可用于:抽屉/柜门防窃、冰箱门未关提醒、饼干罐防偷吃、门窗振动报警等。只需调整阈值与安装姿态。
制造工艺
- 树莓派 Home Assistant 安全监控:PIR 运动检测、报警面板与视频抓拍
- 树莓派 2 无头模式水浸报警器:基于 Adafruit T‑Cobbler Plus 构建
- Java 与 Reactive Blocks 构建运动检测报警系统:树莓派部署发送短信
- 滚动闹钟机器人:树莓派+Google Calendar智能移动唤醒系统
- 智能缺水报警器 – DIY植物土壤湿度监测装置
- SERENA:基于 Arduino Mega 2560 与 TFT 触摸屏的多级密码报警系统
- 用 Arduino 和 433 MHz RF 模块测试报警系统安全性
- Arduino 超声波水位/温度监测系统:LCD 显示 + 多级声光报警
- 用 DS1302 RTC 和 Arduino UNO 制作可靠闹钟
- DIY Arduino 安防报警系统:分步教程
- 设计故障安全控制系统以提升安全性与可靠性
- Haas CNC 报警代码完整解析:故障排查速查手册