Про датчик руху та підключення його до Arduino. GSM охоронна система для будинку на базі Arduino Ардуїно уно сканер автомобільних сигналізацій


Інфрачервоні (ІЧ, IR) датчики зазвичай використовуються для вимірювання відстаней, але їх також можна використовувати для виявлення об'єктів. Підключивши кілька інфрачервоних датчиків до Arduino, ми можете створити охоронну сигналізацію.

Огляд

Інфрачервоні (ІЧ, IR) датчики зазвичай використовуються для вимірювання відстаней, але їх також можна використовувати для виявлення об'єктів. ІЧ-датчики складаються з інфрачервоного передавача та інфрачервоного приймача. Передавач видає імпульси інфрачервоного випромінюваннятоді, як приймач детектує будь-які відображення. Якщо приймач виявляє відображення, це означає, що перед датчиком певній відстані є якийсь об'єкт. Якщо відображення немає, немає об'єкта.

IR-датчик, який ми будемо використовувати у цьому проекті, виявляє відображення у певному діапазоні. Ці датчики мають невелике лінійний пристрійіз зарядовим зв'язком (CCD), яке детектує кут, з яким ІЧ-випромінювання повертається до датчика. Як показано на малюнку нижче, датчик передає інфрачервоний імпульс у простір, а коли перед датчиком з'являється об'єкт, імпульс відбивається назад до датчика під кутом, пропорційним відстані між об'єктом та датчиком. Приймач датчика детектує та виводить кут, і, використовуючи це значення, ви можете розрахувати відстань.

Підключивши пару інфрачервоних датчиків до Arduino, ми можемо зробити просту охоронну сигналізацію. Ми встановимо датчики на одвірок, і, правильно вирівнявши датчики, ми зможемо виявити, коли хтось проходить через двері. Коли це станеться, сигнал на виході ІЧ-датчика зміниться, а ми виявимо цю зміну постійно зчитуючи вихідний сигнал датчиків за допомогою Arduino. У даному прикладіми знаємо, що об'єкт проходить через двері, коли показ на виході ІЧ-датчика перевищує 400. Коли це станеться, Arduino увімкне сигнал тривоги. Щоб скинути спрацювання сигналізації, користувач може натиснути кнопку.

Комплектуючі

  • 2 x ІЧ-датчик відстані;
  • 1 x Arduino Mega 2560;
  • 1 x зумер;
  • 1 x кнопка;
  • 1 x резистор 470 Ом;
  • 1 x транзистор NPN;
  • перемички.

Схема з'єднань

Схема для цього проекту показана на малюнку нижче. Виходи двох ІЧ-датчиків підключені до висновків A0 та A1. Два інших висновки підключені до висновків 5V та GND. 12-вольтовий зумер підключений до виведення 3 через транзистор, а кнопка, яка використовується для відключення сигналізації, підключена до виводу 4.


На наведеній нижче фотографії показано, як ми наклеїли датчики на одвірок для цього експерименту. Зрозуміло, у разі постійного використання ви встановили датчики по-іншому.


Встановлення

  1. Підключіть висновки 5V та GND плати Arduino до виводів живлення та GND датчиків. Ви також можете подавати на них зовнішнє живлення.
  2. Підключіть вихідні висновки датчиків до висновків A0 та A1 плати Arduino.
  3. Підключіть виведення 3 Arduino до бази транзистора через резистор 1 ком.
  4. Подайте напругу 12 на колектор транзистора.
  5. Підключіть позитивний висновок 12-вольтового зумера до емітера, а негативний - до шини землі.
  6. Підключіть висновок 4 до 5V виведення через кнопку. З метою безпеки, щоб уникнути протікання великого струму, це завжди краще робити через додатковий невеликий резистор.
  7. Підключіть плату Arduino до комп'ютера через кабель USB і завантажте програму в мікроконтролер, використовуючи Arduino IDE.
  8. Подайте на плату Arduino живлення, використовуючи блок живлення, акумулятор або кабель USB/

Код

const int buzzer=3; // висновок 3 – це вихід зумер const int pushbutton=4; // висновок 4 – це вхід для кнопки void setup() ( pinMode(buzzer,OUTPUT); // налаштувати виведення 3 на вихід pinMode(pushbutton,INPUT); // налаштувати висновок 4 на вхід ) void loop() ( // прочитати вихідний сигнал обох датчиків і порівняти результат з пороговим значенням int sensor1_value = analogRead(A0);int sensor2_value = analogRead(A1); // включити сигнал тривоги if(digitalRead(pushbutton) == HIGH) break;)) else (digitalWrite(buzzer,LOW); // вимкнути сигнал тривоги)))

Відео

Весна, як відомо, супроводжується всілякими загостреннями і ось головне «загострення» повилаз зі своїх нір на вулицю, щоб привласнити собі те, що йому не належить. А отже тема захисту свого майна стає як ніколи актуальною.
На сайті вже є кілька оглядів на саморобні. Вони звичайно функціональні, однак у всіх є загальна особливість- Залежність від розетки. Якщо з нерухомістю, де вже підведено електрику, це не проблема, то як бути з майном, де розетка далеко чи околиці зовсім знеструмлені? Я вирішив піти іншим шляхом - зібрати довгоживучий, максимально простий і незалежний від мережевого живлення девайс, який весь час відсипатиметься, а при проникненні грабіжників запускатиметься і віддзвонюватиметься господареві на телефон, сигналізуючи простим дзвінком про тривогу.

Предмети огляду

