Автосигнализация на ардуино своими руками

Добавил пользователь Алексей Ф.
Обновлено: 19.09.2024

Принцип работы таков: Arduino опрашивает акселерометр, считывает данные по осям X, Y, Z и если есть отклонения от значений, которые были при включении сигнализации больше допустимой величины — включается сирена. Т.е. никаких данных вносить не нужно, не важно, под каким углом вы оставили свой мотоцикл, хоть на бок его положили — после включения сигнализации у осей X, Y, Z появляются текущие координаты и если в момент опроса текущие координаты хотя бы по одной оси отличаются от предыдущих на величину больше установленной нами (для этого используется потенциометр) — срабатывает сигнализация. Другими словами, если ваш мотоцикл трогают, наклоняют, пытаются перемещать, в общем, создают движение — включается сирена.



Для реализации нам понадобится:

Arduino UNO
Акселерометр MMA7361
Потенциометр
Сирена — я взял 110dB DC 6 ~ 16V
Соединительные провода
Кнопка Вкл/Выкл
Кронштейн для крепления акселерометра — делал сам
Источник питания — я взял Крону, так же можно запитаться от бортовой сети мотоцикла
Корпус, в котором всё это разместить — я взял от убитого блока питания

Подключение комплектующих к Arduino UNO

Акселерометр MMA7361 Arduino UNO Потенциометр Arduino UNO Сирена Arduino UNO
X Pin A5 Левый контакт GND Минус GND
Y Pin A4 Центральный контакт Pin A2 Плюс Pin 11
Z Pin A3 Правый контакт Pin 7
SL 3.3V
5V Pin 8
GND GND

image
image

image
image

Немного поясню подключение. У вас наверно возникнет вопрос, а почему питание акселерометра 5V я подключаю к Pin 8, а не напрямую к 5V? Сделано это для экономии. Питание на акселерометр подаётся только в момент опроса. Чтобы акселерометр всегда выдавал значения, его необходимо принудительно вывести из режима сна, подав на выход SL (Sleep) питание 3.3V.

Несколько пояснений к скетчу, который вы сможете скачать в конце статьи.

defaultn = 2; // число срабатываний-циклов — т.е. если на протяжении двух циклов (два раза подряд) имеется отклонение координат на величину выбранную потенциометром, срабатывает сигнализация — менять не рекомендую.
delay(6000); // задержка после включения — т.е. у Вас есть 6 сек. после включения сигнализации на то, чтобы закрыть сидушку и поставить мотоцикл неподвижно, по истечении 6 сек. начнётся опрос акселерометра.
delay(3000); // время работы сирены при срабатывании — т.е. сирена будет орать 3 сек.

Ссылки для скачивания как и обещал: скетч и библиотека для работы с акселерометром.


Из чего будем собирать



Подумал я и заказал его из Китая. Однако всё оказалось не так радужно. Датчик просто отказался регистрировать SIM-карту в сети. Было опробовано всё, что только возможно — результат нулевой.
Нашлись добрые люди, которые предоставили мне более крутую штуку — Sim900 Shield. Вот это уже серьёзный штучка. В Shield-е и разъём для микрофона и для наушников, полноценный телефон.


4 стандарта рабочей частоты 850/ 900/ 1800/ 1900 MHz
GPRS multi-slot класс 10/8
GPRS mobile station class B
Соответствует GSM phase 2/2+
Class 4 (2 W @850/ 900 MHz)
Class 1 (1 W @ 1800/1900MHz)
Управление с помощью AT команд (GSM 07.07 ,07.05 и SIMCOM расширенные AT команды)
Низкое энергопотребление: 1.5mA(sleep mode)
Диапазон рабочих температур: от -40°C до +85 °C

Ок, но надо же снимать показания с каких-то датчиков, чтобы оповещать владельца. Вдруг автомобиль эвакуируют, тогда положение автомобиля явно будет меняться в пространстве. Возьмём акселерометр и гироскоп. Отлично. Такс, теперь ищем датчик.


Модуль 3-х осевого гироскопа + 3-х осевого акселерометра GY-521 на чипе MPU-6050. Позволяет определить положение и перемещение объекта в пространстве, угловую скорость при вращении. Так же имеет встроенный датчик температуры. Используется в различных коптерах и авиамоделях, так же на основе этих датчиков можно собрать систему захвата движений.

