SIM800C и Arduino. Подключаем и разбираемся с принципом работы.

SIM800C — это компактный gsm/gprs модуль. Помимо GSM, модуль так же поддерживает Bluetooth версии 3.0. А ещё SIM800C может воспроизводить аудио и поддерживает протоколы POP3, SMTP, MMS, FTP, HTTP, SSL и др.

Несмотря на плюсы, у данного модуля есть и минусы:

  • Первый минус — питание. Запитать данный модуль от arduino не получится, т.к. для его работы потребуется источник питания с напряжением 5 В и 2 А( при пиковой нагрузке).
  • Второй минус — это избирательность по операторам. Не со всеми операторами модуль может стабильно работать. Теряет сеть или не получается авторизоваться в сети.

У модуля, который мы будем подключать, выведен необходимый минимум для доступа к подавляющему большинству функций, включая голосовые (выходы для подключения микрофона и динамика):

GSM модуль SIM800C

И обратная сторона.

GSM модуль SIM800C

Назначение выводов модуля:

  • GND — пин земли
  • VCC_IN — пин источника питания от 5В до 20В
  • RI — пин для звонка
  • DTR — пин вывода модуля из спящего режима
  • RXD и TXD — пины UART
  • U2_R и U2_T — пины второго UART
  • V_M — пин преобразования UART в TTL логику
  • ADC — пин АЦП
  • SPN и SPP — пины подключения динамика
  • PWR — пин включения или выключения модуля
  • MC- и MC+ пин подключения микрофона
  • BAT — пин подключения аккумулятора напряжением от 3.3В до 4.4В

Теперь соберем простую схему

Схема сборки для настройки модема

После сборки схемы, загрузим тестовый скетч для настройки модема

#include <SoftwareSerial.h>

SoftwareSerial SIM800(8, 9);        // 8 - RX Arduino (TX SIM800), 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()); // …и отправляем полученную команду модему
}

После загрузки скетча, запускаем Serial Monitor и видим ответ от модема.

После, по очереди вводим команды для настройки модема. После каждой команды нажимаем «Отправить»

AT+CLTS=1 автоматическое определение времени по сети

AT+IPR=9600 задаем скорость работы модуля

AT&W сохранение настроек

После введенных команд, перезагружаем модуль и повторно через «монитор порта» проверяем настройки модуля.

AT+IPR?- команда проверки скорости обмена.

AT+CLTS?-команда проверки определения времени

Существует ряд команд при помощи которых можно определить состояние GSM-модуля и совершать конкретные действия, также получить полезную информацию при диагностике модуля. Некоторые из них представлены ниже:

  • команда AT — ответ модуля при ее вводе, покажет готовность модуля (ОК)
  • команда ATI — ответ модуля при ее вводе, покажет модель и версия модуля (SIM800 R14.18)
  • команда AT+CGMR — ответ модуля при ее вводе, покажет модель и версия ПО (Revision:1348B04SIM800L36)
  • команда AT+CCALR? — ответ модуля при ее вводе, говорит о готовности модуля совершать звонки (+CCALR: 1)
  • команда AT+CSQ — ответ модуля при ее вводе, говорит о уровне качества связи (+CSQ: 8,0)
  • команда AT+GSN — ответ модуля при ее вводе, покажет IMEI-модуля (664813735230592)
  • команда AT+GSV — ответ модуля при ее вводе, покажет идентификационные данные модуля (SIMCOM_Ltd SIMCOM_SIM800L Revision:1418B04SIM800L24)
  • команда AT+CBC — ответ модуля при ее вводе, покажет напряжение питания модуля (+CBC: 0,72,3963)
  • команда AT+CREG? — ответ модуля при ее вводе, покажет тип регистрации в сети (+CREG: 0,1). Где 0 это незапрашиваемый код регистрации в сети отключен, а 1 это зарегистрирован в домашней сети.
  • команда AT+COPS? — ответ модуля при ее вводе, покажет информацию об операторе (+COPS: 0,0,»MegaFon»)
  • команда AT+COPN — ответ модуля при ее вводе, покажет список всех доступных операторов (+COPN: «24201»,»TELENOR»)
  • команда AT+CPAS — ответ модуля при ее вводе, покажет статус модуля +CPAS: 4 — где цифра 4 означает, что модуль готов к работе.

Практическое применение.

Для примера, попробуем поуправлять светодиодом, подключенным к Arduino Nano, посылая с помощью SMS команды «1» и «0». Аналогичным образом можно управлять и любой другой нагрузкой, используя вместо светодиода реле.

Добавлен светодиод

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

#include <SoftwareSerial.h>
SoftwareSerial gprsSerial(8, 9);  
int LedPin = 10; 
void setup(){
  gprsSerial.begin(9600);
  pinMode(LedPin, OUTPUT);
  gprsSerial.print("AT+CMGF=1\r");
  delay(500); 
  gprsSerial.print("AT+IFC=1, 1\r");
  delay(500);
  gprsSerial.print("AT+CPBS=\"SM\"\r");
  delay(500); 
  gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
  delay(700);
}

String currStr = "";
boolean isStringMessage = false;
void loop(){
  if (!gprsSerial.available())
    return;
  char currSymb = gprsSerial.read();
  if ('\r' == currSymb) {
    if (isStringMessage) {
      if (!currStr.compareTo("1")) {
        digitalWrite(LedPin, HIGH);
      } else if (!currStr.compareTo("0")) {
        digitalWrite(LedPin, LOW);
    }  
    isStringMessage = false;
  } else {
    if (currStr.startsWith("+CMT")) {
      isStringMessage = true;
    }
  }
  currStr = "";
  } else if ('\n' != currSymb) {
    currStr += String(currSymb);
  }
}

Теперь проверим работу схемы: отправляем на номер SIM карты, которая вставлена в SIM800L модуль СМС с «1» и в течении 10 секунд загорится светодиод, а чтобы его выключить отсылаем сообщение с «0».

Таким образом мы управляем любой нагрузкой с помощью модуля SIM800L и Arduino. Разумеется, вместо светодиода можно подключить, например, реле и контактор, что позволит управлять более или менее серьезной нагрузкой дома и в саду.


Изменено:

SIM800C и Arduino. Подключаем и разбираемся с принципом работы.: 3 комментария

  1. Картинка не соответствует действительности. 8 пин на тхд симки должен быть по скетчу, а на картинке на рхд идёт…

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.