Оглавление:

Беспроводная система сигнализации Arduino с использованием существующих датчиков: 9 шагов (с изображениями)
Беспроводная система сигнализации Arduino с использованием существующих датчиков: 9 шагов (с изображениями)

Видео: Беспроводная система сигнализации Arduino с использованием существующих датчиков: 9 шагов (с изображениями)

Видео: Беспроводная система сигнализации Arduino с использованием существующих датчиков: 9 шагов (с изображениями)
Видео: Уроки Ардуино #0 - что такое Arduino, куда подключаются датчики и как питать Ардуино 2024, Июль
Anonim
Беспроводная система сигнализации Arduino с использованием существующих датчиков
Беспроводная система сигнализации Arduino с использованием существующих датчиков
Беспроводная система сигнализации Arduino с использованием существующих датчиков
Беспроводная система сигнализации Arduino с использованием существующих датчиков
Беспроводная система сигнализации Arduino с использованием существующих датчиков
Беспроводная система сигнализации Arduino с использованием существующих датчиков
Беспроводная система сигнализации Arduino с использованием существующих датчиков
Беспроводная система сигнализации Arduino с использованием существующих датчиков

Этот проект можно построить примерно за полчаса по цене около 20 долларов, если у вас есть существующие беспроводные датчики сигнализации 433 или 315 МГц.

Это также может быть совершенно новый проект с беспроводными датчиками сигнализации, такими как инфракрасные датчики движения и герконовые переключатели, которые легко и дешево доступны в Интернете. Просто найдите датчики 433 МГц или 315 МГц, которые используют кодировку PT2262 или EV1527.

Я уверен, что есть много людей вроде меня, которые приобрели систему сигнализации GSM / 2G с беспроводными датчиками и остались довольны ею, однако, когда сеть 2G / GSM была отключена там, где я живу, у меня осталась система сигнализации, которую я мог больше не программируйте и даже не устанавливайте на нем время. Однажды, задаваясь вопросом, что я могу сделать, чтобы мой будильник снова заработал, мне пришло в голову проверить, может ли Arduino получать сигналы от датчиков. Я наткнулся на нестандартный https://www.instructables.com/id/Decoding-and-sending-433MHz-RF-codes-with-Arduino-/ и после некоторых экспериментов определил, что могу получать сигналы от моих существующих датчиков. Я начал процесс создания системы сигнализации, которая могла бы заменить мою существующую сигнализацию, а также обеспечила бы расширенные функциональные возможности. Одна из проблем со старой сигнализацией заключалась в том, что я никогда не знал, какой именно из 25 датчиков сработал, добавив ЖК-экран к моей новой сборке сигнализации, и теперь я получаю текст на ЖК-дисплее, указывающий, какой именно датчик был активирован. Новый будильник по-прежнему можно активировать вручную с помощью моих существующих беспроводных брелоков, и у него есть часы реального времени, которые позволяют ему автоматически ставить и снимать с охраны в заданное время дня.

Запасы

См. Дополнительные примечания в конце, чтобы убедиться, что вы используете правильную версию этих частей.

Arduino Uno или аналогичный

Модуль приемника 433 или 315 МГц для Arduino

Модуль часов реального времени DS3231 для Arduino

Модуль I2C 16x2 LDC для Arduino

Беспроводные герконы сигнализации, датчики движения и дистанционные брелоки по желанию

Пьезо-зуммер

Светодиод и резистор 220 Ом

Макетная плата (необязательно, но рекомендуется)

Подходящий блок питания для Arduino

Провода перемычки и т. Д.

ПК с установленной Arduino IDE

Базовые знания Arduino

Шаг 1. Расходные материалы

Запасы
Запасы
Запасы
Запасы
Запасы
Запасы

Некоторые изображения выше материалов, которые вам понадобятся для этого проекта.

Шаг 2. Подключите Ardunio и модули, как показано на рисунке

Подключите Ardunio и модули, как показано на рисунке
Подключите Ardunio и модули, как показано на рисунке

Пьезо между контактом 5 Arduino и землей

Светодиод между контактом 8 Arduino и резистором 220 Ом, затем заземлением

Приемник 433 или 315 МГц, VCC на 5 В, GND на землю и один из двух выводов данных на вывод 2 Arduino

ЖК-модуль I2C 16X2 VCC на 5 В, GND на землю, контакты SCL SDA к SCL SDA Arduino (контакт A5 - SCL, контакт A4 - SDA)

Модуль DS3231 RTC VCC к 5 В, GND к земле, контакты SCL SDA к SCL SDA Arduino (есть 2-й набор, расположенный над контактами GND и AREF большинства Arduino)

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

Шаг 3. Добавьте необходимые библиотеки в IDE Arduino

Добавьте необходимые библиотеки в IDE Arduino
Добавьте необходимые библиотеки в IDE Arduino
Добавьте необходимые библиотеки в IDE Arduino
Добавьте необходимые библиотеки в IDE Arduino
Добавьте необходимые библиотеки в IDE Arduino
Добавьте необходимые библиотеки в IDE Arduino

В Arduino Sketch для запуска будильника используются некоторые библиотеки, которые по умолчанию еще не установлены в Arduino IDE.

Чтобы добавить библиотеку RCSwitch в IDE Arduino. Откройте IDE Arduino, в верхнем меню выберите «Эскиз», затем в раскрывающемся списке выберите «Включить библиотеку» и в следующем раскрывающемся списке выберите «Управление библиотеками». Затем в поле «Фильтр поиска» введите «RCSW», затем нажмите «Установить» для «rc-switch by sui77».

Подробные инструкции по добавлению библиотек на

Пока мы находимся в этом, нам также необходимо добавить библиотеки Time, TimeAlarms, DS1307RTC и LiquidCrystal_I2C, та же процедура, что и выше, но поиск имени каждой новой библиотеки и установка. См. Снимки экрана выше, если не уверены, какие библиотеки использовать.

Часы реального времени DS3231 совместимы с библиотекой DS1307RTC и используют ее.

Шаг 4: Далее нам нужно получить коды для ваших датчиков

Далее нам нужно получить коды для ваших датчиков
Далее нам нужно получить коды для ваших датчиков
Далее нам нужно получить коды для ваших датчиков
Далее нам нужно получить коды для ваших датчиков

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

На обоих сайтах имеется обширная информация о том, как получить эти коды;

www.instructables.com/id/Decoding-and-sending-433MHz-RF-codes-with-Arduino-/

github.com/sui77/rc-switch/wiki

Однако вот моя сокращенная версия;

Чтобы получить коды, которые отправляют ваши датчики и брелоки дистанционного управления, подключите Arduino, собранную на шаге 1, к ПК через USB-кабель и откройте Arduino IDE. Затем в среде Arduino IDE перейдите к раскрывающемуся меню «Файл», затем перейдите к «Примеры», прокрутите список примеров эскизов, пока не найдете «RCSWITCH», затем выберите эскиз «ReceiveDemo_Advanced» и загрузите его в Arduino. После успешной загрузки скетча откройте последовательный монитор IDE Arduino, который все еще подключен к вашему ПК через USB. Теперь активируйте первый из датчиков, для которого вы хотите получить код, выход RCSwitch появится в окне последовательного монитора. Для этого проекта мы ищем десятичные коды, как показано на скриншоте 2. Вам нужно будет несколько раз активировать датчик, ища десятичное значение, которое появляется чаще всего, иногда будут разные значения, смешанные с истинным значением, это вызвано из-за помех от случайных радиоволн или других устройств, работающих на той же частоте.

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

Шаг 5: шаблон кода Arduino

Ниже представлена копия моего кода Arduino в виде файла.ino с именем Wireless_Alarm. Вы можете щелкнуть по нему, и он должен открыться в среде Arduino IDE. Я не программист, мой код частично собран из примеров, найденных в Arduino IDE, вероятно, он не особенно элегантен, но он действительно работает и был надежным в течение длительного периода времени.

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

Шаг 6: Вставьте коды, полученные на шаге 5, в шаблон Arduino Sketch

Теперь о шагах по настройке кода для датчиков и радиобрелоков, которые вы используете.

Если вы откроете скетч Wireless_Alarm в своей среде IDE, вы увидите строку 111.

if (mySwitch.getReceivedValue () == 115166236) // Код кнопки включения брелока

Если в существующем коде он читается как 115166236, вам необходимо заменить это число десятичным кодом для кнопки постановки на охрану вашего брелока, который вы записали на шаге 5.

Например, если на шаге 5 вы получили десятичное число 1154321, вы измените строку 111, чтобы она теперь читалась;

if (mySwitch.getReceivedValue () == 1154321) // Код кнопки включения брелока

Выполните ту же процедуру для строки 125.

if (mySwitch.getReceivedValue () == 115166234) // Код кнопки снятия брелка с охраны

Замените 115166234 код кнопки снятия с охраны вашего брелока, который вы записали на шаге 5.

Если вы хотите использовать несколько удаленных брелоков для постановки и снятия с охраны, скопируйте и вставьте строки с 111 по 136 столько раз, сколько потребуется, затем измените значения в соответствии с вашими другими удаленными брелоками, но лучше всего начать с одного пульта, пока вы не будете уверены, что изменили эскиз рабочий.

Теперь кодируем датчики тревоги на скетче в строке 140.

if (ledState == HIGH && mySwitch.getReceivedValue () == 1151640) // Действие для шкафа офиса отправителя сигнала

Выньте 1151640 и вставьте десятичное значение одного из ваших датчиков тревоги.

Затем в строке 158.

lcd.print (F («Шкаф офисный»)); // выводим сообщение на ЖК-дисплей, чтобы узнать, какой датчик был активирован (и идем искать грабителя:)

Измените шкаф Office на то, что вы хотели бы отображать на ЖК-дисплее для этого датчика. Например, если вы хотите, чтобы на нем было написано «Кухня», или сделайте так, чтобы линия выглядела так:

lcd.print (F («Кухонная дверь»)); // выводим сообщение на ЖК-дисплей, чтобы узнать, какой датчик сработал (идем и ищем грабителя:)

Имена не должны превышать 16 символов.

Между строками 165 и 187 находится шаблон, который нужно скопировать и вставить столько раз, сколько требуется, в строки непосредственно под 187. Замените число после mySwitch.getReceivedValue () == десятичным числом одного из ваших других датчиков, записанных на шаге 5. и измените имя в "" в lcd.print (F ("sensornamehere")); имя, которое вы хотите дать своему датчику.

Если вы не используете дистанционные брелоки для постановки и снятия с охраны, вы можете просто игнорировать строки 111-136 или поставить // в начале каждой из нежелательных строк, и Arduino не будет их читать.

Не забудьте сохранить файл после внесения изменений.

Шаг 7: Загрузите измененный.ino на свой Arduino и проверьте

Загрузите измененный.ino на свой Arduino и проверьте
Загрузите измененный.ino на свой Arduino и проверьте
Загрузите измененный.ino на свой Arduino и проверьте
Загрузите измененный.ino на свой Arduino и проверьте
Загрузите измененный.ino на свой Arduino и проверьте
Загрузите измененный.ino на свой Arduino и проверьте

Пока Arduino все еще подключен к вашему ПК через USB, загрузите эскиз на плату Arduino. После успешного завершения загрузки на ЖК-дисплее должно появиться сообщение «Тревога при снятии с охраны». Нажмите кнопку постановки на охрану на пульте дистанционного управления, и на ЖК-дисплее должно появиться сообщение «Тревога при постановке на охрану», а светодиодный индикатор должен загореться, чтобы вы знали, что он поставлен на охрану. Теперь активируйте датчик, когда он поставлен на охрану, на ЖК-дисплее должно отображаться сообщение «Сигнал тревоги с отметкой времени» и расположение датчика, звуковой сигнал должен звучать в течение 2 минут, если вы не нажмете кнопку снятия с охраны. Если вы не получаете этот результат, перепроверьте коды, полученные на шаге 5, и изменения, которые вы внесли в код на предыдущем шаге, также перепроверьте подключение всех компонентов. Если ЖК-дисплей вообще не читает, на задней панели ЖК-модуля есть регулировка контрастности. После того, как контраст установлен правильно, если ЖК-дисплей все еще не читает, попробуйте изменить адрес ЖК-дисплея с 0x3f на 0x27 в строке 12 эскиза. Устранение неполадок с ЖК-дисплеем здесь Руководство по ЖК-дисплею I2C

Шаг 8: Установка времени на модуле RTC и изменение времени постановки и снятия с охраны

Надеюсь, ваш RTC уже был установлен с правильным временем, но если вы не открываете IDE, выберите «Файл» и в раскрывающемся списке нажмите «Примеры», прокрутите вниз до «DS1307RTC» и выберите скетч «SetTime», загрузите скетч на свой Arduino, и он установит часы реального времени со временем с вашего ПК. Затем вам нужно будет перезагрузить скетч Wireless_Alarm на ваш Arduino.

Предоставляемый мной Wireless_Alarm.ino по умолчанию автоматически ставит будильник на охрану в 22:15 каждую ночь и снимает с охраны в 6:00 каждое утро. Чтобы изменить это время, измените эскиз в строках 71 и 72. Время указано в скобках после Alarm.alarmRepeat в формате ЧЧ, ММ, СС. измените это на любое удобное для вас время.

Alarm.alarmRepeat (6, 00, 0, MorningAlarm); // Время снятия с охраны

Alarm.alarmRepeat (22, 15, 0, EveningAlarm); // время ARM

Таким образом, чтобы изменить время снятия с охраны на 9:15 утра и время постановки на охрану до 17:30, код будет выглядеть так:

Alarm.alarmRepeat (9, 15, 0, MorningAlarm); // Время снятия с охраны

Alarm.alarmRepeat (17, 30, 0, EveningAlarm); // время ARM

Если вы не хотите, чтобы сигнализация автоматически включалась и снималась с охраны, поместите // перед двумя строками, и они не будут использоваться.

//Alarm.alarmRepeat(6, 00, 0, MorningAlarm); // Время снятия с охраны

//Alarm.alarmRepeat(22, 15, 0, EveningAlarm); // Время постановки на охрану

Время, в течение которого звучит сигнал будильника, можно изменить, изменив строку 22.

const long interval = 120000; // миллисекундная задержка для продолжительности звукового сигнала

Интервал указывается в миллисекундах, поэтому 120000 = 120 секунд, при изменении 120000 на 30000 звуковой сигнал будет звучать в течение 30 секунд.

Соленоид для включения сирены, стробоскопа, звукового сигнала большой громкости и т. Д. Также может быть подключен к контакту 7 или 9 и будет работать в течение «интервала», как указано выше. Имейте в виду, что максимальная нагрузка на вывод Arduino не должна превышать 40 мА.

Шаг 9: Дополнительные примечания

При выборе модуля приемника 433 или 315 МГц для Arduino вы должны выбрать частоту, соответствующую датчикам тревоги, которые вы собираетесь использовать. Я предлагаю купить модуль, который поставляется с небольшой спиральной спиральной антенной для лучшей производительности, в качестве альтернативы, прямая проволочная антенна длиной 17,3 мм также увеличивает производительность.

С модулем ЖК-дисплея 16x2 вы должны использовать 4-контактный ЖК-дисплей I2C для использования инструкций и кода, которые я привожу здесь, это может быть сделано с 16-контактным стандартным ЖК-дисплеем, но он не будет работать с проводкой или кодом здесь.

Беспроводные герконовые переключатели сигнализации, датчики движения и дистанционные брелоки должны иметь частоту 433 МГц или 315 МГц в соответствии с приемником, который вы собираетесь использовать, и должны использовать кодировку PT2262 или EV1527.

Тревога расширяется и адаптируется, я уже добавил SD-карту для записи при срабатывании датчиков, изменил ЖК-дисплей, чтобы он светился только при удерживании кнопки, и добавил сирену 100 дБ, но не включил здесь подробности, чтобы сохранить статью как как можно короче и проще. Я надеюсь, что рассказ о работе, которую я проделал над этой сигнализацией, пригодится другим.

С удовольствием отвечу на любые вопросы.

Спасибо.

Рекомендуемые: