Беспроводная сигнализация на базе Arduino. Бюджетная GSM сигнализация с мозгами из Arduino Схема сигнализации для дачи на ардуино

Кражи автомобилей на протяжении последнего десятилетия занимают одно из значимых мест в структуре совершаемых в мире преступлений. Это обусловлено не столько удельным весом данной категории хищений относительно общего количества преступлений, сколько существенностью причиняемого ущерба ввиду большой стоимости автомобилей. Слабая эффективность принимаемых мер в области борьбы с кражами автотранспорта к концу 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В
- Все детали привода выполнены из металла


Подходит!

Собираем

Про подключение каждого датчика в «гугле» огромное количество статей. И придумывать новые велосипеды у меня желания нет, поэтому оставлю ссылки на простые и рабочие варианты.

Являются специальными аппаратными платформами, на основе которых можно создавать различные электронные устройства, включая и . Устройства этого типа отличаются простой конструкцией и возможностью программирования алгоритмов их работы. Благодаря этому, созданная с помощью Arduino GSM сигнализация, может максимально настраиваться под объект, который она будет охранять.

Что собой представляет модуль Arduino?

Arduino реализуются в виде небольших плат, которые имеют собственный микропроцессор и память. На плате также располагается набор функциональных контактов, к которым можно подключать различные электрифицированные устройства, включая и датчики, используемые для охранных систем.

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

Сложно ли работать с Arduino?

Модули Arduino отличаются высокой популярностью среди многих пользователей. Это стало возможным благодаря своей простоте и доступности.

Программы для управления модулями пишутся с использованием обычного C++ и дополнений в виде простых функций управления процессами ввода/вывода на контактах модуля. Кроме этого, для программирования может применяться и бесплатная программная среда Arduino IDE, функционирующая под Windows, Linux или Mac OS.

С модулями Arduino существенно упрощена процедура сборки устройств. GSM сигнализация на Ардуино может создаваться без потребности в паяльнике – сборка происходит с использованием макетной доски, перемычек и проводов.

Как создать сигнализацию с помощью Arduino?

К основным требованиям, которым должна отвечать созданная gsm сигнализация на Ардуино своими руками относятся:

  • оповещать владельца объекта о взломе или проникновении;
  • поддержке внешних систем типа звуковая сирена, сигнальные фонари;
  • управление сигнализацией через СМС или звонок;
  • автономная работа без внешнего питания.

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

  • модуль Arduino;
  • набор функциональных датчиков;
  • или модем;
  • источник автономного питания;
  • внешние исполнительные устройства.

Отличительной особенностью модулей Ардуино является использование специальных плат расширения. С их помощью осуществляется подключение всех дополнительных устройств к Arduino, которые требуются для сборки конфигурации охранной системы. Такие платы устанавливаются поверх модуля Ардуино в виде «бутерброда», а уже к самим платам подключаются соответствующие вспомогательные устройства.

Как это работает?

При срабатывании одного из подключенных датчиков происходит передача сигнала к процессору модуля Arduino. Используя загруженный пользовательский софт, микропроцессор производит его обработку по определенному алгоритму. В результате этого может формироваться команда на срабатывание внешнего исполнительного устройства, которая передается к нему через соответствующую плату расширения-сопряжения.

Чтобы обеспечить возможность оправки предупредительных сигналов владельцу дома или квартиры, которые охраняются, к модулю Arduino, через плату расширения, подключается специальный модуль GSM. В него устанавливается SIM-карта одного из провайдеров сотовой связи.

При отсутствии специального GSM-адаптера его роль может выполнять и обычный мобильный телефон. Кроме отправки СМС-сообщений с предупреждением о тревоге и дозвона, наличие сотовой связи позволит управлять GSM сигнализацией на Ардуино дистанционно, а также контролировать состояние объекта, отправляя специальные запросы.

«Обратите внимание!

Для связи с владельцем объекта, кроме GSM-модулей могут использоваться и обычные модемы, которые обеспечивают связь через интернет.»

В таком случае, когда срабатывает датчик, обработанный процессором сигнал, передается через модем на специальный портал или сайт. А уже из сайта осуществляется автоматическое генерирование предупредительной СМС или рассылки на привязанный e-mail.

