Суббота, 23.11.2024, 09:44
| RSS
Поиск
Главная |
Защита, контроль, управление
Форма входа

Меню

Авторские проекты

Статьи

Raspberry Pi

Полезная информация

Обратная связь

Ссылки

Форум

Чат

Канал YouTube

Группа в Facebook


Календарь
«  Январь 2013  »
ПнВтСрЧтПтСбВс
 123456
78910111213
14151617181920
21222324252627
28293031

Наш опрос

Ссылки


Яндекс.Метрика





.
Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0

Устройство управления и контроля по GSM. Версия 1.5

Устройство управления и контроля по GSM. Версия 1.5

Наш канал в YouTube


 

Версия 1.5 создавалась с целью объединить все предыдущие версии в одну универсальную. До этого в версиях 1.1 и 1.2 управление сигнализацией осуществлялось с помощью обычной кнопки, а в последующих версиях 1.3 и 1.4 – с помощью электронных ключей DS1990A. Сейчас пользователь сам может определять, какой способ управления сигнализацией ему использовать. Вне зависимости от выбранной конфигурации, электронный ключ или кнопка с нормально-разомкнутым контактом подключаются к одному и тому же входу – DS1990 (рис. 1)

 

 Рис. 1

 

 

 

 

Все возможности предыдущих версий сохранены в полном объеме. Кроме того, помимо способа управления сигнализацией, сделано следующее:

 

1. Оптимизированы подпрограммы работы с 1-wire (DS18B20 и DS1990A)

2. Введена функция контроля наличия на линии датчика температуры DS18B20

3. Полностью изменен принцип автоответа модуля  при дозвоне

4. Введена функция запроса и получения баланса счета SIM-карты

5. Изменен алгоритм инициализации модуля и UART

6. Введен выбор команды дозвона с GSM модуля

7. Изменен алгоритм очистки  EEPROM

8. В программе задействован сторожевой тайме микроконтроллера WDT.

9. Введено сохранение состояния нагрузок и сигнализации в случае полного пропадания питания (основного и резервного), а так же в случае перезапуска микроконтроллера.

Данная прошивка может использоваться как с «классическим» вариантом устройства, так и с Light версией.

Небольшие комментарии к некоторым пунктам. Функция наличия датчика температуры DS18B20 предполагает, что в случае его отсутствия, или неисправности, в информационном SMS возвращается сообщение NO SENSOR. В предыдущих версиях в подобной ситуации показывалось значение -1°С, что не позволяло точно определить – действительно ли температура  -1°С или это неисправность датчика.

В версии 1.5 полностью изменен алгоритм автоответа модуля. Если в предыдущих версиях количество входящих вызовов подсчитывалось по ответу RING модуля GSM, то сейчас эта функция определяется командой ATS0=x, где х – количество вызовов до автоответа модуля. Эти изменения были внесены ввиду того, что некоторые жаловались на то, что иногда модуль GSM не отвечает на входящие звонки. Поиски причин этого как автором, так и другими участниками форума на протяжении длительного времени успеха не имели, поэтому сделана попытка решить данную проблему кардинально – изменением алгоритма. Программирование количества вызовов при этом осталось прежним – через ячейку 0х05 EEPROM, а вот перед вводом пароля после автоответа модуля теперь необходимо нажать клавишу #. Возможно, для некоторых это будет немного непривычно, но по-другому при таком алгоритме автоответа, реализовать ввод пароля затруднительно.

Наибольшие затруднения вызвала реализация запроса баланса SIM карты. Дело в том, что у различных сотовых операторов, этот параметр абсолютно разный – как по передаваемой информации, так и по длине сообщения. Некоторые операторы, помимо баланса передают даты, бонусы, интернет-трафик и т.д. Поэтому выделять только цифровые значения из таких сообщений с целью определения баланса, не имеет абсолютно никакого смысла. В версии 1.5 запрос баланса организован следующим образом – принятый ответ на USSD запрос баланса просто вставляется в информационное SMS и отправляется пользователю. Длина этого сообщения ограничена 60-ю символами. В большинстве случаев этого более, чем достаточно. Однако, если ответ на запрос баланса все же превысит эту длину, то сообщение будет обрезано. Но так как информация о балансе обычно идет в начале сообщения, то особой проблемы здесь нет.

Номер USSD запроса для информации о балансе счета хранится в четвертой ячейке SIM карты. Он должен начинаться с символа # и иметь следующий вид: #xxx#. Данный формат поддерживается большинством операторов сотовых сетей, при его использовании сообщение возвращается в транслите латинскими буквами. Это сообщение вставляется в информационное SMS и отправляется пользователю. В случае, если запрос, начинающийся символом # не поддерживается оператором сотовой связи, можно вводить номер в формате *xxx#. Запрос информационного SMS производится аналогично предыдущим версиям – в режиме управления нагрузками необходимо последовательно нажать клавиши 7 и *. На рис.2 показано, как выглядит такое SMS с информацией о балансе:

 

Рис. 2

В процессе обсуждения данного устройства на форуме неоднократно отмечалось, что несмотря на фактически полную взаимозаменяемость GSM модулей SIM300D и SIM900D, все же между ними существуют некоторые отличия. Например, команда дозвона из определенной х-ячейки SIM-карты, для SIM300D имеет вид ATD>SMх, а для SIM900D - ATD. Так же по разному формируется команды на отправку сохраненного на SIM-карте SMS. Теперь пользователь сам может выбрать нужный модуль в конфигурации устройства без изменения исходного кода. При использовании других GSM модулей необходимо выбрать тот режим, который соответствует его АТ-командам.

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

В предыдущих версиях, как было обнаружено в процессе оптимизации кода, при полной очистке области EEPROM, предназначенной для записи электронных ключей, из-за ошибки в переключении банков не происходило восстановление адреса начала записи ключей 0х10. В текущей версии данная ошибка исправлена.

С введением с целью защиты от зависаний программы сторожевого таймера WDT, встал вопрос, что в случае его срабатывания, и, следовательно, перезапуска программы, сбрасываются установки состояния нагрузок и сигнализации. Для хранения данных о состоянии сигнализации задействована резервная ячейка 0х00 EEPROM. Состояние нагрузок сохраняется в той же ячейке, где храниться флаг, определяющий, нужно ли отключать нагрузки в случае пропадания сетевого питания – 0х0С.

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

Выбор соответствующего режима работы реле определяется значением нулевого бита числа, хранящимся в ячейке 0х0С EEPROM. Поэтому, в ячейке  0х0С при конфигурации прописывается число 0х00 или 0х01.

Однако, если произойдет полное отключение питания (сетевого и резервного), а так же в случае перезапуска микроконтроллера (срабатывании сторожевого таймера WDT), все нагрузки (а так же сигнализация), вне зависимости от того, в каком положении они находились, окажутся в отключенном состоянии. В версии 1.5 каждое изменение состояния сигнализации и нагрузок записывается в энергонезависимую память. Как уже говорилось, за контроль состояния сигнализации отвечает значение числа в ячейке 0х00 (нулевой бит), а для сохранения состояния нагрузок задействованы биты 1-4 значения числа ячейки 0х0С. Бит 0 значения числа ячейки 0х0С всегда остается неизменным, т.е таким, каким был указан при конфигурации устройства.

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

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

Конфигурация устройства выполняется аналогично предыдущим версиям -  как записью соответствующие значения в EEPROM при прошивке микроконтроллера, так и в процессе эксплуатации через DTMF команды. Значения ячеек 0х00 и 0х0F записывается только через прошивку EEPROM и недоступны при программировании через DTMF команды, т.к содержат служебную информацию, обеспечивающую правильную работу устройства! Для большей наглядности при «прямой» записи значений в EEPROM, можно воспользоваться данной конфигурационной таблицей

