背包报警
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
应用和在线服务
|
关于这个项目
你有没有觉得需要一个背包报警器?您是否曾经背着背包坐在公共区域,害怕有人偷走它?如果是这样,这就是适合您的项目!
使用 LSM303 指南针/加速度计,该项目在背包移动时发出警报。它使用罗盘来监控方向,当有超过10度的移动时,它会发出警报。
第 1 步:连接 Arduino
像这样将 LSM303 分线板连接到 Arduino:
- SDA - SDA
- SDL - SDL
- VIN - 5v
- GND - GND
有关更多详细信息,请查看 Adafruit 的指南。
像这样将压电蜂鸣器连接到 Arduino:
- + 到 Pin 13
- - 接地
第 2 步:安装库
将 Adafruit_LSM303DLHC 库和 Adafruit_Sensor 库下载为 zip 文件。
打开 Arduino IDE。如果您没有,请在此处下载。
转到 Sketch> Include Library> Add.ZIP Library...
然后,找到并选择您之前下载的 .ZIP 文件。
第 3 步:对 Arduino 进行编程
打开 Arduino IDE 并创建一个新文件。删除已经存在的所有内容并粘贴以下代码。
// 包含库 #include #include #include #include // 调整灵敏度 const int sens =10;/ / 同时为该传感器分配唯一 ID Adafruit_LSM303_Mag_Unified mag =Adafruit_LSM303_Mag_Unified(12345);void setup(void) { //Just for Debugging //Serial.begin(9600); //Serial.println("开始..."); // 设置引脚 13 pinMode(13, OUTPUT); // 初始化传感器 if(!mag.begin()) { // 检测 LSM303 时出现问题 ... 检查您的连接 digitalWrite(13, HIGH);延迟(500);数字写入(13,低);延迟(500);数字写入(13,高);延迟(500);数字写入(13,低);延迟(500);同时(1); } // 等待 5 秒 delay(5000); // 启动时发出警报 digitalWrite(13, HIGH);延迟(500); digitalWrite(13, LOW);}// 获取传感器值的函数 int getDeg(void){ // 获取新的传感器事件sensors_event_t event; mag.getEvent(&event);浮动圆周率 =3.14159; // 计算向量 y,x 的角度 float Heading =int((atan2(event.magnetic.y,event.magnetic.x) * 180) / Pi); // 标准化为 0-360 if (heading <0) { Heading =360 + Heading; } return Heading;}void loop(void) { // 获取传感器值 int oldDeg =getDeg();延迟(1000); int newDeg =getDeg(); if (newDeg <(oldDeg-sens) &&oldDeg !=0 &&newDeg !=0) { // 发出警报 digitalWrite(13, HIGH); // 仅用于调试 //Serial.println("Triggered"); //Serial.println(""); }else if (newDeg> (oldDeg+sens) &&oldDeg!=0 &&newDeg !=0) { // 发出警报 digitalWrite(13, HIGH); // 仅用于调试 //Serial.println("Triggered"); //Serial.println(""); } // 仅用于调试 //Serial.print("New:"); //Serial.println(newDeg); //Serial.print("旧:"); //Serial.println(oldDeg); //Serial.println("");}
插入您的 Arduino,然后编译并上传代码。
第 4 步:测试它!
如果你做的一切都正确,按下你的 Arduino 上的重置按钮后,你应该会听到一些哔哔声,3 秒的静音,然后是更长的哔哔声。如果您旋转 LSM303 突破口,您应该会听到警报响起。如果传感器太敏感,只需增加顶部附近代码中的“sens”变量。如果您想要更高的灵敏度,请减小“sens”变量。
如果您在 3 秒延迟之前收到 2 声长哔声,则您的接线有问题。检查所有连接。
如果它似乎不起作用,那么可能是库的名称不正确。在代码中,删除开头的“#include”语句。然后转到 Sketch> Include Library 并选择“Wire”、“Adafruit LSM303DLHC”和“Adafruit Unified Sensor”库。如果在这一切之后它仍然不起作用,请确保您附近没有任何强磁场。去另一个房间,或外面。另外,确保分线板在一定程度上与地面平行。
第 5 步:添加密钥
您现在应该有一个工作项目,只需将 9v 电池插入 Arduino 上的桶形插孔,将其安装在背包中,您就可以开始使用了。但是,每次想要布防/撤防闹钟时拔下并重新插入电池有点烦人。这就是 6.35 毫米音频插孔发挥作用的地方。与大多数人在耳机上使用的 3.5 毫米插孔不同,使用 6.35 毫米插孔可以提高安全性。但是,如果您有一个键控开关或其他想要使用的开关,请随意使用。
无论如何,要添加钥匙,请将开关/钥匙连接在电池和 DC 桶形插孔之间。
如果您有其中之一,只需剪断其中一根电线,必要时添加延长线,然后添加开关。就我而言,我有一个接线端子桶形插孔并使用它进行接线。由于我不太关心安全性,我的钥匙只是一个简单的拨动开关,但您可以发挥创意。使用簧片开关和磁铁、RFID,甚至是智能手机应用程序!
第 6 步:安装它!
恭喜!您现在有一个功能齐全的带钥匙的警报器。你现在要做的就是把它装在你的背包里。在一侧为蜂鸣器切一个孔,在钥匙孔上切一个孔。我使用了扎带,但可以使用更持久的解决方案。确保传感器的安装与地面稍微平行,并且蜂鸣器上的孔没有被阻塞。
图> 图>
走得更远
该警报不仅限于背包。将它添加到门、饼干罐、冰箱或任何您想要保护的地方。可能性是无止境!
代码
- 代码
代码Arduino
Arduino 代码// Include Libraries #include#include #include #include // 调整灵敏度 const int sens =10;//同时为这个传感器分配一个唯一的ID Adafruit_LSM303_Mag_Unified mag =Adafruit_LSM303_Mag_Unified(12345);void setup(void) { //Just for Debugging //Serial.begin(9600); //Serial.println("开始..."); // 设置引脚 13 pinMode(13, OUTPUT); // 初始化传感器 if(!mag.begin()) { // 检测 LSM303 时出现问题 ... 检查您的连接 digitalWrite(13, HIGH);延迟(500);数字写入(13,低);延迟(500);数字写入(13,高);延迟(500);数字写入(13,低);延迟(500);同时(1); } // 等待 5 秒 delay(5000); // 启动时发出警报 digitalWrite(13, HIGH);延迟(500); digitalWrite(13, LOW);}// 获取传感器值的函数 int getDeg(void){ // 获取新的传感器事件sensors_event_t event; mag.getEvent(&event);浮动圆周率 =3.14159; // 计算向量 y,x 的角度 float Heading =int((atan2(event.magnetic.y,event.magnetic.x) * 180) / Pi); // 标准化为 0-360 if (heading <0) { Heading =360 + Heading; } return Heading;}void loop(void) { // 获取传感器值 int oldDeg =getDeg();延迟(1000); int newDeg =getDeg(); if (newDeg <(oldDeg-sens) &&oldDeg !=0 &&newDeg !=0) { // 发出警报 digitalWrite(13, HIGH); //仅用于调试 //Serial.println("Triggered"); //Serial.println(""); }else if (newDeg> (oldDeg+sens) &&oldDeg!=0 &&newDeg !=0) { // 发出警报 digitalWrite(13, HIGH); //仅用于调试 //Serial.println("Triggered"); //Serial.println(""); } //仅用于调试 //Serial.print("New:"); //Serial.println(newDeg); //Serial.print("旧:"); //Serial.println(oldDeg); //Serial.println("");}
示意图
指南针:蓝色 - SDA
黄色 - SDL
黑色 - GND
红色 - VIN
制造工艺