Выводы

Использование модулей Arduino позволит пользователям самостоятельно проектировать GSM-сигнализации, которые могут работать с разно функциональными датчиками и управлять внешними устройствами. Благодаря возможности применения различных датчиков функции сигнализации можно существенно расширить и создать комплекс, который будет следить не только за безопасностью объекта, а и за его состоянием. Например, можно будет контролировать температуру на объекте, фиксировать утечку воды и газа, перекрывать их подачу в случае аварии и многое другое.

Простая охранная сигнализация для дома на Arduino Uno — тема данного обзора. Несмотря на то, что микроконтроллеры данного семейства были изначально предназначены для обучения студентов, вполне реально сделать действительно полезный проект на Arduino. Охранные сигнализации для дома или садового участка смогут предупредить владельца о ЧП и послать сообщение с датчиков на смартфон.

Сигнализация для дома на Arduino

Рассмотрим, как сделать на Arduino Uno или Nano сигнализацию для дома, загородного садового участка или гаража. В проекте мы использовали сенсор движения , датчик воды и температуры — это набор основных сенсоров для самой простой системы оповещения. Вы узнаете о прорыве водопровода, снижении температуры в доме или проникновении посторонних людей в помещении в любое время и в любом месте.

Датчики Ардуино для охранной сигнализации

В данном проекте для передачи информации по сети Интернет мы использовали старый смартфон. Соответственно в месте расположения вашей недвижимости должен быть сигнал GPRS и у любого сотового оператора подключен самый простой тариф с выходом в Интернет. Если эти условия не выполняются, то в охранной системе предусмотрена звуковая сирена, которая тоже может спугнуть грабителей.

В проекте использованы самые простые сенсоры — температурный датчик DHT11 , датчик утечки воды, который можно сделать самому , а также датчик движения. Если вы решите сделать более сложную сигнализацию — рекомендуем вам посмотреть проект пожарной сигнализации или сигнализации на GSM. Также потребуется установить приложение на смартфон и зарегистрировать два аккаунта в Твиттере.

Как сделать сигнализацию Ардуино

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • смартфон с выходом в Интернет;
  • датчик температуры и влажности DHT11;
  • датчик утечки воды (water sensor);
  • датчик движения и кнопка (переключатель);
  • светодиоды, резисторы, провода и т.д.


Скетч для сигнализации, все необходимые библиотеки и приложение для смартфона можно скачать одним архивом . Отметим, что нельзя будет дистанционно управлять Arduino, так как проект максимально простой. Вы сможете лишь в сообщениях на смартфоне узнавать о показаниях датчиков, установленных в доме, через заданный промежуток времени или при срабатывании какого-либо датчика.

Скетч охранной сигнализации на Arduino Uno / Nano

#include // подключение библиотеки SoftwareSerial.h SoftwareSerial mySerial(2, 3); // указываем пины rx и tx соответственно #include // подключаем библиотеку для датчика DHT dht(16, DHT11); // сообщаем на каком порту будет датчик int tmp; #define PIR 5 // порт для подключения датчика движения int pir; #define KNP 7 // порт для подключения переключателя int knp; #define WTR 19 // порт для подключения датчика воды int wtr; #define LED 11 // порт для подключения светодиодов #define BUZ 9 // порт для подключения пьезодинамика // строки для идентификации информации, получаемой на смартфоне String stringT = String ("*" ); String stringP = String ("^" ); String stringW = String ("-" ); String stringH = String ("#" ); // переменные для счетчиков, отсчета циклов и т.д. unsigned long motion; unsigned long hour; byte m, s1, s2, s3, c = 10; void setup () { mySerial.begin (9600); Serial .begin (9600); dht.begin (); pinMode (PIR, INPUT ); analogWrite (PIR, LOW ); pinMode (KNP, INPUT ); analogWrite (KNP, LOW ); pinMode (WTR, INPUT ); analogWrite (WTR, LOW ); // проверка светодиодов и пищалки при включении питания pinMode (BUZ, OUTPUT ); pinMode (LED, OUTPUT ); analogWrite (LED, 255); tone (BUZ, 100); delay (1000); analogWrite (LED, 0); noTone (BUZ); delay (1000); } void loop () { tmp = dht.readTemperature (); pir = digitalRead (PIR); knp = digitalRead (KNP); wtr = analogRead (WTR); // запускаем счетчик hour = millis (); // 3600000 миллисекунд - это 1 час, 10800000 - 3 часа // если прошло 3 часа - отправляем данные на смартфон // при необходимости ставите свои значения вместо 10800000 if (millis () - hour > 10800000) { mySerial.println (tmp + stringT); mySerial.println (stringH); // отправляем сигнал, что 3 часа прошло } // ведем отсчет циклов, каждый десятый цикл отправляем данные на смартфон c--; Serial .print (c); Serial .println (" - цикл" ); Serial .println ("" ); delay (1000); noTone (BUZ); if (c > 10) { c = 10; } if (c < 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // отправляем значение температуры mySerial.println (pir + stringP); // отправляем наличие движения в доме mySerial.println (wtr + stringW); // отправляем данные с датчиков воды // СРАБОТАЛ ДАТЧИК ДВИЖЕНИЯ И КНОПКА ВЫКЛЮЧЕНА - ВКЛЮЧАЕМ СВЕТ if (pir == HIGH && knp == LOW ) { analogWrite (LED, 255); } // ДАТЧИК ДВИЖЕНИЯ ОТКЛЮЧИЛСЯ И КНОПКА ВЫКЛЮЧЕНА - ВЫКЛЮЧАЕМ СВЕТ if (pir == LOW && knp == LOW ) { motion = millis (); while (pir == LOW ) { tmp = dht.readTemperature (); pir = digitalRead(PIR); knp = digitalRead(KNP); wtr = analogRead(WTR); c--; Serial .print (c); Serial .println (" - цикл" ); Serial .println ("" ); delay (1000); noTone (BUZ); if (c > 10) { c = 10; } if (c < 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // отправляем значение температуры mySerial.println (pir + stringP); // отправляем наличие движения в доме mySerial.println (wtr + stringW); // отправляем данные с датчиков воды // выводим на монитор порта номер все данные с датчиков Serial .print ("TMP = " ); Serial .println (tmp); Serial .print ("PIR = " ); Serial .println (pir); Serial .print ("KNP = " ); Serial .println (knp); Serial .print ("WTR = " ); Serial .println (wtr); Serial .println ("" ); } // ИНТЕРВАЛ ВЫКЛЮЧЕНИЯ СВЕТА В МИЛЛИСЕКУНДАХ if (millis() - motion > 5000) { analogWrite (LED, 0); break ; } if (pir == HIGH ) { analogWrite (LED, 255); break ; } } } // СРАБОТАЛ ДАТЧИК ДВИЖЕНИЯ И КНОПКА ВКЛЮЧЕНА - ЗАПУСКАЕМ ТАЙМЕР if (pir == HIGH && knp == HIGH ) { motion = millis (); delay (1000); analogWrite (LED, 255); Serial .println ("СРАБОТАЛ ДАТЧИК" ); Serial .println ("" ); delay (1000); while (knp == HIGH) { tmp = dht.readTemperature (); pir = digitalRead(PIR); knp = digitalRead(KNP); wtr = analogRead(WTR); c--; Serial .print (c); Serial .println (" - цикл" ); Serial .println ("" ); delay (1000); noTone (BUZ); if (c > 10) { c = 10; } if (c < 1) { s1 = 0; s2 = 0; s3 = 0; mySerial.println (tmp + stringT); // отправляем значение температуры mySerial.println (pir + stringP); // отправляем наличие движения в доме mySerial.println (wtr + stringW); // отправляем данные с датчиков воды // выводим на монитор порта номер все данные с датчиков Serial .print ("TMP = " ); Serial .println (tmp); Serial .print ("PIR = " ); Serial .println (pir); Serial .print ("KNP = " ); Serial .println (knp); Serial .print ("WTR = " ); Serial .println (wtr); Serial .println ("" ); } // ЕСЛИ ДАТЧИК ДВИЖЕНИЯ ОТКЛЮЧИЛИ - ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (knp == LOW ) { Serial .println ("СИГНАЛИЗАЦИЯ ОТКЛЮЧЕНА" ); Serial .println ("" ); delay (1000); } // ЕСЛИ ПРОШЛО БОЛЕЕ 10 СЕКУНД - ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (millis () - motion > 10000 && s1 != 1) { m = 1; goto message1; } delay (1000); } } // ЕСЛИ ПРОИЗОШЛА УТЕЧКА ВОДЫ - ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (wtr > 500 && s2 != 2) { m = 2; goto message2; } if (wtr > 500) { tone (BUZ, 400); } if (wtr <= 500) { noTone (BUZ); } // ЕСЛИ УПАЛА ТЕМПЕРАТУРА - ОТПРАВКА СООБЩЕНИЯ НА БЛЮТУЗ if (tmp < 20 && s3 != 3) { m = 3; goto message3; } if (tmp < 20) { tone (BUZ, 200); } if (tmp >= 20) { noTone (BUZ); } message1: while (m == 1) { Serial .println ("СИГНАЛ ТРЕВОГИ ОТПРАВЛЕН НА БЛЮТУЗ" // отправляем значение температуры mySerial.println (1 + stringP); // отправляем наличие движения в доме mySerial.println (wtr + stringW); // отправляем данные с датчиков воды s1 = 1; m = 0; break ; } message2: while (m == 2) { Serial .println ("СИГНАЛ УТЕЧКИ ВОДЫ ОТПРАВЛЕН НА БЛЮТУЗ" ); Serial .println ("" ); delay (1000); mySerial.println (tmp + stringT); // отправляем значение температуры mySerial.println (pir + stringP); // отправляем наличие движения в доме mySerial.println (500 + stringW); // отправляем данные с датчиков воды s2 = 2; m = 0; break ; } message3: while (m == 3) { Serial .println ("СИГНАЛ ТЕМПЕРАТУРЫ ОТПРАВЛЕН НА БЛЮТУЗ" ); Serial .println ("" ); delay (1000); mySerial.println (20 + stringT); // отправляем значение температуры mySerial.println (pir + stringP); // отправляем наличие движения в доме mySerial.println (wtr + stringW); // отправляем данные с датчиков воды s3 = 3; m = 0; break ; } }

