Бюджетна GSM сигналізація з мізками Arduino. Про датчик руху і підключення до Arduino Охоронна сигналізація на arduino


GSM сигналізаціяна Arduino

У цій статті ви дізнаєтеся як (купити) зробити самому GSM сигналізацію за допомогою GSM модуля та Arduino дуже дешево. Об'єктом охорони GSM сигналізації ідеально підійде дача, будинок, гараж, квартира.


Крок 1: Елементи
Для цього проекту вам знадобиться:


GSM Shield

Зумер
Сирена сигналізації 12V
12V джерело живлення

Клавіатура для Arduino
Корпус.

Крок 2: Підключення компонентів


Спочатку ви помістите GSM модульна Arduino Uno, вам потрібно буде припаяти дроти GND та VCC разом з двома датчиками, зуммером та входом модуля реле. Після цього з'єднати ці припаяні дроти на відповідний роз'єм GSM шилду. Далі ви робитимете роз'єм введення / виведення сигналів з цих частин, і останнє, що потрібно буде - це підключити клавіатуру

Arduino Uno / GSM Клеми:

Висновок 0: не пов'язаний;
Висновок 1: не пов'язаний;
Висновок 2: незв'язаний (GSM буде використовувати цей штир);
Висновок 3: незв'язаний (GSM буде використовувати цей штир);
Висновок 4: останній рядок за допомогою клавіатури (контакт клавіатури 4 – від 8);
Висновок 5: не пов'язаний;
Висновок 6: другий стовпець за допомогою клавіатури (контакт клавіатури 6 - 8);
Висновок 7: третя колонка з клавіатури (клавіатури пальця 7 – від 8);
Висновок 8: незв'язаний (GSM буде використовувати цей штир);
Висновок 9: незв'язаний (GSM буде використовувати цей штир);
Висновок 10: дані PIR датчика №2;
Висновок 11: сирена звуковий сигнал (надходить на вхід модуля реле);
Висновок 12: дані PIR датчика №1;
Висновок 13: вхідний сигнал зумера;

Як можна бачити, хоча клавіатура має 8 висновків, підключилися тільки три (один рядок і дві колонки, що дозволяє використовувати два числа для читання - 1 × 2 матриці), таким чином я можу зробити паролі, використовуючи ці три дроти, і немає необхідності використовувати всі контакти з клавіатури. Це відбувається тому, що після того, як датчик руху виявляє людину, яка йде в кімнаті, людина матиме всього 5 секунд, щоб вимкнути сигналізацію. Після того, як аварійний сигнал не відключається на даний момент часу, GSM шилд відправляє SMS вам або дзвонить на номер телефону. Arduino був запрограмований на виклик і як тільки ви відповісте на телефонний дзвінок, він покладе слухавку.

Звичайно, можна отримати помилкові показання датчика, тому варто опція, щоб відключити сигналізацію, просто відправивши SMS з вашого телефону на Arduino. Крім того, ще один варіант, що ви можете зробити, це налаштувати шилд, щоб він відправляв вам одне повідомлення на день, щоб ви знали, що він працює правильно.

Крок 3: Код

Просто завантажте наведений нижче код та скомпілюйте. Він використовує бібліотеки Keypad.h та GSM.h.
Завантажити файл: (завантажень: 181)
Завантажити файл: (завантажень: 104)

Крок 4: Висновок


Враховуючи, що код Arduino Uno буде відправляти SMS-повідомлення та дзвонити на ваш телефон всього за п'ять секунд після того, як хтось проникне у ваш будинок, я припускаю, що у вас буде достатньо часу, щоб зателефонувати до поліції. Звичайно, сирена буде відлякувати злодіїв і ваш будинок або інше приміщення стане безпечнішим за допомогою цієї статті.

Доброго часу доби 🙂 Сьогодні поговоримо про сигналізацію. На ринку послуг повно фірм, організацією, що займаються встановленням та обслуговуванням охоронних систем. Ці компанії пропонують покупцеві широкий вибір сигналізацією. Однак їхня вартість далеко не копійчана. Але що ж робити людині, у якої не так вже й багато власних коштів, що можна витратити на охоронну сигналізацію? Думаю, висновок напрошується сам собою – зробитисигналізацію своїми руками. У цій статті наведено приклад того, як можна зробити свою власну кодову охоронну системувикористовуючи плату Arduino uno та кілька магнітних датчиків.

Систему можна дезактивувати введенням пароля з клавіатури та натисканням кнопки ‘ * ‘. Якщо хочете змінити поточний пароль, можете це зробити натиснувши на клавішу ‘ B', а якщо хочете пропустити або перервати операцію, можете зробити це, натиснувши на клавішу ‘#’. У системі є зумер для відтворення різних звуків і під час тієї чи іншої операції.

Активується система натисканням кнопки A. Система дає 10 секунд на те, щоб залишити приміщення. Після 10 секунд сигналізацію буде активовано. Кількість магнітних датчиків буде залежати від вашого власного бажання. У проекті задіяні 3 датчики (для двох вікон та дверей). Коли вікно відкривається система активується, і включається сигнал тривоги, що йде з зумеру. Систему можна дезактивувати за допомогою набору пароля. Коли відчиняються двері, сигналізація дає 20 секунд для введення пароля. Система використовує ультразвуковий датчик, який може виявляти рух.

Відео роботи пристрою

Вирібвиготовлена ​​в ознайомлювальних/навчальних цілях. Якщо хочете використовувати її у себе вдома, потрібно буде її доопрацювати. Укласти керуючий блок у металевий корпуста убезпечити лінію живлення від можливого пошкодження.

Починайте!

Крок 1: Що нам буде потрібно

  • плата Arduino uno;
  • висококонтрастний дисплей LCD 16×2;
  • клавіатура 4×4;
  • 10~20кОм потенціометр;
  • 3 магнітні датчики (вони ж геркони);
  • 3 2-х пінових гвинтових клеми;
  • HC-SR04 ультразвуковий датчик;

Якщо ви хочете зібрати систему без використання Arduino, вам також знадобиться таке:

  • DIP роз'єм для atmega328 + мікроконтролер atmega328;
  • 16MГц кварцовий резонатор;
  • 2 шт. 22pF керамічні, 2 шт. 0.22uF електролітичного конденсатора;
  • 1 шт. 10кОм резистор;
  • гніздо живлення (DC power jack);
  • макетна плата;
  • 5В блок живлення;

І одна коробка, щоб все це запакувати!

Інструменти:

  • Щось, чим можна розрізати пластикову коробку;
  • Термоклейовий пістолет;
  • Дриль/шуруповерт.

