Домашняя автоматизация с Arduino & Raspberry Pi. Часть 1. Введение
Несколько лет назад, я впервые стал владелец собаки. Я не хотел оставлять Коди в конуре, одну, в течение всего дня. У меня была камера, но я не мог смотреть за ним в течении всего дня. А что делать если он попадет в какую-то беду? Что если какая то неприятность в доме, например пожар?
Я хотел каким-то образом получать уведомления по электронной почте, когда он лает, или когда случается что-то плохое.
Далее чтение различных статей привело к разработке, и это в конечном итоге привело к полномасштабной системы домашней автоматизации на основе аппаратных средств с открытым исходным кодом (Arduino) и программным обеспечение (OpenHAB).
К Arduino очень просто подключить различные датчики. Используя дополнительные модули мы создаем сеть различных датчиков с выходом в интернет.
Вы можете удаленно просмотреть состояние датчиков с помощью смартфона. Все узлы/датчики беспроводные, так что вы не ограничены местом нахождения порта Ethernet.
Вот так это выглядит.
Это главные элементы конструкции:
- Дешевизна. Каждый узел датчика стоит менее 20$, но вы можете увеличить вашу стоимость.
- Гибкость. Узлы на основе Arduino позволяют расширять систему к нуждам каждой среды измерения. Вы не привязаны к примерам которые я вам предоставил, хотя я стремился реализовать много образцов.
- Хорошая надежность, время работы и дальность беспроводных датчиков.
- Я использовал ка питание от батареи так и питание от сети.
Итак, вот список датчиков из этой инструкции. Я хочу обеспечить дом полным набором человеческих чувств. Ваш дом должен быть умным и чувствительным.
Лай собаки (любой громкий звук) Датчик
Стиральная машина с сушкой Датчик
Получение звукового оповещения когда стиральная машинка / сушилка завершает работу, что-то вроде «Washer Complete». Больше не будет забытого белья в стиралке и ожидания завершения стирки. Используйте смартфон приложение, чтобы проверить окончание стирки.
Датчик света
Мониторинг зоны вторжения
Отслеживание собаки
Шаг 7: Код
После завершения сборки всех компонентов приступаем к кодированию Arduino. Для этого откройте программу для Arduino на вашем компьютере и скопируйте в нее код, приведенный ниже. Не бойтесь менять расстояние фиксации объектов и громкость звукового сигнала.
int sound = 500;
void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(GreenLED, OUTPUT); pinMode(YellowLED, OUTPUT); pinMode(RedLED, OUTPUT); pinMode(buzzer, OUTPUT); }
void loop() { long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/5) / 29.1; if (distance < 50) { digitalWrite(GreenLED, HIGH); } else { digitalWrite(GreenLED, LOW); } if (distance < 20) { digitalWrite(YellowLED, HIGH); } else { digitalWrite(YellowLED,LOW); } if (distance 5 || distance <= 0){ Serial.println("Out of range"); noTone(buzzer); } else { Serial.print(distance); Serial.println(" cm"); tone(buzzer, sound); } delay(300); }
После этого подключите ваш Arduino к своему компьютеру и загрузите код. Если вы следовали инструкциям, при приближении руки к датчикам диоды будут загораться по очереди, пока не сработает зуммер.
Устройство и характеристики
Устройство отправляет SMS при возникновении следующих событий:
- открытие двери (герконовый датчик);
- резкое изменение освещения (фоторезистор);
- движение (PIR датчик);
- выход температуры из заданного диапазона;
- низкое напряжение батареи.
Пример SMS с событием.
Также, раз в сутки можно настроить время ежедневного отчета.
Питается устройство от 3-х батареек AA. Расчетное время работы ≥6мес.
Настройка устройства, считывание логов событий и построение месячного графика температуры происходит с помощью утилиты (Python 2.7 + Tk + pyserial + matplotli).
Основное окно утилиты настройки.
Окно лога температуры.
Что собой представляет модуль Arduino?
Arduino реализуются в виде небольших плат, которые имеют собственный микропроцессор и память. На плате также располагается набор функциональных контактов, к которым можно подключать различные электрифицированные устройства, включая и датчики, используемые для охранных систем.
Процессор Arduino позволяет загружать в себя программу, написанную пользователем самостоятельно. Создавая собственный уникальный алгоритм, можно обеспечивать оптимальные режимы работы охранных сигнализаций для разных объектов и для разных условий использования и решаемых задач.
Общий принцип
Лазерная сигнализация – это специальное чувствительное устройство, простая схема которого основывается на взаимодействии лазерного луча и сирены. Пересекая лазерную «растяжку» срабатывает сигнализация, которую слышно в радиусе 100 метров. Она предназначена как для сигнала тревоги для охраны, так и для отпугивания преступников. Ещё существует смс-информирование или отправка голосового сообщения в качестве уведомления об опасности. Отметим, что системы периметральной сигнализации редко используют лазерный сигнал из-за потери мощности и зависимости от метеоусловий.
Самодельная GSM сигнализация из мобильника
Часто самостоятельную сигнализацию строят на базе мобильного телефона. Необходимый набор инструментов, устройств:
- Кнопочный телефон с функцией быстрого набора номера (обязательно).
- При желании прослушивания – наушники с микрофоном от мобильного устройства.
- Паяльник, сопутствующие материалы.
- Проводка.
- Геркон, магнит.
- Аккумулятор до 12В (при внешнем питании мобильного).
Последовательность действий:
- Открыть меню телефонного аппарата, выбрать настройки вызова «одной кнопкой», зафиксировать мобильный номер (или группу номеров), на который будет поступать DTMF сигнал тревоги, за определенной кнопкой (кнопками).
- Демонтировать телефон до платы с наклеенной пленкой.
- Острым ножом сделать надрезы под цифрой, которую заранее определили в настройках меню для экстренного вызова. Поднять пленку, под ней находится металлическая мембрана, которая будет впоследствии замыкать контакты (заземление, «пятачок»).
- Припаять провода к заземлению, «пятачку». Чтобы избежать ложного срабатывания, рекомендуется использовать провода одного шлейфа.
- Заклеить мембрану для предотвращения замыкания.
- Установить геркон на устройство, магнит на дверь. Для предотвращения быстрого размыкания цепи при закрытии двери, нужно предусмотреть механизм, сдвигающий магнит в сторону.
Варианты подключения получившегося устройства к сигнализации:
- С помощью реле (нормально разомкнутые контакты).
- Используя биополярный транзистор.
- Оптопара. Наиболее оптимальный вариант, создающий гальваническую развязанную схему.
Более подробно схему описывает данное видео
https://youtube.com/watch?v=CT9XMfgpbsM
Датчик расстояния в проектах Arduino
Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них. Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени. Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.
Описание датчика HC SR04
Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.
Ультразвуковой дальномер HC SR04 имеет такие технические параметры:
- Питающее напряжение 5В;
- Рабочий параметр силы т ока – 15 мА;
- Сила тока в пассивном состоянии -6 с.
Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):
- Контакт питания положительного типа – +5В;
- Trig (Т) – выход сигнала входа;
- Echo (R) – вывод сигнала выхода;
- GND – вывод «Земля».
Схема взаимодействия с Arduino
Для получения данных, необходимо выполнить такую последовательность действий:
- Подать на выход Trig импульс длительностью 10 микросек;
- В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
- Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
- На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.
При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.
Подключение HC SR04 к Arduino
Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.
Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:
Библиотека для работы с HC SR04
Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.
К особенностям библиотеки можно отнести:
- Возможность работы с различными ультразвуковыми датчиками;
- Может работать с датчиком расстояния всего через один пин;
- Отсутствие отставания на 1 секунду при отсутствии пинга эха;
- Для простой коррекции ошибок есть встроенный цифровой фильтр;
- Максимально точный расчет расстояния.
Скачать бибилотеку NewPing можно здесь
Точность измерения расстояния датчиком HC SR04
Точность датчика зависит от нескольких факторов:
- температуры и влажности воздуха;
- расстояния до объекта;
- расположения относительно датчика (согласно диаграммы излучения);
- качества исполнения элементов модуля датчика.
В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе. Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры). Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.
Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.
Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря, “глазки” HC-SR04 должны смотреть прямо на предмет.
Для уменьшения ошибок и погрешности измерений обычно выполняются следующие действия:
- усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
- с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
- датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.
Использование
- После сборки и прошивки устройство требует загрузки конфигурации (с помощью утилиты).
- При подключении к USB нормальная работа устройства приостанавливается, очередь неотправленных сообщений очищается.
- При неудачной отправке SMS, устройство произведет повторную попытку через 2 минуты, затем через 5, 10, 20, дважды через 40 и затем каждые 12 часов.
- После принятого звонка, он будет завершен через 3 минуты.
- Звуковая сигнализация включается на 30 секунд.
- События «открытие двери», «движение» и «изменения освещения» срабатывают не чаще, чем раз в 20 мин.
- Если питание устройства отсутствует более 3 часов, то записанная история измерения температуры сбрасывается.
Необходимые компоненты
- Плата Arduino Mega (или любая другая модель) (купить на AliExpress).
- Ультразвуковой датчик (купить).
- Зуммер (звонок) (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
- USB кабель для Arduino или адаптер на 12v, 1A.
Модуль ультразвукового датчика
Ультразвуковой датчик HC-SR04 используется для обнаружения присутствия человека в двери. Он состоит из двух круглых «глаз», один из которых используется для передачи ультразвуковых сигналов, а другой – для их приема.
Ультразвуковые сигналы излучаются, отражаются от препятствия и возвращаются обратно к ультразвуковому датчику. Поскольку время между передачей и приемом сигналов, а также скорость распространения звука известны, то расстояние до препятствия можно рассчитать по следующей формуле:
Distance = Time x Speed of Sound / 2
Делить на 2 необходимо потому что лучи распространяются до препятствия и обратно, то есть одну и ту же дистанцию проходят два раза. Но в данном проекте мы будем использовать библиотеку NewPing.h, которая может самостоятельно произвести все эти расчеты.
Также о принципах измерения расстояния с помощью ультразвукового датчика более подробно можно прочитать в следующих статьях на нашем сайте: — измерение расстояний с помощью платы Arduino; — измерение расстояний с помощью датчика HC-SR04 и микроконтроллера AVR.
Скетчи для работы с модулем GSM
Отправка СМС на примере SIM900
Перед тем, как отправить сообщение, нужно настроить модуль. В первую очередь нужно перевести в текстовый формат передаваемое сообщение. Для этого существует команда AT+CMGF=1. Нужно перевести кодировку на GSM командой AT+CSCS=»GSM». Эта кодировка наиболее удобная, так как там символы представлены в ASCII коде, который легко понимает компилятор.
Затем нужно набрать смс-сообщение. Для этого посылается команда с номером абонента AT+CMGS=»+79XXXXXXXXX» r, в ответ предлагается набрать текст смс. Нужно выполнить отправку сообщения. По окончании требуется отправить код комбинации Ctrl+Z, модуль позволит отправку текста адресату. Когда сообщение будет отправлено, вернется OK.
Взаимодействие с модулем основано на индексах, которые присваиваются каждому новому сообщению. По этому индексу можно указать, какое из сообщений удалить или прочитать.
Получение смс. Для чтения смс-сообщения используется команда AT + CNMI = 2,2,0,0,0. Когда на модуль придет текстовое сообщение, он отправит в последовательный порт +CMTI: «SM»,2 (в данном случае 2 – порядковый номер сообщения). Чтобы его прочитать, нужно отправить команду AT+CMGR=2.
Прием голосового звонка. В первую очередь для разговора нужно подключить к модулю динамик и микрофон. При получении звонка будет показан номер, с которого он совершен. Для осуществления работы нужно включить библиотеку GSM:
#include <GSM.h>
Если сим-карта заблокирована, нужно ввести ее пин-код. Если пин-код не требуется, это поле нужно оставить пустым.
#define PINNUMBER “”
В setup() должна быть произведена инициализация передачи данных на компьютер. Следующим шагом будет создание локальной переменной, чтобы отследить статус подключения к сети. Скетч не будет запущен, пока сим-карта не подключена к сети.
boolean notConnected = true;
С помощью функции gsmAccess.begin() происходит подключение к сети. При установлении соединения вернется значение GSM_READY.
vcs.hangCall(); – функция, показывающая, что модем готов принимать звонки.
getvoiceCallStatus() – определяет статус скетча. Если кто-то звонит, она возвращает значение RECEIVINGCALL. Для записи номера нужно воспользоваться функцией retrieveCallingNumber(). Когда будет совершен ответ на звонок, вернется TALKING. Затем скетч будет ждать символа новой строки, чтобы прервать разговор.
Установить GPRS-соединение и отправить данные на удаленный сервер
Сначала нужно установить библиотеку SoftwareSerial, которая позволяет обеспечивать последовательную передачу информации и связать GSM-модуль и микроконтроллер Ардуино.
Для отправки данных на сервер нужно отправить следующие команды:
AT+SAPBR=1,1 – открытие Carrier.
Следующие три команды связаны с установкой настроек подключения к сети.
AT+SAPBR=3,1,\”APN\”,\”internet.mts.ru\” – выбор оператора mts, имя точки доступа.
AT+SAPBR=3,1,\”USER\”,\” mts \” – выбор пользователя mts.
AT+SAPBR=3,1,\”PWD\”,\” mts \”
AT+SAPBR=1,1 – установка соединения.
AT+HTTPINIT – инициализация http.
AT+HTTPPARA=”URL”, – URL адрес.
AT+HTTPREAD – ожидание ответа.
AT+HTTPTERM – остановка http.
Если все выполнено правильно, в мониторе порта будут появляться строчки с АТ командами. Если отсутствует связь с модемом, то будет показывать по одной строке. При успешной установке GPRS-соединения на модуле начнет мигать светодиод.
Полевые испытания
Прошу прощения за эстетику монтажа.
Установка на входную дверь. Часть конструкции справа (непосредственно на самой двери) — магнит для срабатывания геркона
На место постоянного использования (гараж) устройство было установлено 4 месяца назад. Для целей усиленного тестирования, функция расписания не используется (по каждому событию отправляется SMS). В среднем получается 5 SMS в день: два при входе в гараж (срабатывает датчик открытия двери и датчик освещения), два при выходе и один «ежедневный отчет». На текущий момент батареи (3x AA) держат напряжение 4.1в при включенном модеме.
Совмещение плат
Позже пришлось делать ещё одно отверстие, в моём случае на букве «I», где написано «Мade In China», с краю платы.
Получилось так, что добавленный контакт, который по сути является GND, стал находится рядом c GND платы Pro Mini, и тем самым появилась возможность объединить землю GSM-модуля и Pro Mini каплей припоя (длинный вывод посередине и справа от него вывод Pro Mini) — стрелочками их отметил. Кривовато конечно вышло, зато надёжно теперь держится:
Между платами осталось некоторое пространство — в него я поместил плату контроля заряда разряда лития с предварительно выпаянным microUSB-разъёмом и припаянными проводами.
Платка входит туда очень плотно, при этом свечение светодиодов сбоку будет хорошо заметно через небольшое отверстие в корпусе.
Постановка задачи
Первый этап проекта при возникновении желания создать простую сигналку на Ардуино своими руками — постановка задачи. Речь идет о том, что она должна „уметь” и какими функциями обладать. Именно настоящие действия определят конечную ее стоимость и компоненты, необходимые для получения нужного результата.
Итак, сигнализация должна «уметь»:
- определять движение какого-либо объекта в наблюдаемом пространстве;
- контролировать состояние дверей — в разрезе открыты они или закрыты;
- чувствовать смену освещенности — при любом несанкционированном доступе будет или включен свет, или использован фонарик, что непосредственно укажет управляющему устройству на фактор взлома;
- отправлять периодические сообщения на сотовый телефон владельца с использованием SMS, о текущем состоянии окружающей среды и контролирующего оборудования;
- информировать, — посредством тех же коммуникаций — о факте недозволенного доступа в охраняемое помещение;
- также нужна предусмотренная возможность простой смены настроек самой системы безопасности.
Сигнализация в сборе с питанием от аккумулятора:
Кроме названых функций, учитывая постоянные проблемы с электричеством, надо обеспечить резервное снабжение энергией цепей сигнализации, впредь до полной замены внешнего питания на внутренние батареи.
Код
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); // выключить сигнал тревоги } }
Полевые испытания
Прошу прощения за эстетику монтажа.
Установка на входную дверь. Часть конструкции справа (непосредственно на самой двери) — магнит для срабатывания геркона
На место постоянного использования (гараж) устройство было установлено 4 месяца назад. Для целей усиленного тестирования, функция расписания не используется (по каждому событию отправляется SMS). В среднем получается 5 SMS в день: два при входе в гараж (срабатывает датчик открытия двери и датчик освещения), два при выходе и один «ежедневный отчет». На текущий момент батареи (3x AA) держат напряжение 4.1в при включенном модеме.
Преимущества. Недостатки
- Минимальная стоимость исходных комплектующих по сравнению с промышленными вариантами.
- Автономное функционирование (только периодическая подзарядка телефона).
- Оперативное реагирование.
- Возможность подключить несколько абонентских номеров.
- Варианты подключения сенсорных датчиков.
- Беспроводной монтаж.
Минусы:
- Система легко блокируется при обнаружении. Требуется скрытая установка.
- Локальное срабатывание.
- Подавление, изменение сигнала.
Использование GSM системы, сделанной своими руками, оправдано, когда необходимо установить охранное устройство минимальными средствами, а значимость объекта не является высокой. Для дома, квартиры, офиса лучше всего использовать промышленные охранные модификации, отличающиеся большей надежностью, эффективностью, функциональным разнообразием.
Исходный код программы (скетча)
Arduino
int Sensor = 12;
int transistor = 2;
void setup() {
Serial.begin(9600);
pinMode (Sensor, INPUT);
pinMode (transistor, OUTPUT);
Serial.println(«Waiting for motion»);}
void loop() {
int val = digitalRead(Sensor);
if(val ==HIGH)
{
digitalWrite(transistor, HIGH);
Serial.println(«Motion Detected»);
}
if(val == LOW)
{
digitalWrite(transistor, LOW);
Serial.println(«NO Motion»);
}
delay(1000);
}
1 |
intSensor=12; inttransistor=2; voidsetup(){ Serial.begin(9600); pinMode(Sensor,INPUT); pinMode(transistor,OUTPUT); Serial.println(«Waiting for motion»);} voidloop(){ intval=digitalRead(Sensor); if(val==HIGH) { digitalWrite(transistor,HIGH); Serial.println(«Motion Detected»); } if(val==LOW) { digitalWrite(transistor,LOW); Serial.println(«NO Motion»); } delay(1000); } |
Полевые испытания
Прошу прощения за эстетику монтажа.
Установка на входную дверь. Часть конструкции справа (непосредственно на самой двери) — магнит для срабатывания геркона.
На место постоянного использования (гараж) устройство было установлено 4 месяца назад. Для целей усиленного тестирования, функция расписания не используется (по каждому событию отправляется SMS). В среднем получается 5 SMS в день: два при входе в гараж (срабатывает датчик открытия двери и датчик освещения), два при выходе и один «ежедневный отчет». На текущий момент батареи (3x AA) держат напряжение 4.1в при включенном модеме.
Модуль Neoway M590E
Технические характеристики:
Частоты:
Чувствительность:
Максимальная мощность передачи:
Пиковый ток:
Рабочий ток:
Ток в спящем режиме:
Рабочая температура:
Рабочее напряжение:
Протоколы:
Интернет:
Даташит:
Самый дешёвый GSM-модуль, что можно найти на рынке, как правило б/у, выпаянный не всегда ловкими китайскими руками с оборудования. Почему не всегда ловкими? Да всё из-за выпайки феном — нередко людям эти модули приходят с закороченным плюсом и минусом, что является одной из причин их неработоспособности. Поэтому первым делом необходимо прозванивать контакты питания на короткое замыкание.
1)
2)
3)
4)
+CR
5)
Если нажать на «Соединение» и после этого запустить модуль, подав BOOT через резистор 4.7К на землю, то сперва в терминале высветится надпись «MODEM:STARTUP», затем, через некоторое время надпись»+PBREADY», означающая, что была прочтена телефонная книга, несмотря на то, что она может быть пустой:
Под этим спойлером АТ-команды с примерами
Печатаем команду AT — в ответ модуль нам присылает нашу команду, поскольку включен режим эха, и OK:
Проверим статус модема командой AT+CPAS — в ответ опять наша команда, +CPAS: 0 и ОК.
0 — означает, что модуль готов к работе, но в зависимости от ситуации могут быть и другие цифры, например 3 – входящий звонок, 4 – в режиме соединения, 5 – спящий режим. По 1 и 2 информации не нашёл.
Изменение скорости передачи данных по UART происходит командой AT+IPR=9600 — это если нужна скорость 9600. Если какая-то другая, аналогично AT+IPR=19200 к примеру или AT+IPR=115200.
Проверим сигнал сети. AT+CSQ, в ответ приходит +CSQ: 22,1 — значение до запятой имеет диапазон 0… 31 (115… 52дБл) — это уровень сигнала, чем больше, тем лучше. Но 99 означает его отсутствие. Значение после запятой — качество сигнала 0… 7 — здесь уже наоборот, чем число меньше, тем лучше.
Отключим режим эха, отправив команду ATE0, чтобы дублирующие команды не мешались. Обратно этот режим включается командой ATE1.
Посмотреть версию прошивки AT+GETVERS
Устройство и характеристики
Устройство отправляет SMS при возникновении следующих событий:
- открытие двери (герконовый датчик);
- резкое изменение освещения (фоторезистор);
- движение (PIR датчик);
- выход температуры из заданного диапазона;
- низкое напряжение батареи.
Пример SMS с событием
Также, раз в сутки можно настроить время ежедневного отчета
Питается устройство от 3-х батареек AA. Расчетное время работы ?6мес.
Настройка устройства, считывание логов событий и построение месячного графика температуры происходит с помощью утилиты (Python 2.7 + Tk + pyserial + matplotli).
Основное окно утилиты настройки
Окно лога событий
Окно лога температуры
Выбор реле контроля питания
Обмотка реле контроля питания будет подключена к основному источнику, поэтому она должна быть рассчитана на напряжение 12V. Через нормально замкнутый контакт этого реле подаётся аварийное питание от АКБ при условии отключения основного источника. Силовые контакты реле должны выдерживать ток до 3А. Понадобятся ещё пару диодов соответствующей мощности для развязки независимых источников друг от друга. Если всё это слепить воедино, то получиться следующая схема:
В исходном состоянии напряжение от основного источника через верхний диод поступает в шину питания и параллельно идёт на обмотку контрольного реле. В свою очередь реле замыкает контакты, тем самым отсекая аккумуляторную батарею от общей шины. Как только основное питание пропадает, обмотка реле обесточивается, что влечёт за собой переключение его контактов. Теперь напряжение с аккумулятора проходит по замкнутым контактам контрольного реле и поступает на повышающий преобразователь MT3608. Последний, увеличивает напряжение до уровня 12V. Это напряжение поступает в основную шину через нижний защитный диод. Верхний диод не даёт резервному питанию проникнуть в цепь основного. При восстановлении электроснабжения, схема возвращается в исходное состояние.
Проблемы
За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.
- Используемый PIR датчик начинает давать ложные срабатывания при низких температурах. При +5°С использование стало совсем невозможным: число ложных срабатываний превысило одно в день. Попытка замены датчика на другой проблему не решило, поэтому сейчас этот датчик временно отключен. Что с этим делать пока не понятно.
- Датчик температуры, встроенный в DS3231 при -10°С и ниже начал сходить с ума: периодически выдает случайные значения, например, «-84°С» или «+115°С». Интересно, что RTC работает нормально. На текущий момент не понятно, проблема ли это конкретно моего экземпляра или нет. Жду для проверки второй идентичный модуль, при повторении с ним проблемы в устройство будет добавлен DS18B20.
В остальном полет нормальный.
Базовые блоки
Лазерный извещатель состоит из следующих элементов:
- генератора;
- блока питания;
- лазера;
- реле;
- цифровой микросхемы;
- фотоэлемента;
- звуковой извещатель (для пущего эффекта может применяться и светодиодная лампочка).
Обычно устанавливаю такой агрегат ближе к полу на расстоянии в 25-35 см, чтобы особо невнимательные грабители либо не заметили его, либо не смогли свободно проползти под ним или перепрыгнуть.
Закрепляют лазер, блок питания и реле с одной стороны, а фотоэлемент крепится на другой стене так, чтобы луч попадал на линзу.
Когда охранная сигнализация данного типа задействована, луч проходит по прямой линии к фотоэлементу. Так как пучок света преодолевает большое расстояние и не рассеивается, то его можно отражать неопределённое количество раз при помощи обычных зеркальных поверхностей, направленных под определённым углом друг к другу. Это помогает создать запутанный лабиринт, пройти который, не задев такую «растяжку», практически невозможно.
Если вор-неудачник пересечёт луч, сигнал не поступает к фотоэлементу, возникает сопротивление и реле блокируется. Таким образом реле передает сигнал резистору, а последний — извещателю.
Сразу после нарушения в зоне активации лазер также прекращает работу, чтобы не задействовать фотоэлемент снова, иначе сигнал тревоги прервётся. Полностью выключить сигнализацию можно лишь отключив питание.
Чтобы сигнализация не срабатывала от обычных солнечных лучей или иных источников света фоторезистор имеет специальную изоляцию.
GSM сигнализация своими руками с инфракрасным датчиком движения загородного дома или дачи
Принцип действия этой GSM сигнализации основан на инфракрасном датчике движения, а не на герконе. Инфракрасный датчик движения срабатывает, когда объект находится в поле его видимости и посылает сигнал на мобильный телефон. После попадания сигнала на телефон он набирает номер, заранее настроенный в быстром наборе. Сама схема автономной сигнализации на инфракрасном датчике движения показана ниже.
На схеме видно, как и в первом примере, датчик движения подключается к девятой кнопке.
В качестве самого датчика движения можно использовать устройство Астра 515.
Этот датчик движения имеет радиус действия 10 метров. Например, если в этот радиус действия попадет какой-нибудь объект, то сигнализация сработает и осуществит звонок.
Еще особенностью этого датчика движения является уровень защиты IP41, который позволяет ему работать при температуре от 0 до +50°С.
Такую автономную GSM сигнализацию, собранную своими руками удобно использовать на даче и в загородном доме для охраны их территорий.
Что такое Ардуино?
Arduino, или как его еще называют «электронный конструктор», является специальным инструментом, который позволяет свободно проектировать и строить различные по функциональности электронные устройства и роботизированные узлы. Отличительная черта Arduino – применение открытого программного кода, благодаря чему можно легко программировать работу создаваемых устройств, используя для этих целей традиционную среду для программирования. Язык программирования Ардуино является достаточно простым и поддерживает возможность подключения дополнительных библиотек С++. Среда для создания софта под платформу Ардуино имеет открытый код и предлагается совершенно бесплатно.
Стандартная IDE для программирования на Ардуино
Широкое практическое применение модули Arduino получили в процессе создания различных электронных устройств, которые поддерживают возможность приема и обработки цифровых сигналов от различных внешних устройств, систем, датчиков и сенсоров, которые подключены к платформе. Также платформой поддерживается и формирование управляющих сигналов, которые передаются на внешние исполнительные устройства. Такие возможности платформы позволяют разрабатывать на ее основе различные конфигурации систем безопасности, а именно – охранных сигнализаций.
Выводы и мысли. Планы.
По энергосбережению…
Собранный девайс отработал четыре полных месяца без подзарядки и продолжает работать, хотя правильнее сказать «спать». Проверяется это простой перезагрузкой через белую кнопку. При энергопотреблении 250 мкА (через стабилизатор LE33) и аккумуляторе ~1430 mAh, хотя ладно, ввиду неновизны аккумулятора округлим до 1000mAh, получается, что девайс может отсыпаться около 5.5 месяцев без подзарядки. Если всё-таки выпаять стабилизатор, то время работы можно смело умножить в 10 раз. Но в моём случае в этом нет нужды, т.к всё равно нужно раз в три месяца тратить баланс с симки, заодно и девайс можно проверить и подзарядить.
Приведённый в обзоре пример энергосбережения — далеко не предел, т.к. судя по информации из даташита, можно понизить тактовую частоту микроконтроллера (а делается это установкой фьюзов) до 1МГц и, если подать 1.8В напряжения, то потребление опустится ниже планки 1мкА в активном режиме. Весьма недурно! Но если МК при этом будет тактироваться от внутреннего RC-генератора, то появится другая проблема — эфир UART окажется засорен мусором и ошибками, особенно если контроллер нагреть или охладить.
По доработке…
1)
Обычная проволока, установленная на разрыв не совсем удобна, планирую поэкспериментировать с датчиком Холла и герконом, хотя про последний говорят, что не шибко надёжен, ибо контакты внутри него могут залипнуть. 2)
Неплохо было бы добавить возможность смены «номера хозяина» без участия компьютера и перепрошивки. Это уже с EEPROM придётся поработать. 3)
Попробовать прерывания от сторожевого таймера, но не просто любопытства ради, а чтобы микроконтроллер периодически просыпался сам, делал замеры напряжения аккумулятора и отправлял полученное значение по SMS, чтобы быть в курсе насколько аккумулятор разряжен. 4)
Солнечная панель может и вовсе избавить от необходимости подзаряжать девайс, это будет актуально особенно для малоёмких аккумуляторов.5)
Ещё давно хотел прикупить LiFePo4 аккумуляторы, которые по отзывам нормально переносят мороз, да вот пока искал годный лот, весна уже незаметно наступила.6)
Поработать над эстетической составляющей
Какую Pro Mini купить?
Если фена нет, то Pro Mini «RobotDyn» Atmega168PA 3.3V, чем-то острым сковыриваете светодиод и имеете ~250мкА.
Если есть фен, то любую плату, выпаиваете стабилизатор и светодиод по питанию — получаете ~20мкА потребления тока.
На этом пока всё, надеюсь, обзор был интересен и полезен.
Заключение
Возможности микроконтроллера Arduino позволяют создать на его базе практически любой проект домашней или промышленной автоматизации. А если дополнить его комплектом подключения к сотовой сети и соответствующим образом запрограммировать, плата превратится в мощный комплекс удаленного доступа, мониторинга, оповещения и выполнения прочих задач, требующих наличия постоянной связи. GSM-модули доступны, легко устанавливаются и настраиваются, обладают низким энергопотреблением и работают везде в зоне покрытия сотовой сети.
Разумеется, использовать их как средство передачи крупных объемов данных нельзя, поскольку доступ в интернет этим классом устройств обеспечивается только через GPRS, с небольшими скоростями. Но в задачах создания дешевой и надежной охранной системы, комплекса мониторинга или хаба «умного дома» такие решения находят обширное применение — как у энтузиастов, так и профессионалов.