Покупні:
1. Макетна платаодностороння 5x7 см: гетінакс- або склотекстоліт
*- склотекстоліт набагато якісніший за гетинаксу.
2. Модуль Neoway M590 - , з антеною на текстоліті -
3. Arduino Pro Mini "RobotDyn" ATmega168PA 8MHz 3.3V -
4. Плата контролю заряду-розряду літію -

Добуті на розвалах цивілізації:
1. Стійки для плати, випиляні з корпусів приладів - 6шт.
2. Акумулятор літієвий плоский 1300mAh
3. Скоби, що використовуються для фіксації кабелю до стіни
4. Ластик канцелярський
5. Мідний дріттовщиною 1.5мм
6. Приладовий корпус з місцевого радіоринку - 1.5$
7. Пара світлодіодів різного кольору(взяв із VHS-плеєра)
8. Антена та кнопка з ковпачком (взяв з Wi-Fi роутера)
9. 4-х контактний клемник (взяв з диммера)
10. Роз'єм живлення (взяв зі старого зарядника для 18650)
11. Роз'єм 6-піновий (взяв із DVD-приводу)
12. Жерстяна банка(з-під кави наприклад)

Arduino Pro Mini "RobotDyn" Atmega 168PA 3.3V 8MHz

Технічні характеристики:
Мікроконтролер: ATmega168PA
Робоча напруга пряма:.8 - 5.5 В
Робоча напруга через стабілізатор LE33: 3.3 або 5 В (залежно від моделі)
Робоча температура:-40°C… 105°C
Вхідна напруга: 3.35-12 (модель 3.3) або 5-12 (модель 5)
Цифрові Входи/Виходи: 14 (6 з яких можуть використовуватися як виходи ШІМ: 3, 5, 6, 9, 10 та 11)
Аналогові входи: 6
Таймери-лічильники:два 8-бітних і один 16-бітний
Режими енергозбереження: 6
Постійний струм через вхід/вихід: 40 мА
Флеш пам `ять: 16 Кб (2 використовуються для завантажувача)
ОЗУ: 1 Кб
EEPROM: 512 байт
Ресурс запису/прання пам'яті: 10,000 Flash/100,000 EEPROM
Тактова частота: 8 МГц (модель 3.3 В) або 16 МГц (модель 5 В)
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK)
I2C: A4 (SDA) та A5 (SCL)
UART TTL: 0 (RX) та 1 (TX)
Даташит:

Вибір упав на цю атмегу зовсім випадково. на одному форумі, де обговорювалися енергоекономічні проекти, в коментарях попалася порада використати саме 168 атмегу.
Однак довелося повозиться, щоб таку плату відшукати, оскільки всі лоти були завалені 328-ми атмегами на частоті 16МГц, що працюють від 5В. Для мого проекту такі характеристики були надмірними і незручними вже спочатку, пошуки ускладнилися.
У результаті набрав на 3.3-вольтову версію Pro Mini на Atmega 168PA на eBay, причому не просту китайську, а під брендом RobotDyn від російського розробника. Так, у мене теж спочатку, як і у вас, виникло зерно сумніву. А даремно. Коли проект вже був зібраний, а AliExpress ввів обов'язкову платну доставку для дешевих товарів (після якої посилки стали губитися набагато частіше), то пізніше замовив звичайну Pro Mini Atmega168 (без PA) 3.3V 8MHz. Я трохи експериментував з режимами енергозбереження з обома платами, прошиваючи в кожну спеціальний скетч, що занурює мікроконтролер у максимальний режим енергозбереження і ось що вийшло:
1) Arduino Pro Mini "RobotDyn": ~250мкА
2) Arduino Pro Mini "NoName":при подачі живлення на стабілізатор напруги (висновок RAW) і випаяному світлодіоді споживаний струм склав ~3.92мА




- як ви зрозуміли, різниця в енергоспоживання майже в 16 разів, все тому, що в NoName"мовській Pro Mini використовується зв'язка Atmega168+, з яких сам МК їсть всього 20мкАструму (це я перевірив окремо), все інше обжерливість посідає лінійний перетворювач напруги AMS1117 - даташит це тільки підтверджує:


У випадку з платою від RobotDyn зв'язка вже трохи інша - це Atmega168PA+ - тут застосований вже інший LDO-стабілізатор, чиї характеристики в плані енергозбереження виявилися приємнішими:


Випоювати я його не став, тому не можу сказати, скільки Atmega168PA споживає струму в чистому вигляді. В даному випадку мені вистачило ~250мкАпри харчуванні від нокієвського літієвого акумулятора. Однак якщо випаяти AMS1117 c NoName"мовської плати, то ATmega168-я звичайна, в чистому вигляді, як я і сказав вище, споживає 20мкА.
Світлодіоди, що стоять по живленню, можна скинути чимось гострим. Це не проблема. Стабілізатор випаював феном. Однак не у кожного є фен і навички роботи з ним, тому обидва наведені варіанти мають право на існування.

Модуль Neoway M590E

Технічні характеристики:
Частоти: EGSM900/DCS1800 Dual-band, або GSM850/1900 або Quad-band
Чутливість:-107dBm
Максимальна потужність передачі: EGSM900 Class4(2W), DCS1800 Class1(1W)
Піковий струм:
Робочий струм: 210мА
Струм у сплячому режимі: 2.5мА
Робоча температура:-40 ° C ... +85 ° C
Робоча напруга: 3.3V… 4.5V (рекомендоване 3.9V)
Протоколи: GSM/GPRS Phase2/2+, TCP/IP, FTP, UDP, etc.
Інтернет: GPRS CLASS 10
Даташит:

Найдешевший GSM-модуль, що можна знайти на ринку, зазвичай б/в, випаяний не завжди спритними китайськими руками з обладнання. Чому не завжди спритними? Та все через випаювання феном - нерідко людям ці модулі приходять із закороченим плюсом і мінусом, що є однією з причин їхньої непрацездатності. Тому насамперед необхідно продзвонювати контакти живлення на коротке замикання.

Примітка.Окремий важливий, на мій погляд, момент хотілося б відзначити - ці модулі можуть приходити з круглим коаксіальним роз'ємом під антену, що дозволяє окремо замовити більш серйозну і без танців з бубном її до модуля підключити. А можуть приходити без цього роз'єму. Це якщо говорити про найдешевші набори. Якщо не хочеться сподіватися на щасливу випадковість, тобто набори трохи дорожчі, де цей роз'єм присутній + у комплекті йде зовнішня антена на текстолітовій платі.

Цей модуль ще й примхливий до живлення, оскільки в піку він споживає до 2А струму, а діод, що йде в комплекті, як задуманий для зниження напруги з 5В (чому і написано на самій платі 5В) до 4.2В, але судячи за скаргами народу, він створює більше клопоту, ніж користі.
Допустимо цей модуль у вас вже зібраний, а замість діода впаяна перемичка, оскільки ми не збираємося подавати на нього напругу 5В, а живитимемо його безпосередньо від літієвого акумулятора, що укладається в межі допустимих напруг 3.3-4.2В.
Треба буде його якось підключити до комп'ютера, і перевірити на працездатність. Для цього випадку краще заздалегідь придбати собі - за допомогою нього ми будемо спілкуватися з модулем і платами Arduino за послідовним інтерфейсом UART (USART).
Підключення показано нижче на зображенні (намалював, як вмію):
TX модему >>> RX конвертер
RX модему<<< TX конвертера
Плюс акумулятора - Плюс модему
Мінус літієвого акумулятора об'єднаний з GND модемом та GND конвертером.
Для запуску модему виведення BOOT через резистор 4.7 ком подати на GND


Тим часом на комп'ютері запустити програму . Звернути увагу на налаштування:
1) Вибрати COM-порт, до якого підключений TTL-конвертер, у моєму випадку це COM4, ​​може бути інший.
2) Вибрати швидкість обміну даними. (Тут є нюанс, бо самі модулі можуть бути налаштовані під різні швидкості, найчастіше 9600 бод або 115200 бод. Тут потрібно підбирати досвідченим шляхом, вибравши якусь швидкість, з'єднавшись, і відправивши команду АТ, якщо у відповідь приходять крякозябри, то відключиться , вибрати іншу швидкість і повторити команду.
3) Вибрати довжину пакета (у разі 8 біт), біт парності відключений (none), стоп-бит (1).
4) Обов'язково поставити галку +CR, І тоді до кожної посилається нами на модуль команді в кінці буде автоматично додаватися символ перенесення каретки - модуль розуміє команди тільки з цим символом в кінці.
5) З'єднання, тут все зрозуміло, натиснули і можемо працювати з модулем.

Якщо натиснути на «З'єднання» і після цього запустити модуль, подавши BOOT через резистор 4.7К на землю, то спочатку в терміналі висвітиться напис «MODEM:STARTUP», потім через деякий час напис "+PBREADY", що означає, що була прочитана телефонна книга, незважаючи на те, що вона може бути порожньою:

Під цим спойлером АТ-команди з прикладами

Друкуємо команду AT - у відповідь модуль нам надсилає нашу команду, оскільки увімкнено режим відлуння, і OK:

Перевіримо статус модему командою AT+CPAS - у відповідь знову наша команда +CPAS: 0 і ОК.
0 - означає, що модуль готовий до роботи, але в залежності від ситуації можуть бути інші цифри, наприклад 3 - вхідний дзвінок, 4 - в режимі з'єднання, 5 - сплячий режим. За 1 та 2 інформації не знайшов.

Зміна швидкості передачі даних UART відбувається командою AT+IPR=9600 - це якщо потрібна швидкість 9600. Якщо якась інша, аналогічно AT+IPR=19200 наприклад або AT+IPR=115200.

Перевіримо сигнал мережі. AT+CSQ, у відповідь приходить +CSQ: 22,1 – значення до коми має діапазон 0…31 (115…52дБл) – це рівень сигналу, чим більше, тим краще. Але 99 означає його відсутність. Значення після коми - якість сигналу 0 ... 7 - тут вже навпаки, чим менше, тим краще.

Відключимо режим відлуння, відправивши команду ATE0, щоб дублюючі команди не заважали. Назад цей режим включається командою ATE1.

Переглянути версію прошивки AT+GETVERS



Ці та багато інших команд можна подивитися

Поєднання плат

Якщо Pro Mini припаяти до макетної плати праці не становить, то з GSM-модулем справа трохи складніша, т.к. контактна гребінка у нього розташована тільки з одного боку і якщо припаяти тільки її, то інша сторона плати залишиться просто висіти в повітрі. Тоді, знову ж таки, на око довелося свердлити додаткові 3 отвори біля трьох кутів на платі. Потім області навколо кожного отвору були зачищені від маски. Для зручності, на безпайкову макетну плату (білу) помістив роз'єднані висновки від гребінки і, встановивши на них плату GSM-модуля нормально запаяв:

Пізніше довелося робити ще один отвір, у моєму випадку на літері "I", де написано "Мade In China", з краю плати.


Вийшло так, що доданий контакт, який по суті є GND, став поруч із GND плати Pro Mini, і тим самим з'явилася можливість об'єднати землю GSM-модуля та Pro Mini краплею припою (довгий висновок посередині і праворуч від нього висновок Pro Mini) - стрілочками їх наголосив. Кривувато, звичайно, вийшло, зате надійно тепер тримається:



Між платами залишився деякий простір - в нього я помістив плату контролю заряду розряду літію з попередньо випаяним microUSB-роз'ємом і проводами.

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



Стійки для плати

Щоб надійно закріпити плату всередині корпусу, довелося витратити кілька днів на роздуми, як це можна продати. Варіант з термоклеєм не розглядався з кількох причин - він може відвалитися, деформуватися і найголовніше - конструкція вийшла б важко розбирається.
Прийшов до думки, що найпростішим і найправильнішим варіантом тут буде застосувати стійки, яких природно у мене не було. Однак було кілька неробочих зарядників, звідки було випиляно по одній довгій стійці з різьбленням під шурупи. Кожна стійка була розпиляна навпіл допилена напилком до приблизно 9.5мм - саме при такій висоті розташований під платою акумулятор має достатній запас, приблизно в 2мм - це зроблено для того, щоб паяні контакти плати своїми вістрями не торкалися його і щоб була можливість вкласти між ними шматочок поролону для фіксації.
Що стосується прикріплення плати безпосередньо до корпусу, то тут нарізав чотири смужки з баночки з-під кави, на кінцях яких просвердлив по отвору, потім закріпив їх на тих же шурупах, які вкручені в стійки. Нижче на фото подивіться, як це виглядає.
Наступний етап - прикрутити пару стійок з іншого боку плати, тобто зверху, щоб при закритому корпусі кришка злегка впиралася в ці стійки, створюючи додаткову фіксацію. Трохи пізніше, під цю справу мені в руки потрапив корпус з-під радянського пропагандистського радіо (якби він знайшовся раніше - всі стійки взяв би звідси), де знайшов пару більш-менш підходящих по висоті, але спершу я їх по центру розсвердлив дрилем під саморізи. Потім спилив їх і також допил напильником, прибравши надлишки. Тут у мене вийшла одна тонкість - на фото можна помітити, що одна біла стійка прикручена до гетинаксової плати з краю, а інша - безпосередньо до плати модуля, т.к. з одного краю плата модему повністю закриває собою нижню плату, а з протилежного краю - навпаки - виглядає вже нижня. При цьому в обох платах довелося додатково розсвердлювати отвори, щоб капелюшки шурупів могли вільно пройти.
Ну і нарешті, залишилося зробити так, щоб плата завжди була паралельна корпусу - під цю справу чудово підійшли скоби, які застосовують для фіксації проводів та кабелів на стіні, цвяхи з них я витяг. Скоби добре чіпляються до плати увігнутою стороною без будь-яких додаткових пристроїв, єдине - праворуч від SIM-карти, ширина скоби виявилася надмірною і довелося її відшліфувати.
Всі деталі підганялися на око і досвідченим шляхом, нижче за фото всього вищесказаного:



Роз'єми. Світлодіоди. Кнопка.

Так як гребінка у мене закінчилася, довелося з плати DVD-приводу демонтувати 6-піновий роз'єм, який потім припаяв до Pro Mini, це для зручності перепрошивки плати. Поруч припаяв круглий роз'єм (нокієвський 3.5мм) для заряду літію.

Корпус 6-пінового роз'єму трохи допил напильником, бо його краї трохи виступали над корпусом. Гніздо зарядки ідеально щільно уперлося в стінку корпусу.

З іншого боку плати припаяв кнопку для перезавантаження пристрою і два світлодіоди для налагодження прошивки - червоний світлодіод підключений до GSM-модулю, другий зелений світлодіод до 10-го виводу Pro Mini - мені простіше налагоджувати програму.

Доопрацювання акумулятора

Плоский нокієвський акумулятор від телефонів Nokia не менш поширений елемент, ніж 18650, проте багато хто просто відмовляється від його використання через незручність підключення контактів, які на самому акумуляторі втоплені вглиб. Паяти їх небажано, тому вирішено було скористатися способом, запропонованим цими, а саме зробити з канцелярської гумки та мідного дроту (товщиною 1.5мм) контактну колодку самому.
Спочатку проткнув шматочок гумки двома дротами з попередньо зачищеними кінцями, і прикинув до контактів акумулятора, щоб відстань між ними збігалася,
кінчики загнув, залудив паяльником, а за довгі кінці трохи витяг назад, щоб отримані контакти виявилися втоплені в гумку.



Прикладка на акумуляторі:

Закріпити контактну колодку можна канцелярською гумкою або замотати синьою ізолентою, що я зробив у результаті.

Складання.

Основна частина роботи зроблена, залишилося все це зібрати та зафіксувати.
Між акумулятором та платою вклав шматочок поролону, щоб той не елозив потім усередині корпусу. На живлення модуля додатково припаяв конденсатор на 2200 мкФ.

При підключеній зарядці:

Корпус. Зовнішній клемник.

Корпус отримав на місцевому радіоринку приблизно за 1.5 $, якщо перевести в долари, розміром 95x60x25мм, практично з пачку цигарок. У ньому я просвердлив кілька отворів. Спочатку для 4-х контактного клемника, взятого від непрацюючого димера.
Два крайні контакти я повністю звільнив від болтів з прокладками, просвердлив отвори під довші болти, на яких весь клемник і триматиметься на корпусі. На самому ж корпусі, зрозуміло, два крайніх отвори будуть більшими, а два посередині менше - в них будуть просунуті контакти, один з яких підключений до VCC Pro Mini, а другий контакт до піна 2.

Свердління отворів хоч і просте на перший погляд заняття, але все ж таки не менш трудомістке, дуже легко промахнутися, тому робив це спочатку свердлом меншого діаметру, потім побільше.

Для тактової кнопки я підібрав ковпачок зі злегка увігнутою вершиною, щоб через вузький отвір у корпусі по ній зручно було потрапити сірником або скріпкою.

Плата в корпусі із підключеним шлейфом USB-TTL конвертера:

Про антену.
Антена, як ви могли помітити під час огляду, постійно змінювалася, оскільки я експериментував з різними саморобними антенами. Спочатку на платі модуля був присутній круглий коаксіальний роз'єм, але вп'яте його використання під зовнішню антену він просто розвалився, тому майте на увазі, що він кволий. Через війну видер зі старого роутера антену на текстоліті, її припаяв до плати модуля, т.к. вона трохи краще ловить мережу, ніж пружинка та дріт.

Ну і зовсім у зборі із підключеною зарядкою виглядає так:

Тест. Як це працює:

Крім тестів з антенками я перевіряв, як поводитиметься сигналізація на вулиці, в мороз -15. Для цього я просто помістив нутрощі повністю в контейнер і залишав на балконі на ніч, сигналізація при цьому не стартувала, причина виявилася загалом очевидною - літій не любить мороз. Це підтвердилося іншим тестом, де акумулятор я залишав удома, а платню через довгі дроти виводив на вулицю і залишав так на добу в той же мороз - спрацьовування, як ні в чому не бувало. З іншого боку було б дивно, якби сигналізація не почала працювати т.к. в даташитах що у атмегу, що у модуль, що у кварц - допустимі температури роботи до -40 градусів.

Принцип роботи організований за зовнішнім перериванням, спочатку пін 2 замкнутий на VCC і цим на виведенні підтримується логічний 1, а контролер спить. Як тільки контакт порушується і на піні 2 з'являється 0, мікроконтролер прокидається, опускає 3-й пін (до якого через резистор підключений BOOT модему) до землі - запускається модуль, МК періодично опитує модуль на готовність, і як тільки він зловить мережу, відразу посилає виклик на вказаний номер телефону господаря. Після відхилення виклику, девайс відключається, не надсилаючи більше нескінченних викликів, ніж грішить багато китайських сигналізацій.

додаткова інформація

#include #include // бібліотека програмного UART SoftwareSerial gsm (7, 6); // RX(7), TX(6) void wakeUp()() // порожній обробник переривання //////////////////////////// //////////////// void gsmOFF()( // PORTD|=(1<<3); // ВЫКЛЮЧЕНИЕ МОДУЛЯ _delay_ms(10); // gsm.println("AT+CPWROFF"); // ПЕЧАТАЕМ КОМАНДУ OFF PORTB &=~ (1<<2); // выключить LED 10 } // //========================================= void gsmON(){ // PORTD|=(1<<6); // 6-му порту (TX) назначить 1 PORTD &= ~(1<<3); // ЗАПУСК МОДУЛЯ _delay_ms(10); // while(!gsm.find("+PBREADY")); // ждём прочтения тел. книги PORTB |= (1<<2); // включить LED 10 _delay_ms(100); // while(1){ // gsm.println("AT+CREG?"); // проверяем в сети ли модуль if (gsm.find("0,1")) break; // если сеть есть, выходим из цикла _delay_ms(400); // проверка раз в 0,4 сек } // } // /////////////////////////////////////////// // void sleepNow(){ // функция засыпания ADCSRA = 0x00; // отключить подсистему АЦП (экономия 140 мкА) PORTD&=~(1<<6); // в вывод TX поставить 0 _delay_ms(100); // set_sleep_mode(SLEEP_MODE_PWR_DOWN); // режим сна PWR_DOWN sleep_enable(); // включение сна attachInterrupt(0, wakeUp, LOW); // включить прерывания sleep_mode(); // sleep_disable(); // detachInterrupt(0); // отключить прерывания } void setup(){ gsm.begin(9600); // скорость работы UART DDRD = B01001000; // 3-й и 6-й выводы на выход DDRB |= (1<<2); // вывод 10 на выход gsmON(); // запуск модуля для теста gsmOFF(); // выключаем модуль } void loop(){ if (!(PIND&(1<<2))){ // если на 0-ом прерывании появился 0 gsmON(); gsm.println("ATD+79xxxxxxxxx;"); // отзваниваемся, в ответ приходит OK и CONNECT _delay_ms(100); if (gsm.find("OK")) while(1){ // ожидание сброса вызова gsm.println("AT+CPAS"); // при каждой итерации опрашиваем модуль if (gsm.find("0")) break; // если 0, то выходим из цикла while _delay_ms(100); // проверка раз в 0,1 сек } for (char i=0; i<14; i++){ PORTB|=(1<<2); // LED 10 ON _delay_ms(200); PORTB&=~(1<<2); // LED 10 OFF _delay_ms(200); } gsmOFF(); // выключить модуль _delay_ms(10); while(1); // блокируем программу } else { sleepNow(); // укладываем контроллер спать } }

Схема (без плати контролю заряду-розряду)



Висновки та думки. Плани.

Сигналізація використовується на дачі, роботою задоволений, проте з подальшим вивченням AVR приходить все більше ідей для подальшої модифікації. Ардуїно з його брехливою мовою Wiring мене сильно засмутила, т.к. виявився один неприємний момент у роботі. Коли я використовував функції для роботи з портами digitalWrite(); або pinMode(); – то GSM-модуль чомусь дуже часто зависав. Але варто було замінити їх на викрутаси на зразок DDRB | = (1<Тільки операція прямого звернення до портів змусила заробити девайс, як і було задумано.

З енергозбереження...
Зібраний девайс відпрацював чотири повні місяці без підзарядки і продовжує працювати, хоча правильніше сказати «спати». Перевіряється це простим перезавантаженням через білу кнопку. При енергоспоживання 250 мкА (через стабілізатор LE33) і акумуляторі ~1430 mAh, хоча добре, через неновизну акумулятора округлим до 1000mAh, виходить, що девайс може відсипатися близько 5.5 місяців без підзарядки. Якщо все-таки випаяти стабілізатор, час роботи можна сміливо помножити в 10 разів. Але в моєму випадку в цьому немає потреби, тому що все одно потрібно раз на три місяці витрачати баланс з сімки, заразом і аксесуар можна перевірити і підзарядити.
Наведений у огляді приклад енергозбереження - далеко ще не межа, т.к. судячи з інформації з даташита, можна знизити тактову частоту мікроконтролера (а це робиться установкою фьюзов) до 1МГц і, якщо подати 1.8В напруги, то споживання опуститься нижче планки 1мкА в активному режимі. Дуже непогано! Але якщо МК при цьому тактуватиметься від внутрішнього RC-генератора, то з'явиться інша проблема – ефір UART виявиться засмічений сміттям та помилками, особливо якщо контролер нагріти чи охолодити.

З доопрацювання...
1) Звичайний дріт, встановлений на розрив не зовсім зручний, планую поекспериментувати з датчиком Холла і герконом, хоча про останній кажуть, що не дуже надійний, бо контакти всередині нього можуть залипнути.
2) Непогано було б додати можливість зміни «номера господаря» без участі комп'ютера та перепрошивки. Це вже з EEPROM доведеться попрацювати.
3) Спробувати переривання від сторожового таймера, але не просто заради цікавості, а щоб мікроконтролер періодично прокидався сам, робив виміри напруги акумулятора і відправляв отримане значення по SMS, щоб бути в курсі наскільки акумулятор розряджений.
4) Сонячна панель може зовсім позбавити необхідності підзаряджати девайс, це буде актуально особливо для малоємних акумуляторів.
5) Ще давно хотів купити LiFePo4 акумулятори, які за відгуками нормально переносять мороз, але поки шукав придатний лот, весна вже непомітно настала.
6) Попрацювати над естетичною складовою

Яку Pro Mini купити?
Якщо фена немає, то Pro Mini «RobotDyn» Atmega168PA 3.3V, чимось гострим скуштуєте світлодіод і маєте ~250мкА.
Якщо є фен, то будь-яку плату, випаює стабілізатор і світлодіод по живленню - отримуєте ~20мкА споживання струму.

На цьому поки що все, сподіваюся, огляд був цікавий і корисний.

Планую купити +174 Додати в обране Огляд сподобався +143 +278 Крадіжки автомобілів протягом останнього десятиліття займають одне із значних місць у структурі злочинів, що скоюються у світі. Це зумовлено не стільки питомою вагою даної категорії розкрадань щодо загальної кількості злочинів, скільки суттєвістю шкоди, що завдається, з огляду на велику вартість автомобілів. Слабка ефективність заходів, що вживаються в галузі боротьби з крадіжками автотранспорту до кінця 90-х років призвела до створення стійких груп, що спеціалізуються на скоєнні даних злочинів і мають відмінні риси організованої злочинності; ви, напевно, чули термін «чорний автобізнес». Автомобільний парк європейських держав щорічно не дораховується ≈ 2 % машин, які стають предметом злочинних зазіхань. Тому мені прийшла ідея зробити GSM-сигналізацію для свого автомобіля на базі Arduino Uno.

Почнемо!

З чого будемо збирати

Потрібно обрати серце нашій системі. На мою думку, для подібної сигналізації немає нічого кращого, ніж Arduino Uno. Основний критерій – достатня кількість «пінів» та ціна.


Основні характеристики Arduino Uno

Мікроконтролер - ATmega328
Робоча напруга - 5 В
Вхідна напруга (рекомендована) - 7-12 В
Вхідна напруга (гранична) - 6-20 В
Цифрові Входи/Виходи - 14 (6 з яких можуть використовуватися як виходи ШІМ)
Аналогові входи - 6
Постійний струм через вхід/вихід – 40 мА
Постійний струм для виведення 3.3 В – 50 мА
Флеш-пам'ять - 32 Кб (ATmega328), з яких 0.5 Кб використовуються для завантажувача.
ОЗУ – 2 Кб (ATmega328)
EEPROM - 1 Кб (ATmega328)
Тактова частота – 16 МГц


Підходить!

Тепер необхідно вибрати gsm-модуль, адже наша сигналізація має вміти сповіщати власника автомобіля. Так, треба "погуглити" ... Ось, відмінний датчик - SIM800L, розмір просто чудовий.


Подумав я і замовив його з Китаю. Проте все виявилося не так райдужно. Датчик просто відмовився реєструвати SIM-картку в мережі. Було випробувано все, що тільки можливе - результат нульовий.
Знайшлися добрі люди, які надали мені крутішу штуку - Sim900 Shield. Ось це вже серйозний штучка. У Shield і роз'єм для мікрофона і для навушників, повноцінний телефон.


Основні характеристики Sim900 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


Підходить!

Ок, але ж треба знімати показання з якихось датчиків, щоб сповіщати власника. Раптом автомобіль евакуюють, тоді становище автомобіля явно змінюватиметься у просторі. Візьмемо акселерометр та гіроскоп. Чудово. Такс тепер шукаємо датчик.

Думаю, що GY-521 MPU6050 точно підійде. Виявилося, що в ньому є датчик температури. Потрібно б і його задіяти, буде така «кілер фіча». Припустимо, що власник автомобіля поставив його під додому та пішов. Температура в салоні автомобіля змінюється «плавно». Що ж буде, якщо зловмисник спробує поринути в автомобіль? Наприклад у нього вийде відчинити двері. Температура в автомобілі почне змінюватися стрімко, оскільки повітря в салоні почне змішуватись із повітрям навколишнього середовища. Думаю, що працюватиме.


Основні характеристики GY-521 MPU6050

Модуль 3-осьового гіроскопа + 3-осьового акселерометра GY-521 на чіпі MPU-6050. Дозволяє визначити положення та переміщення об'єкта у просторі, кутову швидкість при обертанні. Також має вбудований датчик температури. Використовується в різних коптерах та авіамоделях, так само на основі цих датчиків можна зібрати систему захоплення рухів.

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


Підходить!

Також знадобиться датчик вібрацій. Раптом автомобіль спробують розкрити «грубою силою», ну або на парковці інший автомобіль зачепить вашу машинку. Візьмемо датчик вібрацій SW-420 (регульований).


Основні характеристики SW-420

Напруга живлення - 3.3 - 5В
Вихідний сигнал – цифровий High/Low (нормально закритий)
Датчик, що використовується - SW-420
Використовуваний компаратор - LM393
Розміри – 32x14 мм
Додатково Є регулювальний резистор.


Підходить!

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


Основні характеристики модуля SD картки пам'яті

Модуль дозволяє зберігати, читати і записувати на карту SD дані необхідні для роботи приладу на основі мікроконтролера. Застосування пристрою є актуальним при зберіганні файлів від десятків мегабайт до двох гігабайт. На платі розміщено контейнер SD картки, стабілізатор живлення картки, вилка з'єднувача ліній інтерфейсу та живлення. Якщо потрібно працювати зі звуковими, відео або іншими об'ємними даними, наприклад, вести журнал реєстрації подій, даних датчиків або зберігати інформацію веб-сервера, то модуль SD картки пам'яті Arduino дасть можливість застосувати SD карту для цих цілей. За допомогою модуля можна вивчити особливості роботи карти SD.
Напруга живлення - 5 або 3,3 В
Об'єм пам'яті SD картки – до 2 Гбайт
Розміри – 46 х 30 мм


Підходить!

І додамо сервопривід, при спрацюванні датчиків повертатиметься сервопривід з відеореєстратором і зніматиме відео події. Візьмемо сервопривід MG996R.


Основні характеристики сервоприводу 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В
- Усі деталі приводу виконані з металу


Підходить!

Збираємо

Для підключення кожного датчика на «гугле» безліч статей. І вигадувати нові велосипеди в мене бажання немає, тож залишу посилання на прості та робочі варіанти. Крадіжки автомобілів протягом останнього десятиліття займають одне із значних місць у структурі злочинів, що скоюються у світі. Це зумовлено не стільки питомою вагою даної категорії розкрадань щодо загальної кількості злочинів, скільки суттєвістю шкоди, що завдається, з огляду на велику вартість автомобілів. Слабка ефективність заходів, що вживаються в галузі боротьби з крадіжками автотранспорту до кінця 90-х років призвела до створення стійких груп, що спеціалізуються на скоєнні даних злочинів і мають відмінні риси організованої злочинності; ви, напевно, чули термін «чорний автобізнес». Автомобільний парк європейських держав щорічно не дораховується ≈ 2 % машин, які стають предметом злочинних зазіхань. Тому мені прийшла ідея зробити GSM-сигналізацію для свого автомобіля на базі Arduino Uno.

Почнемо!

З чого будемо збирати

Потрібно обрати серце нашій системі. На мою думку, для подібної сигналізації немає нічого кращого, ніж Arduino Uno. Основний критерій – достатня кількість «пінів» та ціна.


Основні характеристики Arduino Uno

Мікроконтролер - ATmega328
Робоча напруга - 5 В
Вхідна напруга (рекомендована) - 7-12 В
Вхідна напруга (гранична) - 6-20 В
Цифрові Входи/Виходи - 14 (6 з яких можуть використовуватися як виходи ШІМ)
Аналогові входи - 6
Постійний струм через вхід/вихід – 40 мА
Постійний струм для виведення 3.3 В – 50 мА
Флеш-пам'ять - 32 Кб (ATmega328), з яких 0.5 Кб використовуються для завантажувача.
ОЗУ – 2 Кб (ATmega328)
EEPROM - 1 Кб (ATmega328)
Тактова частота – 16 МГц


Підходить!

Тепер необхідно вибрати gsm-модуль, адже наша сигналізація має вміти сповіщати власника автомобіля. Так, треба "погуглити" ... Ось, відмінний датчик - SIM800L, розмір просто чудовий.


Подумав я і замовив його з Китаю. Проте все виявилося не так райдужно. Датчик просто відмовився реєструвати SIM-картку в мережі. Було випробувано все, що тільки можливе - результат нульовий.
Знайшлися добрі люди, які надали мені крутішу штуку - Sim900 Shield. Ось це вже серйозний штучка. У Shield і роз'єм для мікрофона і для навушників, повноцінний телефон.


Основні характеристики Sim900 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


Підходить!

Ок, але ж треба знімати показання з якихось датчиків, щоб сповіщати власника. Раптом автомобіль евакуюють, тоді становище автомобіля явно змінюватиметься у просторі. Візьмемо акселерометр та гіроскоп. Чудово. Такс тепер шукаємо датчик.

Думаю, що GY-521 MPU6050 точно підійде. Виявилося, що в ньому є датчик температури. Потрібно б і його задіяти, буде така «кілер фіча». Припустимо, що власник автомобіля поставив його під додому та пішов. Температура в салоні автомобіля змінюється «плавно». Що ж буде, якщо зловмисник спробує поринути в автомобіль? Наприклад у нього вийде відчинити двері. Температура в автомобілі почне змінюватися стрімко, оскільки повітря в салоні почне змішуватись із повітрям навколишнього середовища. Думаю, що працюватиме.


Основні характеристики GY-521 MPU6050

Модуль 3-осьового гіроскопа + 3-осьового акселерометра GY-521 на чіпі MPU-6050. Дозволяє визначити положення та переміщення об'єкта у просторі, кутову швидкість при обертанні. Також має вбудований датчик температури. Використовується в різних коптерах та авіамоделях, так само на основі цих датчиків можна зібрати систему захоплення рухів.

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


Підходить!

Також знадобиться датчик вібрацій. Раптом автомобіль спробують розкрити «грубою силою», ну або на парковці інший автомобіль зачепить вашу машинку. Візьмемо датчик вібрацій SW-420 (регульований).


Основні характеристики SW-420

Напруга живлення - 3.3 - 5В
Вихідний сигнал – цифровий High/Low (нормально закритий)
Датчик, що використовується - SW-420
Використовуваний компаратор - LM393
Розміри – 32x14 мм
Додатково Є регулювальний резистор.


Підходить!

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


Основні характеристики модуля SD картки пам'яті

Модуль дозволяє зберігати, читати і записувати на карту SD дані необхідні для роботи приладу на основі мікроконтролера. Застосування пристрою є актуальним при зберіганні файлів від десятків мегабайт до двох гігабайт. На платі розміщено контейнер SD картки, стабілізатор живлення картки, вилка з'єднувача ліній інтерфейсу та живлення. Якщо потрібно працювати зі звуковими, відео або іншими об'ємними даними, наприклад, вести журнал реєстрації подій, даних датчиків або зберігати інформацію веб-сервера, то модуль SD картки пам'яті Arduino дасть можливість застосувати SD карту для цих цілей. За допомогою модуля можна вивчити особливості роботи карти SD.
Напруга живлення - 5 або 3,3 В
Об'єм пам'яті SD картки – до 2 Гбайт
Розміри – 46 х 30 мм


Підходить!

І додамо сервопривід, при спрацюванні датчиків повертатиметься сервопривід з відеореєстратором і зніматиме відео події. Візьмемо сервопривід MG996R.


Основні характеристики сервоприводу 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В
- Усі деталі приводу виконані з металу


Підходить!

Збираємо

Для підключення кожного датчика на «гугле» безліч статей. І вигадувати нові велосипеди в мене бажання немає, тож залишу посилання на прості та робочі варіанти.

Цей проект стосується розробки та вдосконалення системи для запобігання/контролю будь-яких спроб проникнення злодіїв. Розроблений охоронний пристрій використовує вбудовану систему (включає апаратний мікроконтролер із використанням відкритого програмного коду та gsm модем) на базі технології GSM (Глобальна система рухомого зв'язку).

Охоронний пристрій може бути встановлений у будинку. Інтерфейсний датчик охоронної сигналізації також приєднано до охоронної системи на базі контролера.
При спробі проникнення система передає попереджувальне повідомлення (наприклад, sms) власнику на мобільний телефон або будь-який заздалегідь налаштований мобільний телефон для подальшої обробки.

Охоронна система складається з мікроконтролера Arduino Uno та стандартного модему SIM900A на базі GSM/GPRS. Вся система може живитися від будь-якого джерела живлення/батареї 12В 2А.

Нижче показано схему охоронної системи на базі Arduino.

Робота системи дуже проста і вимагає роз'яснень. Коли подається харчування, вона переходить у черговий режим. Коли виводи конектора J2 закорочені, заздалегідь запрограмоване попереджувальне повідомлення передається на потрібний мобільний номер. Ви можете підключити будь-який детектор виявлення проникнення (такий як світловий захисний пристрій або датчик руху) до вхідного конектора J2. Зауважте, що активний-низький (L) сигнал на виведенні 1 конектора J2 активує спрацювання охоронної сигналізації.

Більше того, до системи додано опціональний пристрій “виклик – тривога”. Він активує телефонний дзвінок, коли користувач натисне кнопку S2 (або коли інший електронний блок ініціює сигналізацію). Після натискання кнопки “call” (S2), дзвінок можна скасувати, натиснувши іншу кнопку S3 – кнопку “end”. Ця опція може використовуватися для подачі сигналу тривоги у разі пропущеного дзвінка у разі проникнення.

Схема дуже гнучка, тому може використовувати будь-який SIM900A модем (і, звісно, ​​плату Arduino Uno). Уважно прочитайте документацію на модем до початку збирання. Це дозволить полегшити та зробити приємним процес виготовлення системи.

Список радіоелементів

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
Плата Arduino

Arduino Uno

1 До блокноту
GSM/GPRS-модемSIM900A1 До блокноту
IC1 Лінійний регулятор

LM7805

1 До блокноту
C1 100мкФ 25В1 До блокноту
C2 Електролітичний конденсатор10мкФ 16В1 До блокноту
R1 Резистор

1 ком

1 До блокноту
LED1 Світлодіод 1 До блокноту
S1 КнопкаЗ фіксацією1