Отправка смс через sim800 модуль и DHT11

Отправка смс через sim800 модуль и DHT11

В видео показано как отправлять смс сообщения используя gsm модуль sim800. Отправлять будем с датчик температуры dht11. Отправив СМС запрос на модуль sim800 мы получим в ответ смс с температурой и влажностью. Проверка происходит по номеру телефона и кодовому слову.

Сегодня я хочу рассказать как можно с помощью GSM модуля SIM800 отправлять температур по СМС по запросу. Это значит, что отправив СМС с кодовым словом можно получить другое СМС с температурой с датчика DHT11 или другую информацию с других датчиков. 
Смотрите что у меня получилось.
Программу Ардуино я открыл только для того что бы видеть как всё работает. Как работает скетч я расскажу дальше в видео.  Открываем Монитор порта. Сначала идут строчки о подключении датчика температуры и модуля GSM800.
Команда AT нужна для  настройки скорости обмена данными. Ну это вы и без меня уже знает, а кто не знает можете посмотреть вот это виде, там рассказано про работы модуля с AT командами.
Так как мы будем не звонить, а отправлять СМС сообщения, то нам надо Включить текстовый режим. Это делается этой командой.
Теперь можно отправлять сообщения. Качество получилось не очень хорошее, поэтому я вставил скриншоты с телефона, для того чтобы было лучше видно.
Для того чтобы запросить температуру надо с определённого номера телефона отправить СМС сообщение. В скетче я создал переменную и сохранил в ней кодовое слово. Будем отправлять слово TEMP, но вы можете поменять на любое другое. Если номер телефона и кодовое слово совпадут, то вам в ответ придёт температура. Текст можно вводить как большими, так и маленькими буквами. Писать и получать сообщения можно только латиницей. В следующих видео я расскажу как сделать текст на кириллице. 

Теперь давайте подробнее рассмотрим первое смс. В начале нам приходят, номер телефона отправившего смс и дата и время, и ниже строкой сам текст сообщения. Этого нам вполне достаточно для работы.
В скетче я написал парсер, который находит в СМС номер телефона и текст сообщения. Присваивает их переменным и дальше сравнивает на соответствие. И если всё верно, то отправляется температура и влажность на номер сделавший запрос.

А ещё здесь выводится номер смс. Для того чтобы сделать этот пример я отправил больше 100 смсок, и получил столько же. Оказалось, что это очень затратно, поэтому я придумал другой способ, бесплатный, но о нём в следующий раз.

Вернёмся к примеру.
Мне пришла смс с температурой и влажностью, но этот пример можно использовать и для других датчиков, например запросить закрыты ли двери и окна, включен ли свет и многое другое.
Давайте попробуем ещё раз. Снова набираем TEMP и нам практически мгновенно приходят запрошенные данные. Они немного изменились с прошлого раза. Всё работает, а теперь давайте введём неправильное кодовое слово.
Я набрал какую-то галиматью, отправил смс и в ответ мне не пришло ничего. Так что не зная что отправлять или отправка с другого номера телефона не позволит получить данные. Скетч легко можно переделать для использования нескольких номеров или для отправки с одного номера, а получение на другом номере. Ну вот как-то так всё получилось. Теперь давайте посмотрим схему подключения, а она ничем не отличается от прошлого примера. Я только добавил датчик температуры. И посмотрим пример скетча.

Сначала рассмотрим схему подключения модуля SIM800 к Ардуино. 
Подключение очень простое, достаточно подключить всего два вывода модуля - это RX и TX. Подключаться они должны крест на крест. То есть если на Ардуино вы выбрали RX то на модуле надо подключить TX, и на оборот. Контакты RX и TX я подключил к пинам 10 и 11 Ардуино. Работу модуля можно контролировать по миганию светодиода. Сначала идут быстрые мигания, а после того как модуль подключится к сотовой связи то мигания станут реже, примерно раз в 2-3 секунды.
Так как Ардуино работает по пятивольтовой схеме, то напрямую подключать нельзя. 
Правильное подключение - это  TX Ардуино подключить к RX модуля через делитель напряжения или через специальные модули сопряжения.
Я использую делитель напряжения с коэффициентом 2. 
Это когда берутся два одинаковых резисторы, а на выходе получаем половину напряжения. И из 5 вольт с Ардуино, получаем 2,5 вольта. Чего вполне достаточно для работы МОДУЛЯ.
Датчик температуры я подключил к цифровому входу 4 Ардуино.
Питания модуля надо использовать отдельный источник питания, примерно 4 вольта и мощностью 2 Ампера, так как при передачи модуль потребляет довольно много и если будет просадка, то модуль будет постоянно терять связь. Так же надо по питанию установить конденсатор, чем большей ёмкости тем лучше. 500-1000 Микрофарад будет самое то.

Теперь работа скетча.

  • Для работы с датчиком температуры надо установить библиотеку.
  • Далее создаём переменные для хранения номера телефона и для кодового слова.
  • К этим контактам подключены выходы модуля.
  • К 4 выводу я подключил датчик температуры.

В SETUP всё прокомментировано, так что и рассказывать нечего. Настраиваем скорость обмена данными и переходим в текстовой режим для передачи и приёма СМС.
В функции LOOP, мы считываем данные из серийного порта и отсылаем их в парсер, так же печатаем в монитор порта для контроля и информации.
Всё самое интересное происходит в функции смс.
Находим первую кавычку, и от неё считаем 12 знаков – это и будет наш номер.
Следующие 20 знаков – это дата и время. Я их нигде не использовал, но вы можете их для чего-нибудь приспособить.
Теперь переходим на новую строку и считываем всё что находится в теле СМС и присваиваем переменной msg. Затем переводим всё что нашли в маленькие буквы.
Забыл сказать, что номер мы тоже сохраняем в переменную senderNumber.
В самом начале я использовал функцию парсер для других целей, но со временем многое перешло в функцию смс. Чтобы не пропадать я использовал её для отправки СМС. Так что надо было её переименовать в какой-нибудь get_sms, но это вы уж сами как хотите.

Здесь я сравниваю полученные ранее телефон и сообщение из смс и если они совпадают с переменными что записаны в самом начале скетча, то начинаем готовить сообщение к отправке.
Для начала получаем значения температуры и влажности с датчика и сохраняем их в текстовые строчки, а затем всё это сохраняем в переменную text, Что бы было проще к ней обращаться.
Включаем текстовой режим.
Эта AT команда отвечает за отправку СМС. Она имеет структуру.
Сначала указывается номер на который отправляется СМС. Затем текст самого СМС, в нашем случае – это значение температуры и влажности. Для отправки, надо нажать контрол  + 26 или ввести вот такой символ.
Ну и в конце пишем, что СМС отправлено. 

Ну на этом я думаю можно закончить это видео. У меня есть ещё как минимум 5-6 идей для новых видео про этот модуль. Если вам будет интересно, то пишите. Это ускорит процесс выпуска новых видео про SIM800.
 


Примеры работы датчика температуры DHT11
Отправка смс через sim800 модуль и DHT11
Вывод температуры на экран. esp датчик температуры. Погода на экране телефона
esp датчик температуры. Подключаем DHT к ESP8266
Ардуино датчик температуры и влажности. DHT 11. Ардуино проекты.
Инструкция по использованию датчика температуры DHT11 с Arduino

Примеры работы модуля GSM SIMM800L
Отправка смс через sim800 модуль и DHT11
Модуль sim800 ардуино управление через реле
gsm sim800 at команды и подключение к Ардуино
Путешествие в Мир GSM. Подключение Модуля GSM SIM800L к Arduino

Скетчи