Статьи

Домашня сигналізація на Arduino

  1. Як воно працює?
  2. Що нам буде потрібно?
  3. Підключаємо!
  4. програмуємо
  5. висновок
  6. джерела

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

Тож почнемо!

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

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

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

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

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

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

Що нам буде потрібно?

  1. Arduino UNO (Або будь-яка інша плата Arduino-сумісна плата ).
  2. Датчик руху
  3. Дисплей LCD 1602 (16 символів по два рядки)
  4. Одна батарейка Крона
  5. Один роз'єм для підключення крони до Arduino
  6. один світлодіод
  7. один спікер (Хоча можна використовувати і звичайний динамік)
  8. Макетна плата
  9. Провід тато-тато
  10. USB-кабель - тільки для програмування (прим. Пер .: з нашими Arduino він завжди йде в комплекті!)
  11. Комп'ютер (знову ж тільки для того, щоб написати і завантажити програму).

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

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

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

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

Пін OUT підключаємо до цифрового піну №7 від Arduino

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

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

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

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

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

пін дисплея

пін Arduino

RS

12

Enable

11

D4

5

D5

4

D6

3

D7

2

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

програмуємо

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

#include <LiquidCrystal.h> 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.setCursor (2, 0); // Висновок на LCD дисплей lcd.print ( "PIR Motion"); // Знову переміщаємо lcd.setCursor (5, 1); // Виводимо lcd.print ( "Sensor"); // Пауза, щоб встигли прочитати, що вивели delay (5000); // Очищення lcd.clear (); // Аналогічно lcd.setCursor (0, 0); lcd.print ( "Processing Data."); delay (3000); lcd.clear (); lcd.setCursor (3, 0); lcd.print ( "Waiting For"); lcd.setCursor (3, 1); lcd.print ( "Motion ...."); } Void loop () {// Прочитуємо показання датчика 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!"); pirState = HIGH; }} Else {// Якщо рух закінчилося digitalWrite (ledPin, LOW); playTone (0, 0); delay (300); if (pirState == HIGH) {// Повідомляємо, що рух було, але вже закінчилося Serial.println ( "Motion ended!"); lcd.clear (); lcd.setCursor (3, 0); lcd.print ( "Waiting For"); lcd.setCursor (3, 1); lcd.print ( "Motion ...."); pirState = LOW; }}} // Функція відтворення звуку. Duration (тривалість) - в мілісекундах, Freq (частота) - в Гц void playTone (long duration, int freq) {duration * = 1000; int period = (1.0 / freq) * 100000; long elapsed_time = 0; while (elapsed_time <duration) {digitalWrite (pinSpeaker, HIGH); delayMicroseconds (period / 2); digitalWrite (pinSpeaker, LOW); delayMicroseconds (period / 2); elapsed_time + = (period); }}

висновок

Підсумкова схема представлена ​​на малюнку:

На ній Arduino вже запитана від батарейки 9V, а не від USB порту.

джерела

  1. http://www.instructables.com/id/Home-Security-Alarm-or-a-Motion-Detector-Using-Ard/?ALLSTEPS

Як воно працює?
Що нам буде потрібно?
Як воно працює?
Що нам буде потрібно?
Com/id/Home-Security-Alarm-or-a-Motion-Detector-Using-Ard/?

Новости