Освоение GSM на базе модуля SIM900D. Удаленное управление устройствами с помощью SMS

В последнее время появилось много различных вариантов схем устройств сигнализаций GSM. Если в данной схеме применяется модуль GSM, то в большинстве случаев – широко распространенный модуль производства китайской фирмы SimCom SIM300. Данный модуль показал себя с хорошей стороны, как в плане надежности, так и низкой стоимости.
В представлено описание устройства сигнализации GSM на основе модуля SIM300, разработанное автором. Там же приводятся чертежи печатных плат и полнофункциональная версия прошивки микроконтроллера. Так же под данную систему сигнализации разработаны различные модули расширения, пульты ДУ, клавиатурные блоки управления, блоки питания…
Но фирмой-производителем было заявлено , что с конца 2010 года производство модулей GSM линейки SIM3xx будет прекращено. Вместо него рекомендуется использовать новый модуль, выпускающийся этим же производителем – SIM900. Причем, как было заявлено, SIM900 будет намного функциональнее своего «предка», и, что для нас является одним из самых важных критериев, дешевле.

Кое-что о SIM900…

Так что же представляет собой модуль SIM900? Возьмем в руки datasheet и попробуем его прочитать.
Модуль SIM900 представляет собой четырехдиапазонный GSM/GPRS прибор, работающий на частотах 850/900/950/1900 МГц, предназначен для передачи голоса, данных, SMS сообщений и пр.
Основные технические характеристики модуля:
Диапазон частот:
GSM850, EGSM900, DCS1800, PCS1900
совместимость с GSM phase 2/2+.
Излучаемая мощность:
class 4 (2W/900 MHz)
class 1 (1W/1800 MHz)

Управление: AT commands (GSM 07.10)
Напряжение питания модуля: 3,4 – 4,5 В
Ток потребления:
в спящем режиме – 1,5 мА
в режиме передачи – до 500 мА
максимальный – 1,8 А
Рабочая температура: -30 … +80 С
Размеры: 24х24х3 мм
Масса: 3,4 г
Как можно увидеть, данный модуль по габаритам отличается от своего предшественника, модуля SIM3xx, примерно в полтора раза. Но и по параметрам и функциональности тоже превосходит на порядок.


Рисунок 1 – Внешний вид модуля GSM SIM900



Рисунок 2 – Назначение выводов модуля SIM900

Внешний вид модуля представлен на рис. 1, а назначение выводов – на рис. 2. По рисункам можно определить, что помимо стандартного интерфейсного набора, присущего предыдущим моделям (порты UART для обмена данными, вывод статуса модуля STATUS, выводы интерфейса SIM-карточки, и пр.), добавлено несколько новых (выводы подключения клавиатуры KBR/KBC, ШИМ-выход PWM, вывод сброса модуля NRESET).
Ввиду того, что данный модуль на момент написания данной статьи еще не прошел полной «обкатки» на просторах Украины, постоянно производятся доработки программного обеспечения, в описании возможны изменения, не ухудшающие работу в целом.

Основные параметры устройства

Данное устройство является продолжением линейки приборов сигнализации GSM, разработанных автором . Поэтому параметры во многом идентичны.
Наблюдение за состоянием четырёх шлейфов сигнализации (ШС) во всех режимах работы, кроме режима «Программирование», и отображения состояния шлейфов при помощи светодиодных индикаторов, расположенных на передней панели прибора (свечение индикатора – «шлейф в нормальном состоянии», в другом случае – присутствует обрыв или замыкание шлейфа сигнализации).
В шлейфы сигнализации могут быть включены:
> сигнализаторы магнитоконтактные (герконы СМК, СОМК);
> извещатели типа «Фольга», «Окно»;
> извещатели пожарные (ИП-104, ИП-105);
> датчики движения, объема, бития;
> прочие датчики, имеющие замкнутый выход в нормальном состоянии, и размыкающие контакты при нарушении.
Поддержка прибором следующих типов зон (шлейфов) сигнализации:
«нормальная» (сигнал «Тревога» формируется сразу при поступлении сигнала нарушения целостности шлейфа сигнализации, шлейф после срабатывания не восстанавливается);
«с задержкой» (пользователю предоставляется время на выход и на вход, чтобы можно было успеть включить прибор и покинуть объект или вскрыть объект и отключить прибор);
«коридор» (при срабатывании зоны и дальнейшем её возвращении в нормальное состоянии данный тип зоны снова берется под охрану);
«круглосуточная, пожарная» (шлейф сигнализации постоянно под охраной, снятие и взятие производится при помощи специальной SMS-команды);
«круглосуточная, тревожная кнопка» (шлейф сигнализации постоянно под охраной, снятие и взятие производится при помощи специальной SMS-команды, при срабатывании шлейфа производится только дозвон, отправка SMS-сообщения о саботаже, сирена при этом не включается);
«отключена» (система не реагирует ни на какие изменения на входе ШС).
Включение режима «Охрана» при помощи «скрытой», или «секретной» кнопки, «секретного» переключателя (вместо которого может быть использованная клавиатура с замыкающими контактами, типа «Satel»), пульта дистанционного управления, ключа TouchMemory (Dallas) или дополнительной клавиатуры, в зависимости от прошивки контроллера. Описываемая здесь прошивка использует только «секретный» переключатель, остальные версии будут рассмотрены позже.
Поддерживается два режима работы прибора:
сигнализация GSM (GSM-терминал подключен и с ним осуществляется обмен данными);
автономная сигнализация (GSM-терминал не участвует в работе системы, устройство работает как автономная сигнализация).
Снятие с охраны и постановка под охрану при помощи звонка с определенного телефона (может быть отключено) с передачей соответствующего SMS о состоянии системы.
Передача подтверждающего sms-сообщения при взятии объекта под охрану (может быть отключено).
Формирование сигнала «Тревога» (включение сирены, передача данных «тревоги» на мобильный телефон) при нарушении целостности («обрыв» или «замыкание») хотя бы одного из шлейфов сигнализации.
Отправка SMS-сообщений и автодозвон на три мобильных или стационарных (если обеспечивается поддержка SMS-функций оператором связи) номера телефонов.
Перевод прибора в режим «Снят с охраны» при помощи только пульта дистанционного управления, клавиатуры, путем приема SMS-сообщения с мобильного номера 1 и(или) дозвона с этого номера (может быть отключено), а также «секретного» переключателя, в зависимости от прошивки контроллера.
Возможность дистанционного управления устройством путем передачи SMS-сообщений определенного содержания (может быть отключена).
Программирование основных функций и параметров прибора (номера телефонов, время задержки, время работы сирены и т.д.) при помощи компьютерной программы Lite Programmer в режиме «Программирование» прибора. При этом выход СОМ-порта компьютера (выводы RxD и TxD) подключаются к соответствующему разъёму прибора сигнализации с помощью специального кабеля.
Подача прибором определенного сигнала пользователю о недостатке средств на счету мобильной карты.
Подача прибором определенного сигнала пользователю об отсутствии сигнала связи с мобильной станцией.
Передача сигнала SMS при пропадании питающего напряжения сети (220В) в режиме "Охрана" (может быть отключено).
Применение встроенного модема GSM позволяет обойтись без лишних блоков и подключений, а также повысить совместимость и стабильность связи GSM-канала.
Программированная реакция силового выхода: включение выхода только в режиме "Тревога" на установленное пользователем время (от 60 до 240 секунд).
Использование оригинального протокола передачи данных ИК-излучения пультом дистанционного управления для управления устройством и пультом радиоизлучения, а также оригинальная кодировка данных, поступающих с клавиатуры.
Имеется возможность контроля прибором напряжения питания сети и напряжения аккумуляторной батареи, при этом при пропадании и появлении напряжения сети отсылаются соответствующие SMS-сообщения. Также при понижении напряжения питания резервного источника (аккумулятора) ниже заданного уровня (8-9В) отсылается сообщение, после чего прибор переходит в «спящий» режим, выход из которого возможен только при возобновлении питания (сетевого или аккумуляторного).
Отправка SMS-сообщения на мобильный номер 1 при поступлении входящих звонков с указанием входящего номера (может быть отключена).
Прибор позволяет осуществить коммутацию внешних звуковых или световых оповещателей (звонок, сирена, лампа) с рабочим напряжением 12В и потребляемым током до 1,25А.
Прошивка микроконтроллера, описанная в данной статье, предназначена для работы устройства совместно с «секретным» переключателем, а также включения-отключения прибора при помощи дозвона и отсылки SMS-сообщений. Остальные варианты исполнения устройства будут описаны в следующих материалах, при наличии, естественно, читательского интереса.

