Pull to refresh

Мотосигнализация на Arduino c акселерометром MMA7361

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

image image

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

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.

Теперь о потенциометре, для чего же он нужен, а нужен он для удобства выбора чувствительности сигнализации, т.е. вращая его Вы подбираете значение отклонения для координат, при котором будет срабатывать сигнализация. В скетче этот параметр называется changelvl и имеет диапазон от 2 до 20, т.е. если повернуть потенциометр против часовой стрелки до упора будет 2, а по часовой стрелки до упора соответственно 20. Чувствительность подбирается индивидуально, у меня например сигнализация стабильно работает (без ложных срабатываний) при changelvl равном 4. Узнать значение changelvl можно в «мониторе порта» вращая потенциометр.

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

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

И в заключении небольшое видео



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

P.S. — огромная благодарность moom за помощь в проекте.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.