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

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

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

imageimage

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

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.3 V
5V Pin 8
GND GND


imageimage

imageimage

Трохи поясню підключення. У вас напевно виникне питання, а чому харчування акселерометра 5V я підключаю до 8 Pin, а не безпосередньо до 5V? Це зроблено для економії. Харчування на акселерометр подається тільки в момент опитування. Щоб акселерометр завжди видавав значення, його необхідно примусово вивести з режиму сну, подавши на вихід SL (Sleep) харчування 3.3 V.

Тепер про потенціометрі, для чого він потрібен. Потрібен він для зручності вибору чутливості сигналізації. Обертаючи його, ви підбираєте значення відхилення для координат, при якому буде спрацьовувати сигналізація. У скетчі цей параметр називається changelvl і має діапазон від 2 до 20, тобто якщо повернути потенціометр проти годинникової стрілки до упору буде 2, а по годинникової стрілки до упору відповідно 20. Чутливість підбирається індивідуально. У мене, наприклад, сигналізація стабільно працює (без помилкових спрацьовувань) при changelvl дорівнює 4. Дізнатися значення changelvl можна в «моніторі порту» обертаючи потенціометр.

Кілька пояснень до скетчу, який ви зможете скачати в кінці статті.

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

Невелике відео:



Посилання для скачування як і обіцяв: скетч і бібліотека для роботи з акселерометром.

P.s. Величезна подяка MooM_IYD за допомогу у проекті.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.