Дистанционный контроль и управление с телефона
Статья под названием "Усовершенствованное дистанционное управление с телефона" была опубликована в журнале "Радио" №6, 2014.
В статье приводится описание простого устройства дистанционного контроля и управления с использованием сетей сотовых операторов. Устройство является развитием системы, описанной ранее и позволяет контролировать с помощью СМС состояние контактного датчика и температуры; включать или отключать нагрузку по звонку или СМС на номер подключенного сотового телефона. Используются телефоны с последовательным интерфейсом на коммуникационном разъеме, например, Siemens CF62 или AX75. Схема устройства выполнена на микроконтроллере Atmel ATmega88.
В статье приводится описание простого устройства дистанционного контроля и управления с использованием сетей сотовых операторов. Устройство является развитием системы, описанной ранее и позволяет контролировать с помощью СМС состояние контактного датчика и температуры; включать или отключать нагрузку по звонку или СМС на номер подключенного сотового телефона. Используются телефоны с последовательным интерфейсом на коммуникационном разъеме, например, Siemens CF62 или AX75. Схема устройства выполнена на микроконтроллере Atmel ATmega88.
Введение
Зимний период, устройство, описанное в [1], успешно отработало существенно облегчив жизнь владельца гаража. Но, с наступлением тепла, надобность в нем отпала и невольно возникла идея нагрузить неиспользуемые ресурсы какими-нибудь дополнительными полезными функциями.
Захотелось всегда быть в курсе того, что происходит в гараже. Для этого ворота гаража были оснащены обычными магнитоконтактными извещателями и датчиком температуры, а программа микроконтроллера была изменена так, чтобы держать владельца в курсе событий. Теперь дистанционно можно не только управлять обогревателем, но и контролировать состояние дверей, температуру в помещении и прослушивать обстановку.
Зимний период, устройство, описанное в [1], успешно отработало существенно облегчив жизнь владельца гаража. Но, с наступлением тепла, надобность в нем отпала и невольно возникла идея нагрузить неиспользуемые ресурсы какими-нибудь дополнительными полезными функциями.
Захотелось всегда быть в курсе того, что происходит в гараже. Для этого ворота гаража были оснащены обычными магнитоконтактными извещателями и датчиком температуры, а программа микроконтроллера была изменена так, чтобы держать владельца в курсе событий. Теперь дистанционно можно не только управлять обогревателем, но и контролировать состояние дверей, температуру в помещении и прослушивать обстановку.
Постановка и способ реализации задачи
Перед модернизируемым устройством ставились следующие дополнительные задачи:
Как и в раньше, в качестве «пульта» берем обычный сотовый телефон: с него и команду послать можно, и информацию с «объекта» получить. Командой является либо отправленная СМС-ка, либо вызов на определенный сотовый номер, связанный с приемником устройства управления. На стороне приемника системы - телефон с определенным в его SIM карте номером. «Отождествить» подающего команду, приемник может, определив номер вызывающего абонента. Если в его телефонной книге такой номер значится, команду можно исполнить, в противном случае – вызов (команда) игнорируется. Подтверждением исполнения команды может быть обратный вызов по номеру абонента, подавшего команду, либо ответная СМС-ка с запрашиваемой информацией.
- Сообщать «хозяину» температуру окружающей среды по его команде;
- Информировать «хозяина» о проблемах своего питания;
- Добавить возможность управления устройством с помощью СМС;
- Сообщать «хозяину» об изменении состояния контактов датчика на двери;
- Давать «хозяину» возможность «послушать что происходит на объекте»;
- Добавить возможность локального (на месте) управления нагревателем;
- Добавить возможность локального (на месте) просмотра состояния датчиков.
Как и в раньше, в качестве «пульта» берем обычный сотовый телефон: с него и команду послать можно, и информацию с «объекта» получить. Командой является либо отправленная СМС-ка, либо вызов на определенный сотовый номер, связанный с приемником устройства управления. На стороне приемника системы - телефон с определенным в его SIM карте номером. «Отождествить» подающего команду, приемник может, определив номер вызывающего абонента. Если в его телефонной книге такой номер значится, команду можно исполнить, в противном случае – вызов (команда) игнорируется. Подтверждением исполнения команды может быть обратный вызов по номеру абонента, подавшего команду, либо ответная СМС-ка с запрашиваемой информацией.
Принципиальная схема
Принципиальная схема устройства дистанционного контроля и управления показана на рисунке.
«Сердцем» устройства является микроконтроллер DD1 ATmega88PA. Тактовую частоту процессора задает кварцевый резонатор Q1. Кнопка S1 подключена к выводу «RESET» микроконтроллера и облегчает запуск всей системы.
Последовательный канал микросхемы (выводы контроллера PD0 (RxD) и PD1 (TxD)) соединен через разъем ХТ2 (розетка RJ-11) четырехжильным кабелем с интерфейсным разъемом телефона Siemens XT4. Со стороны разъема XT4, подключаемого к телефону в кабеле установлены резисторы R5 и R6. Это особенность именно телефонов Siemens 55-ой (и выше) серии: при таком включении аккумулятор телефона не только воспринимает заряд по цепи VCC (контакт 1 ХТ4), но и способен питать нагрузку, подключенную к данной цепи. В «нашем» случае резисторы надо установить, т.к. только в этом случае при пропадании напряжения в сети, питание устройства продолжится от аккумулятора сотового телефона.
В качестве датчика температуры DD3 выбран компактный, достаточно распространенный и недорогой цифровой термометр DS18B20. Микросхема имеет цифровой интерфейс 1-Wire, программно и аппаратно легко реализуемый на любом микроконтроллере. Преимущество микросхемы еще и в том, что датчик калиброван изготовителем и не требует какой-либо температурной подстройки в реальном устройстве.
Кнопкой S2 на схеме условно показана связка двух магнитоконтактных точечных охранных извещателей ИО 102-2, состояние которых контролируется устройством. Датчики устанавливаются на воротах и на двери.
Светодиод VD5 (зеленого цвета) является контрольным и позволяет наблюдать состояние системы.
Управление нагрузкой осуществляется с помощью оптрона DD2. Светодиод оптопары включен последовательно с индикаторным светодиодом VD4 (красного цвета) и токоограничивающим резистором R2. VD4, таким образом, индицирует состояние нагрузки.
Питание устройства осуществляется от зарядного устройства сотового телефона (на схеме показано как разъем ХТ1) через диод VD3. Диод играет роль гасящего сопротивления (снижает напряжение питания микроконтроллера до приемлемого уровня) и, одновременно, защищает микросхемы от «переполюсовки питания» при ошибке в монтаже. В устройстве можно использовать любое зарядное устройство с допустимым током нагрузки не менее 500 мА (определяется параметрами используемого телефона). При ином выходном напряжении, необходимо обеспечить питание микроконтроллера на уровне не более 5,5В, например, установить дополнительные диоды или интегральный стабилизатор напряжения 7805.
Отдельно надо сказать о питании сотового телефона. Оно осуществляется от того же зарядного устройства через тот же диод VD3. При пропадании напряжения в сети, диод запирается, а устройство питается уже от аккумулятора телефона (напряжение питания в этом случае не превышает четырех вольт, чего вполне достаточно для DD1 и DD3).
Цепочка из диодов VD1, VD2 и резистор R1 выполняют функцию контроля наличия напряжения в сети: пока оно есть – диоды открыты и на входе PD5 микроконтроллера присутствует логическая единица, при отсутствии напряжения – резистор обеспечивает на входе микросхемы ноль.
Транзисторный ключ VT1, R4 используется как «разделитель» между контактным датчиком (S2), расположенным, например, на окне или двери, и микроконтроллером. Эта цепь предназначена для защиты входа микроконтроллера от случайного попадания проводов, идущих к датчику, «не туда»… Можно отказаться от ключа и подключить вход PB1 микросхемы DD1 напрямую к датчику (S2, R8).
«Сердцем» устройства является микроконтроллер DD1 ATmega88PA. Тактовую частоту процессора задает кварцевый резонатор Q1. Кнопка S1 подключена к выводу «RESET» микроконтроллера и облегчает запуск всей системы.
Последовательный канал микросхемы (выводы контроллера PD0 (RxD) и PD1 (TxD)) соединен через разъем ХТ2 (розетка RJ-11) четырехжильным кабелем с интерфейсным разъемом телефона Siemens XT4. Со стороны разъема XT4, подключаемого к телефону в кабеле установлены резисторы R5 и R6. Это особенность именно телефонов Siemens 55-ой (и выше) серии: при таком включении аккумулятор телефона не только воспринимает заряд по цепи VCC (контакт 1 ХТ4), но и способен питать нагрузку, подключенную к данной цепи. В «нашем» случае резисторы надо установить, т.к. только в этом случае при пропадании напряжения в сети, питание устройства продолжится от аккумулятора сотового телефона.
В качестве датчика температуры DD3 выбран компактный, достаточно распространенный и недорогой цифровой термометр DS18B20. Микросхема имеет цифровой интерфейс 1-Wire, программно и аппаратно легко реализуемый на любом микроконтроллере. Преимущество микросхемы еще и в том, что датчик калиброван изготовителем и не требует какой-либо температурной подстройки в реальном устройстве.
Кнопкой S2 на схеме условно показана связка двух магнитоконтактных точечных охранных извещателей ИО 102-2, состояние которых контролируется устройством. Датчики устанавливаются на воротах и на двери.
Светодиод VD5 (зеленого цвета) является контрольным и позволяет наблюдать состояние системы.
Управление нагрузкой осуществляется с помощью оптрона DD2. Светодиод оптопары включен последовательно с индикаторным светодиодом VD4 (красного цвета) и токоограничивающим резистором R2. VD4, таким образом, индицирует состояние нагрузки.
Питание устройства осуществляется от зарядного устройства сотового телефона (на схеме показано как разъем ХТ1) через диод VD3. Диод играет роль гасящего сопротивления (снижает напряжение питания микроконтроллера до приемлемого уровня) и, одновременно, защищает микросхемы от «переполюсовки питания» при ошибке в монтаже. В устройстве можно использовать любое зарядное устройство с допустимым током нагрузки не менее 500 мА (определяется параметрами используемого телефона). При ином выходном напряжении, необходимо обеспечить питание микроконтроллера на уровне не более 5,5В, например, установить дополнительные диоды или интегральный стабилизатор напряжения 7805.
Отдельно надо сказать о питании сотового телефона. Оно осуществляется от того же зарядного устройства через тот же диод VD3. При пропадании напряжения в сети, диод запирается, а устройство питается уже от аккумулятора телефона (напряжение питания в этом случае не превышает четырех вольт, чего вполне достаточно для DD1 и DD3).
Цепочка из диодов VD1, VD2 и резистор R1 выполняют функцию контроля наличия напряжения в сети: пока оно есть – диоды открыты и на входе PD5 микроконтроллера присутствует логическая единица, при отсутствии напряжения – резистор обеспечивает на входе микросхемы ноль.
Транзисторный ключ VT1, R4 используется как «разделитель» между контактным датчиком (S2), расположенным, например, на окне или двери, и микроконтроллером. Эта цепь предназначена для защиты входа микроконтроллера от случайного попадания проводов, идущих к датчику, «не туда»… Можно отказаться от ключа и подключить вход PB1 микросхемы DD1 напрямую к датчику (S2, R8).
Программа
Алгоритм программы реализован в среде разработки Algorithm Builder for AVR и представлен в архиве rcs.zip.
Программа работает следующим образом. После подачи питания, проходят процедуры инициализации узлов микроконтроллера: настройка таймера на формирование прерываний с периодом около 16мс, последовательного приемопередатчика на прием/передачу 8 бит данных без контроля четности со скоростью 4800 бит/сек, прерывания формируются только приемником. Далее устанавливаются необходимые уровни на выводах портов микроконтроллера. Работа с телефоном производится посредством АТ-команд, передаваемых через последовательный приемопередатчик микроконтроллера. Такая команда представляет из себя текстовую строку, начинающуюся символами "АТ", далее следуют символы собственно команды и ее аргументов и заканчивается строка символом <CR> (0Dh, "Возврат каретки" - по-русски). Существуют общепринятые рекомендации (ITU-T Recommendation V.25 ter: Serial asynchronous automatic dialling and control) по реализации АТ команд. Подробно форматы команд, используемых в модемах/телефонах GSM, рассмотрены в [2].
После предварительной настройки микроконтроллера, в телефон через последовательный приемопередатчик посылается команда «Сброс» (ATZ). Далее в телефон последовательно передаются команды:
AT+CPBS=SM - указание телефону на то, что ячейки телефонного справочника далее будут считываться из области памяти на SIM карте, а не из памяти телефона.
AT+CPBR=1 - считывание первой ячейки памяти телефонного справочника. Считанный номер сохраняется в оперативной памяти контроллера и в дальнейшем используется для проверки номера вызываемого абонента. Далее считывается вторая ячейка с той же целью.
Проверяется наличие напряжения в сети – логический уровень на входе PD5. Если напряжение отсутствует (логический ноль), то осуществляется вызов (звонок) на номера абонентов, указанных в ячейках 1 и 2 телефонного справочника. Если ячейки пусты, вызов не делается.
После завершения процедур инициализации запускается основной цикл программы. В цикле отрабатываются следующие процедуры:
Измеряется температура с помощью термометра DD3. Результаты измерения сохраняются в оперативной памяти контроллера DD1.
С помощью команды AT+CMGL=0 проверяется наличие в телефоне новых (еще не прочитанных) принятых СМС сообщений. В тексте считанных сообщений производится поиск телефонных номеров, указанных в ячейках 1 и 2 телефонного справочника. Если номер обнаруживается, то анализируется текст в принятого сообщения.
Если в сообщении единственный символ «2», то включается нагрузка (устанавливается логический 0 на выводе РС2). Если принят символ «8», то нагрузка отключается (РС2=1). Далее на номер отправителя посылается ответное сообщение командой AT+CMGS=<длина сообщения>. Данные для сообщения собираются из памяти микроконтроллера: наличие питающего напряжения, значение температуры, состояние контактного датчика (по схеме – кнопка S2) и вывода PС3 управления нагрузкой. Пример передаваемого сообщения приведен в конце статьи. Сообщение отправляется и при любом другом содержимом принятого СМС, кроме случая, когда принят единственный символ «0». В этом случае прерывается четырехминутный интервал когда система отвечает «снятием трубки» на поступающий вызов – об этом ниже, а абоненту подается подтверждающий исполнение команды вызов.
Далее проверяется состояние контактов датчика S2. В случае изменения их состояния и стабильности установившегося значения в течение примерно 80 мс, формируется вызов «тревоги» на оба номера из первых двух ячеек телефонного справочника.
После область памяти контроллера, куда по прерываниям от приемника последовательного интерфейса помещаются принимаемые с телефона данные, проверяется на наличие строки «RING». Такую последовательность телефон выдает при обнаружении сигнала вызова.
Если сигнал вызова не обнаружен, программа возвращается к началу цикла.
Если вызов обнаружен, то, в зависимости от наличия телефонных номеров в первых ячейках памяти на SIM карте телефона, либо принятая команда(вызов) исполняется, либо запускается процедура проверки номера вызывающего абонента.
Проверка номера производится по команде AT+CLCC. В ответ на нее телефон сообщает нам номер вызывающего абонента. Принятая строка сравнивается с ранее сохраненными в памяти микроконтроллера номерами из ячеек телефонной книги. При несовпадении номеров программа переходит к началу цикла, не формируя команду «Отбой».
Если номера совпали или в ячейках телефона не было указано телефонных номеров, устройство переходит к процедуре отработки поступившей команды. Вызывающему абоненту подается команда «Отбой (повесить трубку)» ATH. Если нагрузка до этого была включена (на линии PC2 был логический ноль), она отключается (РС2=1). Если нагрузка была отключена, то она включается, а на вызывающий номер подается ответный вызов командой ATD. Примерно через шесть секунд вызов прекращается командой ATH. Таким образом, абонент, управляющий нашим устройством, по наличию ответного вызова, может контролировать состояние нагрузки, подключенной к устройству.
Далее программа возвращается к началу основного цикла.
При анализе содержимого входного буфера последовательного интерфейса, кроме наличия строки “RING”, проверяется признак наличия манипуляций с клавиатурой телефона (команда +CKEV), подробнее работа с клавиатурой телефона описана в [4]. Если обнаружено нажатие клавиш «2» или «8», то, соответственно, включается или отключается нагрузка (вывод РС2), после этого, а также при нажатии клавиши «5», на экран телефона выводится строка состояния. В строке указано значение температуры, состояние контактов датчика S2 и нагрузки.
После отработки поступившего СМС сообщения или изменения состояния контактного датчика S2 примерно на четыре минуты меняется алгоритм обработки поступившего вызова. В этот период вместо команды отбой, в телефон подается команда приема вызова ATA. Это позволяет вызывающему абоненту, послушать что творится «на объекте». Досрочно прекратить период можно подачей СМС с текстом «0» (см выше).
По прерываниям от таймера формируются все временные интервалы в программе, отслеживается состояние контактов датчика S2 и включается тот или иной режим работы контрольного индикатора (зеленый светодиод VD5).
По прерываниям от приемника последовательного интерфейса, как было упомянуто выше, заполняется входной буфер данных (накапливается информация из телефона).
Коды программы представлены в HEX-файле rcs21.hex. Значения Fuse битов при программировании представлены на рисунке.
Программа работает следующим образом. После подачи питания, проходят процедуры инициализации узлов микроконтроллера: настройка таймера на формирование прерываний с периодом около 16мс, последовательного приемопередатчика на прием/передачу 8 бит данных без контроля четности со скоростью 4800 бит/сек, прерывания формируются только приемником. Далее устанавливаются необходимые уровни на выводах портов микроконтроллера. Работа с телефоном производится посредством АТ-команд, передаваемых через последовательный приемопередатчик микроконтроллера. Такая команда представляет из себя текстовую строку, начинающуюся символами "АТ", далее следуют символы собственно команды и ее аргументов и заканчивается строка символом <CR> (0Dh, "Возврат каретки" - по-русски). Существуют общепринятые рекомендации (ITU-T Recommendation V.25 ter: Serial asynchronous automatic dialling and control) по реализации АТ команд. Подробно форматы команд, используемых в модемах/телефонах GSM, рассмотрены в [2].
После предварительной настройки микроконтроллера, в телефон через последовательный приемопередатчик посылается команда «Сброс» (ATZ). Далее в телефон последовательно передаются команды:
AT+CPBS=SM - указание телефону на то, что ячейки телефонного справочника далее будут считываться из области памяти на SIM карте, а не из памяти телефона.
AT+CPBR=1 - считывание первой ячейки памяти телефонного справочника. Считанный номер сохраняется в оперативной памяти контроллера и в дальнейшем используется для проверки номера вызываемого абонента. Далее считывается вторая ячейка с той же целью.
Проверяется наличие напряжения в сети – логический уровень на входе PD5. Если напряжение отсутствует (логический ноль), то осуществляется вызов (звонок) на номера абонентов, указанных в ячейках 1 и 2 телефонного справочника. Если ячейки пусты, вызов не делается.
После завершения процедур инициализации запускается основной цикл программы. В цикле отрабатываются следующие процедуры:
Измеряется температура с помощью термометра DD3. Результаты измерения сохраняются в оперативной памяти контроллера DD1.
С помощью команды AT+CMGL=0 проверяется наличие в телефоне новых (еще не прочитанных) принятых СМС сообщений. В тексте считанных сообщений производится поиск телефонных номеров, указанных в ячейках 1 и 2 телефонного справочника. Если номер обнаруживается, то анализируется текст в принятого сообщения.
Если в сообщении единственный символ «2», то включается нагрузка (устанавливается логический 0 на выводе РС2). Если принят символ «8», то нагрузка отключается (РС2=1). Далее на номер отправителя посылается ответное сообщение командой AT+CMGS=<длина сообщения>. Данные для сообщения собираются из памяти микроконтроллера: наличие питающего напряжения, значение температуры, состояние контактного датчика (по схеме – кнопка S2) и вывода PС3 управления нагрузкой. Пример передаваемого сообщения приведен в конце статьи. Сообщение отправляется и при любом другом содержимом принятого СМС, кроме случая, когда принят единственный символ «0». В этом случае прерывается четырехминутный интервал когда система отвечает «снятием трубки» на поступающий вызов – об этом ниже, а абоненту подается подтверждающий исполнение команды вызов.
Далее проверяется состояние контактов датчика S2. В случае изменения их состояния и стабильности установившегося значения в течение примерно 80 мс, формируется вызов «тревоги» на оба номера из первых двух ячеек телефонного справочника.
После область памяти контроллера, куда по прерываниям от приемника последовательного интерфейса помещаются принимаемые с телефона данные, проверяется на наличие строки «RING». Такую последовательность телефон выдает при обнаружении сигнала вызова.
Если сигнал вызова не обнаружен, программа возвращается к началу цикла.
Если вызов обнаружен, то, в зависимости от наличия телефонных номеров в первых ячейках памяти на SIM карте телефона, либо принятая команда(вызов) исполняется, либо запускается процедура проверки номера вызывающего абонента.
Проверка номера производится по команде AT+CLCC. В ответ на нее телефон сообщает нам номер вызывающего абонента. Принятая строка сравнивается с ранее сохраненными в памяти микроконтроллера номерами из ячеек телефонной книги. При несовпадении номеров программа переходит к началу цикла, не формируя команду «Отбой».
Если номера совпали или в ячейках телефона не было указано телефонных номеров, устройство переходит к процедуре отработки поступившей команды. Вызывающему абоненту подается команда «Отбой (повесить трубку)» ATH. Если нагрузка до этого была включена (на линии PC2 был логический ноль), она отключается (РС2=1). Если нагрузка была отключена, то она включается, а на вызывающий номер подается ответный вызов командой ATD. Примерно через шесть секунд вызов прекращается командой ATH. Таким образом, абонент, управляющий нашим устройством, по наличию ответного вызова, может контролировать состояние нагрузки, подключенной к устройству.
Далее программа возвращается к началу основного цикла.
При анализе содержимого входного буфера последовательного интерфейса, кроме наличия строки “RING”, проверяется признак наличия манипуляций с клавиатурой телефона (команда +CKEV), подробнее работа с клавиатурой телефона описана в [4]. Если обнаружено нажатие клавиш «2» или «8», то, соответственно, включается или отключается нагрузка (вывод РС2), после этого, а также при нажатии клавиши «5», на экран телефона выводится строка состояния. В строке указано значение температуры, состояние контактов датчика S2 и нагрузки.
После отработки поступившего СМС сообщения или изменения состояния контактного датчика S2 примерно на четыре минуты меняется алгоритм обработки поступившего вызова. В этот период вместо команды отбой, в телефон подается команда приема вызова ATA. Это позволяет вызывающему абоненту, послушать что творится «на объекте». Досрочно прекратить период можно подачей СМС с текстом «0» (см выше).
По прерываниям от таймера формируются все временные интервалы в программе, отслеживается состояние контактов датчика S2 и включается тот или иной режим работы контрольного индикатора (зеленый светодиод VD5).
По прерываниям от приемника последовательного интерфейса, как было упомянуто выше, заполняется входной буфер данных (накапливается информация из телефона).
Коды программы представлены в HEX-файле rcs21.hex. Значения Fuse битов при программировании представлены на рисунке.
Конструкция
Для устройства дистанционного управления печатная плата специально не разрабатывалась. Монтаж выполнен на макетной плате набора SEM0010M-88PA [3], представляющего собой макетную плату 42х42мм с распаянным на ней микроконтроллером ATmega88PA-AU и кварцевым резонатором 16МГц. Плата с элементами установлена в корпусе от сдвоенной компьютерной розетки (RJ-45 + RJ-11) - см фото слева. Розетка RJ-11 (телефонная) выполняет роль разъема XT2, а розетка RJ-45 (компьютерная) – разъема ХТ3. С платы розетки необходимо удалить штатные контактные клеммы (тип 110 или KRONE), а на освободившееся место установить плату микроконтроллера. Плата крепится несколькими запаянными проволочными перемычками к плате с розетками. В крышке коробки напротив светодиодов и кнопки S1 сверлятся отверстия. Кабель от зарядного устройства подключается через разъем ХТ1 (розетка miniUSB) распаянный на плате напротив паза в корпусе розетки. Кабель для подключения телефона выполнен из отрезка обычного четырехжильного телефонного кабеля с разделанной на конце вилкой RJ-11. На втором конце кабель распаян на контактах вилки от старого «сименсовского зарядника» вместе с резисторами R5 и R6.
Кабель для подключения ДУ «люстры» выполнен из отрезка патч-корда (кабель для подключения компьютера к локальной сети). На одном конце кабеля оставлена штатная вилка RJ-45. Второй конец кабеля распаян на плате приемника ДУ (нужна только одна «зеленая» пара).
Кабель с контактными датчиками ИО 102-2 (S2), резисторами R7, R8 и термометром DD3 также выполнен из отрезка патч-корда (см фото ниже). Оба кабеля через разветвитель «вилка RJ45 на две розетки RJ-45» подключаются к разъему ХТ3 устройства.
В качестве индикаторных светодиодов можно использовать любые светодиоды с током 5-10мА. При использовании диодов с большим током потребуется пропорциональное уменьшение номиналов резисторов R2 и R3.
В узле управления нагрузкой использована транзисторная оптопара 817С из неисправного компьютерного блока питания. Возможно использование других подходящих по параметрам маломощных транзисторных оптронов.
Настройки цифровые устройства при правильном монтаже, как правило, не требуют. При отключенных кабелях при подаче питания должен мигать зеленый индикатор (VD5), красный (VD4) должен быть погашен. В случае отсутствия индикации, следует проверить питающее напряжение на входе (ХТ1) и контактах 4,6 микроконтроллера. Также следует проверить настройки программатора.
Кабель для подключения ДУ «люстры» выполнен из отрезка патч-корда (кабель для подключения компьютера к локальной сети). На одном конце кабеля оставлена штатная вилка RJ-45. Второй конец кабеля распаян на плате приемника ДУ (нужна только одна «зеленая» пара).
Кабель с контактными датчиками ИО 102-2 (S2), резисторами R7, R8 и термометром DD3 также выполнен из отрезка патч-корда (см фото ниже). Оба кабеля через разветвитель «вилка RJ45 на две розетки RJ-45» подключаются к разъему ХТ3 устройства.
В качестве индикаторных светодиодов можно использовать любые светодиоды с током 5-10мА. При использовании диодов с большим током потребуется пропорциональное уменьшение номиналов резисторов R2 и R3.
В узле управления нагрузкой использована транзисторная оптопара 817С из неисправного компьютерного блока питания. Возможно использование других подходящих по параметрам маломощных транзисторных оптронов.
Настройки цифровые устройства при правильном монтаже, как правило, не требуют. При отключенных кабелях при подаче питания должен мигать зеленый индикатор (VD5), красный (VD4) должен быть погашен. В случае отсутствия индикации, следует проверить питающее напряжение на входе (ХТ1) и контактах 4,6 микроконтроллера. Также следует проверить настройки программатора.
Работа с оборудованием
Работа с устройством дистанционного контроля и управления происходит следующим образом.
Сначала для работы подготавливается телефон (в нашем случае была проверена работа с Siemens CF62 и AX75). В телефонный справочник телефона на SIM карту в первые две (или только одну) ячейки прописываем телефоны абонентов, команды от которых должно отрабатывать наше устройство. Телефоны указываются в формате (например): +7987654321, где «+7» вместо привычной «8», «987» - номер оператора и далее 7 цифр абонентского номера. Важно номера сохранять в первой и второй ячейках памяти именно на SIM карте, а не в памяти телефона – место сохранения выбирается при записи номера в телефон. Если допустимый номер единственный, то его надо сохранить в первой ячейке. Если обе первые ячейки оставить пустыми, то устройство будет отрабатывать команды от любого вызывающего абонента. Так же не будут отсылаться СМС и формироваться вызовы при изменении состояния контактного датчика и пропадании напряжения в сети.
Включенный телефон подключаем кабелем к разъему RJ-11 устройства дистанционного управления. При этом на устройство подается питание. Подключаем устройство к сети 220В. Нажимаем и отпускаем кнопку сброса S1.
Контролируем процесс инициализации: красный светодиод должен погаснуть; зеленый в первые секунды мигает, далее, при замкнутых контактах S2 - если в телефоне на SIM карту в первые ячейки телефонного справочника записаны два номера, то светодиод увеличит частоту миганий, если только один – будет включен постоянно, при отсутствии номеров – частота миганий не изменится. Если S2 разомкнута или кабель с датчиками отключен, то зеленый светодиод производит редкие двойные вспышки.
Подключаем кабель от приемника ДУ «люстры» с вилкой RJ-45 в соответствующую розетку устройства дистанционного контроля и управления.
Теперь наша система готова к работе. Включить нагрузку можно с пульта ДУ «люстры» или звонком на номер сотового телефона. При поступлении вызова, устройство сверит номер вызывающего абонента с указанными в справочнике телефона. Если такой номер есть, включится нагрузка (загорится красный светодиод), вызывающему абоненту будет подана команда «отбой», а через несколько секунд ему поступит ответный вызов, подтверждающий включение нагрузки.
Следующий входящий звонок будет отработан по той же схеме, но питание нагрузки будет отключено (контрольный светодиод погаснет). Ответный вызов в случае выключения нагрузки не формируется.
Таким образом, питание на нагрузку подается «через раз», при этом включение подтверждается обратным звонком на номер вызывающего абонента. При такой организации управления плата за соединение/вызов сотовыми операторами, как правило, не берется.
В случае пропадания напряжения в питающей сети, устройство перейдет на питание от аккумулятора сотового телефона. Переключение питания сопровождается моментом полного исчезновения напряжения на микроконтроллере. Таким образом происходит рестарт программы в микросхеме. При прохождении процедуры инициализации устройство определяет отсутствие напряжения в сети и посылает сигнал вызова на оба номера из телефонного справочника телефона. Примерно через шесть секунд вызов снимается. Так производится извещение «хозяина» о проблемах в питании устройства.
При питании от аккумулятора телефона, с целью снижения потребляемого устройством тока, оба светодиода (и, соответственно, светодиод оптопары) выключаются. Состояние управляющего нагрузкой сигнала сохраняется в EEPROM. При появлении питающего напряжения, на выходе восстанавливается его сохраненное значение и возобновляется работа светодиодных индикаторов.
При питании устройства от телефона сохраняются все функции по приему и формированию вызовов и СМС.
При изменении состояния контактов датчика, подключенного к PB1, формируется сигнал вызова на оба номера из телефонного справочника телефона. Примерно через двенадцать секунд вызов снимается. Так производится извещение «хозяина» об изменениях в состоянии контактного датчика. Так же в этом случае устройство примерно на четыре минуты изменяет алгоритм отработки поступающего вызова – вместо отбоя, устройство «снимает трубку», включая, тем самым, микрофон телефона. Это позволяет нам послушать «что творится на охраняемом объекте».
При поступлении СМС любого (кроме «0», «2» или «8») содержания от абонента с номером, указанным в одной из первых двух ячеек справочника на SIM карте телефона, подключенного к устройству, происходит следующее:
RCS21 Power is ON Air temp. is +26,7 Output is ON Door OPEN
В этом примере:
RCS21 – версия программы микроконтроллера;
Power is ON – состояние питающей сети (включена), OFF – напряжения нет;
Air temp. is +26,7 – температура окружающей среды в градусах Цельсия;
Output is ON – состояние нагрузки (включена, светодиод оптрона включен), OFF – выключена, светодиод погашен;
Door OPEN – контакты датчика S2 разомкнуты, CLOSE – замкнуты.
(Английский текст выбран с целью упрощения кодировки сообщения СМС в режиме PDU).
При поступлении СМС алгоритм отработки поступающего вызова также изменяется как описано выше на четыре минуты.
Если в тексте принятого сообщения единственная цифра «2» или «8», то соответственно включается или отключается нагрузка, затем отправляется вышеописанное сообщение.
Если в тексте принятого сообщения единственная цифра «0», то прерывается отсчет вышеупомянутого четырехминутного интервала и делается вызов на номер пославшего короткое сообщение абонента.
Во время работы устройство отслеживает манипуляции с клавиатурой телефона. Если обнаружено нажатие клавиш «2» или «8», то, соответственно, включается или отключается нагрузка (вывод РС2), после этого, а также при нажатии клавиши «5», на экран телефона выводится строка состояния. Вид строки (пример): #0*68##1**0
В этом примере:
#0*68 – значение измеренной температуры: -0,68 градуса. (# - признак «минус», * - десятичная точка);
##1 – состояние входа РВ1 (контактов S2) микроконтроллера (логическая «1»);
**0 – состояние нагрузки (инверсия РС2): 0 – выключено, 1 – включено.
Сначала для работы подготавливается телефон (в нашем случае была проверена работа с Siemens CF62 и AX75). В телефонный справочник телефона на SIM карту в первые две (или только одну) ячейки прописываем телефоны абонентов, команды от которых должно отрабатывать наше устройство. Телефоны указываются в формате (например): +7987654321, где «+7» вместо привычной «8», «987» - номер оператора и далее 7 цифр абонентского номера. Важно номера сохранять в первой и второй ячейках памяти именно на SIM карте, а не в памяти телефона – место сохранения выбирается при записи номера в телефон. Если допустимый номер единственный, то его надо сохранить в первой ячейке. Если обе первые ячейки оставить пустыми, то устройство будет отрабатывать команды от любого вызывающего абонента. Так же не будут отсылаться СМС и формироваться вызовы при изменении состояния контактного датчика и пропадании напряжения в сети.
Включенный телефон подключаем кабелем к разъему RJ-11 устройства дистанционного управления. При этом на устройство подается питание. Подключаем устройство к сети 220В. Нажимаем и отпускаем кнопку сброса S1.
Контролируем процесс инициализации: красный светодиод должен погаснуть; зеленый в первые секунды мигает, далее, при замкнутых контактах S2 - если в телефоне на SIM карту в первые ячейки телефонного справочника записаны два номера, то светодиод увеличит частоту миганий, если только один – будет включен постоянно, при отсутствии номеров – частота миганий не изменится. Если S2 разомкнута или кабель с датчиками отключен, то зеленый светодиод производит редкие двойные вспышки.
Подключаем кабель от приемника ДУ «люстры» с вилкой RJ-45 в соответствующую розетку устройства дистанционного контроля и управления.
Теперь наша система готова к работе. Включить нагрузку можно с пульта ДУ «люстры» или звонком на номер сотового телефона. При поступлении вызова, устройство сверит номер вызывающего абонента с указанными в справочнике телефона. Если такой номер есть, включится нагрузка (загорится красный светодиод), вызывающему абоненту будет подана команда «отбой», а через несколько секунд ему поступит ответный вызов, подтверждающий включение нагрузки.
Следующий входящий звонок будет отработан по той же схеме, но питание нагрузки будет отключено (контрольный светодиод погаснет). Ответный вызов в случае выключения нагрузки не формируется.
Таким образом, питание на нагрузку подается «через раз», при этом включение подтверждается обратным звонком на номер вызывающего абонента. При такой организации управления плата за соединение/вызов сотовыми операторами, как правило, не берется.
В случае пропадания напряжения в питающей сети, устройство перейдет на питание от аккумулятора сотового телефона. Переключение питания сопровождается моментом полного исчезновения напряжения на микроконтроллере. Таким образом происходит рестарт программы в микросхеме. При прохождении процедуры инициализации устройство определяет отсутствие напряжения в сети и посылает сигнал вызова на оба номера из телефонного справочника телефона. Примерно через шесть секунд вызов снимается. Так производится извещение «хозяина» о проблемах в питании устройства.
При питании от аккумулятора телефона, с целью снижения потребляемого устройством тока, оба светодиода (и, соответственно, светодиод оптопары) выключаются. Состояние управляющего нагрузкой сигнала сохраняется в EEPROM. При появлении питающего напряжения, на выходе восстанавливается его сохраненное значение и возобновляется работа светодиодных индикаторов.
При питании устройства от телефона сохраняются все функции по приему и формированию вызовов и СМС.
При изменении состояния контактов датчика, подключенного к PB1, формируется сигнал вызова на оба номера из телефонного справочника телефона. Примерно через двенадцать секунд вызов снимается. Так производится извещение «хозяина» об изменениях в состоянии контактного датчика. Так же в этом случае устройство примерно на четыре минуты изменяет алгоритм отработки поступающего вызова – вместо отбоя, устройство «снимает трубку», включая, тем самым, микрофон телефона. Это позволяет нам послушать «что творится на охраняемом объекте».
При поступлении СМС любого (кроме «0», «2» или «8») содержания от абонента с номером, указанным в одной из первых двух ячеек справочника на SIM карте телефона, подключенного к устройству, происходит следующее:
- проверяется состояние напряжения в сети;
- проверяется состояние контактов датчика, подключенного к PB1;
- отмечается состояние линии управления нагрузкой (оптроном);
- измеряется температура среды термометром DD1, полученное значение переводится в десятичную форму.
RCS21 Power is ON Air temp. is +26,7 Output is ON Door OPEN
В этом примере:
RCS21 – версия программы микроконтроллера;
Power is ON – состояние питающей сети (включена), OFF – напряжения нет;
Air temp. is +26,7 – температура окружающей среды в градусах Цельсия;
Output is ON – состояние нагрузки (включена, светодиод оптрона включен), OFF – выключена, светодиод погашен;
Door OPEN – контакты датчика S2 разомкнуты, CLOSE – замкнуты.
(Английский текст выбран с целью упрощения кодировки сообщения СМС в режиме PDU).
При поступлении СМС алгоритм отработки поступающего вызова также изменяется как описано выше на четыре минуты.
Если в тексте принятого сообщения единственная цифра «2» или «8», то соответственно включается или отключается нагрузка, затем отправляется вышеописанное сообщение.
Если в тексте принятого сообщения единственная цифра «0», то прерывается отсчет вышеупомянутого четырехминутного интервала и делается вызов на номер пославшего короткое сообщение абонента.
Во время работы устройство отслеживает манипуляции с клавиатурой телефона. Если обнаружено нажатие клавиш «2» или «8», то, соответственно, включается или отключается нагрузка (вывод РС2), после этого, а также при нажатии клавиши «5», на экран телефона выводится строка состояния. Вид строки (пример): #0*68##1**0
В этом примере:
#0*68 – значение измеренной температуры: -0,68 градуса. (# - признак «минус», * - десятичная точка);
##1 – состояние входа РВ1 (контактов S2) микроконтроллера (логическая «1»);
**0 – состояние нагрузки (инверсия РС2): 0 – выключено, 1 – включено.
Выводы. Перспективы.
Устройство получилось компактным и, сравнительно, недорогим. «Хозяин гаража» оперативно получает информацию о «проблемах» на объекте, может запросить более подробные сведения «о состоянии дел» и «вмешаться» включив или выключив обогреватель или иную нагрузку. Можно даже послушать «что происходит». И все это со СВОЕГО телефона из любой точки мира! В перспективе устройство можно бесконечно дорабатывать далее: осталась масса неиспользованных ресурсов микроконтроллера и место на плате.
Литература
- А.Пахомов. Дистанционное управление с телефона. – Радио, 2013, №11, с.37-39.
- AT-команды. Руководство по использованию АТ-команд для GSM/GPRS модемов.: Пер. с англ. - М.: Серия "Библиотека Компэла". ЗАО "Компэл", 2005. - 432 с.
- Модуль Evolution light на базе микроконтроллера ATmega88PA-AU. - http://ekits.ru/index.php?ukey=product&productID=2520
- А.Пахомов. Сотовый телефон – пульт управления микроконтроллерной системой. – Радио, 2011, №7, с.29-31.
Первый вариант статьи отослан в журнал в декабре 2013 года, выложен на сайте в октябре 2014 года
Дополнение к тексту статьи на основании опыта повторения конструкции другими и использования в гараже можно посмотреть - тут.