Сигнализация для рюкзака
Компоненты и расходные материалы
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
Приложения и онлайн-сервисы
![]() |
|
Об этом проекте
Вы когда-нибудь испытывали потребность в ранцевом сигнализаторе? Вы когда-нибудь садились в общественном месте со своим рюкзаком и боялись, что кто-то его украдет? Если да, то этот проект для вас!
Используя компас / акселерометр LSM303, этот проект подает сигнал тревоги при перемещении рюкзака. Он использует компас для отслеживания ориентации, и когда есть движение более чем на 10 градусов, он подает сигнал тревоги.
Шаг 1. Подключите Arduino
Подключите коммутационную плату LSM303 к Arduino следующим образом:
- ПДД - ПДД
- SDL - SDL
- VIN - 5v
- GND - GND
Для получения дополнительной информации ознакомьтесь с руководством Adafruit.
Подключите пьезозуммер к Arduino следующим образом:
- + к контакту 13
- - к GND

Шаг 2. Установите библиотеки
Загрузите библиотеки Adafruit_LSM303DLHC и Adafruit_Sensor в виде zip-файлов.
Откройте IDE Arduino. Если у вас его нет, скачайте здесь.
Перейдите в "Скетч"> "Включить библиотеку"> "Добавить .ZIP-библиотеку ...
".
Затем найдите и выберите файлы .ZIP, которые вы скачали ранее.

Шаг 3. Запрограммируйте Arduino
Откройте IDE Arduino и создайте новый файл. Удалите все, что уже есть, и вставьте следующий код.
// Включаем библиотеки #include #include #include #include // Регулируем чувствительность const int sens =10; / / Назначьте уникальный идентификатор этому датчику одновременно Adafruit_LSM303_Mag_Unified mag =Adafruit_LSM303_Mag_Unified (12345); void setup (void) {// Только для отладки //Serial.begin(9600); //Serial.println("Starting ... "); // Настройка вывода 13 pinMode (13, OUTPUT); // Инициализируем датчик if (! Mag.begin ()) {// При обнаружении LSM303 возникла проблема ... проверьте ваши соединения digitalWrite (13, HIGH); задержка (500); digitalWrite (13, LOW); задержка (500); digitalWrite (13, ВЫСОКИЙ); задержка (500); digitalWrite (13, LOW); задержка (500); в то время как (1); } // Ждем 5 секунд задержки (5000); // Оповещение при запуске digitalWrite (13, HIGH); задержка (500); digitalWrite (13, LOW);} // функция для получения значения датчика int getDeg (void) {// Получение нового события датчика sensor_event_t event; mag.getEvent (&событие); поплавок Pi =3,14159; // Вычислить угол вектора y, x float heading =int ((atan2 (event.mintage.y, event.mintage.x) * 180) / Pi); // Нормализуем до 0–360 if (заголовок <0) {заголовок =360 + заголовок; } 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("Old:"); //Serial.println(oldDeg); //Serial.println ("");}
Подключите Arduino, затем скомпилируйте и загрузите код.
Шаг 4. Протестируйте!
Если вы все сделали правильно, после нажатия кнопки сброса на Arduino вы должны услышать несколько звуковых сигналов, 3 секунды тишины, а затем более длинный звуковой сигнал. Если вы повернете прорыв LSM303, вы должны услышать включение будильника. Если датчик слишком чувствителен, просто увеличьте значение переменной 'sens' в коде вверху. Если вы хотите большей чувствительности, уменьшите значение переменной «sens».
Если вы получите 2 длинных звуковых сигнала до 3-секундной задержки, значит, с вашей проводкой возникли проблемы. Проверьте все соединения.
Если это не работает, возможно, библиотеки неправильно названы. В коде удалите инструкции '#include' в начале. Затем перейдите в Sketch> Include Library и выберите библиотеки Wire, Adafruit LSM303DLHC и Adafruit Unified Sensor. Если после всего этого он по-прежнему не работает, убедитесь, что рядом с вами нет сильных магнитных полей. Идите в другую комнату или на улицу. Кроме того, убедитесь, что коммутационная плата расположена ровно и параллельно земле.
Шаг 5. Добавьте ключ
Теперь у вас должен быть рабочий проект, просто подключите батарею 9 В к гнезду на вашем Arduino, установите ее в рюкзак, и все будет в порядке. Однако отключение и повторное включение батареи каждый раз, когда вы хотите включить / выключить будильник, немного раздражает. Вот где в игру вступает 6,35-мм аудиоразъем. Вместо разъема 3,5 мм, который у большинства людей есть в наушниках, использование разъема 6,35 мм повышает безопасность. Однако, если у вас есть кнопочный переключатель или какой-либо другой переключатель, который вы хотите использовать вместо него, не стесняйтесь делать это.
В любом случае, чтобы добавить ключ, подключите переключатель / ключ между батареей и гнездом постоянного тока.

