Итак, после продолжительного времени раскуривания тонкостей работы с 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#

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

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

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

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




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

Const Phonenumber = "+7908390хххх"  

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

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

Архив с исходниками

Схема в Proteus




   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Управляем микроконтроллером с ПК по UART
23.06.2017 - belcof:
Привет.
Как настроить фьюзы от внутреннего и внешнего кварца для SinaProg...
Бесконтактный датчик температуры MLX90614
22.06.2017 - TSL:
Приветствую. Как я понял, собираем по схеме выше, и всё должно работать.
...
Устройство имитации звука светового меча
18.06.2017 - Dron_S:
Всем привет задержку звука при включении удалось победить))) вот что получилось ...
Регулятор температуры и влажности
17.06.2017 - max:
Не за что.
Регулятор температуры и влажности
17.06.2017 - alex222:
max
Спасибо вам огромное!!!
Регулятор температуры и влажности
17.06.2017 - max:
Вот: http://rgho.st/6HFCxxVgG
Регулятор температуры и влажности
15.06.2017 - alex222:
Есть тот кто может скомпилировать очень нужно? С кем можно связаться?
Пом...
Регулятор температуры и влажности
14.06.2017 - alex222:
Ребят, помогите пожалуйста можете скомпилировать этот файл для регулятора https:...
Регулятор температуры и влажности
12.06.2017 - Xfighter:
Atmega8A tqfp корпус, буквы не важны?, кварц внешний 10мгц, фузи понипрог http:/...