- Платы Ардуино
- Обучение Ардуино
- Мой блог
- Уроки
- Урок № 1 "Пишем свой первый скетч"
- Урок № 2 "Подключение фоторезистора"
- Урок № 3 "Подключение пищалки(BUZZER)
- Урок № 7 "Модуль часов RTC DS3231"
- Урок № 8 - "Шаговый двигатель 28BYJ-48"
- Урок № 10 - "ИК пульт на Ардуино"
- Урок № 11- "Сканер отпечатка пальца"
- Урок № 12- "Датчик наклона SW-200D"
- Урок № 13- "Гирлянда светодиодная WS2812b"
- Книги
- Мой YOUTUBE
Отправка смс через 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.
Скетчи