Крок 2: Схема сигналізації

Схема з'єднання досить проста.

Невелике уточнення:

Висококонтрастний LCD:

  • Pin1 - Vdd до GND;
  • Pin2 - Vss до 5В;
  • Pin3 - Vo (до центрального висновку потенціометра);
  • Pin4 - RS до 8 висновку Arduino;
  • Pin5 - RW до GND;
  • Pin6 - EN до 7 висновку Arduino;
  • Pin11 - D4 до 6 висновку Arduino;
  • Pin12 - D5 до 5 висновку Arduino;
  • Pin13 - D6 до 4 висновку Arduino;
  • Pin14 - D7 до 3 висновку Arduino;
  • Pin15 - Vee (до правого або лівого виведення потенціометра).

Клавіатура 4×4:

Від лівого до правого:

  • Pin1 до A5 виводу Arduino;
  • Pin2 до A4 виводу Arduino;
  • Pin3 до A3 виводу Arduino;
  • Pin4 до A2 виводу Arduino;
  • Pin5 до 13 висновку Arduino;
  • Pin6 до 12 висновку Arduino;
  • Pin7 до 11 висновку Arduino;
  • Pin8 до 10 висновку Arduino.

Крок 3: Прошивка

На кроці представлений код, що використовується вбудованим !

Завантажте плагін codebender. Натисніть на кнопку Run в Arduino і прошийте свою плату цією програмою. На цьому все. Ви щойно запрограмували Arduino! Якщо хочете змінити код, натисніть кнопку «Edit».

Примітка: Якщо ви не будете використовувати Codebender IDE для програмування плати Arduino, вам потрібно буде встановити додаткові бібліотеки в Arduino IDE.

Крок 4: Виготовляємо власну керуючу плату

Після того, як вдало зібрали та протестували новий проектна базі Arduino uno, можете розпочати виготовлення власної плати.

Декілька порад, для успішнішого завершення затіяного:

  • 10кОм резистор повинен монтуватися між 1 (reset) та 7 (Vcc) висновками мікроконтролера Atmega328.
  • 16MГц кварцовий резонатор повинен приєднуються до висновків 9 і 10, зазначеними як XTAL1 і XTAL2
  • З'єднайте кожен вивід резонатора з конденсаторами 22pF. Вільні висновки конденсаторів заведіть на 8-й висновок (GND) мікроконтролера.
  • Не забудьте з'єднати другу лінію живлення ATmega328 із блоком живлення, висновки 20-Vcc та 22-GND.
  • Додаткову інформацію щодо висновків мікроконтролера можна знайти на другому зображенні.
  • Якщо плануєте використовувати блок живлення з напругою вище 6В, необхідно скористатися лінійним регулятором LM7805 та двома 0.22uF електролітичними конденсаторами, які слід змонтувати на вході та виході регулятора. Це важливо! Не подавайте більше, ніж 6В на плату! В іншому випадку ви спалите свій мікроконтролер Atmega та LCD дисплей.

Крок 5: Розміщуємо схему у корпусі

Її автор хотів виконати саморобку, щоб вона була дешевою та бездротовою.
Ця саморобка використовує PIR датчик руху, а передача інформації відбувається за допомогою модуля RF.

Автор хотів скористатися інфрачервоним модулем, але оскільки він має обмежену дальність дії, плюс може працювати тількина лінії прямої видимості приймачем, тому він вибрав RF модуль, за допомогою якого можна досягти дальності приблизно 100 метрів.


Для того, щоб відвідувачам було зручніше переглядати складання сигналізації, я вирішив поділити статтю на 5 етапів:
Етап 1: Створення передавача.
Етап 2: Створення приймача.
Етап 3: Встановлення програмного забезпечення.
Етап 4: Тестування зібраних модулів.
Етап 5: Складання корпусу та встановлення в нього модуля.

Все, що знадобилося автору, це:
- 2 плати ARDUINO UNO/ARDUINO MINI/ARDUINO NANO для приймача та передавача;
- RF приймальний модуль (433 MHZ);
- PIR датчик руху;
- 9В батарейки (2 штуки) та конектори до них;
- Зумер;
- світлодіод;
- резистор з опором 220 Ом;
- макетна плата;
- Джампери/проводи/перемички;
- монтажна плата;
- міжплатні штирьові з'єднувачі;
- перемикачі;
- Корпуси для приймача та передавача;
- кольоровий папір;
- монтажний скотч;
- набірний скальпель;
- термоклейовий пістолет;
- паяльник;
- шматочки / інструмент для зняття ізоляції;
- Ножиці з металу.


Етап 1.
Починаємо створення передавача.
Нижче надано схему роботи датчика руху.


Сам передавач складається з:
- датчика руху;
- плати Arduino;
- модуль передавача.


Сам датчик має три висновки:
- VCC;
- GND;
- OUT.

Після чого перевірив роботу датчика


Увага!
Перед завантаженням прошивки автор переконується в тому, що в налаштуваннях Arduino IDE правильно встановлено поточну плату і послідовний порт. Після чого завантажив скетч:

Пізніше, як датчик руху зафіксує рух перед собою, світиться світлодіод, а також у моніторі ви зможете побачити відповідне повідомлення.


За схемою трохи нижче.


Передавач має 3 висновки (VCC, GND і Data), з'єднуємо їх:
- VCC > 5В виведенням на платі;
- GND > GND;
- Data > 12 виведенням на платі.

Етап 2.


Сам приймач складається з:
- Модуля RF приймача;
- Плати Arduino
- Зуммера (динаміка).

Схема приймача:


Приймач, як і передавач, має 3 висновки (VCC, GND і Data), з'єднуємо їх:
- VCC > 5В виведенням на платі;
- GND > GND;
- Data > 12 виведенням на платі.


Етап 3.
Основою усієї прошивки автор вибрав файл-бібліотеки. Скачав, що він, і помістив його в папку з бібліотеками Arduino.

ПЗ для передавача.
Перед тим, як завантажувати код прошивки, автор виставив наступні параметри IDE:
- Board -> Arduino Nano (або та плата, яку ви використовуєте);
- Serial Port ->


Після встановлення параметрів, автор скачав файл прошивки Wireless_tx і завантажив його на плату:

ПЗ для приймача
Автор повторює ті ж дії і для плати, що приймає:
- Board -> Arduino UNO (або та плата, яку ви використовуєте);
- Serial Port -> COM XX (перевірте com порт, до якого підключено вашу плату).



Після того, як автор встановив параметри, завантажує файл wireless_rx і завантажує його в плату:


Після, за допомогою програми, яку можна завантажити, автор згенерував звук для зумера.

Етап 4.
Далі, після завантаження програмного забезпечення автор вирішив перевірити, чи все працює належним чином. Автор під'єднав джерела живлення, і провів рукою перед датчиком, і в нього запрацював зумер, а отже, все працює як треба.


Етап 5.
Фінальна збірка передавача
Спочатку автор зрізав виступаючі висновки з приймача, передавача, плат arduino, тощо.


Після цього з'єднав плату arduino з датчиком руху і RF передавачем за допомогою джамперів.


Далі автор почав робити корпус передавача.

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




Потім автор згорнув аркуш кольорового паперу, і приклеїв на лицьову кришку образу, щоб приховати внутрішні частини саморобки.


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



Фінальна збірка приймача
Автор вирішив поєднати плату Arduino з монтажною платою гумовою стрічкою, а також встановимо RF приймач.


Далі автор вирізає на іншому корпусі два отвори, один для зумера, інший для вимикача.


І приклеює.


Після цього автор встановлює на всі деталі джампери.




Потім автор вставляє готову плату в корпус і фіксує її двостороннім клеєм.

Доброго дня! Знову мультиогляд китайських електронних компонентів, як завжди про все потроху, постараюся коротше, але чи вийде? Отже, зустрічайте GSM сигналізацію вартістю до 700 ₽. Цікаво? Прошу під "cut"!

Почнемо! Перед початком рекомендую заглянути в цей компонент, менше компонентів і більша автономність. Отже, «техзавдання», основні вимоги до сигналізації:

1) Сповіщати під час спрацювання датчиків.
2) У разі відключення живлення повинна бути передбачена певна автономність.
3) Управління сигналізацією через sms та дзвінки.

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

Перелік того, що знадобиться:

Список змін

GSM_03_12_2016-14-38.hex- Виправлено роботу пристрою з модемом M590.
GSM_05_12_2016-13-45.hex- Додана консольна команда memtest, оптимізація використання оперативної пам'яті.
GSM_2016_12_06-15-43.hex- Додано виведення результатів команд у консоль, оптимізація пам'яті. Зайнято: 49% SRAM.
GSM_2016_12_07-10-59.hex- тепер телефонні номери додаються та видаляються правильно. Зайнято: 49% SRAM, 74% Flash Memory.
GSM_2016_12_07-15-38.hex- додано можливість підключення датчика руху , що підключається до піна A0 (у даному випадкупін A0 використовується як цифровий). Додані смс - команди PIROn, PIROff. Зайнято: 48% SRAM, 76% Flash Memory.
GSM_2016_12_08-13-53.hex- Тепер після успішного виконання команди, яка у відповідь не надсилає смс повідомлення, пристрій одноразово блимає синім світлодіодом. Тепер після некоректного виконання команди, яка у відповідь не надсилає SMS повідомлення, пристрій двічі блимає синім світлодіодом. Тепер після ініціалізації параметрів пристрою, якщо увімкнено «тихий» режим (SendSms = 0), пристрій протягом 2 секунд часто блимає синім світлодіодом. Виправлена ​​помилка, через яку номер не завжди видалявся з пам'яті командою DeletePhone. Зайнято: 48% SRAM, 78% Flash Memory.
GSM_2016_12_11-09-12.hex- Додані консольні команди AddPhone та DeletePhone, синтаксис аналогічний смс-командам. Оптимізація пам'яті. Зайнято: 43% SRAM, 79% Flash Memory.
GSM_2017_01_03-22-51.hex- Реалізована підтримка і йому подібних розширювачів портів вводу/виводу на чіпі PCF8574 для підключення додаткових 8 датчиків, у тому числі герконів. Автоматичний пошук адреси та автоматичне налаштуваннямодуля. Стандартні назви датчиків та логічний рівень їхнього спрацьовування змінюється за допомогою команди EditSensor. Змінено зміст тривожних смс для основного датчика (пін D0) «Alarm! Main sensor!» та датчика руху (пін A0) «Alarm! PIR sensor!». Додані команди EditSensor та I2CScan. Зайнято: 66% SRAM, 92% Flash Memory.
GSM_2017_01_15-23-26.hex- Підтримка модему A6 Mini. Контролює наявність зовнішнього живлення (пін D7). Додано смс команди WatchPowerOn, WatchPowerOff. Додані консольні команди ListConfig, ListSensor. Тепер смс команда EditSensor працює правильно. Незначно «урізано» виведення налагоджувальної інформації в монітор порту. Зайнято: 66% SRAM, 95% Flash Memory.
GSM_2017_01_16-23-54.hex- Тепер у повідомленні на смс команду «Info» так само повідомляється стан датчика руху. Виправлена ​​помилка через яку іноді відправлялися порожні відповідні смс повідомлення. Тепер пристрій сповіщає не лише про вимкнення, а й про відновлення зовнішнього живлення. Усі модеми стали «менше балакати», тепер у моніторі порту стало трохи чистіше. Зайнято: 66% SRAM, 95% Flash Memory.
GSM_2017_02_04-20-23.hex- Виправлена ​​помилка "Watch the power on". Тепер після зняття з охорони вимикається «тривожний пін». Після видалення номера в консоль виводиться правильна інформація. Можливо виправлена ​​помилка через яку іноді відправлялися порожні відповідні смс повідомлення. Зайнято: 66% SRAM, 90% Flash Memory.
GSM_2017_02_14-00-03.hex- Тепер за замовчуванням надсилаються смс повідомлення, параметр SendSms знову дорівнює 1. Тепер при замиканні контактів основного герконового датчика (закриття дверей) пристрій блимає синім світлодіодом протягом 2 секунд, сигналізуючи про нормальну роботу датчика. Зайнято: 66% SRAM, 90% Flash Memory.
GSM_2017_03_01-23-37.hex- Команда WatchPowerOn видалена. Додано консольну команду WatchPowerOff, ідентичну смс команді. Додано команди WatchPowerOn1, WatchPowerOn2. WatchPowerOn1 - моніторинг зовнішнього живлення увімкнений якщо сигналізація поставлена ​​на охорону, WatchPowerOn2 - моніторинг зовнішнього живлення увімкнений завжди. Реалізовано функцію постановки на охорону та зняття з охорони зовнішніми пристроями, для цього використовуються висновки A1(D15) та A2(D16). Сигналізація ставить/знімає охорону з появою на виводі A1(D15) високого рівня+5В або виведення A2(D16) низького рівня GND. Висновок A1(D15) підтягується до GND, висновок A2(D16) підтягується до +5V через резистори 20(10) кОм. Додані команди GuardButtonOn та GuardButtonOff. Тепер після постановки на охорону блимає червоний світлодіод, доки не буде перевірено цілісність контуру основного герконового датчика. Якщо контур цілий спалахує червоний світлодіод. Зайнято: 66% SRAM, 95% Flash Memory.
GSM_2017_03_12-20-04.hex- Тепер у консолі стало ще чистіше, але якщо включений тестовий режим TestOn, то в консоль виводиться додаткова інформація. Виправлено баг «Sent!», тепер у консоль правильно виводиться інформація про надсилання повідомлень. Виправлено баг «повторного хибного виклику». Тепер запит балансу має працювати коректно всіх модемах. Зайнято: 67% SRAM, 95% Flash Memory.
GSM_2017_04_16-12-00.hex- Виправлений. Тепер команди Info і Money завжди надсилатимуть смс у відповідь. Команда GuardButtonOn замінена командами GuardButtonOn1 та GuardButtonOn2. Зайнято: 67% SRAM, 99% Flash Memory.
GSM_2017_04_21-09-43.hex - не рекомендується до використання, тільки як тестування, дякую за виявлені помилки:) - Тепер параметр sendsms не впливає на відправку смс повідомлень моніторингу електромережі. Додана смс команда DelayBeforeGuard, яка відповідає за затримку при постановці на охорону, значення не може перевищувати 255 секунд. Додана смс команда DelayBeforeAlarm, що відповідає за затримку відправлення повідомлень і включення «тривожного піна» при спрацьовуванні датчиків, значення не може перевищувати 255 секунд. Видалені команди ClearSMS, тепер повідомлення видаляються автоматично після отримання. Зайнято: 68% SRAM, 100% Flash Memory.
GSM_2017_04_22-20-42.hex- Виправлені множинні помилки. Команди ClearSMS знову присутні у прошивці. Оптимізація пам'яті. Зайнято: 68% SRAM, 98% Flash Memory.
GSM_2017_04_23-17-50.hex– Тепер запит балансу має працювати коректно на всіх модемах. Постановка та зняття з охорони зовнішніми пристроями тепер працює правильно. У відповідь повідомлення смс команди Info не повинні бути порожніми. Оптимізація пам'яті. Зайнято: 68% SRAM, 98% Flash Memory.
GSM_2017_04_24-13-22.hex- Тепер передача консольних команд у модуль GSM проводиться тільки якщо включений тестовий режим. Тепер немає поділу на смс команди та консольні команди, всі команди можна передавати як через смс, так і через консоль. Можливо виправлений баг із командою Info. Оптимізація пам'яті. Зайнято: 68% SRAM, 94% Flash Memory.
GSM_2017_04_25-20-54.hex- Виправлено баг при якому команда ListConfig змінювала значення останньої події. Тепер при введенні команд через кісіль не надсилаються непотрібні смс повідомлення. Можливо виправлений баг із командою Info. Оптимізація пам'яті. Зайнято: 66% SRAM, 94% Flash Memory.
GSM_2017_04_30-12-57.hex- Тимчасово включений висновок додаткової інформаціїу консоль при надсиланні смс повідомлень та формуванні відповіді на команду Info. Можливо виправлений баг із командою Info. Оптимізація пам'яті. Зайнято: 66% SRAM, 92% Flash Memory.
GSM_2017_05_06-11-52.hex- Виправлено з функцією DelayBeforeAlarm. Зайнято: 66% SRAM, 93% Flash Memory.
GSM_2017_05_23-21-27.hex- Незначно змінено виведення інформації у консоль. Додано підтримку модулів розширення портів на PCF8574A з адресами від 0x38 до 0x3f включно. Виправлений баг с. Тепер пристрій перезавантажується автоматично після команд FullReset, ResetConfig, ResetPhone та у разі успішного виконання команди MemTest. Додано команду WatchPowerTime. Тепер можна встановити час, після якого буде надіслано смс повідомлення про відключення зовнішнього джерела живлення. Зайнято: 67% SRAM, 94% Flash Memory.
GSM_2017_05_26-20-22.hex- Виправлено ініціалізацію пам'яті датчиків плати розширення. Змінено синтаксис команди AddPhone. Додано команду EditMainPhone. Змінено принцип роботи системи повідомлень, при спрацюванні датчика спочатку будуть надіслані SMS повідомлення, після чого будуть здійснені голосові виклики. Тривожні SMS повідомлення будуть надіслані на телефонні номери з ознакою «S» (SMS). Голосові дзвінки будуть здійснені на номери з ознакою "R" (Ring). Повідомлення про вимкнення/увімкнення зовнішнього джерела живлення будуть надіслані на телефонні номери з ознакою "P" (Power). Додано команду RingTime. Тепер можна встановити тривалість тривожного голосового дзвінка, параметр може мати значення від 10 до 255 секунд. Тепер команда RingOn/RingOff глобально включає/вимикає сповіщення голосовими викликами. Додано команду ResetSensor. Зайнято: 68% SRAM, 99% Flash Memory.
GSM_2017_06_02-17-43.hex- Командам AddPhone і EditMainPhone доданий параметр «I» (Info), що відповідає за SMS повідомлення про постановку або зняття пристрою з охорони. Після додавання основного номера пристрій автоматично перезавантажується. Тепер можна вносити у пам'ять пристрою однакові номери. При додаванні другого і наступних номерів, що дублюються, з них автоматично будуть зняті атрибути «M», «S», «P» і «I». Ці номери будуть використані для повторного голосового дзвінка під час спрацювання датчиків. Виправлено баг кривого виведення в консоль після виконання команди AddPhone, тепер інформація не виводиться автоматично після додавання номера. Додано команду Reboot. Зайнято: 69% SRAM, 99% Flash Memory.
GSM_2017_06_11-00-07.hex- Тепер знову при замиканні контактів основного герконового датчика (закриття дверей) пристрій блимає синім світлодіодом протягом 2 секунд, сигналізуючи про нормальну роботу датчика, при цьому не враховується поставлений або знятий пристрій з охорони. Команди RingOn/RingOff видалені. Тепер пристрій можна зняти з охорони під час тривожного дзвінка, тепер вони здійснюються у фоновому режимі. Зайнято: 69% SRAM, 99% Flash Memory.
GSM_2017_07_04-21-52.hex- Тепер команда Pause не надсилає у відповідь смс. Видалено команди TestOn та TestOff. У всіх номерах видалена ознака Management. Зайнято: 68% SRAM, 96% Flash Memory.
GSM_2017_07_24-12-02.hex- Додані команди ReedSwitchOn/ReedSwitchOff для моніторингу основного герконового датчика, тепер його можна вмикати/відключати так само, як і датчик руху. Виправлено баг команди Info. Команди TestOn та TestOff знову присутні у прошивці. Зайнято: 68% SRAM, 96% Flash Memory.
GSM_2017_07_26-10-03.hex- Додано команду ModemID. Автоматичне визначення модему здійснюється лише якщо значення цього параметра дорівнює 0. Після встановлення значення параметра рівним 0 виконується автоматичне перезавантаження пристрою. Зайнято: 68% SRAM, 98% Flash Memory.
GSM_2017_08_03-22-03.hex- Тепер сигналізація може керувати зовнішніми пристроями. Для керування використовується аналоговий вихід A3 (D17 – використовується як цифровий). Логічний рівень виходу (+5В або GND) може бути змінений, після зміни рівня через команду налаштування пристрій буде автоматично перезавантажено. Тривалість сигналу керування зовнішнім пристроєм може бути змінена. Додані команди ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open. Деякі зміни у логіці роботи команд управління. Оптимізація пам'яті. Зайнято: 68% SRAM, 99% Flash Memory.
GSM_2017_08_10-12-17.hex- Видалено команди SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff та все, що з ними пов'язано. Команда DelayBeforeAlarm замінена розширеними командами. Змінено виведення команди Info. Оптимізовано виведення команди ListConfig у консоль. Тепер до пін D6 та A0 можуть бути підключені будь-які цифрові датчики з високим або низьким рівнем спрацьовування, у тому числі геркони. Пини D6 і A0 мають бути притягнуті до землі (GND) через опір 10 (20) ком. Якщо датчик налаштований на низький рівень спрацьовування (включений у режимі геркона), перевіряється цілісність ланцюга. Логічний рівень спрацьовування по входах D6 та A0 (+5В або GND) може бути змінений, після зміни логічного рівня пристрій автоматично буде перезавантажено. Для кожного з датчиків (main, second, PCF-плати розширення) при спрацьовуванні може бути встановлений свій час після закінчення якого буде здійснено повідомлення (смс та/або голосовий виклик). "PIR Sensor" перейменований в "Second sensor". Виправлена ​​робота плати розширення, помилка через яку пристрій завжди повідомляв про спрацювання датчиків, незалежно від того, поставлено пристрій на охорону чи ні. Тепер можна вибрати режим роботи, при якому пристрій може моніторити датчики плати розширення як у включеному режимі охорони (GuardOn), так і при вимкненому режимі (GuardOff). Додані команди PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDeleyBeforeAlarm, Second Зайнято: 68% SRAM, 99% Flash Memory.

*Наступні версії прошивок включають зміни попередніх версій.


Використовувані порти Arduino Nano v3

D4- Вихід «тривожного» піна, при спрацюванні датчика на цьому піні встановлюється сигнал високого рівня
D5- інверсний вихід «тривожного» піна, при спрацюванні датчика на цьому піні встановлюється сигнал низького рівня

D6- Герконовий датчик. Починаючи з версії GSM_2017_08_10-12-17.hex до піна D6 можуть бути підключені будь-які цифрові датчики з високим або низьким рівнем спрацьовування, у тому числі геркони. Пін D6 має бути притягнутий до землі (GND) через опір 10 (20) ком.
D7- Підключений до дільника напруги від зовнішнього джерела живлення +5В. Верхнє плече 2,2 кім, нижнє 3,3 кім.

Дільник напруги


D8- модем TX
D9- модем RX

D10- червоний світлодіод
D11- синій світлодіод
D12- Зелений світлодіод

Підключення периферії:
A0- Датчик руху. Починаючи з версії GSM_2017_08_10-12-17.hex до піна A0 можуть бути підключені будь-які цифрові датчики з високим або низьким рівнем спрацьовування, у тому числі геркони. Пін A0 має бути притягнутий до землі (GND) через опір 10 (20) ком.

A1- Вхід для зовнішнього керування. Сигналізація ставить/знімає охорону з появою на вході високого рівня +5В.
A2- інверсний вхід для зовнішнього керування. Сигналізація ставить/знімає охорону з появою на вході низького рівня GND.

A3- Настроюваний (+5В або GND) вихід для керування зовнішніми пристроями. При надходженні команди управління значення на цьому виході змінюється в залежності від того, яке було встановлено на встановлений проміжок часу.

A4- SDA I2C
A5- SLC I2C
для підключення додаткових 8 датчиків.


Команди керування для hex - прошивки

Увага!Команди виділені жирним шрифтомможуть бути виконані лише з основного номера, оскільки відповідають за конфігурацію пристрою. Решта команд може бути виконана з номерів з ознакою «Management».

SMS - команди керування не чутливі до регістру:
AddPhone- Додати номер телефону. Усього може бути додано не більше 9 номерів + 1 основний номер, який автоматично зберігається в пам'ять при першому дзвінку на пристрій після скидання на заводські установки командами ResetPhoneабо FullReset. Тобто. хто перший зателефонував на пристрій після його скидання на заводські установки той і «головний», цей номер заноситься в першу комірку пам'яті і його неможливо змінити або видалити через смс. Неможливо додати два однакові номери.
Приклад команди:



Синтаксис команди:

AddPhone- команда
: - роздільник
5 - записати в п'яту комірку пам'яті
+71234567890 - номер телефону
До версії GSM_2017_05_26-20-22.hex:
а - Параметр «Alarm» - на номери з цим параметром будуть надсилатися смс - повідомлення про спрацювання сигналізації та повідомлення про постановку або зняття з охорони.
Починаючи з версії GSM_2017_05_26-20-22.hex:
m – Параметр «Management» – дозволено керування сигналізацією
s - Параметр «SMS» - буде надіслано SMS повідомлення при спрацьовуванні датчиків
r - Параметр "Ring" - буде здійснено голосовий виклик при спрацьовуванні датчиків
p - Параметр «Power» - буде надіслано SMS повідомлення при включенні/вимкненні зовнішнього живлення
i - Параметр «Info» - буде надіслано SMS повідомлення при постановці або знятті з охорони
За відсутності параметрів "m", "s", "r", "p", "i" телефон заноситься в пам'ять, але ніяк не використовується.


DeletePhone- Видалити номер телефону.
Приклад команди:

Синтаксис команди:

DeletePhone - команда
: - роздільник
+71234567891 - номер телефону


EditMainPhone- Змінити параметри "s", "r", "p", "i" основного телефону, цей номер занесений до першого осередку пам'яті.
Приклад команди:

Синтаксис команди:

EditMainPhone - команда
: - роздільник
srpi - параметри


BalanceNum- Зміна номера запиту балансу та обробка довжини відповіді запиту. Значення за замовчуванням Beeline: #100#L22.
Приклад команди:

Синтаксис команди:

BalanceNum - команда
: - роздільник
#103# - номер запиту балансу
L24 - Довжина (len) відповіді 24 символу, що пересилається, обрізаємо спам із запиту балансу.


EditSensor- Змінити назву датчика та логічний рівень спрацьовування. Усього може бути не більше 8 додаткових датчиків. Після зміни параметрів потрібне перезавантаження пристрою.
Приклад команди:
EditSensor:1+Datchik двіженія в коридорі#h

Синтаксис команди:

EditSensor - команда
: - роздільник
1 - записати в перший осередок пам'яті
+ - роздільник
Датчик двіженія в коридорі - назва датчика, не може перевищувати 36 символів, включаючи прогалини.
#h - Ознака високого рівня логічного з датчика, при отриманні якого спрацює сигналізація. Якщо немає "#h", сигналізація буде спрацьовувати при отриманні з датчика низького логічного рівня.


SleepTime- Час «засинання» сигналізації при отриманні смс – команди «Pause», що вказується в хвилинах. Значення за замовчуванням: 15, не може бути менше ніж 1 і більше 60.
Приклад команди:

Синтаксис команди:

SleepTime - команда
: - роздільник
20 – 20 хвилин «сну».


AlarmPinTime- Час, на який вмикається/вимикається тривожний/інверсний пін, вказується в секундах. Значення за замовчуванням: 60, не може бути менше 1 секунди та більше 43200 секунд (12 годин).
Приклад команди:

Синтаксис команди:

AlarmPinTime - команда
: - роздільник
30 - 30 секунд увімкнення/вимкнення тривожного піна.


DelayBeforeGuard- Час до встановлення пристрою на охорону, після отримання відповідної команди.
Приклад команди:

Синтаксис команди:

DelayBeforeGuard - команда
: - роздільник
25 - 25 секунд до постановки на охорону


DelayBeforeAlarm- Час після закінчення якого буде відправлено «тривожне» смс повідомлення, якщо за цей період сигналізація не була знята з охорони. Замінено розширеними командами починаючи з версії GSM_2017_08_10-12-17.hex
Приклад команди:

Синтаксис команди:

DelayBeforeAlarm - команда
: - роздільник
40 - 40 секунд до відправлення «тривожного» повідомлення


WatchPowerTime- Час у хвилинах після закінчення якого буде надіслано смс повідомлення про відключення зовнішнього джерела живлення. Якщо зовнішнє живлення буде відновлено до закінчення встановленого часу, повідомлення не буде надіслано.
Приклад команди:

Синтаксис команди:

WatchPowerTime - команда
: - роздільник
5 - 5 хвилин до відправки смс повідомлення


RingTime- Тривалість тривожного голосового дзвінка, параметр може мати значення від 10 до 255 секунд.
Приклад команди:

Синтаксис команди:

RingTime - команда
: - роздільник
40 - 40 тривалість дзвінка складе 40 секунд, після чого буде викликано наступний абонент.


ModemID- Примусове встановлення моделі модему, що використовується. Можливі значення: 0 – автовизначення модему, 1 – M590, 2 – SIM800l, 3 – A6_Mini.
Приклад команди:

Синтаксис команди:

ModemID – команда
: - роздільник
2 – ID модему.


ExtDeviceTime- Кількість секунд, на яке зміниться рівень сигналу на виході керування зовнішнім пристроєм.
Приклад команди:

Синтаксис команди:

ExtDeviceTime - команда
: - роздільник
5 - 5 секунд


ExtDeviceLevelLow- Зовнішній пристрій підключений до виходу A3 управляється низьким рівнем сигналу (GND). На виході за замовчуванням буде високий рівень +5В, поки не надійде команда управління зовнішнім пристроєм
ExtDeviceLevelHigh- Зовнішній пристрій, підключений до виходу A3, керується високим рівнем сигналу (+5V). На виході за умовчанням буде присутній низький рівень GND, доки не надійде команда керування зовнішнім пристроєм

ResetSensor- Скидання параметрів датчиків розширювача порту

ResetConfig- скидання налаштувань на заводські установки

ResetPhone- видалення з пам'яті всіх телефонних номерів

FullReset- скидання налаштувань, видалення з пам'яті всіх телефонних номерів, відновлення стандартного значення BalanceNum.

RingOn- увімкнути повідомлення дзвінком на «головний» номер, записаний у першу комірку пам'яті при спрацюванні датчика. Видалено починаючи з версії GSM_2017_06_11-00-07.hex
RingOff- вимкнути повідомлення дзвінком під час спрацювання датчика. Видалено починаючи з версії GSM_2017_06_11-00-07.hex

SmsOn- увімкнути sms-повідомлення під час спрацювання датчика. Видалено починаючи з версії GSM_2017_08_10-12-17.hex
SmsOff- вимкнути sms-повідомлення під час спрацювання датчика. Видалено починаючи з версії GSM_2017_08_10-12-17.hex

PIROn- увімкнути обробку датчика руху
PIROff- вимкнути обробку датчика руху

ReedSwitchOn- увімкнути обробку основного герконового датчика
ReedSwitchOff- вимкнути обробку основного герконового датчика

WatchPowerOn- увімкнути контроль зовнішнього живлення, смс повідомлення про відключення зовнішнього живлення буде надіслано за умови, що сигналізація поставлена ​​на охорону. Видалено починаючи з версії GSM_2017_03_01-23-37.

WatchPowerOn1- увімкнути контроль зовнішнього живлення, смс повідомлення про відключення зовнішнього живлення буде надіслано за умови, що сигналізація поставлена ​​на охорону.
WatchPowerOn2- увімкнути контроль зовнішнього живлення, смс повідомлення про відключення зовнішнього живлення у будь-якому випадку буде надіслано

WatchPowerOff- Вимкнути контроль зовнішнього живлення

GuardButtonOn- керування сигналізацією зовнішніми пристроями або кнопкою включено Видалено з версії GSM_2017_04_16-12-00.
GuardButtonOn1- функція постановки чи зняттяохорони зовнішніми пристроями або кнопкою включена
GuardButtonOn2- функція тільки постановкина охорону зовнішніми пристроями або кнопкою включена, зняття з охорони здійснюється за дзвінком на пристрій або за допомогою смс команди.
GuardButtonOff- керування сигналізацією зовнішніми пристроями або кнопкою вимкнено

PCFForceOn- постійний моніторинг групи всіх датчиків модуля розширення
PCFForceOff- моніторинг групи всіх датчиків модуля розширення лише за умови встановлення пристрою на охорону

MainSensorLevelHigh- тривожне повідомлення буде надіслано при появі сигналу високого рівня (+5 В) на вході (D6) від датчика
MainSensorLevelLow- тривожне повідомлення буде надіслано при появі сигналу низького рівня (GND) на вході (D6) від датчика
MainSensorLevelOff- обробка датчика на вході (D6) вимкнена

SecondSensorLevelHigh- тривожне повідомлення буде надіслано при появі сигналу високого рівня (+5 В) на вході (A0) від датчика
SecondSensorLevelLow- тривожне повідомлення буде надіслано при появі сигналу низького рівня (GND) на вході (A0) від датчика
SecondSensorLevelOff- обробка датчика на вході (A0) вимкнена

MainDelayBeforeAlarm- час після закінчення якого буде надіслано «тривожне» смс повідомлення при спрацьовуванні основного датчика (D6), якщо за цей час сигналізація не була знята з охорони. Синтаксис аналогічний команді DelayBeforeAlarm.
SecondDelayBeforeAlarm- час після закінчення якого буде надіслано «тривожне» смс повідомлення при спрацьовуванні додаткового датчика (A0), якщо за цей період сигналізація не була знята з охорони. Синтаксис аналогічний команді DelayBeforeAlarm.
PCFDelayBeforeAlarm- час після закінчення якого буде відправлено «тривожне» смс повідомлення при спрацьовуванні датчиків плати розширення (PCF8574), якщо за цей період сигналізація не була знята з охорони. Синтаксис аналогічний команді DelayBeforeAlarm.

GuardOn – поставити на охорону
GuardOff - зняти охорони

Open - команда керування зовнішнім пристроєм

Info - перевірити стан, у відповідь на це повідомлення буде надіслано sms з інформацією про те, з якого номера була включена/вимкнена охорона

Pause - зупиняє роботу системи на час, встановлений командою sleeptime в хвилинах, система не реагує на спрацювання датчика.

TestOn - включається тестовий режим, блимає синім світлодіодом.
TestOff – вимикається тестовий режим.

LedOff – вимикає світлодіод режиму очікування.
LedOn – включає світлодіод режиму очікування.

Money - запит балансу.

ClearSms - Видалити з пам'яті всі SMS

Консольні команди (до версії GSM_2017_04_24-13-22.hex) - вводяться в моніторі порту Arduino IDE:

AddPhone – аналогічна sms-команді AddPhone

DeletePhone - аналогічна sms-команді DeletePhone

EditSensor – аналогічна sms-команді EditSensor

ListPhone - виведення в монітор порту списку збережених у пам'яті телефонів

ResetConfig – аналогічна sms-команді ResetConfig

ResetPhone - аналогічна sms-команді ResetPhone

FullReset – аналогічна sms-команді FullReset

ClearSms – аналогічна sms-команді ClearSms

WatchPowerOn1 - аналогічна sms-команді WatchPowerOn1
WatchPowerOn2 - аналогічна sms-команді WatchPowerOn2
WatchPowerOff - аналогічна SMS-команді WatchPowerOff

GuardButtonOn - аналогічна sms-команді GuardButtonOn. Видалено починаючи з версії GSM_2017_04_16-12-00
GuardButtonOn1 - аналогічна SMS-команді GuardButtonOn1
GuardButtonOn2 - аналогічна SMS-команді GuardButtonOn2
GuardButtonOff – аналогічна sms-команді GuardButtonOff

Memtest – тест енергонезалежної пам'яті пристрою, всі налаштування пристрою будуть скинуті, аналогічно команді FullReset.

I2CScan - пошук та ініціалізація підтримуваних пристроїв на шині I2C.

ListConfig – виведення в монітор порту поточної конфігурації пристрою.

ListSensor – виведення в монітор порту поточної конфігурації датчиків.

UPD. При використанні датчика руху, Для виключення помилкових спрацьовувань при роботі модему, необхідно міжпінами GNDі A0 Arduino поставити опір, дякую говоримо товаришу
AllowPhone = ("70001234501", "70001234502", "70001234503", "70001234504", "70001234505") - Номери яким дозволено керувати охороною.
AlarmPhone = («70001234501», «70001234502») - Номери для відправки sms-повідомлень при спрацюванні датчика та повідомлення про зняття або постановку на охорону. На перший номер у списку здійснюватиметься виклик при спрацьовуванні датчика якщо виконано команду RingOn, за замовчуванням ця опція включена. Це зроблено тому, що SMS-повідомлення можуть прийти з деякою затримкою, а дзвінок повинен пройти відразу.

Якщо надійшов виклик з дозволеного номера або SMS-повідомлення з командою GuardOn/GuardOff, то в залежності від поточного стану охорони буде надіслано SMS-повідомлення про постановку або зняття з охорони на номери перераховані в масиві AlarmPhone, так само буде надіслано SMS-повідомлення на номер з якого надійшов виклик.

При спрацьовуванні датчиканадсилаються SMS-повідомлення на всі номери з масиву (списку) AlarmPhone і здійсниться голосовий виклик на перший номер з цього масиву.

Світлова індикація:
Світлодіод світиться червоним кольором – поставлено на охорону.
Світлодіод світиться зеленим кольором- знято з охорони, вмикається/вимикається sms-командою LedOn/LedOff.
Світлодіод постійно блимає синім кольором - сигналізує про те, що c Arduino все в порядку, плата не зависла, використовується виключно для налагодження, включається/відключається sms-командою TestOn/TestOff.
* У коді присутня функція LedTest(), вона блимає синім світлодіодом, зроблена лише для того, щоб моніторити Arduino, блимає - значить працює, не блимає - зависла. Поки що не зависала:)

НЕ Актуально!

Підключення 2 і більше датчиків для відкритих прошивок (стосується лише цієї прошивки sketch_02_12_2016.ino)
Для підключення додаткових герконових датчиків використовуємо вільні цифрові піни D2, D3, D5 або D7. Схема підключення із додатковим датчиком на D7.

Необхідні зміни у прошивці
... #define DoorPin 6 // Номер входу, підключений до основного датчика int8_t DoorState = 0; // Змінна зберігання стану основного датчика int8_t DoorFlag = 1; // Змінна для зберігання основного датчика #define BackDoorPin 7 // Номер входу, підключений до додаткового датчика int8_t BackDoorState = 0; // Змінна для зберігання додаткового датчика int8_t BackDoorFlag = 1; // Змінна для зберігання стану додаткового датчика...
void setup() ( ... pinMode(DoorPin, INPUT); pinMode(BackDoorPin, INPUT); ...
... void Detect() ( // Зчитуємо значення з датчиків DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); //Обробка основного датчика if (DoorState == LOW && DoorFlag == 0) ( DoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); додаткового датчика if (BackDoorState == LOW && BackDoorFlag == 0) ( BackDoorFlag = 1; delay(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); ) if (BackDoorState == HIGH && BackDoorFlag == 1)( BackDoorFlag = 0; delay(100); ) ) ...

І ще дещо:
1. Діоди краще використовувати розраховані на струм 2 А, так як модуль заражає струмом в 1 А і нам ще потрібно чимось живити Arduino і модем. У цьому екземплярі використовуються діоди 1N4007, якщо вийдуть з ладу заміну на 2 А.
2. Всі резистори для світлодіода використовували на 20 кОм, щоб вночі не освітлювати весь коридор.
3. На герконовий датчик між піном GND і піном D6 також повісив резистор на 20 кОм.

На цьому поки що все. Дякую за увагу! :)

Планую купити +207 Додати до обраного Огляд сподобався +112 +243

Привіт, любий читачу! Сьогоднішня стаття присвячена створенню простої домашньої системибезпеки за допомогою доступних компонентів. Цей маленький і дешевий пристрій допоможе захистити ваше житло від проникнення за допомогою Arduino, датчика руху, дисплея і динаміка. Живлення пристрою зможе від батарейки або USB-порту комп'ютера.

Отже, почнемо!

Як воно працює?

Тіла теплокровних випромінюють в ІЧ-діапазоні, який невидимий для людських очей, проте може бути виявлений за допомогою датчиків. Такі датчики виготовляються з матеріалу, який під впливом тепла може спонтанно поляризуватися, завдяки чому це дозволяє визначити появи джерел тепла в радіусі дії датчика.

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

На малюнку видно, як лінза спотворює промені, що падають на неї.

Роботи без особливо гріються і холоднокровні випромінюють в ІЧ-діапазоні дуже слабко, тому датчик може не спрацювати у випадку, якщо тебе вирішать обнести співробітники Boston Dynamics або рептилоїди.

Коли відбувається зміна рівня інфрачервоного випромінювання в діапазоні дії, це буде оброблятися на Arduino після чого на LCD дисплеї буде виводиться статус, світлодіод буде блимати, а спікер пищати.

Що нам потрібно?

  1. (або будь-яка інша плата).
  2. (16 символів по два рядки)
  3. Один роз'єм для підключення крони до Arduino
  4. (хоча можна використовувати і звичайний динамік)
  5. USB-кабель - тільки для програмування ( прим. пров.:з нашими Arduino він завжди йде у комплекті!)
  6. Комп'ютер (знов-таки тільки для того, щоб написати та завантажити програму).

До речі, якщо не хочеться купувати всі ці деталі окремо – рекомендуємо звернути увагу на наші. Наприклад, все необхідне і навіть більше є в нашому стартовому наборі.

Підключаємо!

Підключення датчика руху дуже просте:

  1. Пін Vcc підключаємо до 5V Ардуїн.
  2. Пін Gnd підключаємо до GND Ардуїно.
  3. Пін OUT підключаємо до цифрового піну №7 від Arduino

Тепер приєднаємо світлодіод та спікер. Тут так само просто:

  1. Коротку ніжку (мінус) світлодіода підключаємо до землі
  2. Довгу ніжку (плюс) світлодіода підключаємо до виходу №13 Arduino
  3. Червоний провід спікера до виходу №10
  4. Чорний провід – до землі

І тепер найскладніше - підключення LCD дисплея 1602 Arduino. Дисплей у нас без I2C, тому потрібно багато виходів Arduino, але результат того коштуватиме. Схема представлена ​​нижче:

Нам потрібна лише частина схеми (у нас не буде регулювання контрасту потенціометром). Тому потрібно зробити лише такі:

Тепер ти знаєш, як підключити дисплей 1602 до Arduino UNO R3 (як і до будь-якої версії Arduino від Mini до Mega).

Програмуємо

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

#include int ledPin = 13; // Пін світлодіода int inputPin = 7; // Пін, якого підключений Out датчика руху int pirState = LOW; // Поточний стан (на початку нічого не виявлено) int val = 0; // Змінна читання стану цифрових входів int pinSpeaker = 10; // Пін, якого підключений динамік. Потрібно використовувати пін з ШІМ (PWM) LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Ініціаліація LCD дисплея void setup() ( // Визначення напрямку передачі даних на цифрових пінах pinMode(ledPin, OUTPUT); pinMode(inputPin, INPUT); pinMode(pinSpeaker, OUTPUT); // Запуск виведення налагоджувальної інформації через послідовний порт Serial .begin(9600);// Запуск виводу на LCD дисплей lcd.begin(16, 2); // Встановлюємо індекс на дисплеї, з якого почнемо висновок // (2 символ, 0 рядки) // Виведення на LCD дисплей lcd.print("P.I.R Motion") // Знову переміщаємо lcd.setCursor(5, 1); // Виводимо lcd.print("Sensor"); що вивели delay(5000);// Очистка lcd.clear(); lcd.setCursor(3, 0); lcd.print("Waiting For"); показ датчика val = digitalRead(inputPin); if (val == HIGH) ( // Якщо є рух, то запалюємо світлодіод і включаємо сирену digitalWrite(ledPin, HIGH); playTone(300, 300); delay(150); // Якщо руху до цього моменту був, виводимо повідомлення // що він виявлено // Код нижче потрібен у тому, щоб писати лише зміну стану, а чи не щоразу виводити значення if (pirState == LOW) ( Serial.println( "Motion detected!"); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Motion Detected!"); LOW); playTone(0, 0); delay(300); ; lcd.setCursor(3, 0); / Функція відтворення звуку. Duration (тривалість) - в мілісекундах, Freq (частота) - в Гц void playTone (long duration, int freq) (duration * = 1000; int period = (1.0 / freq) * 100000; long elapsed_time = 0; while (elapsed_< duration) { digitalWrite(pinSpeaker,HIGH); delayMicroseconds(period / 2); digitalWrite(pinSpeaker, LOW); delayMicroseconds(period / 2); elapsed_time += (period); } }