Микросхема — MPU-6050
Напряжение питания — от 3,5V до 6V (DC);
Диапазон гироскопа — ± 250 500 1000 2000 ° / с
Диапазон акселерометра — ± 2 ± 4 ± 8 ± 16g
Интерфейс связи — I2C
Размер — 15х20 мм.
Вес — 5 г


Напряжение питания — 3.3 — 5В
Выходной сигнал — цифровой High/Low (нормально закрытый)
Используемый датчик — SW-420
Используемый компаратор — LM393
Размеры — 32x14 мм
Дополнительно — Есть регулировочный резистор.

Прикрутим модуль SD карты памяти. Будем ещё писать лог-файл.


Модуль позволяет хранить, читать и записывать на SD карту данные требуемые для работы прибора на основе микроконтроллера. Применение устройства актуально при хранении файлов от десятков мегабайт до двух гигабайт. На плате размещен контейнер SD карты, стабилизатор питания карты, вилка соединителя линий интерфейса и питания. Если требуется работать с звуковыми, видео или другими объемными данными, например, вести журнал регистрации событий, данных датчиков или хранить информацию веб-сервера, то модуль SD карты памяти для Arduino даст возможность применить SD карту для этих целей. С помощью модуля можно изучить особенности работы SD карты.
Напряжение питания — 5 или 3,3 В
Объем памяти SD карты — до 2 Гбайт
Размеры — 46 х 30 мм

И добавим сервопривод, при срабатывании датчиков будет поворачиваться сервопривод с видеорегистратором и снимать видео происшествия. Возьмём сервопривод MG996R.


— Стабильная и надежная защита от повреждений
— Металлический привод
— Двухрядный шарикоподшипник
— Длина провода 300 мм
— Размеры 40х19х43мм
— Масса 55 гр
— Угол поворота: 120 град.
— Рабочая скорость: 0.17сек/60 градусов (4.8В без нагрузки)
— Рабочая скорость: 0.13сек/60 градусов (6В без нагрузки)
— Пусковой момент: 9.4кг/см при питании 4.8В
— Пусковой момент: 11кг/см при питании 6В
— Рабочее напряжение: 4.8 — 7.2В
— Все детали привода выполнены из металла

Собираем


О, совсем забыл упомянуть о питании, от чего же будет питаться наша система. Питание будет от 12v автомобиля.


Тонкие моменты проекта


Фишки на Sim900 Shield должны быть установлены такие образом. Полезность SIM900 Shield.

Положение тумблера питания Sim900 Shield.







На этом всё, весь скетч лежит на GitHub. На мой взгляд, мне удалось создать gsm-сигнализацию, способную оповестить владельца автомобиля в случае происшествия. Проект получился экономным в плане финансовых вложений, что несомненно радует. В будущем планирую усовершенствовать gsm-сигнализацию, добавить новый функционал.


TL; DR программно и аппаратно задуманное реализовано, тест в реальных условиях запущен, исходники и бинарники опубликованы, корпус не осилил.

Устройство и характеристики

Устройство отправляет SMS при возникновении следующих событий:

  • открытие двери (герконовый датчик);
  • резкое изменение освещения (фоторезистор);
  • движение (PIR датчик);
  • выход температуры из заданного диапазона;
  • низкое напряжение батареи.

Пример SMS с событием




Также, раз в сутки можно настроить время ежедневного отчета

Питается устройство от 3-х батареек AA. Расчетное время работы ≥6мес.

Настройка устройства, считывание логов событий и построение месячного графика температуры происходит с помощью утилиты (Python 2.7 + Tk + pyserial + matplotli).




Основное окно утилиты настройки




Окно лога событий




Окно лога температуры

Сборка устройства

Себестоимость деталей устройства на момент публикации этой статьи составляет примерно 1000-1200 рублей (без учета заказа платы).

Для удобства сборки и надежности в эксплуатации лучше заказать плату. Китайские друзья с известного сайта предлагают сделать 10 штук с доставкой за ~$7, а иногда и меньше. Но всегда можно собрать и на макетке, как я и поступил с первым прототипом:




