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

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

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

 Модуль GSM GPRS SIM800L V2.0 MicroSIM с антенной.

Для урока понадодиться:


Модуль 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

Общие характеристики 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

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

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

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

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

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

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

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

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

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

#include <SoftwareSerial.h>
SoftwareSerial SIM800(8, 9);        // 8 - RX Arduino (TX SIM800L), 9 - TX Arduino (RX SIM800L)
void setup() {
  Serial.begin(9600);               // Скорость обмена данными с компьютером
  Serial.println("Start!");
  SIM800.begin(9600);               // Скорость обмена данными с модемом
  SIM800.println("AT");
}
void loop() {
  if (SIM800.available())           // Ожидаем прихода данных (ответа) от модема...
    Serial.write(SIM800.read());    // ...и выводим их в Serial
  if (Serial.available())           // Ожидаем команды по Serial...
    SIM800.write(Serial.read());    // ...и отправляем полученную команду модему
}

Открываем окно «Монитора порта», устанавливаем скорость «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+CBC — команда показывает состояние батареи

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

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

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

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

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

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

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

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

+CCALR: 1

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

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

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

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

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

+CSQ: 8,0

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

<sn> — IMEI модуля
864713035030892

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

OK
Напряжение питания AT+CBC +CBC: <bcs>,<bcl>,<voltage>
OK

<bcs> — статус зарядки

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

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

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

<n> — параметр ответа

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

<stat> — статус

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

+CREG: 0,1

OK
Информация об операторе AT+COPS? +COPS: <mode>,[<format>,<oper>]
OK

<mode> — режим регистрации
<format> — формат отображения
<oper> — наименование оператора в заданном формате
+COPS: 0,0,"MegaFon"

OK
Получение списка всех операторов AT+COPN +COPN: <numeric1>,<alpha1>
[<CR><LF>+COPN: <numeric2>,<alpha2> […]]

OK
<numeric n> — цифровой код оператора
<alpha n> — текстовый код оператора
...
+COPN: "24008","vodafone"
+COPN: "24010","Swefour AB"
+COPN: "24201","TELENOR"
+COPN: "24202","NetCom"
+COPN: "24403","FINNET"
+COPN: "24405","Elisa Corporation"
+COPN: "24409","FINNET"
...

OK
Статус телефона GSM-модуля AT+CPAS +CPAS: <pas>
OK

<pas> — статус

0 — готов к выполнению команд из терминала
2 — неизвестно (исполнение команд не гарантируется)
3 — входящий вызов, но модуль готов к выполнению команд
4 — исходящий вызов, но модуль готов к выполнению команд

+CPAS: 4

OK

Отправка СМС с помощью модуля GSM GPRS SIM800L V2.0 и Arduino.

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

  • AT + CMGF = 1 — выбирает формат SMS-сообщения в виде текста. Формат по умолчанию PDU.
  • AT + CMGS = +7xxxxxxxxxxотправляет SMS на указанный номер телефона.

Внимание! Прежде чем загрузить пример, необходимо ввести номер телефона. Найдите строку +7xxxxxxxxxx и замените его на необходимый номер телефона, на который будет оправлено сообщение.

Скетч отправки СМС сообщения с помощью Arduino и модуля SIM800L.

Скетч отправки СМС сообщений будет следующим.

#include <SoftwareSerial.h>
SoftwareSerial sim800l(8, 9); // 8 - RX Arduino (TX SIM800L), 9 - TX Arduino (RX SIM800L)

void SendSMS()
{
  Serial.println("Sending SMS...");                // Печать текста
  sim800l.print("AT+CMGF=1\r");                   // Выбирает формат SMS
  delay(100);
  sim800l.print("AT+CMGS=\"+7xxxxxxxxxx\"\r");  // Отправка СМС на указанный номер +792100000000"
  delay(300);
  sim800l.print("A letter from the site: arduino-tex.ru");       // Тест сообщения
  delay(300);
  sim800l.print((char)26);// (требуется в соответствии с таблицей данных)
  delay(300);
  sim800l.println();
  Serial.println("Text Sent.");
  delay(500);
}

void setup()
{
  sim800l.begin(9600);   //Инициализация последовательной связи с Arduino и SIM800L
  Serial.begin(9600);   // Инициализация последовательной связи с Arduino и Arduino IDE (Serial Monitor)
  delay(1000);          // Пауза 1 с
  SendSMS();
}

void loop()
{
  delay(500);                            // Пауза 500 мс
  if (sim800l.available()) {           // Переадресация с последовательного порта SIM800L на последовательный порт Arduino IDE
    Serial.write(sim800l.read());
  }
}

В мониторе порта увидим подтверждение отправки сообщения, а также номер, на который было отправлено сообщение.

В мониторе порта увидим подтверждение отправки сообщения, а также номер, на который было отправлено сообщение.

На телефоне, на который было отправлено сообщение, увидим следующую информацию. СМС сообщение, которое мы отправляли.

На телефоне, на который было отправлено сообщение, увидим следующую информацию. СМС сообщение, которое мы отправляли.

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

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

С помощью модуля GSM GPRS SIM800L V2.0 MicroSIM можно получать СМС,управляя устройствами. Отправлять данные про GPRS на сайт. Также считывать команды сайта и производить управление домашней электроникой. Более подробнее данные функции рассмотрим в следующих уроках.

С помощью модуля GSM GPRS SIM800L V2.0 MicroSIM можно получать СМС,управляя устройствами. Отправлять данные про GPRS на сайт.

Появились вопросы или предложения, не стесняйся, пиши в комментарии!

Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.

Всем Пока-Пока.

И до встречи в следующем уроке.

Понравилась статья? Поделитесь ею с друзьями:

Файлы для скачивания

Тестирование AT-команд SIM800L Тестирование AT-команд SIM800L.ino1 Kb 930 Скачать
Скетч отправки СМС сообщения с помощью Arduino и модуля SIM800L Скетч отправки СМС сообщения с помощью Arduino и модуля SIM800L.ino1 Kb 943 Скачать
Библиотека SoftwareSerial.h Библиотека SoftwareSerial.h.zip11 Kb 930 Скачать
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 15 сентября , 2021

Комментарии

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


Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box