Технические характеристики

Количество шлейфов сигнализации – 4.
Сопротивление выносного элемента (оконечного), кОм – 2,7.
Максимальное сопротивление шлейфа охраны без учета сопротивления выносного элемента, Ом – 750.
Потребляемый ток от источника постоянного тока (без подключенных активных датчиков сигнализации), при напряжении 12,6 В, в следующих режимах работы, не более:
- «дежурный», без использования GSM-модуля – 0,16 А;
- «дежурный», при использовании GSM-модуля – 0,23 А;
- «охрана», при использовании GSM-модуля – 0,28 А;
- «тревога», при использовании GSM-модуля и отключенной сирене – 0,34 А;
- пиковое (импульсное) потребление – 1,8 А.
Поддерживаемые стандарты GSM: 850/900/1800/1900 MHz.
Пределы установок времени:
- Время задержки на вход – 0…150 секунд;
- Время задержки на выход – 0…250 секунд;
- Время работы сирены – 30…250 секунд.

Описание схемы

Схема электрическая принципиальная основного блока приведена на рис. 3. Я уточняю – «основного блока», ведь к данным системам сигнализации дополнительно разработан большой набор периферии: здесь и разнообразные пульты управления, блоки расширения и пр. .
По сравнению с предыдущим вариантом схема претерпела качественные изменения: кроме, как уже говорилось выше, применения другого модуля GSM, также исключено реле (вместо него применена ИМС – набор мощных транзисторных ключей), а также исключен блок преобразователя RS232-UART (как показала практика, программирование производится не очень часто, и для этого используют, в основном, ноутбук, в котором порт RS232 зачастую просто отсутствует).



Рисунок 3 – Схема электрическая принципиальная

Главным управляющим элементом устройства является микроконтроллер ATmega168 производства компании Atmel . Микроконтроллер контролирует состояния шлейфов сигнализации, подключенных к входам АЦП, и, в зависимости от режима работы, осуществляет дальнейшие действия, как то: дозвон и отсылку SMS-сообщений, включение сирены, и т.д.
Входы АЦП PC0-PC3 предназначены для контроля состояния шлейфов сигнализации, МК производит измерение напряжения на этих выводах, и, в зависимости от напряжения, формирует сигнал «обрыв», «норма» или «замыкание». На PC5, PC6 подаются напряжения с выхода блока питания для контроля их значений. Кстати, если эти вывода не будут подключены, устройство не запустится!
В схеме используются контрольные светодиоды: LED1 – контроль работы модуля GSM (при наличии связи и работы модуля моргает с частотой 1 вспышка в течении 2-3 секунд, в остальных случаях имеются проблемы со связью или с самим модулем), LED2 – контроль работы системы (в рабочих режимах моргает с частотой 3-5 раз в секунду, в режиме программирования горит постоянным светом). Кроме этого, к выводам IND1…IND4 подключаются светодиоды контроля состояния шлейфов сигнализации LED4…LED7. KEY_S – собственно, сама «секретная» кнопка или переключатель. SPEAKER – разъем для подключения динамика, он может быть на любое сопротивление, мощность не менее 0,25 Вт.

О питании прибора. Данное устройство требует напряжения питания в пределах 10 – 18 В, при токе до 2 А. Блок питания целесообразно построить таким образом, чтобы напряжение питания не пропадало даже при пропадании сети, то есть предусмотреть аккумуляторную батарею. Рекомендуется использовать блок питания, применяемый в предыдущих версиях описываемого устройства . Там же описано и подключение блока питания к прибору сигнализации.

Программирование основных функций устройства

Программирование основных функций прибора осуществляется при помощи специальной программы – Lite Programmer. Последнюю версию программы всегда можно скачать на сайте автора. В принципе, вместо компьютера для программирования прибора возможно использовать мобильный телефон, подключенный к устройству через data-порт, или ИК-порт, но для этого нужно написать хотя бы java-мидлет, а за неимением свободного времени автору просто некогда этим заняться, да и программирование при помощи ноутбука пока устраивает. Если есть желающие заняться решением этого вопроса – пишите автору на электронную почту , вся документация будет представлена.
Подключение устройства производится к свободному СОМ-порту компьютера через специальный преобразователь RS232-UART, или к USB-порту через переходник USB-UART. Только не вздумайте подключать напрямую, без переходника (есть сейчас и такие умельцы)! Это грозит смертью микроконтроллеру или порту компьютера!
Порядок переключения в режим программирования:
1. Нажать на кнопку S1 на время не менее 2 секунд и дождаться прекращения мигания индикатора состояния работы модуля 2HL1 (обычно не более 10 секунд)
2. Обесточить устройство.
3. Установить джампер J1, переведя прибор в режим «Программирование».
4. Подключить кабель для связи устройства с компьютером.
5. Произвести установку связи с устройством и программирование (описано ниже).
6. Обесточить устройство.
7. Отключить кабель для связи с ПК и убрать джампер J1.
8. Программирование завершено, можно подать питание и пользоваться прибором.
Главная форма программы является стандартной, никаких излишеств и «наворотов». В правой части формы устанавливается номер СОМ-порта, а также скорость приема-передачи данных (для нашего случая – 115200 бод), для перевода устройства в режим программирования выбрать во фрейме «Действие» (в правом нижнем углу) – «установить связь», при этом светодиод 1LED1 загорится постоянным светом. Можно программировать!



Рисунок 4 – Главная форма программы Lite Programmer

Особых трудностей работа с программой для пользователя, хотя бы раз в жизни включающего компьютер не представляет. Кроме того, всё подробно описано в упоминаемой не раз Инструкции по эксплуатации и программированию. Если коротко: устанавливаете нужные вам параметры, убеждаетесь, что в третьей колонке красным цветом появилась надпись «Изменить», во фрейме «Действие» выбираете пункт «Программирование», нажимаете кнопку «Выполнить», и всё. Если параметр запрограммирован, то в пятой колонке появится надпись «Запрограммировано», при ошибках программа также выдаст соответствующее сообщение.

Некоторые нюансы программирования.

Следует особое внимание уделить процессу программирования, так как от этого зависит работа устройства в целом. Как показала практика, основная ошибка допускается при установке номера SMS-центра мобильного оператора. Если Вы этот номер не знаете, или не уверены, то лучше его совсем не программировать. Программное обеспечение модуля GSM в этом случае самостоятельно определит номер.
Также внимательно отнеситесь к установке номера USSD-запроса об остатке средств, если планируется его использовать. Первоначально устройство разрабатывалось для украинских пользователей, поэтому минимальная сумма остатка средств равна одному-девяти гривням-рублям. Возможны два варианта выбора установки. Первый – выбрать нужного оператора, и программа сама выставит требуемый номер и сумму минимального остатка, равную двум гривням. Второй вариант – выбрать из ниспадающего меню выбора оператора USSD-запроса пункт TUNE USSD, и затем в появившейся форме заполнить требуемые параметры: минимальная сумма (от одного до девяти рублей), разделитель рубли-копейки (некоторые операторы применяют различные знаки разделения, например, точка, запятая, двоеточие).
Программа пока поддерживает только латиницу при вводе текстов SMS-сообщений, так как данная функция поддерживается и программой микроконтроллера. В настоящее время ведутся работы по включению и кириллицы.