Пояснения к коду:

На первый взгляд схема может показаться сложной, однако это не так. Сигнализацию можно собрать на любой плате, в том числе и Arduino Uno. Вместо светодиодов можно можно использовать LED ленту, но при этом питание для платы нужно будет уже 12 Вольт, и подключать LED ленту не к 5V, а к пину Vin Arduino. Со светодиодами можно использовать для питания схемы обычную зарядку от телефона на 5 Вольт.

Установка приложения на смартфон для сигнализации

Чтобы установить приложение закачайте файл home_twit.apk на свой телефон через USB шнур, найдите его в памяти телефона и нажмите «Установить». Этот телефон должен быть всегда в зоне Bluethoth сигнала Ардуино. После установки откройте приложение и нажмите кнопку «Настроить». Здесь потребуется указать минимальное и максимальное значение температуры, при которой будет отправляться сообщение.

А сейчас самое сложное — настройка аккаунтов в Twitter. Укажите в настройках логин пользователя в Твиттере, кому вы будете отправлять сообщение. Также требуется указать логин, API key и API secret key от лица которого будут поступать сообщения. Последние нововведения обусловлены борьбой со спамом и сбором информации о пользователях в соцсети. Как получить API key и API secret — читайте в этом обзоре.

На телефоне, который будет всегда при вас и будет получать сообщения потребуется установить официальное приложение Twitter с PlayMarket и войти в него под нужным логином. В итоге приложение signalizaciya.apk с телефона, находящегося в доме, будет собирать данные с датчиков Ардуино и отправлять их личным сообщением через Твиттер пользователю, под чьим логином вы установили приложение Twitter.

Если у вас возникли проблемы с настройками сигнализации на Ардуино — пишите свои вопросы в комментариях к этому обзору.

Инфракрасные (ИК, 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 (sensor1_value > 400 || sensor2_value > 400) { while(true) { digitalWrite(buzzer,HIGH); // включить сигнал тревоги if(digitalRead(pushbutton) == HIGH) break; } } else { digitalWrite(buzzer,LOW); // выключить сигнал тревоги } }

Видео



Похожие публикации