Для конфигурирования устройства посредством DTMF команд, необходимо набрать с сотового или стационарного телефона, работающего в режиме тонального набора, номер SIM-карты, установленной в устройство. После прохождения запрограммированного количества вызовов установится двухстороннее соединение. Нажать кнопку #, при этом загорится контрольный светодиод и последует звуковой сигнал. Ввести ранее установленный пароль. Если пароль введён неверно, произойдёт разрыв соединения. При правильном вводе пароля устройство переходит в режим управления нагрузками. Для входа из этого режима в режим программирования, необходимо нажать и удерживать не менее 3-х секунд кнопку PROG. После мигания светодиода отпустить кнопку и ввести с клавиатуры телефона новые параметры конфигурации:

1 значение (ячейка 0х01) – первая цифра пароля (0-9)

2 значение (ячейка 0х02) – вторая цифра пароля (0-9)

3 значение (ячейка 0х03) – третья цифра пароля (0-9)

4 значение (ячейка 0х04) – четвёртая цифра пароля (0-9)

5 значение (ячейка 0х05) – количество вызовов (1-9)

6 значение (ячейка 0х06) – режим работы реле К4 (0-1)

7 значение (ячейка 0х07) – контроль сетевого питания (0-1)

8 значение (ячейка 0х08) – использование канала пожарного датчика (0-1)

9 значение (ячейка 0х09) – 11-ти или 12-ти значный номер (0-1)

10 значение (ячейка 0х0А) – задержка 30 секунд на вход/выход (0-1)

11 значение (ячейка 0х0В) – контроль подбора электронного ключа (0-1)

12 значение (ячейка 0х0С) – состояние нагрузок в момент пропадания сетевого питания (0-1). Работает, только если активирован режим контроля сетевого питания. При включении/отключении определенных нагрузок, значение данной ячейки изменяется.

13 значение (ячейка 0х0D) – постановка на охрану (0 – кнопка, 1 – электронный ключ)

14 значение (ячейка 0х0E) – модуль GSM (0 – SIM300D, 1 – SIM900D)

Остальные ячейки  области конфигурирования EEPROM: 0х00 – состояние охранной сигнализации , 0х0F – область начала записи ключей (всегда должна быть10h). Вся оставшаяся  область EEPROM выделена под хранение кодов электронных ключей DS1990 (30 штук)

В область телефонного справочника SIM–карты необходимо занести следующие номера:

1 ячейка – номер, на который осуществляется дозвон при срабатывании охранной сигнализации

2 ячейка – второй номер, на который осуществляется дозвон при срабатывании охранной сигнализации

3 ячейка – номер, на который будет отправляться информационное SMS

4 ячейка – номер, на который отправляется USSD запрос о состоянии баланса.

В область хранения SMS SIM-карты заносятся сообщения, которые сохраняются вместе с номером (номерами), на которые они будут отправляться:

1 ячейка - «Тревога, зона охраны не восстановлена»

2 ячейка - «Пропало основное питание»

3 ячейка - «Основное питание восстановлено»

4 ячейка - «Сработал пожарный датчик» (или «Протечка воды», в зависимости для каких целей применяется канал контроля №2)

5 ячейка - «Была попытка подбора электронного ключа»

Несколько слов о доработках аппаратной части устройства. На форуме часто говорилось о предотвращении фантомной запитки GSM модуля. Участником нашего форума alex152 было предложено следующее «аппаратное» решение данной проблемы (рис. 3). Надеюсь, что приведенная схема в комментариях не нуждается. И хотя защиту от фантомной запитки я попытался реализовать программных способом, все же рекомендуется ввести данный узел в общую схему устройства, особенно, если кто-то будет разрабатывать печатную плату «с нуля».

 

Рис. 3

Если у вас в используется Light версия устройства, где GSM модуль подключается через COM порт с согласованием на МАХ232, то можно в процессе наладки и проверки устройства подключить линию, по которой передаются в GSM-модуль команды от микроконтроллера, к входу RX COM порта компьютера и отслеживать их терминальной программе. Если все работает правильно, то после включения устройства, регистрации его в сети, дозвона и выдачи команды на отправку информационного SMS (7*), окно терминальной программы должно иметь вид, показанный на рис. 4. В качестве терминальной программы в показанном примере использована программа GSM PORT 

 

 

 

Рис. 4

 

Как видите, использование терминальной программы делает наладку устройства очень удобным и позволяет наглядно отследить передаваемые микроконтроллером АТ-команды. Но все же, прокомментирую некоторые из них. Командой AT+CPBR=4 считывается номер из четвертой ячейки SIM карты, который затем сразу набирается устройством - #100#. Получив ответ на этот USSD запрос, включается текстовый режим работы с SMS - AT+CMGF=1. Далее считывается номер из третей ячейки SIM карты, на который будет отправляться информационное SMS, в нашем случае: +375296666666. Затем в это информационное SMS вставляются все параметры состояния устройства, полученное сообщение о состоянии баланса и SMS отправляется пользователю.

Если будет необходимо в терминальной программе посмотреть не команды от микроконтроллера, а ответы от GSM модуля, то необходимо переключить вход RX COM порта компьютера на линию передачи от модуля.

Внимание! Подключение входа RX СОМ порта компьютера возможно только в том случае, если между устройством и GSM модулем выполнено согласование на МАХ232 или аналогичных драйверах. Подключать «напрямую» без согласующих устройств вход RX СОМ компьютера к варианту устройства, где выход USART микроконтроллера непосредственно соединен с входом GSM модуля типа SIM300D или SIM900D, категорически запрещено!

По умолчанию в прошивке микроконтроллера в области EEPROM конфигурационных байтов хранятся следующие значения - пароль 1111, количество вызовов - 1, режим К4 - включен, контроль питания - включен, вход 2 - включен, страна - Беларусь/Украина, задержка 30 секунд - отключена, контроль подбора ключа - включен, контроль состояния нагрузок - включен, используется электронный ключ, используется модуль SIM300D.

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

 

Прошивка микроконтроллера версии 1.5 для GSM модулей SIM300D/SIM900D

 

Прошивка микроконтроллера версии 1.5 для GSM модулей Siemens MC35

 

ВНИМАНИЕ!  О всех версиях устройства управления и контроля по GSM читайте здесь: 

Версия 1.1 - Добавлен режим охранной сигнализации, контроль наличия сетевого питания. 

Версия 1.2 - Введена функция контроля температуры, дополнительный вход и режим дистанционного управления сигнализацией.

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

Версия 1.4 - Введена функция сохранения состояния нагрузок в случае пропадания и восстановления сетевого питания.

Версия 1.5 - Добавлена функция баланса счета, возможность использования электронных ключей DS1990A или обычной кнопки.

Версия 1.6 - Добавлено голосовое меню (необходима установка дополнительного модуля).  

Версия 1.7 - Финальная версия. Добавлен режим аудиоконтроля и импульсного управления нагрузками.

Версия Light - Новое конструктивное исполнение устройства. Возможность работы с любой прошивкой 1.0 - 1.7.

Дополнительный модуль - Позволяет осуществлять контроль наличия напряжения на нагрузках и ручной режим управления.  

 




Категория: | Просмотров: 10654 | Добавил: Admin | Теги: | Рейтинг: 5.0/4 |
Всего комментариев: 1


1 123ksn  
Автор - ГИГАНТ! 
Цитата
С введением с целью защиты от зависаний программы сторожевого таймера WDT
Для тех, кто не в теме: Программа в МК никогда не зависала, но иногда работает "не так" . С введением сторожевого таймера могут возникнуть определенные проблемы при отрицательных температурах. Тестируйте этот момент внимательно. Всем творческих успехов.





T2M © 2024
Сайт управляется системой uCoz