Arduino nano отправка sms

Бесплатная отправка SMS из Arduino без GSM модуля

Понадобилось мне слать SMS из ардуинины себе на телефон. Да так, что бы без заморочек с GSM, сим картами и оплатой. Под катом то, что из этого вышло.

Раз GSM не подходит, то слать придется через интернет. В закромах имелся сверх дешевый Wi-Fi модуль ESP8266. Про его предварительную настройку можно почитать в этой отличной статье ссылка.
Перво-наперво полез гуглить различные интернет-сервисы для отправки SMS. Сервисов оказалось много, но вот подходящего среди них не оказалось. Либо 10 SMS в день, либо хотят денег. Да и капчи ардуинине не по зубам. Но тут совершенно случайно наткнулся на на интересный сервис своего мобильного оператора (MTS BY) — всего за 1$ можно подключить услугу приема email в виде SMS ссылка. Что же, полностью бесплатно не получилось, и после оплаты я получил почтовый адрес вида 375XXYYYYYYY@sms.mts.by ( где XX и YYYYYYY — код сети и номер). То есть все свелось к банальной отправке email из arduino.

Но не тут-то было. Оказывается в последнее время все уважающие себя почтовые сервера отказываются принимать почту по 25 порту и без шифрования. А с другими связываться не хотелось, как и привязываться к своему домашнему серверу. Нагуглил вот такой сервис ссылка. В базовом бесплатном варианте дают 6к писем в месяц, что для моего домашнего использования хватает с головой. После регистрации идем в настройки и видим адрес smtp сервера, порт, логин и сгенерированный нам пароль.

Быстро накатал скетч, отправляю email 375XXYYYYYYY@sms.mts.by и… Облом. Отправляю на обычную почту — приходит. Пытался так и эдак переделывать заголовок — все равно письма исчезают в безднах серверов МТС, явно попадая в котел спам фильтра.

Значит нужно «отмыть» почту. В качестве сервиса отмывки выбрал (тихо ненавидимый мною за рекламу) mail.ru. Для отмывки в настройках почты, в разделе «Фильтры и пересылка», создал новое правило:

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

Далее скучные технические подробности.
В качестве платы взял Arduino Mega 2560, так как в нем целых три дополнительных последовательных порта (хотя можно и обычный UNO, только дебажить будет сложнее).
ESP8266 подключен: GND -> GND, VCC и CH_PD -> +3.3V, RX -> TX3, TX -> RX3. Скорость ESP8266 настроена на 115200 бод.
Для общения с smtp сервером нужно закодировать свои логин и пароль в Base64.
Можно воспользоваться консолью Linux:
openssl enc -base64 Код

Источник

#36. GSM-модуль SIM800L. AT команды и отправка СМС

Сегодня в уроке рассмотрим Модуль GSM GPRS SIM800L V2.0 MicroSIM с антенной. Посмотрим в чем его преимущества и недостатки. Разберемся, как управлять данным модулем с помощью AT команд и оправим CMC сообщение.

Модуль GSM GPRS SIM800L V2.0 обладает минимальным функционалом — обмен данными с GSM-модулем по UART. Плата имеет слот для установки внешней SIM-карты.
SIM800L V2.0 GSM/GPRS — это четырех диапазонный GSM/GPRS модуль, совместимый с Arduino. Модуль используется для реализации функций GSM и GPRS. Преимуществом этого модуля является возможность напрямую подключать его к Arduino или другому микроконтроллеру с напряжением питания 5В.

Общие характеристики SIM800L V2.0 GSM/GPRS:

  • Модель : SIMCOM SIM800L;
  • Напряжение питания : от 3,7В до 5В;
  • Поддержка сети: четыре диапазона–850/900/1800/1900 МГц, способные осуществлять звонки, SMS и передачу данных со значительно уменьшенным расходом заряда;
  • Управление посредством AT-команд;
  • TTL совместимый по уровню с Arduino;
  • Низкая потребляемая мощность;
  • Штекер подключения антенны;
  • Наличие антенны;
  • Размеры: 40мм х 28мм х 3мм;
  • Диапазон рабочих температур: от -40°C до +85°C.

Распиновка GSM-модуля SIM800L:

  • RxD (Receiver) — Вывод последовательной связи.
  • TxD (Transmitter) — Вывод последовательной связи.
  • GND — Вывод заземления, должен быть подключен к выводу GND на Arduino.
  • VCC — Питание модуля, от 3,7 В до 5 вольт.
  • DTR — этот пин отвечает за выход из спящего режима модуля.
  • RST (Reset) — Вывод сброса модуля.

Схема подключения GSM GPRS SIM800L V2.0 MicroSIM к Arduino UNO.

Схема подключения SIM800L V2.0 к Arduino NANO.

Так как модуль GSM GPRS SIM800L V2.0 MicroSIM может общаться только по UART и не имеет звукового интерфейса. Схема подключения будет очень простая, всего по двум проводам + питание.

Тестирование AT-команд SIM800L.

Для отправки AT-команд и связи с модулем SIM800L будем использовать окно «Монитора порта». Копируем приведенный скетч ниже и загружаем его в Arduino.

Открываем окно «Монитора порта», устанавливаем скорость «9600» и «NL (Новая строка)».

В коде используем библиотеку SoftwareSerial.h, которую нужно подключить. Библиотеку можно скачать внизу статьи в разделе «Файлы для скачивания».

Для проверки работоспособности будем использовать команды:

  • AT — это самая основная команда AT. Если все работает, в ответ получаем, символ AT, а затем ОК, сообщая, что все в порядке.
  • AT+CSQ — проверка уровня сигнала в дБ, должно быть выше 5.
  • AT+CCID — получение номера SIM-карты.
  • AT+CREG? — проверка регистрации в сети.

В мониторе порта увидим следующую информацию.

Также можно проверить:

  • ATI — получить название модуля и ревизию
  • AT+COPS? — проверка регистрации в сети (Bee Line)
  • AT+COPS=? — список операторов в сети.
  • AT+CBC — команда показывает состояние батареи

Подробный список AT команд приведен в таблице ниже.

Описание Команда Структура ответа Пример ответа
Готовность модуля к работе AT OK OK
Запрос информации об устройстве ATI
OK

— модель и версия модуля
SIM800 R14.18

OK Запрос версии установленного ПО AT+CGMR
OK

— модель и версия ПО Revision:1418B04SIM800L24

OK Готовность модуля совершать звонки AT+CCALR? +CCALR:
OK

— идентификатор готовности:

0 — модуль не готов совершать звонки
1 — модуль готов совершать звонки

OK Запрос качества связи AT+CSQ +CSQ: ,
OK

— качество сигнала ( от 10 и выше — нормальное):

0 -115 дБм и меньше
1 -111 дБм
2. 30 -110. -54 дБм
31 -52 дБм и больше
99 определить невозможно

— RXQUAL ( мера качества сигнала), значение из таблицы GSM 05.08 — ETSI:

0. 7 — коэффициент битовых ошибок ( меньше — лучше)
99 определить невозможно

OK Запрос IMEI-модуля AT+GSN
OK

— IMEI модуля 864713035030892

OK Запрос идентификационной информации модуля AT+GSV Текстовая информация о модуле SIMCOM_Ltd
SIMCOM_SIM800L
Revision:1418B04SIM800L24

OK Напряжение питания AT+CBC +CBC: , ,
OK

— статус зарядки

0 — зарядки нет
1 — зарядка идет
2 — зарядка завершена

— объем оставшегося заряда в процентах ( 1. 100)
— напряжение питания модуля, в милливольтах +CBC: 0,73,3988

OK Тип регистрации в сети AT+CREG? +CREG: ,
OK

— параметр ответа

0 — незапрашиваемый код регистрации в сети отключен
1 — незапрашиваемый код регистрации в сети включен
2 — незапрашиваемый код регистрации в сети включен с информацией о местоположении

0 — незарегистрирован, не ищет нового оператора для регистрации
1 — зарегистрирован в домашней сети
2 — незарегистрирован, но в поиске нового оператора для регистрации
3 — регистрация запрещена
4 — неизвестно
5 — зарегистрирован, в роуминге

Источник

Контролируем температуру по SMS (Arduino Nano + Neoway M660)

По-моему, SMS – отличный способ что-нибудь включить/выключить на расстоянии.
Особенно обогреватель.
Тем более зимой.
Когда так хочется поскорее в тепло!

Итак, наши действующие лица:

  • плата Arduino Nano
  • отладочная плата с GSM-модулем Neoway M660
  • температурный датчик LM35
  • источник питания 12 В
  • реле твердотельное
  • провода, дискретные компоненты

В качестве GSM-модема использовалась отладочная плата GSM-модуля Neoway M660.

Это путь наименьшего сопротивления, так как не нужно думать о подключении антенны и SIM-карты, а стоит она недорого.

Вообще Neoway M660 примечателен тем, что имеет мало выводов, расположенных по краям (корпус типа «почтовая марка») на большом расстоянии друг от друга, так что для макетирования – самое то.
Модуль управляется по UART с помощью AT-команд (описание AT-команд M660).

Питание Arduino Nano

Arduino Nano будем запитывать от небольшого блока питания 12 В через контакт Vin.

Питание GSM-модуля

После некоторых раздумий решено было запитать плату GSM от платы Nano через USB-разъем.
В мануале Neoway_M660_Module_Hardware_User_Guide сказано, что при наличии в цепи питания конденсатора емкостью 1000 мкФ требование к источнику питания по току – 0,6А (при напряжении 3,9 В).
На отладочной плате M660 и её USB-хвостике в сумме стоит 940 мкФ. Микросхема AMS1117 на плате Arduino Nano отдает на выход 5 В и 1 А, потребление платы Nano со всеми потрохами и подключенным температурным датчиком при Vin равном 12В – около 24 мА. Так что считаем, что с питанием схемы всё ОК.

Согласование уровней UART

Уровень сигналов Nano – 5 В, интерфейс UART M660 – 2,8 В (напряжение не должно превышать 3,1 В). Для согласования уровней используем схему из этой статьи.
Вывод 13 (счастливое число!) модуля – выход 2,8 В (максимальный ток 5 мА), специально предназначен для питания согласователей уровней. Просто припаиваемся к контакту 13 модуля, другой конец – к схеме преобразователя уровней.

Отправка SMS сообщений

Для отправки SMS в текстовом режиме нам нужно:

  1. AT+CMGS=\«80123456789\»\r – ввести команду с номером телефона (80123456789 в данном примере).
  2. После этого модуль должен вывести приглашение «>» ввести текст SMS, что мы и должны сделать.
  3. Ввод текста должен заканчиваться байтом 0x1A.
  4. Neoway M660 отвечает OK — сообщение отправлено.

Прием SMS сообщений

Для приема SMS в текстовом режиме нам нужно:

  1. AT+CMGF=1\r – включить текстовый режим, если есть сомнения, что он включен.
  2. Определиться, нужно ли нам сохранять SMS на SIM-карте или в памяти модуля или достаточно просто пересылать их на UART. Для этого имеется команда AT+CNMI. Так как мы не хотели сохранять SMS в памяти, то использовали эту команду с такими параметрами: AT+CNMI=3,2,2,0,1\r

Когда принятая SMS пересылается на UART в текстовом режиме, она состоит из двух строчек:

  1. +CMT: «70123456789»\r\n – в первой строчке содержится номер отправителя
  2. Text of the message\r\n – во второй – текст сообщения.

Сначала смотрим, с какого номера пришло сообщение, потом – что именно пришло. Удобно.

Измерение температуры

Для измерения температуры использовался датчик LM35. Датчик выдаёт напряжение, пропорциональное градусам Цельсия, 10мВ/ºC. Просто и удобно. Напряжение питания сенсора – от 4 до 30 В.
Если в Arduino включить внутренний источник опорного напряжения 1,1 В (для этого в setup() нужно прописать analogReference(INTERNAL);), то градусы Цельсия можно рассчитать по простой формуле:

ГРАДУСЫ ЦЕЛЬСИЯ = СЧИТАННОЕ ЗНАЧЕНИЕ х 0,107.

Считанное значение – то, которое получаем из функции analogRead():
val = analogRead(analogPin);

В начале тестирования датчик температуры был размещен на длинных ногах над платой Arduino и показывал 28 – 29 °С при температуре окружающего воздуха 25 °С. Я уже начал паниковать, что сделал что-то не так, но как только датчик был вынесен подальше от платы – показания стали соответствовать действительности.
Кстати, как выяснилось, около пола температура воздуха на 1,5 – 2 градуса ниже, чем на столе.

Как это выглядит

В разложенном виде всё это выглядит примерно так:

В простом варианте можно посылать SMS-команды на включение/выключение обогрева, получать отчеты о состоянии обогревателя (вкл/выкл) и измеренной температуре.

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

Источник

Adblock
detector