Если у вас есть один из них, просто отрежьте один из проводов, при необходимости добавьте удлинительные провода и добавьте переключатель. В моем случае у меня есть цилиндрический разъем клеммной колодки, и я подключил его с помощью этого. Поскольку я не слишком беспокоюсь о безопасности, мой ключ - это просто тумблер, но вы можете проявить творческий подход. Используйте геркон и магнит, RFID или даже приложение для смартфона!
Шаг 6. Установите его!
Поздравляю! Теперь у вас есть полностью работающая сигнализация с ключом. Все, что вам нужно сделать, это положить его в рюкзак. Вырежьте сбоку отверстие для зуммера и отверстие для замочной скважины. Я использовал стяжки-молнии, но можно использовать более прочное решение. Убедитесь, что датчик установлен параллельно земле и отверстие в зуммере ничем не закрыто.



Идем дальше
Эта сигнализация не ограничивается рюкзаками. Добавьте его в дверь, банку для печенья, холодильник или что-нибудь еще, что вы хотите защитить. Возможности безграничны!
Код
- Код
Код Arduino
Код Arduino// Включаем библиотеки #include#include #include #include // Регулируем чувствительность const int sens =10; // Одновременно назначьте этому датчику уникальный идентификатор Adafruit_LSM303_Mag_Unified mag =Adafruit_LSM303_Mag_Unified (12345); void setup (void) {// Только для отладки //Serial.begin(9600); //Serial.println("Starting ... "); // Настройка вывода 13 pinMode (13, OUTPUT); // Инициализируем датчик if (! Mag.begin ()) {// При обнаружении LSM303 возникла проблема ... проверьте ваши соединения digitalWrite (13, HIGH); задержка (500); digitalWrite (13, LOW); задержка (500); digitalWrite (13, ВЫСОКИЙ); задержка (500); digitalWrite (13, LOW); задержка (500); в то время как (1); } // Ждем 5 секунд задержки (5000); // Оповещение при запуске digitalWrite (13, HIGH); задержка (500); digitalWrite (13, LOW);} // функция для получения значения датчика int getDeg (void) {// Получение нового события датчика sensor_event_t event; mag.getEvent (&событие); поплавок Pi =3,14159; // Вычислить угол вектора y, x float heading =int ((atan2 (event.mintage.y, event.mintage.x) * 180) / Pi); // Нормализуем до 0–360 if (заголовок <0) {заголовок =360 + заголовок; } 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("Old:"); //Serial.println(oldDeg); //Serial.println ("");}
Схема
К компасу:Синий - ПДД
Желтый - SDL
Черный - GND
Красный - VIN

Производственный процесс
- Отказоустойчивый дизайн
- Датчик движения, тревога, запись видео в HA на Raspberry Pi
- Сигнализация о воде Raspberry Pi 2 с t сапожником плюс
- Система сигнализации обнаружения движения
- Робот с подвижной сигнализацией
- Сигнал тревоги для растений, предупреждающий о жажде
- Система сигнализации Arduino:SERENA
- Проверка безопасности системы охранной сигнализации
- Ультразвуковой датчик с сигнализацией, ЖК-дисплеем и температурой
- Простой будильник с DS1302 RTC