...

среда, 4 марта 2015 г.

[Из песочницы] Мотосигнализация на базе Arduino UNO c акселерометром MMA7361

Привет всем хабраюзерам. Представляю вашему вниманию мой первый проект на Arduino под названием «Мотосигнализация на базе Arduino UNO в паре c акселерометром MMA7361».

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


imageimage



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


Arduino UNO

Акселерометр MMA7361

Потенциометр

Сирена — я взял 110dB DC 6 ~ 16V

Соединительные провода

Кнопка Вкл/Выкл

Кронштейн для крепления акселерометра — делал сам

Источник питания — я взял Крону, так же можно запитаться от бортовой сети мотоцикла

Корпус, в котором всё это разместить — я взял от убитого блока питания


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



























































Акселерометр MMA7361Arduino UNOПотенциометрArduino UNOСиренаArduino UNO
XPin A5Левый контактGNDМинусGND
YPin A4Центральный контактPin A2ПлюсPin 11
ZPin A3Правый контактPin 7
SL3.3V
5VPin 8
GNDGND

imageimage


imageimage


Немного поясню подключение. У вас наверно возникнет вопрос, а почему питание акселерометра 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_IYD за помощь в проекте.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий