Обзор модуля GSM, GPRS на чипе SIM800L

Обзор модуля GSM, GPRS на чипе SIM800L

Модуль GSM, GPRS на чипе SIM800L — это миниатюрный GSM-модем, который можно использовать в различных проектах, таких как охрана дачи или дома, сигнализация в машине и многое другое. Данный модуль, по функционалу не чем не уступает обычному сотовому телефону и с его помощью можно, отправлять SMS сообщения, совершать или принимать телефонные звонки, подключаться к Интернету через GPRS, TCP / IP и многое другое. А так же, модуль поддерживает четырехдиапазонную сеть GSM / GPRS.

Технические параметры 

► Напряжение питания: 3.7 В ~ 4.4 В
► Потребляемый ток режима ожидания: 0,7 мА
► Пиковый ток: 2 А
► Скорость UART: 1200 – 115200 бод
► Формат SIM карты: microSIM
► Рабочий диапазон: EGSM900, DCS1800, GSM850, PCS1900
► Мощность передачи DCS1800, PCS1900: 1 Вт
► Мощность передачи GSM850, EGSM900: 2 Вт
► Режим сети: 2G
► Габариты: 25 мм х 24 мм х 4 мм

Общие сведения

В основе модуля лежит чип SIM800L от SimCom. Рабочее напряжение чипа составляет от 3.4 В до 4.4 В, что делает его идеальным, для прямого питания от литиевой батареи, но

Обзор модуля GSM, GPRS на чипе SIM800L

Контакты чипа SIM800L выведены по бокам модуля. Включая контакты необходимые для связи с микроконтроллером интерфейс UART, поддерживаемая скорость от 1200 бит / с до 115200 бит / с с автоматическим определением скорости. Для подключения к сотовой сети, нужна внешняя антенна, которая идет в комплекте с модулем. Так-же, на плате имеется разъем U.FL, если необходимо подключить выносную антенну.

Обзор модуля GSM, GPRS на чипе SIM800L

На задней панели расположено гнездо для установки SIM-карты (подойдет любая SIM карта, главное чтобы была активированная). Устанавливать SIM карту необхоимо контактами к чипу SIM800L, а ключ должен располагаться сверху.

Светодиодные индикаторы состояния
В верхнем правом углу модуля SIM800L находится светодиод, который показывает состояние сотовой сети.
Мигает раз в 1 с — Модуль работает, но еще не подключился к сотовой сети.
Мигает раз в 2 с — Запрошенное вами соединение для передачи данных GPRS активно.
Мигает раз в 3 с — Модуль установил связь с сотовой сетью и может отправлять / получать голосовые и SMS-сообщения.

Обзор модуля GSM, GPRS на чипе SIM800L

Распиновка GSM-модуля SIM800L
На модуле SIM800L расположено 12 контактов, которые необходимы для связи с микроконтроллером и подключении динамика и микрофона. Соединения следующие:

► NET — Вывод для припаивания спиральной антенну.
► VCC — Питание модуля, от 3,4 В до 4,4 вольт.

Помните, что подключение модуля к 5 В, приведет к его выходу из строя, он так же не работает и от 3.3 В. Для его работы необходим внешний источник питания, Li-ion аккумулятор или понижающие преобразователи постоянного тока на 3,7 В, 2A.

► RST (Reset) — Вывод сброса модуля.
► RxD (Receiver) — Вывод последовательной связи.
► TxD (Transmitter) — Вывод последовательной связи.
► GND — Вывод заземления, должен быть подключен к выводу GND на Arduino.
► RING — Вывод индикатора звонка.
► DTR — Вывод активации / деактивации спящего режима.
► MIC ± — Микрофонные вывод.
► SPK ± — Вывод динамика.

Питание для модуля SIM800L
Для стабильной работы модуля SIM800L необходим источник питания с выходным напряжением от 3,4 до 4,4 В (в идеале 4,1 В) с максимальным рабочим током 2А. В качестве источника питания можно использовать Li-ion аккумулятор (1200mAh и выше) или стабилизатор напряжения на LM2596.

Подключение
модуля SIM800L к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Макетная плата 400 контактов, breadboard x 1 шт.
► Резисторы 0,128 Вт, 10 кОм x 2 шт.
► Модуль GSM, GPRS на чипе SIM800L x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
Первое делом необходимо припаять антенну или установить выносную, далее установите SIM карту в разъем. Теперь подключаем вывод Tx на модуле к выводу 3 на Arduino. Вывод Rx нельзя подключать напрямую, так как цифровой вывод Arduino Uno использует 5В, а модуль SIM800L использует 3,3В. Необходимо сигнал Tx, поступающий от Arduino UNO, понизить до 3,3В, чтобы не спалить модуль SIM800L. Самый простой способ, это воспользоватся делителем напряжения на резисторах. Подключаем резистор на 10 кОм между выводом Rx (SIM800L) и выводом 2 (Arduino) и второй резистор на 10 кОм между выводом Rx (SIM800L) и GND. Теперь осталось подключить питание модуля, в примере используется стабилизатор напряжения на LM2596.

Подключение SIM800L к Arduino

Программа №1 — Тестирование AT-команд

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

/* 
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 28.03.2019г.
*/ 
 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);          // Выводы SIM800L Tx &amp; Rx подключены к выводам Arduino 3 и 2

void setup()
{
  Serial.begin(19200);                   // Инициализация последовательной связи с Arduino и Arduino IDE (Serial Monitor)
  mySerial.begin(19200);                 // Инициализация последовательной связи с Arduino и SIM800L
  Serial.println("Initializing...");    // Печать текста
  delay(1000);                          // Пауза 1 с

  mySerial.println("AT");               // Отправка команды AT
  updateSerial();
  mySerial.println("AT+CSQ");           // Проверка качества сигнала, диапазон значений 0-31, 31 - лучший
  updateSerial();
  mySerial.println("AT+CCID");          // Чтение информацию о SIM-карте
  updateSerial();
  mySerial.println("AT+CREG?");         // Проверка регистрации в сети
  updateSerial();
}

void loop()
{
  updateSerial();
}

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

Скачать скетч

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

Подключение SIM800L к Arduino

Скетч начинается с включения библиотеки «SoftwareSerial.h» и указании выводов к которым подключены Tx и Rx модуля SIM800L.

#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);         

В функции void setup(), инициализируем последовательный связь между Arduino и модулем SIM800L на скорости 9600 бод.

Serial.begin(9600);
mySerial.begin(9600);

Далее, идет отправка серий AT-команд:

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

 mySerial.println("AT"); 
  updateSerial();
  mySerial.println("AT+CSQ"); 
  updateSerial();
  mySerial.println("AT+CCID"); 
  updateSerial();
  mySerial.println("AT+CREG?"); 
  updateSerial();

В функции void loop() мы вызываем функцию updateSerial (), которая перенаправляет данные от последовательного порта и отправляет их в модуль SIM800L, через вывод D2 (RX), а так же на оборот, перенаправляет данные от вывода D3 (TX) на последовательный порт.

void updateSerial()
{
  delay(500);
  while (Serial.available()) 
  {
    mySerial.write(Serial.read());
  }
  while(mySerial.available()) 
  {
    Serial.write(mySerial.read());
  }
}

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

ATI — получить название модуля и ревизию
AT+COPS? — проверка регистрации в сети (MTS)
AT+COPS=? — список операторов в сети.
AT+CBC — команда возвращает состояние батареи
— значение «0» указывает, что модуль питается от батареи
— значение «72» показывает, процент заряда батареи в % (72%)
— значение «3983» показывает фактическое напряжением в мВ (3,983 В).

Подключение SIM800L к Arduino

Программа №2 — Отправка SMS

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

/* 
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 28.03.2019г.
*/ 
 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);          // Выводы SIM800L Tx &amp; Rx подключены к выводам Arduino 3 и 2
 
void setup()
{
  Serial.begin(19200);                   // Инициализация последовательной связи с Arduino и Arduino IDE (Serial Monitor)
  mySerial.begin(19200);                 // Инициализация последовательной связи с Arduino и SIM800L
  Serial.println("Initializing...");     // Печать текста
  delay(1000);                           // Пауза 1 с
 
  mySerial.println("AT");                // Отправка команды AT
  updateSerial();

  mySerial.println("AT+CMGF=1");                        // Выбирает формат SMS
  updateSerial();
  mySerial.println("AT+CMGS=\"+7xxxxxxxxxx\"");         // Отправка СМС на указанный номер
  updateSerial();
  mySerial.print("Hello from the site | RobotChip.ru"); // Тест сообщения
  updateSerial();
  mySerial.write(26);
}

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

Скачать скетч

Скетч похож на предыдущий, за исключением небольшого фрагмента кода.

mySerial.println("AT+CMGF=1"); 
  updateSerial();
  mySerial.println("AT+CMGS=\"+7xxxxxxxxxx\"");
  updateSerial();
  mySerial.print("Hello from the site | RobotChip.ru");
  updateSerial();
  mySerial.write(26);

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

Подключение SIM800L к Arduino
Подключение SIM800L к Arduino

Программа №3 — Получение SMS

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

/* 
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 28.03.2019г.
*/ 
 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);          // Выводы SIM800L Tx Rx подключены к выводам Arduino 3 и 2
 
void setup()
{
  Serial.begin(19200);                   // Инициализация последовательной связи с Arduino и Arduino IDE (Serial Monitor)
  mySerial.begin(19200);                 // Инициализация последовательной связи с Arduino и SIM800L
  Serial.println("Initializing...");     // Печать текста
  delay(1000);                           // Пауза 1 с
 
  mySerial.println("AT");                // Отправка команды AT
  updateSerial();

  mySerial.println("AT+CMGF=1");         // Выбирает формат SMS
  updateSerial();
  mySerial.println("AT+CNMI=1,2,0,0,0"); // Обработка вновь поступившие SMS
  updateSerial();
}

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

Скачать скетч

Программа очень похожа, за исключением приведенного ниже фрагмента кода.

mySerial.println("AT+CNMI=1,2,0,0,0"); 
updateSerial();

AT+CNMI=1,2,0,0,0 — указывает как должны обрабатываться вновь поступившие SMS-сообщения.
Ответ получим +CMT: все поля разделены запятыми:
— первое поле, указывается номер телефона отправившего SMS.
— второе поле, имя человека, отправляющего SMS.
— третье поле, времени получения SMS
— четвертое поле, сообщение.

Подключение SIM800L к Arduino
Подключение SIM800L к Arduino

Программа №4 — Звонок

В этом примере, будем осуществлять вызов на указанный номер телефона. Первым делом, необходимо ввести номер телефона, на который будет осуществляться звонок.

/* 
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 28.03.2019г.
*/ 
 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);          // Выводы SIM800L Tx Rx подключены к выводам Arduino 3 и 2
 
void setup()
{
  Serial.begin(19200);                   // Инициализация последовательной связи с Arduino и Arduino IDE (Serial Monitor)
  mySerial.begin(19200);                 // Инициализация последовательной связи с Arduino и SIM800L
  Serial.println("Initializing...");     // Печать текста
  delay(1000);                           // Пауза 1 с
 
  mySerial.println("AT");                // Отправка команды AT
  updateSerial();

  mySerial.println("ATD+ +7xxxxxxxxxx;");//  Номер телефона для вызова
  updateSerial();
  delay(20000); 
  mySerial.println("ATH");               // Положить трубку
  updateSerial();
}

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

Скачать скетч

Для осуществления вызова используются следующие AT-команды:

ATD+ +7xxxxxxxxxx; — Набирает указанный номер.
ATH — закончить звонок

  mySerial.println("ATD+ +Zxxxxxxxxxx;"); 
  updateSerial();
  delay(20000); 
  mySerial.println("ATH");
  updateSerial();

На рисунках ниже показан звонок из GSM-модуля SIM800L.

Подключение SIM800L к Arduino
Подключение SIM800L к Arduino

Программа №5 — Принятие звонка

В последнем примере, будем принимать звонок, для этого ненужно специального скетча, необходимо просто считывать постоянно данные с модуля SIM800L.

/* 
Тестировалось на Arduino IDE 1.8.5
Дата тестирования 28.03.2019г.
*/ 
 
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2);          // Выводы SIM800L Tx Rx подключены к выводам Arduino 3 и 2
 
void setup()
{
  Serial.begin(19200);                   // Инициализация последовательной связи с Arduino и Arduino IDE (Serial Monitor)
  mySerial.begin(19200);                 // Инициализация последовательной связи с Arduino и SIM800L
  Serial.println("Initializing...");     // Печать текста 
}

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

Скачать скетч

Входящий вызов обычно обозначается как «RING» на последовательном мониторе, за которым следует номер телефона и идентификатор звонящего. Чтобы принять / повесить звонок, используются следующие AT-команды:

ATA — принять звонок.
ATH — отказ от звонка.

Ниже вывод на последовательном мониторе показывает вызов, полученный GSM-модулем SIM800L.

Подключение SIM800L к Arduino
Подключение SIM800L к Arduino

Обзор модуля GSM, GPRS на чипе SIM800L

Купить на Aliexpress
  Контроллер Arduino UNO R3
  Модуль GSM, GPRS на чипе SIM800L
  Комплект проводов DuPont, 2,54 мм, 20 см

Купить в Самаре и области
  Купить контроллер Arduino UNO R3
Модуль GSM, GPRS на чипе SIM800L
  Купить комплект проводов DuPont, 2,54 мм, 20 см


Читайте также:

комментария 3

  1. Доброжелательный новичок:

    Здравствуйте, подскажите пожалуйста, а как сделать white-list для принятия сообщения на arduino?

  2. Сэмми:

    Здравствуйте, скажите пожалуйста, из-за чего модуль SIM800L на протяжении какого то времени работал, отправлял сообщения на смартфон, а потом вышел из строя и теперь пишет следующее:
    AT OKAT+CMGF=1 ERRORAT+CMGS=»+79080730938″ ERRORTemperature < +28C ERROR
    Ранее везде где сейчас ERROR, модуль отправлял OK
    Устройство проработало сутки

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *