Статьи / KA047 /
Laurent-5G: Автоматика GSM. Часть 1
§ 47. Laurent-5G: Автоматика GSM. Часть 1
|
Дмитрий Иванов, 01 Октября 2020
|
Рассмотрим решение следующей практической задачи:
Имеем датчик температуры и влажности типа DHT-11. Помимо мониторинга показаний датчика по проводной сети Ethernet необходимо иметь возможность проверить показания
по GSM (с помощью SMS) а так же получать звонок на указанный номер в том слуаче если показания влажности превысили тревожный порог.
Задачу будем решать с помощью модуля Laurent-5G у которого на борту в том числе есть GSM модем.
Подключаем датчик влажности и температуры DHT-11 к модулю, к каналу 'B' шины 1-Wire.

Можно в том числе использовать готовый датчик KHT-11 с длинным 10 метровым кабелем.


Заходим в WEB интерфейс платы по проводному Ethrenet соединению (IP по умолчанию 192.168.0.101) и в секции посвященной
датчику влажности убеждаемся что все подключено верно и датчик выдает корректные показания.

Теперь наладим и настромим GSM. Считаем что SIM карта вставлена, GSM антенна подключена. Заходим в раздел посвященный GSM. Пока связи по GSM нет, модем не работает.

Проведем пуско-наладку GSM функционала. Наистроим его так что бы модуль сам автоматически выходил на связь (достаточно настроить один раз).
Первым делом, укажем PIN код установленной SIM карты. Вводим код и нажимаем на кнопку "Изменить". Данные сохранятся в энергонезависимой памяти.

Далее, выбираем AUTO режим работы GSM модема - т.е. при наличии установленной SIM карты и коректном PIN коде
модуль будет всегда пытаться выйти в сеть GSM и зарегестрироваться в ней что бы быть готовым к приему входящих SMS и звонков с управляющими командами а так же
иметь возможность отправть SMS или совершить звонок в случае срабатывания логического правила CAT.

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

Если необходимо перезапустить процесс регистрации в сети (например, после исправления ошибки с установкой SIM карты или неверным PIN кодом), можно
нажать на ссылку ниже (или воспрользоваться Ke-командой) что бы перезапустить процесс инициализации модема и регистрации в сети GSM.

Последним шагом, добавим наш телефонный номер (на который должен придти тревожный звонок от модуля в случае тревоги) в базу "белых" номеров.
В дальнейшем по ID этого номера (в данном случае, ID=1)
мы сможем автоматически отправлять SMS и совершать звноки с модуля при возникновении событий.

Теперь приступим непосредственно к автоматике.
Предположим, что нам нужно "бить" тревогу если показания датчика влажности превысили порог в 70%. В качестве реакции, мы включим на 5 сек 1-ое реле
(например, к нему подключена тревожная лампа или электропривод который открывает окно что бы уменьшить влажность в помещении) а так же
совершим аварийный звонок на наш телефонный номер.
Будем использовать систему логических правил CAT.

Создаем новое событие, тип [H] - показания датчика влажности DHT-11:

Задаем тревожный порог в 70%:

Указываем реакцию модуля на событие в виде списка Ke-команд управления. Полное описание всех поддерживаемых
Ke-команд можно посмотреть в разделе Документация, "Описание Ke-команд управления".

С помощью команды $KE,REL мы включим реле, а с помощью $KE,RNG,DO совершим звонок на "белый" номер сохраненный в памяти модуля под ID=1.
$KE,REL,1,1,5
$KE,RNG,DO,1
Для собственного удобства, присвоим текстовое имя вновь создаваемому событию.

Правило CAT создано. Включаем его соответствующей кнопочкой в панели управления CAT событиями (по умолчанию, вновь созданное событие выключено).

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

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

Теперь решим задачу контроля показаний датчика по GSM. Хочется сделать так что бы в любой момент
времени с помощью SMS можно было бы запросить текущие показания датчика DHT-11. Создаем новое CAT событие на входящую SMS.

Настроим событие так что бы оно срабатывало когда на номер GSM модема в модуле Laurent-5G приходит SMS с текстом MONITOR.

Теперь самое интересное - реакция. Нам хотелось бы получить ответную SMS с показаниями датчика. Т.е. в текст SMS нужно
динамически подставить текущие показания датчика DHT-11. Так же в теле SMS хочется увидеть текущее время и дату,
т.к. иногда SMS могут быть задержены в доставке и придти заметно позже. Поэтому нам нужно подставить в текст SMS дату и время на момент отправки сообщения самим модулем.

Для отправки SMS сообщения следует использовать команду $KE,SMS,SND. Для реализации передачи динамических данных, будем использовать т.н. Динамические переменные,
которые подменяются модулем на соответствующее значение непосредственно при формировании финального текста для отправки.
Подробнее о этом можно почитать в разделе "Динамичсекие перемнные" в
Описание Ke-команд управления.
Реакция на событие оформлена в виде вызова следующей KE-команды. Она произведет отправку SMS сообщения с
текстом H=~Dh1~%~LF~T=~Dt1~C~LF~~DT~ ~TM~ (содержащим динамические переменные) на "белый" номер под ID=1.
$KE,SMS,SND,1,C,H=~Dh1~%~LF~T=~Dt1~C~LF~~DT~ ~TM~
Все динамические переменные начинаются и заканчиваются символами ~ (Тильда). Немного пояснений по использорванным переменным:
~Dh1~ |
данная переменная будет заменена на текущие показания влажности датчика DHT-11 |
~LF~ |
перенос строки (хочется видеть SMS отформатированной, так что бы показания температуры и влажности были на разных строках) |
~Dt1~ |
данная переменная будет заменена на текущие показания температуры датчика DHT-11 |
~DT~ |
текущая дата (год, месяц, день) из RTC (часы реального времени) |
~TM~ |
текущее время в рамках дня (часы, минуты, секунды) из RTC (часы реального времени) |
Достаточно теперь отправить SMS с текстом "MONITOR" (регистр символом имеет значение) на номер SIM карты в
модуле Laurent-5G как в скором времени нам придет ответная SMS с текущими показаниями датчика DHT-11:

© Дмитрий Иванов
01 Октября 2020 года
http://www.kernelchip.ru