Краткое Руководство по эксплуатации.

Перед установкой в прибор сигнализации следует некоторым образом «подготовить» SIM-карточку, а именно: отключить пароль. Рекомендуется использовать в устройстве SIM-карточку того же мобильного оператора, что и телефоны дозвона. По крайней мере, вероятность доставки SMS-сообщений неоднократно возрастет.
После подачи питания и запуска прибор издаст один длинный звуковой сигнал внутренним динамиком, затем производится установка связи с модулем, по завершению которой звучат три коротких звуковых сигнала. Прибор готов к работе.
Далее пойдет речь об использовании прибора в качестве устройства охранной сигнализации помещений домов и пр. Для использования устройства в качестве автомобильной сигнализации или прочих функциях требуется в первую очередь другая прошивка микроконтроллера, а это выходит за рамки настоящей статьи. Это тема последующих публикаций.
Для того, чтобы поставить прибор под охрану, нужно замкнуть переключатель KEY_S. Кстати, вместо данного переключателя можно использовать любую клавиатуру с замыкающими контактами, например Satel SW02. После этого прибор начнет отсчитывать время на выход (время устанавливается при программировании), в течении которого необходимо покинуть охраняемый объект. Если по истечении времени на выход все шлейфы находятся в собранном состоянии, прибор переходит в режим охраны. В том случае, если по истечении времени на вход хотя бы один из шлейфов будет в обрыве или замыкании, прибор издает прерывистый звук в течении 100-140 секунд, отправляется сообщение о невзятии объекта под охрану на номер 1 (если запрограммировано), после чего переходит в режим тревоги с отправкой всех сообщений и дозвоном. Также можно поставить прибор под охрану дозвоном с номера, запрограммированного первым, или отправленным SMS-сообщением с текстом «START» с этого же номера. Следует помнить, что в данной версии прошивки не рекомендуется совместное использование при постановке под охрану «секретного» переключателя и функций GSM для исключения их взаимного влияния. При совместном использовании приоритет будет на стороне переключателя, GSM-функции работать не будут!
В режиме охраны прибор постоянно контролирует состояние всех шлейфов сигнализации, а также состояние модуля GSM. При этом, если происходит срабатывание шлейфа, отправляются SMS-сообщения и производится дозвон, в соответствии с картой программирования. Дозвон осуществляется до снятия абонентом трубки, но не более восьми раз. Также в режиме охраны контролируется питание сети 220В, и аккумуляторной батареи резервного источника. При этом, при каждом пропадании 220В и последующем его появлении происходит передача соответствующего SMS-сообщения (эту функцию можно отключить при программировании).
Для снятия прибора с охраны необходимо вскрыть объект, и в течении времени на выход разомкнуть контакты переключателя. Если этого не сделать, прибор переходит в режим тревоги. Или снять объект с охраны до вскрытия, позвонив по телефону, или отправив с первого номера SMS-сообщение «STOP».
В дежурном режиме устройство также контролирует состояние шлейфов сигнализации, а также модуль GSM. При потере связи с модулем или потере сети через каждые 2-4 минуты раздается пять кратковременных зуммера. Также каждые 30-40 минут идет опрос состояния счета мобильного номера. При этом раздаются десять кратковременных звуковых сигнала («трель»), и отсылается одно SMS-сообщение (“NO MONEY!!”) на номер 1.
В таблице приведены служебные сообщения, которые может отправлять устройство при появлении тех или иных событий (при отключенной функции отправки, при программировании, данные сообщения не отправляются!):

Текст SMS

Описание

Примечание

Stop guard!

Подтверждение снятия системы с охраны

Дежурный режим

POWER OFF!!!

Неисправность или отсутствие напряжения сети 220В

Только в режиме охраны

Power ON

Появление напряжения сети 220В (после отсутствия)

ALL POWERS OFF!!!

Все питающие напряжения ниже нормы. Через некоторое время устройство перейдет в спящий режим.

Во всех режимах работы

Start after sleeping

Возобновление работы устройства после пропадания питания

NO MONEY!!!

Минимальная сумма средств на счете. Необходимо пополнить счет!

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

Заключение

Описываемое устройство прошло первоначальное тестирование в лаборатории автора и показало неплохие результаты. Модуль SIM900 показал стабильную работу при управлении стандартными AT-командами, особых жалоб не наблюдается. В скором времени будут разработаны печатные платы данного прибора и подготовлена соответствующая документация. Демо-версия прошивки микроконтроллера прилагается к данной статье. Полнофункциональная версия прошивки микроконтроллера устройства предоставляется любому желающему бесплатно. Для этого следует направить соответствующий запрос на электронный ящик автора или по ICQ . Также рассматриваются любые предложения по организации производства описываемого прибора сигнализации и периферийных устройств.
В дальнейшем планируется обеспечить совместимость прибора со всеми периферийными устройствами, предназначенными для предыдущей версии устройства сигнализации GSM авторства Д. Дмитренко . Здесь собраны дополнения к статье для различных частных применений

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

1. Использование для управления устройством ключа TouchMemory

В настоящее время разработана прошивка микроконтроллера для работы с ключами TouchMemory . Для этого необходимо устройство дополнить несложным устройством, состоящим из двух резисторов, емкости и стабилитрона. И, естественно, использовать прошивку для этого типа устройств.
Пример использования такого устройства наглядно описывается в статье Сигнализация GSM с применением ключей iButton . Там же, на схеме электрической принципиальной, показано подключение дополнительного устройства, приведены чертежи печатной платы.
Прошивку можно скачать [ищем для устройства DDN Research HG45Q]

Vassilis Serasidis

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

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

  • управление 4 реле (вкл./выкл.);
  • возможность отслеживания состояния реле и 8 цифровых входов для дальнейшей отправки SMS пользователю с целью информирования о текущем состоянии;
  • простая схема, небольшое количество используемых компонентов;
  • управление с помощью SMS. Команды управления защищены паролем (может быть изменен пользователем) с целью предотвращения ложного срабатывания.

Принципиальная схема устройства изображена на рис. 1.

Основой устройства является микроконтроллер ATtiny2313 корпорации и GSM модуль производства фирмы .

Микроконтроллер IC2 работает на частоте 4 МГц, которая задается внешним кварцевым резонатором X1.



Рис.2 Внешний вид GSM модуля GM-47

Для работы GSM модуля необходима SIM карта, которая подключается непосредственно к модулю с помощью специального держателя. Питание микроконтроллера и GSM модуля осуществляется от регулятора IC1 LM1117T 3.3 с выходным напряжением 3.3 В. Вообще, микроконтроллер сохраняет работоспособность в пределах 2.7 В - 5.5 В (при рабочей частоте до 10 МГц), поэтому для обеспечения согласования логических уровней GSM модуля и микроконтроллера мы можем запитать его от регулятора IC1.

Коммуникация с GSM модулем осуществляется на скорости 9600 бит/с с помощью AT команд. Стоит заметить, что уровни напряжения при данной коммуникации составляют 3.3 В со стороны микроконтроллера AVR и 2.75 В со стороны GSM модуля. Поэтому для адаптации уровней был применен транзистор T5 BC547 .

Модуль подключается с помощью коннектора на печатной плате.



Рис.3 Печатная плата с установленным коннектором под модуль GM-47

Подключение SIM карты осуществляется с помощью слота K15, который имеет встроенный концевой переключатель SW для обнаружения присутствия карты в держателе.

Управление реле осуществляется посредством ключей выполненных на транзисторах BC547


Рис.4 Внешний вид печатной платы с установленным модулем

Светодиод D6 предназначен для индикации статуса подключения к сети, и если он мигает, то это означает удачное подключение к сотовой GSM сети, которую поддерживает SIM карта. Если светодиод постоянно светится - это означает, что модуль не может подключиться к сотовой сети.

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

Какие задачи выполняет микроконтроллер AVR

После подачи питания на плату микроконтроллер ожидает пока пройдет инициализация GSM модуля, т.е. модуль должен считать SIM карту и подключиться к GSM сети, которую она поддерживает.

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

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

Затем следует команда, благодаря которой из текста SMS сообщения будет удаляться некоторая информация, например номер SMS сервера, дата и время. Это сделано с целью уменьшения SMS и упрощения работы микроконтроллера с ними.

Следующая команда предназначена для чтения SMS, сохраненного по первому адресу в памяти модуля.

При наличии текста SMS микроконтроллер считывает его и проверяет наличие корректного пароля. По умолчанию пароль - 1234, который затем может быть изменен пользователем. После проверки пароля проверяется наличие символа «*», который означает смену пароля на следующие после символа «*» 4 цифры (буквы).

После этого SMS обрабатывается далее с целью обнаружения зарезервированной команды где X - означает номер реле (1-4), Y - команда вкл./выкл. реле, может принимать значения 1 (вкл.) или 0 (выкл.). Например, команда Relay2=1 означает включить реле №2.

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

После всех этих операций микроконтроллер удаляет SMS сообщение находящееся по первому адресу в памяти модуля и переходит к ожиданию получения следующего SMS-сообщения.

Посылка команд с помощью SMS с мобильного телефона осуществляется с соблюдением определенного синтаксиса. Рассмотрим его на примере команд:

  1. Команда: 1234*5678 Relay1=1 Relay2=0 Relay3=1 Relay4=1 Status
    Здесь мы имеем самую насыщенную команду. Сначала мы посылаем пароль (1234) и указываем, что он будет сменен (*) на 5678. Затем мы включаем реле №1, 3, 4 и выключаем реле №2. Кроме того, затем посылая команду мы запрашиваем информацию о состоянии 8 датчиков и всех реле.
  2. Команда: 1234 Relay1=1 Relay2=0 Relay3=1 Relay4=1 Status
    В этой SMS-команде мы включаем реле №1, 3, 4, выключаем реле №2 и запрашиваем информацию о состоянии датчиков и реле.
  3. Команда: 1234 1=1 2=0 3=1 4=1 Status
    Данная команда аналогична рассмотренной команде 2), здесь мы опустили слова.
  4. Команда: 1234 Status
    При помощи мы только запрашиваем информацию о состоянии датчиков и реле.
  5. Команда: 1234 Relay2=0
    В этой команде, как видно, мы только отключаем реле №2

Принципиальная схема, рисунок печатной платы, исходный код (AVR ассемблер) - .

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться .

  • а возможно ли использовать вместо SM модуля GM-47 мобильник,по моему мобильник легче достать и дешевле
  • Таких модулей и нет в продаже. А так интересное устройство. Вообще здесь много интересных вещей печатают, если бы ещё и всё это доступно было бы нам...
  • Управление посредством SMS возможно с использованием GSM модема или телефона, используемого в качестве модема, подключенного к компьютеру. Вас интересуют детали реализации? Или этот вариант с применением компьютера для Вас слишком громоздок!? Можно использовать микро PC или контроллер совместимого типа с GSM модулем, этот вариант компактнее. Так что упоминаемые выше специализированные устройства, это и есть по сути GSM модем + компьютер, можно реализовать и самостоятельно из более широко доступных компонентов.
  • Можно, я так думаю, использовать совместимые модули, у которых система команд совпадает...
  • В GSM модулях и мобильных телефонах для управления и контроля используется специализированные АТ команды, набор которых, в основном, для различных фирм изготовителей и различных подобного рода устройств один и тот же, и в зависимости от специализации устройства и особенностей набор команд включаются дополнительные спец команды. Это устройство можно переделать практически под любой GSM модуль или мобильный телефон. Делаем на плате разъем управления, которое осуществляется по 2-х проводному интерфейсу UART, вместо 20 – 40 ног для модема, и немного правим исходный код АSM, который нам доступен (что может даже и не понадобится!) ну и само собой под новый проект новая разводка платы. И получаем универсальное устройство управления и контроля.
  • Вот вариант реализации удалённого управления на доступном GSM модуле SIM300D - http://electromost.com/index/mnogofu...kontrolja/0-35 При использовании SMS есть один момент - доставка SMS оператором по времени не нормируется. Поэтому управлять ответственными устройствами таким способом не рекомендуется. Кроме того, в обязательном порядке нужно отслеживать подтверждение выполненной команды - иначе "пульнули" SMS и неизвестно - выполнена команда или нет:). Поэтому при использовании сотовой связи управлять нагрузками нужно в "режиме реального времени" с подтверждением выполненых команд. Например, использовать GPRS. Или хотя бы DTMF - как в устройстве, ссылку на которое давал выше.
  • Господа, всем доброго времени суток! Кто-нибудь пробовал собирать сей девайс? Мои попытки с использованием модуля Neoway M590 не увенчались успехом. После чтения принятого СМС микроконтроллер делает паузу на пару секунд, затем удаляет его из памяти и продолжает посылку в модуль АТ-команды по циклу. При этом не происходит ни изменений состояния реле, ни отправки сообщения по команде "Status". У кого-нибудь есть мысли по этому поводу?
  • Пошивка устройства нерабочая. Я тоже собирал такой девайс на плате с оригинальной разводкой, и с GR-47. Реакция такая же как и у Вас. Также читал на одном западном форуме о подобной проблеме этого девайса. Чтобы не ковырять листинг на асме, переписал на CodeVision AVR, при этом ввел оптимизацию: не постоянно гонять цикл опроса, а в начале работы с модемом отправить команду на выдачу в терминал сообщения о приходе смс, и дальше парсить смс после прихода сообщения о получении.
  • Вот и я перерыл практически весь интернет в поисках правды, и даже писал автору Serasidis Vasilis с просьбой помочь разобраться (на английском, естественно), однако так ничего и не добился. Как мне кажется, засада тут кроется в различии телефонных номеров наших и забугорных. Из листинга программы видно, что у них этот номер на одну цифру больше, соответственно, необходимо везде корректировать параметр регистра "No_Of_ignore_bytes" (R25). Хотя, могу и ошибаться. На одном из профильных сайтов поднималась эта проблема в точности как и у нас, и похоже, ее там благополучно решили, но каким именно образом, к сожалению, умалчивается. Зарегистрироваться на этом сайте, чтобы пообщаться с участниками темы тоже не получается - отфутболивают без разъяснений, сразу на этапе регистрации. Вот ссылка: http://www.edaboard.com/thread290544.html Уважаемый max7780, если у Вас устройство заработало, не поделитесь программой? Был бы очень Вам признателен, поскольку мои познания в программировании не позволяют мне написать такую сложную программу с нуля ни на асме, ни на СИ, а ковырять имеющуюся я уже просто мозг сломал за два месяца.
  • Устройство собирал 5 лет назад, если найду, то возможно завтра выложу исходник. Но там реализованы не все функции, например не делал команду status, которая читает состояния входов, и нет гарантии что программа заработает с Вашим модемом, возможно есть какие - то отличия в ответах на команды или в самих командах. Также в оригинальном исходнике отсутствует анализ ответа модуля, модем может сообщить об ошибке, а программа продолжит выдачу команд, либо модем может банально зависнуть, а микроконтроллер просто не сможет его перезагрузить, так как на оригинальной плате отсутствует управление PowerPin-ом модуля. Я проанализирую Datasheet на Ваш модуль и помогу, чем смогу. Также хотелось бы сказать что 590-й - редкостная дрянь, три модуля купил, только один нормально заработал без глюков. При переделке софта не стояла задача обеспечить безотказную работу устройства гарантировано в течении длительного времени, а просто запустить железку, также много неоптимального кода, лучше я перешлю Вам эту программу на электронную почту.
  • У меня из двух приобретенных модемов 590-х тоже заработал нормально лишь один, второй шлет в эфир всякий мусор, который видно на терминале. Пробовал подбирать скорость - бесполезно. А второй работает четко на скорости 9600, но с микроконтроллером дружить не хочет почему-то, хотя, тут мы уже выяснили, что дело скорее всего в самой программе. Однако, для меня все равно остается загадкой почему у одних она работает, а у других нет. Вроде у GM47 и NEOWAY полностью совпадают протоколы АТ-команд, единственное отличие - у Neoway нет порта под микрофон, соответственно - невозможно реализовать голосовой вызов. А схема и контроллер у Вас остались прежними, или изменились? Да я буду рад любому, даже "сырому" решению, ведь потом его уже можно доработать как положено. Главное - это основа. Так что буду безмерно благодарен, если отправите прогу на адрес [email protected], тогда уже можно будет двигаться дальше в этом направлении, потому как сейчас я просто зашел в тупик...

Здравствуйте!
Встала тут задача по управлять загородным домом, последить за температурой, дверями, окнами. И тут же возник вопрос о среде передачи данных. Ну провода и радиоканал отпадают из-за дороговизны, ВОЛС просто мечты, а вот GSM то что нужно. Сначала пал глаз на старые телефоны "Motorola", "Nokia", "SonyEricsson". Посмотрел, повертел и передумал. Первое, не хотел подпаиваться к контактам кнопок, да и обратной связи нет. Второе, разбираться с ПО телефона, ну это совсем не в кассу. В общем в творческих раздумьях и плавая в просторах всемирной паутины, изловив пару вирусов был найден компромисс. И работа с ПО и без всяких кнопок. Все это предлагает модуль SIM900D . Чем он мне приглянулся.
- Первое это простота монтажа. В этом вы убедитесь позже. - Второе это общение через UART. (Это значит МК + SIM900D = нормальная связь) - Третье это питание модуля от 3 до 4.8 вольт. Хош AVR, хош ARM. По вкусу. Ну лирики хватит, пора по делу.
Выглядит сей модуль так.

По поводу монтажа. Как видите модуль заточен на поверхностный монтаж. Размеры контактных площадок достаточно большие даже для ЛУТа. Ниже картинка моего устройства.

Как видите ничего сложного. Теперь давайте поговорим о схеме подключения этого чуда. Глядим мануал. И видим распиновку.

Да, много всего, но все использовать не будем. Первое что нам потребуется это обвязать все выводы "GND". Если глянуть на правый верхний угол, то можно заметить три отдельных вывода. Два "GND" и "ANT". Эти выводы расположены таким образом не просто так. Глянем в документацию на картинку подключения антенны.

59 и 61 контакты должны находиться как можно ближе к выводу антенны. Дополнительные схемы выделенные пунктиром, нужны для подключение антенн с кабелем. Поэтому я впаял SMA разъем как можно ближе к выводам 59, 60, 61 и не стал заморачиваться со схемой согласования, при этом с антенной на 3-х метровом кабеле и в месте очень плохого приема, выжал из модуля 13 балов из 31. Разъем видно на картинке выше. Точнее ноги от него)) Сам разъем с другой стороны. При этом контакты 59 и 61 как бы обнимают антенну. Ну как-то так. Далее давайте поговорим о SIM-карте. Для ее установки я использовал вот такой разъем (SIM ICA-501-006-01-F7)

Самое интересное то что я нашел 3 варианта распиновки SIM-карт. Какую использовать? Не буду вносить интриги, а для простоты привожу распиновку данного разъема. Вид сверху.

Но это еще не все. Если глянуть в монуал на схему включения SIM-карты, то там можно увидеть некую микросхемку под названием SMF05C . Эта микросхема содержит защитные диоды аж 5 штуков. Нужна для зашиты контактов SIM-карты. Конечно можно ее и не ставить, но тогда будьте внимательны и не трогайте контакты пальцами!!! Я как грешный человек за себя не ручаюсь, поэтому микруху припоял. А вот и сама схема.

Она конечно приведена для 8-и контактной SIM-карты, но для 6-ти будет тоже самое. Есть правда две засады с этой микросхемой. Первая это то что ее хрен где сыщешь. А вторая то что размер ее... Я когда получил заказ и достав положил ее на стол... Короче на втором рисунке сверху она впаяна между SIM-картой и батарейкой. Для сравнения резисторы 0805. Ну а справа транзистор в корпусе SOT-23. Так ну вроде с SIM-картой разобрались, поехали дальше. А дальше светотехника. Вообще говоря это на любителя. Так как все эти сигналы можно завести прямо в МК и он там сам пускай разбирается. Я все их вывел из чувства к прекрасному. Так что решайте сами.
- Первое это сигнал включен модуль или нет (STATUS) лог 1 - Второе это сигнал наличия регистрации сети (NETLIGHT) лог 1/0 (мигает) Если мигает с одинаковой частотой, значит не зарегистрировался в сети Если длинный промежуток, значит есть конект к сети. - Третье это сигнал звонка/sms (RING) лог 0 Горит если есть входящий звонок и моргнет при получении sms-сообщения. Первые два сигнала нужно подключать через NPN транзистор в ключевом режиме.

А третий сигнал (RING) нужно подключать через PNP транзистор. Еще один не мало важный сигнал, это кнопка включения и выключения модуля. (куда же без нее). Вот что нам предлагает мануал.

То есть подали лог 1 на базу транзистора на 1 секунду и модуль включился.
Теперь давайте поговорим о питании. Да, я бы ща от хорошей тарелочки борьща не отказался бы, а вы? Ну ладно, едем дальше. Питается модуль напругой от 3 до 4.8 вольтов. Вроде все просто, да не так. В момент звонка, передачи sms, поиска сети модуль может потребовать аж до 2А. Во как. Так что любители LM7805 и КРЕНок могут огорчиться. К счастью в мануале присутствуют две схемы на микросхемах MIC29302 (я так в продаже ее и не нашел) и LM2596 (эту купить можно). Но я лениииивый и собирать питалово с таким большим количеством обвязки просто не захотел. Я пошукал в интернете и нашел. Есть такой хороший стабилизатор для процессоров типа "Пень", "AMD" на 3.3в и до 7.5А. Во, думаю то что надо и ARM запитать можно и модуль. Вот схема этого чуда.

А вот как это выглядит в собранном виде.

Радиатор поставил со страху, в принципе микросхема не греется даже во время звонка. И последнее на что следует обратить внимание, это на батарейку. Она нужна для поддержания жизни часов реального времени. Самое важное что оставлять этот вывод в воздухе нельзя. Лично я сошелся на подключении батарейки чего и вам желаю. Можно конечно две АА влепить)) но как-то крупновато, а вот в форме таблетки 2032 на 3v то что надо. Благо они стоят не дорого и отсеки паять можно прям на плату. По моему это самое простое решение. Решать вам. Ну вроде и все. Вот как это все безобразие выглядит вместе и в работающем состоянии.

В следующей статье я расскажу как ломал этот модуль но уже программно через терминал при помощи АТ команд.
Выкладываю схемы в PCAD-2006
Архив с файлами модуля GSM.
Архив с файлами блока стабилизации.
Продолжение цикла статей о GSM модуле.
AT-Команды.
Связь модуля с ATmega8515.
Отладочная плата на базе SIM900D


Foli 14.03.13

Хотелось бы подробней о АТ командах, UARTу и непосредственно работы с этим в CodeVision

Алексей 15.03.13

С АТ командами разбираюсь. Не хочу выкладывать половину работы, так как есть некоторые вопросы. А с UARTтом и CVAVR там все просто. Как только разберусь с АТ командами сразу выложу и какие команды и как из CVAVR их подать.

Anatok 04.11.13

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

Алексей 04.11.13

GSM модуль жрет до 2А при регистрации в сети или звонке или связи по GPRS. Для таких ресурсов требуется хороший аккумулятор, а при -30 АКБ долго не проживет. Даже в метеостанциях на уличных датчиках рекомендуют использовать простые батарейки.

Мишка 11.11.13

Если еще актуально и интересно...помотри на EAT для SIM900. В нем внутри ARM и есть SDK в котором можно загружать приложения в SIM900 из которых можно много всего делать...например посылать те-же AT команды...+клавиатура + SPI дисплей... + 2 АЦП:) Нескучного вечера:)

Мишка 11.11.13

А све-таки для него очень красиво делать для него питание на L5973D. Да про 2А написана в даташите...но практически это очень кратковременные импульсы. У меня он прекрасно работает например с Arduino Mega которая сама питается от USB порта (у которога ток 0.5 А)

Алексей 11.11.13

В этом-то и загвоздка. Я тоже по началу питал от 7805, все работало, а потом бац... И при подключении к сети все гаснет, а потом в рестарта идёт. Видимо сторожевая собака по припадке питания рестартует. А с L7953D будет красиво, но где её взять и скопа она будет стоить:) Поэтому я перешёл на IRU1075

Алексей 11.11.13

Прошу прощения за ошибки, это чертов ГУДРОЙД горбыли лепит за меня. Думает он умнее. Не буду править, пусть Гуглу стыдно будет за их работу.

дядяМиша 24.12.13

У меня при регистрации в сети атмега в перезагруз уходит. Хотя стоит импульсный dcdc. Конденсаторов на 200мкф. А бывает, работает стабильно. Замучался уже.

Алексей 25.12.13

Схему в студию. Со слов довольно сложновато понять проблему.

дядяМиша 25.12.13
дядяМиша 25.12.13

Http://ybex.com/d/tk7kgiefpklpeujb1zbl4lo5 mrkf7ayvci04ouq3.html МК запитан от 2.8 (пробовал даже 3.7) Вольт, чтобы не городить преобразователь уровня.

Алексей 25.12.13
сергей 19.07.14

Алексей здравствуйте! у вас есть готовые платы с сим900, можно ли купить?

Алексей 19.07.14

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

Андрей 28.09.14

Я так понимаю это прототип той платки которую я жду не дождусь. Только в коммерческом варианте её поженили с блоком питания и облагородили аудио выходами. Что есть большой гуд.

Алексей 28.09.14

Собственно так и есть. Я просто сразу убил несколько зайцев. Решил извечную проблему с питанием и согласованием уровней на UART. И для шика добавил аудио вход и выход. Фактически готовый сотовый телефон.

Андрей 28.09.14

Хотел бы внести рацуху на будущее. по сути данная плата законченный узел. И её ПРАКТИЧЕСКИ можно использовать в готовом изделии. однако есть одно НО. При мезонном навесе её по любому лучше ставить сверху (разъем антены, доступ к симкарте) поэтому вполне целесообразно параллельно всем штырькам для "периферии" оставлять отверстия для таких же штырьков с возможностью впайки оных направлением "вниз". Т.е. захотел я данный девайс насадить на плату микроконтроллера, развёл под твой, запаял ответные разъемы в него и состыковал. Ещё и с

Андрей 28.09.14

Сожрало полмессаги, но мысль надеюсь понятна-)

Алексей 28.09.14
Сергей 01.02.15

Подскажите почему модуль греется и неловит сеть?

Алексей 01.02.15

Здесь есть несколько причин. Первая, превышено питание. Второе, не попал ли плюс на общий. Нужно внимательно посмотреть ножки питания. Третье, не касается ли модулю брюхом питающих линий. На брюхе есть несколько технологических контактов которые должны быть изолированны от каких либо проводников. Четвертое, не замкнут ли вывод антенны с общим выводом. А если быть точнее, то необходимо смотреть плату. Сбросьте мне плату на почту и я посмотрю, может там что-то не так.

Сергей 01.02.15

Платы у меня заводские, МастерКит BM8039 и на обеих одна и та же проблема..вставляешь симку модуль начинает грется и нет сети.

Алексей 01.02.15

Довольно сложно сказать. Схема заводская, надо по плате полазить. Из документации видно что на плате нет рекомендуемых защитных диодов для SIM-карты. Сама карта и разъем по пинам совпадают? 300 модуль старый и по моему он работает только с симками 5 вольтовыми, а сейчас они все на 3в. Но я могу и ошибаться. Надо смотреть саму плату, так сложно что-то сказать. Если симптом на обеих один и тот же, то я бы какпал в сторону разъема и вольтажа симок. Еще раз, современные симки на 3-х вольтовые.

Сергей 01.02.15

Стоит sim900D...диодов нет.Когда вставляю карту появляется питание на модуле и он начинает греться,но на симку напр. с 9 ноги не идёт..

Сергей 01.02.15

Изначально работали нормально..потом что то коратнуло...не могу понять что..

Сергей 01.02.15

Можно как то проверить модуль не выпаивая?

Алексей 01.02.15

А что именно коротнуло? Если питание на симку не идет, то я боюсь сдохла линия для симки. А симка сколько ног? 6 или 8? Для проверки можно не вставляя симки пообщаться с модулем по шине UART 3, 4 ноги. Если откажется принимать АТ команды, то я думаю можно его хоронить.

АНОНИМ 01.02.15

Что коротнуло точно незнаю..ног 8 ..а как пообщаться то?

Алексей 01.02.15

А на разъеме тоже 8? Берем микросхему FT232RL, собираем переходник USB<->TTL, припаеваемся к UART модуля, запускаем терминал, например Putty, пишем AT и давим ентер. Если вернет ОК, значт еще не все потеряно. Если тишина... На помойку. А да, какие светодиоды а плате? как определяется наличие регистрации в сети?

Сергей 02.02.15 03:12

На разъёме тоже 8..на плате два светодиода зелёный и красный,наличие сети определяется по морганию зелёного раз в три секунды...можно как то вставить фото платы?

Алексей 02.02.15 07:42

Проще перейти на форум.

Сергей 02.02.15 14:02

Если не вставлять симку значит нужно подать питание на модуль?

Алексей 02.02.15 15:48

Я не могу гадать на кофейной гуще. Мне нужна либо схема, либо плата. И причем тут питание модуля и сим карта? Там скорее всего еще с каким-то микроконтроллером пересекается. Он и подает питание. В общем нужна схема. А так это как диагноз по телефону ставить.

Сергей 02.02.15 15:56

Где на форуме можно выложить схему?

Сергей 02.02.15 15:57

Питание на модуль приходит только когда вставляешь симку

Алексей 02.02.15 19:27

Ну нет такого у модуля SIM900D. Для включения модуля необходимо удержать низкий уровень на ножке 12, а потом поднять. Сим карту вообще нельзя вставлять или вынимать при включенном модуле, есть вероятность сжечь порт. Если посмотреть документацию, то можно там найти рекомендации по установке защитных диодов на линии порта сим карты. На форуме . Создать тему и выложить фото.

Евгений 08.09.15 12:04

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

Алексей 08.09.15 13:21

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

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

Кто следил за данной темой, тот в курсе, что у меня GSM модуль и модуль управления им – две разные платы, соединенные бутербродом (см. плата с SIM900D и плата управления). На управляющей плате помимо микроконтроллера ATmega32a стоит модуль питания, выполненный на преобразователе LM2596 , он запитывает схему постоянным напряжением 3,5 вольт. В принципе подойдет любой другой источник питания, главное чтобы он был способен кратковременно вытянуть до 2 ампер (именно такое потребление GSM-модуля в момент регистрации).

Удобства ради, к плате управления подключен дисплей от телефона Nokia3310, методы работы с котором уже ни раз описывались на этом сайте. Благодаря дисплею можно быстро определить состояние устройства и значение датчиков.

В итоге получившаяся схема подключения вышла такая (кликабельно):

Нумерация выводов микроконтроллера на схеме приведена для DIP корпуса, поэтому если повторяете схему с использованием мк в корпусе TQFP будьте внимательны, нумерация выводов у него отличается. Тактируется микроконтроллер от внешнего кварца на 16 МГц.

Линия Control идущая от коллектора транзистора Q2 к выводу PortD.4 микроконтроллера добавлена для перестраховки и нужна за тем чтобы следить включен ли модуль. Так как порог выключения у SIM900 составляет 3,2 вольта то даже при незначительной просадке напряжения модуль автоматически выключится, тогда как микроконтроллер продолжит работать и выполнять программу (порог сброса у ATmega32a 2,7 вольта). В рабочем состоянии на этой линии находится низкий уровень. Если микроконтроллер обнаружит что на этой линии высокий уровень, выполнится функция повторного запуска GSM модуля.

А вот так это выглядит в работе на данный момент.

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

На дисплей выводится основная информация о состоянии устройства: название оператора, качество сигнала связи, значение температуры с датчика 18b20, состояние выхода нагрузки и датчика проникновения, а так же время и дата.

Видео включения модуля

Время и дата берутся от встроенных в GSM-модуль часов. Для их работы обязательно наличие 3-х вольтовой батарейки подключенной к выводу 15 (VRTC). Диод D1 рекомендуется ставить с низким падением напряжения, например Шоттки. Настройка часов и даты делается в ручную, команды были описаны ранее

Дата выводится на дисплей в том формате как получается с модуля, тоесть сначала год, затем месяц и дата. Здесь пока ничего менять не стал.

За измерение температуры отвечает датчик DS18B20, он подключается к выводу PortD.3 микроконтроллера.

К PortD.6 можно подключить какую-нибудь нагрузку и управлять ей посредством команд смс. У меня сейчас висит светодиод – D4 на схеме. Но ничего не мешает повесить сюда релюху или симистор и управлять чем-нибудь посерьезней.

В охранных целях планируется применение датчика движения HC-SR501 , купленного на E-bay. В случае срабатывания на выходе датчика появляется логическая единица. Поймав ее, микроконтроллер даст команду на отправку SMS сообщения по телефонному номеру, заданному в программе.

Выход датчика подключается к выводу PortD.7 микроконтроллера, на схеме, датчик условно заменен на кнопку.

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

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

Список команд

А вот и список команд в смс которые обрабатывает модуль. Для удобства и простоты комады цифровые, возможно в следующих версиях прошивки будут более осмысленные имена команд 🙂

0 – Отключение нагрузки (на выводе PortD.6 выставляется логический 0)

1 – Включение нагрузки (на выводе PortD.6 выставляется логическая 1)

2 – Приняв эту команду, модуль перезвонит на указанный в программе телефонный номер

3 – Запрос баланса и отправление его смс-кой обратно на указанный номер. Здесь есть один важный нюанс – ответы на USSD запросы обязательно должны приходить в латинице. Иначе заместо осмысленного текста в ответ придет сообщение в шестнадцатеричной кодировке. Как перевести USSD в латиницу нужно уточнить у своего оператора. К примеру, на используемой мной симке от Смартса, нужно ввести *102*1# (в мегафоне *105*0#)

4 – Запрос температуры. Значение температуры будет отправлено нам в смс.

5 – Разрешенить отсылать сообщения в случае срабатывания датчика проникновения.

6 – Запрет на отправление уведомляющих смс от датчика проникновения.

? – По этой команде модуль пришлет нам смс, в котором находится общая информация об устройстве, такие как значение с датчика температуры, включена ли нагрузка, состояние на входе от датчика проникновения и разрешена ли отправка уведомляющих смс от него. К примеру, вот как может выглядеть такое сообщение: температура +24, нагрузка выключена, на выходе датчика движения 0, отправка смс в случае срабатывания запрещена.

Теперь как настроить чтобы модуль отправлял sms именно на ваш номер. В архиве с программой находим основной файл программы, она так и называется “программа” 🙂 и находим в ней константу:

Const Phonenumber = “+7908390хххх”

подставляем сюда свой номер телефона, компилируем программу и получаем hex файл прошивки.

Программа как и всегда написана в Bascom-AVR, поэтому разобраться с алгоритмом работы с GSM модулем достаточно просто. Удачи!

Ну и напоследок демонстрация того как модуль обрабатывает команды.

Отдельное спасибо за участие и помощь в разработке, давнему товарищу сайта Сергею RD3AVJ!

UPD: от 31.10.12

Немного доработал прошивку, теперь для того чтобы задать номер на который будут слаться уведомляющие SMS не нужно перекомпилировать программу. Достаточно послать на модуль смску с сообщением “Firstnumber” (без ковычек) и номер, с которого была отправлена эта команда, записывается в энергонезависимую память микроконтроллера.

Наконец-то мне удалось заняться изучением, пожалуй самого популярного в DIY среде GSM модуля — GSM900. Что такое GSM модуль? Это устройство, которое реализует функции сотового телефона. Другими словами, GSM900 позволяет звонить другим абонентам сотовой сети, принимать звонки, отправлять и принимать SMS-сообщения. А еще, разумеется, передавать данные по протоколу GPRS.

Мне этот модуль понадобился для вполне конкретной цели: появился проект системы освещения, управляемой дистанционно. Проще всего эта задача решается SMS-сообщениями: отправил одну sms — свет включился, отправил другую — выключился. Никаких пультов не надо, а телефон есть у всех (даже у бомжей). Собственно, в этой статье я рассмотрю именно этот вариант использования модуля GSM900.

1. Прошивка

Волею судеб, у меня в руках оказался модуль GSM900A. Прочитав первый попавшийся форум про оживление этой штуки, выяснилось, что буква A в названии означает принадлежность модуля к азиатскому региону. А следовательно, работать с нашими операторами он не станет. Уныние 🙁

Благо, в следующих постах на том же форуме содержалась успокаивающая информация:) Оказалось, что не всё так плохо, и чтобы модуль заработал в нашем регионе, его нужно попросту перепрошить. Этот процесс хорошо описан в блоге нашего соратника Alex-EXE: прошивка «all in one» sim900
Попробую сделать то же самое, но еще более подробно, и с учетом особенностей моего модуля.

Если у вас правильный модуль и прошивка не требуется, можно сразу прыгать на раздел №2.

Инструменты

Итак, для начала подготовим все необходимые инструменты. Во-первых, непосредственно для прошивки потребуется приложение SIM900 Series download Tools Develop, которое можно легко найти в интернете ().

Во-вторых, пригодится и сам файл прошивки 1137B02SIM900M64_ST_ENHANCE, который тоже легко добывается ().

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

Подключение к USB-UART мосту

Теперь подключаем линии RX и TX к мосту. В качестве последнего я использовал CP2102. В моем случае, вопреки логике, RX и TX моста соединялись с RX и TX GSM-модуля симметрично (а не крест-накрест, как принято).

Также следует запитать модуль от стабильного и мощного источника, так как пиковый ток на модуле может достигать 2А (якобы). Подойдут 4 аккумулятора типоразмера AA. Полная схема включения выглядит так:

SIM900
CP2102 Gnd Gnd
CP2102 +5V VCC_MCU
CP2102 RX SIMR
CP2102 TX SIMT
Внешний источник +5В VCC5
Внешний источник Gnd Gnd
RST

У данной модели нет кнопки сброса, так что для прошивки нам потребуется на пару секунд кинуть контакт RST на землю. Для этого мы пока оставим его висеть в воздухе.

Предварительная настройка модуля

Перед тем, как приступить к прошивке, мы соединимся с модулем, и изменим ему скорость UART. Для этого запустим терминал Terminal, выберем правильный порт, и установим скорость обмена — 9600. После этого жмем «Connect».

Всё общение с модулем происходит посредством AT-команд.

Первое что мы скажем модулю будет самая примитивная AT-команда: «AT». Это такой своеобразный ping, на который модуль должен ответить словом «OK».

Если все прошло успешно, и модуль действительно ответил нам «OK», отправляем команду настройки скорости:

AT+IPR=115200

В конце команды должен стоять служебный символ возврата каретки — CR. В ASCII таблице он имеет код 13 (или 0x0D в шестнадцатеричной системе). Символ подставится автоматически, если вы поставите галку «+CR» напротив строки ввода в нашем терминале. В других терминалах тоже есть подобные настройки.

В ответ на введенную команду снова получим — «OK».

Данная настройка понадобится нам для ускорения процедуры прошивки. В противном случае, как указал в своем блоге Alex-EXE, прошивка займет около часа.

Настройка программы

После того, как все провода воткнуты в нужные места, и модуль подготовлен к прошивке, запускаем приложение SIM900 Series download Tools Develop. Настройка программы состоит всего из нескольких пунктов:

  • в поле Target указываем целевой чип. Почему-то у меня не вышло залить прошивку на SIM900A, так что я выбрал «SIM900»;
  • выбираем правильный порт в поле Port;
  • Baud Rate ставим в 115200;
  • наконец, указываем файл прошивки в поле Core File (файл с расширением cla).

С настройкой всё.

Прошивка

Теперь выполняем строго и последовательно шесть важных шагов.

  • Подключаем к модулю питание (наши 4 аккумулятора). Должна загореться красная лампа питания, а лампа статуса должна начать мигать.
  • Подключаем USB-UART к компьютеру.
  • Замыкаем провод RST на землю (помним, что все это время он болтался в воздухе).
  • Нажимаем в программе кнопку Start Download.
  • Считаем в уме до трех, и отрываем RST от земли.

Ждем 6 минут до завершения прошивки.

Что мы имеем после прошивки

Во-первых, модуль теперь умеет работать с нашими операторами. Во-вторых, мы поставили расширенную прошивку, среди особенностей которой, к примеру, получение координат модуля по сотовым вышкам, работа с электронной почтой и доступ к дополнительным 2.5 Мб памяти.

2. Эксперименты с GSM модулем

Попробуем теперь выполнить разные полезные операции с модулем. Для начала, введем ПИН-код (если он есть):

AT+CPIN=8899

Ответ модуля будет таким:

CPIN: READY.

После этого получим от модуля немного информации.

AT+GMR - идентификатор прошивки. AT+GSN - IMEI. AT+CPAS - состояние (0 – готов к работе, 2 – неизвестно, 3 – входящий звонок, 4 – голосовое соединение). AT+COPS? - информация об операторе.

Телефонные вызовы

Теперь наберем какой-нибудь номер. Делается это с помощью команды:

ATD+790XXXXXXXX;

Точка с запятой в конце команды очень важна, на забудьте про неё!

Если во время UART сеанса на устройство кто-нибудь позвонит, вернется сообщение:

Ответить на звонок (взять трубку) можно командой:

Если к модулю подключены наушники и микрофон, то можно пообщаться с удаленным абонентом как по обычному сотовому телефону.

Завершает вызов команда:

Отправка SMS

Сначала включим текстовый режим сообщений:

AT+CMGF=1

и установим кодировку:

AT+CSCS= "GSM"

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

AT+CMGS="+79123456789"

А конце команды необходимо добавить сразу два служебных символа: CR и LF. В Terminal это можно сделать галочкой CR=CR+LF, либо вручную добавив в конце строки: AT+CMGS=»+79123456789″&0D&0A

После ввода этой команды, в ответ будет получен символ «>», означающий начало ввода сообщения. Пишем какой-нибудь текст:

Hello World!

В конце сообщения нам нужно будет передать один из двух специальных символов. Чтобы отправить сообщение введем символ из ASCII таблицы с номером 26. Чтобы отменить отправку — символ с номером 27.

В используемом нами терминале для отправки символа по коду можно использовать одно из двух выражений: в шестнадцатеричном формате: $1A, и в десятеричном: #026

Прием SMS

Если во время сеанса на устройство придет SMS, вернется сообщение формата:

CMTI: "SM",4

здесь 4 — это номер входящего непрочитанного сообщения.

AT+CMGR=4

В ответ получим:

CMGR: "REC READ","+790XXXXXXXX","","13/09/21,11:57:46+24" Hello World! OK

В общем, все просто. Этого нам вполне достаточно для реализации задуманного. Для более глубокого изучения возможностей GFM900 рекомендую почитать еще одну статью Alex-EXE: at-команды gsm модема sim900

3. Взаимодействие с микроконтроллерами

Вообще, чтобы управлять внешними устройствами вовсе не обязательно спаривать модуль GSM900 с другим микроконтроллером. В этот модуль можно зашить свою программу, которая будет делать всё что угодно со свободными GPIO выводами. Однако, в большинстве готовых плат GPIO не разведены, поэтому для создания прототипа задуманного устройства воспользуемся самой простой Arduino Uno/Nano.

Общаться Arduino и GSM900 будут всё по тому же UART интерфейсу. Для этого соединим эти два устройства по следующей схеме:

GSM900 GND VCC_MCU SIMT SIMR
Ардуино Уно GND +5V RX TX

Теперь составим программу, которая будет ловить СМС-ки, и зажигать светодиод на ноге №13 на пару секунд. Этим мы имитируем управление неким внешним устройством.

Const String spin = "1234"; const int rel_pin = 13; String ss = ""; // Отправка пин-кода void sendPin(){ String cmd = "AT+CPIN="+spin+char(0x0D); Serial.print(cmd); } // Включение светодиода на 2 секунды void receiveSMS(String s){ digitalWrite(rel_pin, HIGH); delay(2000); digitalWrite(rel_pin, LOW); } // Разбор строки, пришедшей из модуля void parseString(String src){ bool collect = false; String s = ""; for(byte i=0; i

Загружаем программу на Arduino, и тестируем систему. Если всё сделано правильно, отправка SMS сообщения на устройство приведет к включению светодиода на 2 секунды. Разумеется, вместо светодиода можно включать/выключать мощное реле, к которому подключен котел отопления в загородном доме.