Arduino и совместимые модули были заказаны с aliexpress. Понадобятся:

  • Arduino Pro Mini 3.3v 8MHz (5v 16MHz is also acceptable, but requires different firmware);
  • MH-SR602 MINI Motion Sensor;
  • SIM800C(L) GSM Module;
  • CP2102 MICRO USB to UART TTL Module;
  • DS3231 RTC Module For Raspberry Pi;
  • 3 AA battery holder With ON OFF Switch;
  • различная рассыпуха (резисторы, конденсаторы, зуммер и поч.).

В списке специально указаны названия, дающие нужный результат при вводе в поиск.




Схема устройства

Для снижения энергопотребления с платы Arduino нужно обязательно удалить резистор светодиода питания и регулятор напряжения. Проект платы сделан в Ki-CAD.

Использование

Локализация

Поддержаны два языка для программы конфигурирования и текста SMS: английский, русский. При желании не сложно добавить поддержку других языков: все локализуемые строки вынесены в отдельный файл (принимаю issue с реквестом, если приложите переводы всех строк).

Полевые испытания

Прошу прощения за эстетику монтажа.




Установка на входную дверь. Часть конструкции справа (непосредственно на самой двери) — магнит для срабатывания геркона

Проблемы

За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.

В остальном полет нормальный.

Что дальше

В планах (когда-нибудь):

  • спроектировать и напечатать корпус;
  • подключить ESP-01 для конфигурации и просмотра логов через браузер с телефона.

Отладка

Ссылки

Репозиторий проекта: github
Доступны схема и плата в Ki-CAD, прошивка и исходники для Arduino, exe и исходники утилиты конфигурации.



Схема


Прошивку берем здесь
15.04.2017 — добавлена возможность постановки/снятия охраны с помощью брелка.
Например вот таких:


Запихал все это в корпус D6MG (корпус для установки на DIN рейку):

Моя дача отапливается с помощью таких электроконвекторов (не реклама) т.к. газа нет. Да и управлять газовым котлом с помощью электроники — ОПАСНО! Поэтому управление отоплением делалось именно под кварцевые обогреватели.

В память устройства можно прописать до 5-ти номеров телефонов и 12 датчиков. Датчики могут быть как проводные, так и беспроводные. Но всего 12.

Перед постановкой на охрану все датчики проверяются. Если где-то не закрыто (и т.п.), то охрана не включится и придет соответствующее СМС.

Датчик дыма опрашивается всегда (если разрешен его опрос). Отключается командой — dymmonitoroff

Контролируется наличие 5 вольт от источника питания (т.е. косвенно 220 вольт). При пропадании/появлении придет СМС. Отключается командой — voltmonitoroff

Номер первого позвонившего будет сохранен как основной. Только с этого номера можно выполнить команды настройки устройства (команды 1-12, 12.1).

Консольных команд нет. Кому они нужны в реальных условиях…

СМС-Команды (регистр значения не имеет):

3. listphones — прислать в СМС список телефонов, записанных в памяти

4. delphone — удалить номер телефона
например: delphone:1
удалит 1-й номер в списке

7. settime — установить время
например: settime: ГГ/ММ/ДД ЧЧ: ММ

9. listsensors — прислать в СМС список датчиков, прописанных в памяти устройства.

10. delsensor — удаляет датчик
например: delsensor:11 — удалит 11-й датчик в списке

11. resetsensors — сброс всего списка датчиков

15.04.2017 добавилась команда для прописывания брелков (всего можно прописать до 5-ти штук):
12.1 learnkey — включить режим записи кодов брелков (выключается сам через 30 секунд)

15. smson — включить оповещение по СМС

21. guardon — включить охрану

22. guardoff — выключить охрану

23. money — запросить баланс

24. info — запросить состояние системы

25. clearsms — удалить все СМС

28. otoplenieon — включить отопление

29. otoplenieoff — выключить отопление

30. targettemp — установить желаемую температуру в помещении
например: targettemp=30 — желаемая температура 30 градусов

31. help — прислать в ответном СМС список поддерживаемых команд.

Фух! По-моему все.
Так-же можно поставить/снять с охраны по звонку.

Читайте также: