Arduino GSM сигнализация: как создать сигнализацию?

Друзья, разрешите представить проектик GSM сигнализации на Arduino. В сети довольно много проектов по типу «Arduino + модем + датчики», однако я часто вижу в них некоторую незаконченность (в особенности, с программной точки зрения): отсутствие гибкости в настройках и конфигурировании. В представленном решении я попытался сделать устройство максимально готовое к «боевым» условиям, предусмотрев все, что может понадобится среднестатистическому пользователю (на мой взгляд).

TL; DR программно и аппаратно задуманное реализовано, тест в реальных условиях запущен, исходники и бинарники опубликованы, корпус не осилил.

Устройство и характеристики

Устройство отправляет SMS при возникновении следующих событий:

  • открытие двери (герконовый датчик);
  • резкое изменение освещения (фоторезистор);
  • движение (PIR датчик);
  • выход температуры из заданного диапазона;
  • низкое напряжение батареи.

Пример SMS с событием

Также, раз в сутки можно настроить время ежедневного отчета

Питается устройство от 3-х батареек AA. Расчетное время работы ≥6мес.

Настройка устройства, считывание логов событий и построение месячного графика температуры происходит с помощью утилиты (Python 2.7 + Tk + pyserial + matplotli).

Основное окно утилиты настройки

Окно лога событий

Окно лога температуры

Digitrode

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

Данный проект представляет собой систему безопасности (сигнализации) для оповещения о проникновении злоумышленников в дом. Система использует технологию GSM.

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

На рисунке ниже представлена блок-схема системы безопасности.

Основными элементами системы являются микроконтроллерная плата (например, Arduino Uno) и модуль GSM/GPRS SIM900A. Вся система может быть запитана от одного источника питания 12В/2А.

На приведенном ниже изображении показана принципиальная схема домашней системы безопасности с GSM на основе Arduino.

Работа системы очень проста и не требует особых пояснений. При подачи напряжения питания система переходит в режим ожидания. Однако, когда J2 замыкается, сообщение предупреждения автоматически передается на заранее заданный номер мобильного телефона. К входному разъему J2 можно подключить любой датчик обнаружения. Нужно заметить, что низкий уровень на выводе 1 разъема J2 является активным и включает систему безопасности.

Кроме того, в систему добавлена возможность совершения вызова по нажатию кнопки S2. С помощью кнопки S3 можно осуществить сброс этого вызова.

Ниже приведен код для Arduino.

//Соединить вывод Tx с выводом D3 GPS-модуля //Соединить вывод Rx с выводом D4 GPS-модуля //сигнал отправки SMS соединить с выводом D7 (активный уровень низкий) //Сигнал вызова CALL соединить с выводом D8 (активный уровень низкий) //Сигнал сброса вызова END соединить с выводом D9 (активный уровень низкий) #include NewSoftSerial mySerial(3,4); // выводы RX и TX настроить на связь с модулем GSM #define msg_key 7 #define call_key 8 #define end_key 9 String number =»0000000000″; // Сюда вместо нулей нужно вписать 10-значный мобильный номер void setup() { Serial.begin(9600); mySerial.begin(9600); pinMode(msg_key,INPUT); pinMode(call_key,INPUT); pinMode(end_key,INPUT); digitalWrite(msg_key,HIGH); digitalWrite(call_key,HIGH); digitalWrite(end_key,HIGH); } void loop() { //отправлять sms каждый раз, когда срабатывает msg_key if (digitalRead(msg_key)==LOW) // Проверка, нажата ли кнопка отправки sms { mySerial.println(«AT+CMGF=1»); // Устанавливаем режим в качестве тектового режима delay(150); mySerial.println(«AT+CMGS=\»+00″+number+»\»»); // Укажите номер адресата в международном формате, заменив нули delay(150); mySerial.print(«Warning! Intruder Alert!»); // Введите сообщение delay(150); mySerial.write((byte)0x1A); // Символ конца сообщения 0x1A : эквивалент Ctrl+z delay(50); mySerial.println(); } //Совершить вызов, когда сработает call_key else if (digitalRead(call_key)==LOW) // Проверка, нажат ли уже call_key { mySerial.println(«ATD+91″+number+»;»); //Определяем номер для вызова while(digitalRead(call_key)==LOW); delay(50); } //Сброс вызова else if (digitalRead(end_key)==LOW) // Проверка, нажата ли уже кнопка сброса вызова { mySerial.println(«ATH»); while(digitalRead(end_key)==LOW); delay(50); } }

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

© digitrode.ru

Теги: Arduino, GSM

Сборка устройства

Себестоимость деталей устройства на момент публикации этой статьи составляет примерно 1000-1200 рублей (без учета заказа платы).

Для удобства сборки и надежности в эксплуатации лучше заказать плату. Китайские друзья с известного сайта предлагают сделать 10 штук с доставкой за ~$7, а иногда и меньше. Но всегда можно собрать и на макетке, как я и поступил с первым прототипом:

Прототип.

Arduino и совместимые модули были заказаны с aliexpress. Понадобятся:

  • Arduino Pro Mini 3.3v 8MHz (5v 16MHz is also acceptable, but requires different firmware);
  • MH-SR602 MINI Motion Sensor;
  • SIM800C(L) GSM Module;
  • CP2102 MICRO USB to UART TTL Module;
  • DS3231 RTC Module For Raspberry Pi;
  • 3 AA battery holder With ON OFF Switch;
  • различная рассыпуха (резисторы, конденсаторы, зуммер и поч.).

В списке специально указаны названия, дающие нужный результат при вводе в поиск.

Схема устройства Для снижения энергопотребления с платы Arduino нужно обязательно удалить резистор светодиода питания и регулятор напряжения. Проект платы сделан в Ki-CAD.

Установка

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

Использование

  • После сборки и прошивки устройство требует загрузки конфигурации (с помощью утилиты).
  • При подключении к USB нормальная работа устройства приостанавливается, очередь неотправленных сообщений очищается.
  • При неудачной отправке SMS, устройство произведет повторную попытку через 2 минуты, затем через 5, 10, 20, дважды через 40 и затем каждые 12 часов.
  • После принятого звонка, он будет завершен через 3 минуты.
  • Звуковая сигнализация включается на 30 секунд.
  • События «открытие двери», «движение» и «изменения освещения» срабатывают не чаще, чем раз в 20 мин.
  • Если питание устройства отсутствует более 3 часов, то записанная история измерения температуры сбрасывается.

Работа схемы

Схема устройства представлена на следующем рисунке.


На схеме можно видеть, что переключающий контакт (Trigger pin) ультразвукового датчика подсоединен к контакту 12 платы Arduino, а контакт эхо (Echo pin) датчика подсоединен к контакту 11 платы Arduino. Контакт Vcc датчика подсоединен к контакту 5V Arduino, а контакт GND датчика подсоединен к контакту GND Arduino. Один контакт зуммера подключен к контакту GND Arduino, а другой его контакт – к контакту 8 платы Arduino.

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

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

Полевые испытания

Прошу прощения за эстетику монтажа.

Установка на входную дверь. Часть конструкции справа (непосредственно на самой двери) — магнит для срабатывания геркона

На место постоянного использования (гараж) устройство было установлено 4 месяца назад. Для целей усиленного тестирования, функция расписания не используется (по каждому событию отправляется SMS). В среднем получается 5 SMS в день: два при входе в гараж (срабатывает датчик открытия двери и датчик освещения), два при выходе и один «ежедневный отчет». На текущий момент батареи (3x AA) держат напряжение 4.1в при включенном модеме.

Код

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); // выключить сигнал тревоги } }

Проблемы

За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.

  1. Используемый PIR датчик начинает давать ложные срабатывания при низких температурах. При +5°С использование стало совсем невозможным: число ложных срабатываний превысило одно в день. Попытка замены датчика на другой проблему не решило, поэтому сейчас этот датчик временно отключен. Что с этим делать пока не понятно.
  2. Датчик температуры, встроенный в DS3231 при -10°С и ниже начал сходить с ума: периодически выдает случайные значения, например, «-84°С» или «+115°С». Интересно, что RTC работает нормально. На текущий момент не понятно, проблема ли это конкретно моего экземпляра или нет. Жду для проверки второй идентичный модуль, при повторении с ним проблемы в устройство будет добавлен DS18B20.

В остальном полет нормальный.

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

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

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


Arduino GSM модуль

Преимущества. Недостатки

Плюсы самодельной охранной системы:

  • Минимальная стоимость исходных комплектующих по сравнению с промышленными вариантами.
  • Автономное функционирование (только периодическая подзарядка телефона).
  • Оперативное реагирование.
  • Возможность подключить несколько абонентских номеров.
  • Варианты подключения сенсорных датчиков.
  • Беспроводной монтаж.

Минусы:

  • Система легко блокируется при обнаружении. Требуется скрытая установка.
  • Локальное срабатывание.
  • Подавление, изменение сигнала.

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

Рейтинг
( 2 оценки, среднее 4 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]