Подключение SIM800L к Ардуино: модуль сим-карты и AT-команды

Вопросы и ответы
Содержание
  1. GSM GPRS в Arduino
  2. Модули GSM GPRS
  3. Описание модуля SIM900
  4. Технические характеристики:
  5. Описание модуля SIM800L
  6. Технические характеристики:
  7. Описание модуля A6
  8. Технические характеристики:
  9. Описание модуля A7
  10. Технические характеристики:
  11. AT-команды взаимодействия с модулем GSM
  12. Список наиболее используемых AT-команд:
  13. Отправка SMS-сообщений AT командами SIM900
  14. Топ 6 самых популярных модулей
  15. SIM900
  16. SIM800L
  17. A6
  18. A7
  19. Neoway M590
  20. GSM GPRS модуль SIM900
  21. Схема сборки типового проекта Умного дома
  22. Аппаратная часть: составляющие
  23. SIM800L + Arduino UNO
  24. A6 + Arduino UNO
  25. SIM900 Шилд + Arduino MEGA
  26. Программная часть: скетчи и библиотеки
  27. Работа с СМС уведомлениями
  28. SIM Socket
  29. SIM900: TCP-IP стек или HTTP? Что лучше?
  30. Код Arduino – выполнение звонка
  31. Включение/выключение чипа SIM900
  32. Аппаратный запуск
  33. Программный запуск
  34. Где купить GSM модули для ардуино
  35. Speaker & Microphone
  36. Подключение GSM GPRS шилда к Arduino
  37. Подключение модуля SIM800
  38. Подключение модуля A6
  39. Подключение с помощью GSM-GPRS шилда
  40. Краткое описание взаимодействия через AT-команды
  41. Список наиболее используемых AT-команд:
  42. Прозрачная макетная плата на 400 точек (breadboard)
  43. SIM900A Mini V 4.0 – GSM/GPRS модуль
  44. SIM900 GSM GPRS Shield Hardware
  45. CP2102 – USB-UART TTL конвертер
  46. Подключение платы расширения SIM900 GSM/GPRS Shield к компьютеру
  47. Передача данных по GPRS с помощью SIM900
  48. Скетчи для работы с модулем GSM
  49. Отправка СМС на примере SIM900
  50. Расширение размера буфера SoftwareSerial на Arduino

GSM GPRS в Arduino

Модули GSM GPRS

Модуль GSM используется для расширения возможностей обычных плат Arduino: отправка SMS, вызов, обмен данными через GPRS. Существуют различные типы модулей, наиболее часто используемые — SIM900, SIM800L, A6, A7.

Описание модуля SIM900

Модуль SIM900 используется в различных системах автоматизации. Интерфейс UART используется для обмена данными с другими устройствами. Модуль предлагает возможность звонить, обмениваться текстовыми сообщениями. Работа модуля реализована на компоненте SIM900, произведенном компанией SIMCom Wireless Solution.

Технические характеристики:

  • Диапазон напряжения 4,8-5,2 В;
  • В нормальном режиме ток достигает 450 мА, максимальный ток в импульсном режиме 2А;
  • Поддержка 2G;
  • Мощность передачи: 1 Вт 1800 и 1900 МГц, 2 Вт 850 и 900 МГц;
  • Имеются интегрированные протоколы TCP и UDP;
  • GPRS мультислотовый класс 10/8;
  • Рабочая температура от -30С до 75С.

Используя устройство, вы можете отслеживать транспортный путь вместе с устройством ГЛОНАСС или GPS. Возможность отправки SMS-сообщений используется в беспроводной сигнализации и различных системах безопасности.

Описание модуля SIM800L

Модуль основан на компоненте SIM800L и используется для отправки SMS, звонков и обмена данными через GPRS. В модуль установлена ​​карта micro-SIM. Устройство имеет встроенную антенну и разъем, к которому можно подключить внешнюю антенну. Питание на модуль подается от внешнего источника или через преобразователь постоянного тока в постоянный. Управление осуществляется с помощью компьютера через UART, Arduino, Raspberry Pi или аналогичные устройства.

Технические характеристики:

  • Диапазон напряжения 3,7 В — 4,2 В;
  • Поддержка 4-х полосной сети 900/1800/1900 МГц;
  • GPRS класс 12 (85,6 кБ / с);
  • Максимальный ток 500 мА;
  • Поддержка 2G;
  • Автоматический поиск в четырех частотных диапазонах;
  • Рабочая температура от -30С до 75С.

Описание модуля A6

Модуль A6 был разработан AI-THINKER в 2016 году. Устройство используется для обмена SMS-сообщениями и обмена данными через GPRS. Плата отличается низким энергопотреблением и небольшими размерами. Устройство полностью совместимо с российскими операторами мобильной связи.

Технические характеристики:

  • Диапазон напряжения 4,5 — 5,5 В;
  • Блок питания 5В;
  • Диапазон рабочих температур от -30С до 80С;
  • Максимальный ток потребления 900 мА;
  • GPRS класс 10;
  • Поддержка протоколов PPP, TCP, UDP, MUX.

Модуль поддерживает карты microsym.

Описание модуля A7

A7 — последний модуль AI-THINKER. По сравнению со своим предшественником, A6 имеет встроенный GPS, чтобы упростить конструкцию устройства.

Технические характеристики:

  • Диапазон рабочего напряжения 3,3-4,6 В;
  • Напряжение питания 5В;
  • Частоты 850/900/1800/1900 МГц;
  • GPRS класс 10: макс. 85,6 кбит / с;
  • Подавление эха и шума.

Устройство поддерживает карты micro-SIM. Модуль поддерживает обмен звонками, SMS-сообщения, передачу данных GPRS, прием сигнала GPS.

AT-команды взаимодействия с модулем GSM

Для начала работы с модулями GSM необходимо установить библиотеку GPRS_Shield_Arduino

AT-команды — это специфичные для модема команды, состоящие из коротких строк текста. Чтобы модем распознал отправленную команду, строка должна начинаться с символа at. Линия будет восприниматься только тогда, когда модем GSM находится в командном режиме.

Отправлять AT-команды можно с помощью программного обеспечения для связи или вручную с клавиатуры.

Большинство команд можно разделить на 3 режима:

  • тест, в котором модуль отвечает, поддерживает ли он команду;
  • read — вывод параметров текущей команды;
  • регистрация — будут зарегистрированы новые значения.

Список наиболее используемых AT-команд:

  • AT — проверьте правильность подключения модуля GSM. Если все в порядке, возвращается ОК;
  • A / — повторить предыдущую команду;
  • AT + DPI? — получить информацию о скорости движения двери. Ответ будет + IPR: 0 OK (0 в данном случае — автоматически);
  • AT + ICF? — настройка трансмиссии. Ответ будет + ICF: бит, четность;
  • AT + IFC? — управление трансмиссией. Ответ будет + IFC: терминал от модуля, модуль от терминала (0 — нет управления, 1 — программное управление, 2 — аппаратное управление);
  • AT + GCAP — показывает возможности модуля. Пример ответа — + GCAP: + FCLASS, + CGSM;
  • AT + GSN — получить форму IMEI. Пример ответа 01322600XXXXXXX;
  • AT + ПОЛИЦЕЙСКИЕ? — показывает доступных операторов;
  • AT + CPAS — статус модуля. Ответ + CPAS: 0. 0 — готов к работе, 3 — входящий звонок, 4 — голосовое соединение, 2 — неизвестно;
  • AT + CCLK? — информация о текущем времени и дате;
  • AT + CLIP = 1 — включить / выключить АОН. 1 — включен, 0 — выключен;
  • AT + CSCB = 0 — получать специальные SMS-сообщения. 0 — разрешено, 1 — запрещено;
  • AT + CSCS = «GSM» — кодировка SMS-сообщения. Можно выбрать один из следующих кодов: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1;
  • AT + CMEE = 0 — получение информации об ошибке;
  • AT + CPIN = XXXX — введите пин-код сим-карты;
  • AT&F — возврат к заводским настройкам;
  • AT + CPOWD = 1 — срочное (0) или нормальное (1) отключение модуля;
  • ATD + 790XXXXXXXX — звонок + 790XXXXXXXX;
  • ATA — ответить на звонок;
  • AT + CMGS = «» + 790XXXXXXXX «» SMS-тест — отправьте SMS-сообщение на номер + 790XXXXXXXX;

В этом случае представлены основные команды для модуля SIM900. Для других модулей команды немного другие.

Данные отправляются в модуль через специальную «терминальную» программу, которая устанавливается на ПК. Вы также можете отправлять команды модулю, отслеживая порт в Arduino IDE.

Отправка SMS-сообщений AT командами SIM900

В примере используются команды стандарта GSM 07.05.

Перед тем, как начать отправку сообщения, вам необходимо настроить форму.

Во-первых, вам нужно преобразовать текстовый формат сообщения, отправляемого в форму, в текстовый режим с помощью команды «AT + CMGF = 1 r».

По умолчанию используется режим PDU, а сообщения передаются в формате HEX, что не очень удобно.

необходимо передать шифрование в GSM командой «AT + CSCS =« GSM » r»

Шифрование определяет тип переданного телефонного номера, текст сообщения и USSD-запросы.

Наиболее удобен «GSM», где символы представлены в виде кодов ASCII и компилятор может легко их понять.

Но есть и минусы: будет доступна только латынь.

Для кириллицы необходимо использовать режим Unicode «UCS2». Итак, пока рассмотрим вариант с кириллицей

Отправка СМС

  1. Отправляем команду «AT + CMGS =» + 79XXXXXXXXX « r», ответом будет приглашение набрать текст сообщения — символ ‘>’.
  2. Отправляем текст. В конце нужно отправить комбинацию клавиш с кодом Ctrl + Z (код 0x1A), только тогда форма поймет, что текст набран и вы сможете отправить сообщение получателю.
  3. Получаем «ОК» — поздравляем, сообщение улетело.

Топ 6 самых популярных модулей

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

Модуль — это изделие, состоящее из платы и элементов на ней (включая компонент, состоящий из набора микросхем и трансивера). Компонент размещен под крышкой в ​​едином форм-факторе (напоминающий процессор для материнской платы компьютера). Распайка на плате расширения происходит через контактные штыри клеммы. Такая полноценная плата называется модулем. Если на нем много других элементов, его иногда называют щитом.

Ниже будут представлены такие модули, как Neoway M590, A6 и A7 и другие, представлены их характеристики.

SIM900

Модуль SIM900, разработанный SIMCom Wireless Solution, подключается и обменивается данными через общий физический протокол UART. Подключение к ПК происходит через преобразователь USB-UART.

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

Специфический:

  1. Диапазон частот EGSM900, DCS1800, GSM850, PCS1900.
  2. Напряжение 3,2-4,8 В
  3. Ток холостого хода 450 мА.
  4. Максимальный ток — 2 А.
  5. Канал связи до 14,4 кбит / с.
  6. Температурный диапазон от -30 ° C до +80 ° C без искажений и от -40 ° C до +85 ° C, с незначительным отклонением ВЧ характеристик при сохранении работоспособности.
  7. Вес 6,2 г.
  8. Размеры 24 х 24 х 3 мм.

Компонент имеет модификации: 900B, 900D, 900TE-C, 900R 900X. Каждая модификация имеет свои характеристики. SIM900D интегрирован с блоком зарядки аккумулятора, а в SIM900X были введены новые режимы энергосбережения, позволяющие использовать модули в современных системах отслеживания транспортных средств, безопасности и промышленной автоматизации. Все модификации компонентов могут быть выполнены в едином форм-факторе SMT с паяными клеммными контактами. Но не исключены варианты исполнения в других форм-факторах.

SIM800L

Модуль основан на компоненте SIM800L с реализацией обмена данными по каналам GSM и GPRS в полнодуплексном режиме. В модуле установлена ​​SIM-карта, есть встроенная антенна и выход для другой антенны. Питание на плату подается через преобразователь постоянного напряжения в постоянный. Также вы можете подключиться к другому источнику питания. Интерфейс подключения — UART.

Специфический:

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение 3,8-4,2 В
  3. Ток в режиме ожидания — 0,7 мА. Предел тока составляет 500 мА.
  4. Слот
  5. Поддержка сети 2G.
  6. Температурный диапазон от -30 ° C до +75 ° C.

A6

Shield A6 работает в мобильных сетях и позволяет принимать и передавать сигналы через GSM и GPRS. Модуль, созданный AI-THINKER несколько лет назад, успешно зарекомендовал себя и пользуется популярностью в системах автоматизации.

TTX A6:

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение питания 5 В.
  3. Ток подвески — 3 мА.
  4. Ток в режиме ожидания 100 мА.
  5. Ток в режиме подключения — 500 мА.
  6. Пиковый ток нагрузки — 2А.
  7. Коннектор
  8. Скорость GPRS при передаче сигнала 42,8 Кбит / с.
  9. Температура от -30 ° С до + 80 ° С.

A7

Новый модуль A7 отличается от предшественника наличием встроенного GPS. Это решение позволило упростить конструкцию платы.

Основные параметры:

  1. Четырехдиапазонный сотовый терминал.
  2. Напряжение 3,3-4,6 В
  3. Напряжение питания 5В.
  4. 10 Класс GPRS: канал передачи данных 85,6 кбит / с.
  5. Эхо и тревожный шум.

Neoway M590

Модуль на базе компонента Neoway M590 позволяет принимать звонки, обмениваться данными и сообщениями. Имеет интерфейс подключения UART.

Характеристики:

  1. Частотный диапазон EGSM900, DCS1800.
  2. 10 класс
  3. Напряжение 3,3-5 В.
  4. Пиковый ток 2 А.
  5. Рабочий ток 210мА.
  6. Сигнал связи 3,3 В.
  7. Температура от -40 ° С до + 80 ° С.

При подключении модуля к контроллеру требуется преобразователь 3,3 В -> 5 В.

GSM GPRS модуль SIM900

На основе модуля SIM900 мы успешно разработали и использовали SIM900 GSM GPRS Shield в качестве модуля для подключения к Arduino UNO. По сравнению с остальными картами, эта намного дороже и имеет множество разъемов и контактов. Среди основных параметров:

  1. Плата подключается к Arduino Mega и UNO.
  2. Четыре рабочих частоты, как и у остальных карт.
  3. Низкое энергопотребление 1,5А в спящем режиме.
  4. GPRS мультислотовый класс 10/8.
  5. Рабочие температуры от -40 ° C до + 85 ° C.

Настройки перемычки выбора UART на SIM900 GSM Shield

Схема сборки типового проекта Умного дома

Рассмотрим варианты подключения нескольких модулей GSM к платам Arduino. В качестве примера рассматриваются платы Arduino UNO и MEGA.

Перед подключением модулей вставьте SIM-карту соответствующего размера мобильного оператора в слот модуля. Далее модуль подключается к основной плате. Для этого нужно внимательно изучить инструкцию, определив распиновку модулей. После подключения платы к источнику питания через адаптер USB-UART, контроллер подключается к компьютеру через среду программирования Arduino IDE или более удобную альтернативу, он прошивается и программируется с помощью AT-команд.

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

Аппаратная часть: составляющие

Компоненты схемы зависят от того, какой модуль GSM будет использоваться.

В основном это: микроконтроллер Arduino UNO, совместимый с модулем GSM платы, понижающий преобразователь DC-DC (если сигнал связи менее 5В), проводка и переходники для подключения.

SIM800L + Arduino UNO

Например, для подключения SIM800L к Arduino UNO из-за низкого напряжения 3,8 В необходимо подключение через преобразователь постоянного тока в постоянный. Распиновка модуля SIM800L выглядит так.

Подключение производится в следующей последовательности:

  1. Подключите Arduino UNO к компьютеру через порт USB.
  2. Подключите питание 12 В через DC-DC.
  3. Меньше от питания к GND платы управления и от GND к меньшему, чем у преобразователя.
  4. Плюс от блока питания до плюса DC-DC.
  5. Плюс от DC-DC к плюсу (Vcc) модуля GSM.
  6. Меньше от земли преобразователя к GND модуля.
  7. Подключите RXD и TXD модуля к контактам 2 и 3 Arduino UNO.

К любому цифровому выводу (цифровые входы / выходы) при необходимости можно подключить несколько модулей.

A6 + Arduino UNO

Поскольку модуль GSM имеет стандартное напряжение питания, нет необходимости в преобразователе в схеме. Вы можете напрямую связать карты. Схема распиновки A6 показана ниже.

Ссылка следующая:

  1. UART_RXD модуля к TX → 1 микроконтроллера.
  2. UART_TXD модуля к RX ← 0 микроконтроллера.
  3. GND контроллера от GND модуля GSM.
  4. Подключите VCC0 (питание) к кнопке питания на модуле PWR_KEY (питание).

SIM900 Шилд + Arduino MEGA

Особенность платы в том, что при вызове устройства ток достигает пикового предела 2А. Поэтому не подключайте питание напрямую. Перед подключением установите SIM-карту в слот и установите перемычки TXD и RXD для слаботочной цепи, как показано на рисунке.

Затем соедините доски вместе:

  1. Соедините контакт TxD с желтым проводом.
  2. Салатов –
  3. Соедините GND плат с черным.
  4. Подключите микроконтроллер к ПК через порт USB.

Чтобы убедиться, что схема собрана правильно, настройте GPRS_Shield_Arduino в IDE.

Проверка правильности работы схемы выглядит так:

  1. На плате Arduino подключите RESET и заземлите, чтобы информация передавалась от Shield к ПК.
  2. Вставьте SIM-карту в слот и включите модуль.
  3. Подключаем материнскую плату к ПК через USB и нажимаем кнопку «ВКЛ».
  4. Когда схема работает правильно, зеленый светодиод будет мигать, а красный светодиод будет гореть постоянно.

Программная часть: скетчи и библиотеки

После разборки фурнитуры нужно запрограммировать собранное устройство. С помощью коротких текстовых AT-кодов устройству можно давать прямые команды. Они воспринимаются устройством, когда программируемое устройство находится в командном режиме. Устройство считывает команды прямо с клавиатуры или через программное обеспечение, такое как IDE. Программа или ее аналоги доступны для устройств под управлением Linux, MacOS, Windows, Android. Таким образом, вы также можете устанавливать команды удаленно со своего телефона.

Используя пример программирования модуля SIM900, вы можете рассмотреть возможность настройки основных инструментов для взаимодействия с будущим проектом безопасности DIY.

Работа с СМС уведомлениями

Сначала настройте кодировку, с которой у компилятора нет проблем, а затем отправьте SMS:

  1. Перейдите в IDE и выполните команду AT + CMGF = 1, чтобы перевести сообщение в текстовый формат.
  2. Затем используйте команду AT + CSCS = «GSM», чтобы выбрать кодировку ASCII.
  3. Команда AT + CMGS = «+ 79 ********» отвечает за набор сообщения********».
  4. После команды введите текст сообщения и отправьте его.
  5. После отправки SMS нажмите CTRL + Z, и устройство отправит SMS-сообщение получателю.
  6. После правильного выполнения команд он вернет «ОК».

Чтобы получить сообщение, следуйте примеру:

  1. Для чтения SMS отправьте команду AT + CNMI = 2,2,0,0,0.
  2. Обратная связь с порта будет + CMTI: «SM», 2 — два означает номер SMS по очереди.
  3. Чтобы прочитать SMS, отправьте команду AT + CMGR = 2.

SIM Socket

Сзади есть гнездо для SIM-карты. Подойдет любая активированная полноразмерная SIM-карта 2G.

Держатель SIM-карты на SIM900 GSM Shield

SIM900: TCP-IP стек или HTTP? Что лучше?

Изучая руководство по управлению модемом, я обнаружил, что существует две группы AT-команд. Первая группа используется для передачи данных через интегрированный стек TCP-IP, а вторая использует протокол HTTP, уже реализованный внутренней логикой SIM900. Сколько я ни мучил Google и Яндекс, пытаясь выяснить, в чем разница между этими методами, каковы плюсы и минусы каждого из них, я ничего не нашел, поэтому попробовал оба и поделился своим практическим опытом здесь.

Оба метода работают и имеют право на существование.

Стек TCP-IP немного сложнее инициализировать (в модуль нужно передать больше команд) и немного сложнее управлять. Для отправки запроса необходимо открыть соединение, дождаться ответа и правильно закрыть.

Говоря простым языком, HTTP — это браузер, встроенный в SIM900. Его легко инициализировать, чтобы инициировать обмен с сервером, вам нужно открыть сеанс. При этом открытие и закрытие соединения по каждому запросу и решение других «организационных проблем» ложится на плечи SIM900. Это также удобно, так как передача данных происходит немного быстрее, именно потому, что SIM900 быстрее выполняет все «вспомогательные операции», чем контроллер управления.

Поэтому, когда я выбрал метод обмена, я все же остановился на протоколе HTTP.

Код Arduino – выполнение звонка

Теперь давайте запрограммируем нашу Arduino на выполнение звонка. Этот эскиз очень полезен, если вы хотите, чтобы ваш Arduino совершал экстренный вызов (SOS) в чрезвычайной ситуации, например, когда повышается температура или кто-то входит в ваш дом. Вы поняли!

Перед тем, как опробовать скетч, нужно ввести номер телефона. Найдите строку ZZxxxxxxxxxx и замените ZZ кодом своей страны, а xxxxxxxxxx — своим 10-значным номером телефона.

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

ATD + + ZZxxxxxxxxxx; — набрать указанный номер. Модификатор точки с запятой; в конце он разбивает строку составления на несколько команд составления. Все команды, кроме последней, должны заканчиваться точкой с запятой; модификатор ;.

ATH — положите трубку

На приведенном ниже экране показан вызов с карты расширения SIM900 GSM / GPRS Shield.

Рисунок 24 Прием вызова с SIM900 GSM Shield

Включение/выключение чипа SIM900

Даже если вы включите карту расширения, вам все равно нужно активировать микросхему SIM900, чтобы она работала.

Согласно техническому описанию, установив вывод PWRKEY микросхемы на низкий логический уровень (логический 0) минимум на 1 секунду, можно включить / выключить микросхему. У нашей карты расширения есть два способа сделать это.

Аппаратный запуск

Кнопка включения / выключения микросхемы SIM900
Рисунок 13 — Кнопка включения / выключения микросхемы SIM900

На плате расширения есть сенсорная кнопка, расположенная под прямым углом рядом со светодиодом PWR. Вам нужно удерживать эту кнопку около 2 секунд, чтобы включить или выключить карту расширения.

Программный запуск

Вместо того, чтобы каждый раз вручную нажимать PWRKEY, вы можете программно включать и выключать SIM900.

Во-первых, вам нужно припаять перемычку SMD с меткой R13 на плату расширения, как показано на рисунке ниже.

Приварная перемычка R13 на SIM900 GSM Shield для программного управления
Перемычка R13, приваренная к SIM900 GSM Shield для программного управления

Затем вам нужно подключить контакт D9 на плате расширения к контакту D9 на Arduino.

Подключение SIM900 GSM Shield к Arduino для программного управления
Рисунок 15 — Подключение SIM900 GSM Shield к Arduino для программного управления

Наконец, вам нужно добавить в свою программу следующую функцию.

Где купить GSM модули для ардуино

Традиционно, прежде чем мы начнем, несколько полезных советов и ссылок на продавцов Алиэкспресс.

KEYES SIM900 GSM GPRS модуль высочайшего качества Модуль SIM800C для arduino от проверенного поставщика
Плата разработки, совместимая с Arduino, на основе модуля SIM900 GPRS / GSM Дешевый модуль GSM GPRS mini A6

Speaker & Microphone

Щиток поставляется с двумя стандартными гнездами 3,5 мм. Один для стереогарнитуры, а другой для монофонического микрофона. Используйте аудиоинтерфейс SIM900 для совершения и приема голосовых вызовов и прослушивания FM-радио.

Громкоговоритель и микрофон на SIM900 GSM Shield

Подключение GSM GPRS шилда к Arduino

В этом разделе мы рассмотрим проблемы, связанные с подключением модулей GSM к плате aduino. Большинство примеров основано на Arduino Uno, но большинство примеров будет относиться к Mega, Nano и т.д.

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

Для подключения понадобится плата Arduino, модуль SIM800L, понижающий преобразователь напряжения, кабели для подключения и аккумулятор на 12 В. Для модуля SIM800L требуется напряжение 3,7 В, что нестандартно для Arduino, для этого нужен понижающий преобразователь напряжения.

Распиновка модуля SIM800 показана на рисунке.

GSM GPRS в Arduino

Плата Arduino должна быть подключена к компьютеру через USB-кабель. Подключите аккумулятор 12 В через преобразователь: -12 В к земле Arduino, от земли к преобразователю к минусу, + 12 В к преобразователю к плюсу. Выходы модуля TX и RX должны быть подключены к контактам 2 и 3 Arduino. К любому цифровому выводу можно подключить несколько модулей.

GSM GPRS в Arduino

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

Модуль A6 дешевле, чем SIM900, и его очень просто подключить к Arduino. Модуль питается от 5В, поэтому дополнительных редукторов для подключения не требуется.

Для подключения понадобится плата Arduino (в данном случае это Arduino UNO), модуль GSM A6, соединительные кабели. Схема подключения представлена ​​на рисунке.

Модуль GSM и GPRS для Arduino

Контакт RX модуля GSM должен быть подключен к TX на плате Arduino, контакт TX должен быть подключен к контакту RX на Arduino. Масса модуля связана с массой микроконтроллера. Вывод Vcc модуля GSM должен быть подключен к PWR_KEY.

Подключение с помощью GSM-GPRS шилда

перед подключением важно обратить внимание на напряжение экрана. Ток во время звонка или передачи данных может достигать значений 15-2 А, поэтому вам не нужно запитывать экран напрямую от Arduino.

Перед подключением к Arduino необходимо установить SIM-карту на экран GSM-GPRS. Также необходимо установить перемычки TX и RX, как показано на рисунке.

Модуль GSM и GPRS для Arduino

Подключение осуществляется следующим образом: первый контакт (желтый провод на рисунке) от экрана должен быть подключен к TX на Arduino. Второй контакт (зеленый провод) подключается к RX на Arduino. Земля щита соединяется с землей аруина. Питание микроконтроллера осуществляется через USB-кабель.

Схема подключения экрана к плате Arduino представлена ​​на рисунке.

Модуль GSM и GPRS для Arduino

Для работы необходимо установить библиотеку GPRS_Shield_Arduino.

Чтобы проверить правильность собранной схемы, необходимо сделать следующее: подключить RESET и GND на Arduino (это приведет к тому, что данные будут передаваться прямо с щита на компьютер), вставить SIM-карту в щит и включите питание щита. Плата Arduino должна быть подключена к компьютеру и кнопка питания должна быть нажата. Если все подключено правильно, загорится красный светодиод, а зеленый будет мигать.

Краткое описание взаимодействия через AT-команды

AT-команды — это набор специальных модемных команд, состоящих из коротких строк текста. Чтобы модем распознал данную команду, строки должны начинаться с букв в. Строка будет принята, когда модем находится в командном режиме. AT-команды можно отправлять либо через коммуникационное программное обеспечение, либо вручную с клавиатуры. Практически все команды можно разделить на 3 режима: тестовый режим, в котором модуль отвечает, если поддерживает команду; read — вывод параметров текущей команды; регистрация — будут зарегистрированы новые значения.

Список наиболее используемых AT-команд:

  • AT — для проверки правильности подключения модуля. Если все в порядке, возвращается ОК.
  • A / — повторить предыдущую команду.
  • AT + DPI? — получить информацию о скорости движения двери. Ответ: + IPR: 0 OK (0 в данном случае автоматически).
  • AT + ICF? — настройка трансмиссии. Ответ будет + ICF: бит, четность.
  • AT + IFC? — управление трансмиссией. Ответ будет + IFC: терминал от модуля, модуль от терминала (0 — нет управления, 1 — программное управление, 2 — аппаратное управление).
  • AT + GCAP — показывает возможности модуля. Пример ответа: + GCAP: + FCLASS, + CGSM.
  • AT + GSN — получить форму IMEI. Пример ответа 01322600XXXXXXX.
  • AT + ПОЛИЦЕЙСКИЕ? — показывает доступных операторов.
  • AT + CPAS — статус модуля. Ответ + CPAS: 0. 0 — готов к работе, 3 — входящий звонок, 4 — голосовая связь, 2 — неизвестно.
  • AT + CCLK? — информация о текущем времени и дате.
  • AT + CLIP = 1 — включить / выключить АОН. 1 — включен, 0 — выключен.
  • AT + CSCB = 0 — получать специальные SMS-сообщения. 0 — включен, 1 — выключен.
  • AT + CSCS = «GSM» — кодировка SMS-сообщения. Можно выбрать один из следующих кодов: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1.
  • AT + CMEE = 0 — получение информации об ошибке.
  • AT + CPIN = XXXX — введите пин-код сим-карты.
  • AT&F — восстановить заводские настройки.
  • AT + CPOWD = 1 — срочное (0) или нормальное (1) отключение модуля.
  • ATD + 790XXXXXXXX — звоните + 790XXXXXXXX.
  • ATA — ответить на звонок.
  • AT + CMGS = «+ 790XXXXXXXX»> SMS test — отправьте SMS-сообщение на номер + 790XXXXXXXX.

В данном случае рассматриваются основные команды для модуля SIM900. Для разных модулей команды могут незначительно отличаться. Данные для модуля будут подаваться через специальную «терминальную» программу, которую необходимо установить на компьютер. Вы также можете отправлять команды модулю через дверной монитор в Arduino IDE.

GSM дверной монитор и модуль GPRS для Arduino

Прозрачная макетная плата на 400 точек (breadboard)

Доска разделочная прозрачная 400 точек

SIM900A Mini V 4.0 – GSM/GPRS модуль

SIM900A Mini V 4.0 GSM / GPRS модуль

SIM900 GSM GPRS Shield Hardware

На рисунке ниже показана задняя часть щита. Он имеет поддержку SIM-карты и батарею CR1220 3 В для RTC (часы реального времени).

CP2102 – USB-UART TTL конвертер

CP2102 USB UART TTL преобразователь / модуль загрузчика
Неверный запрос GET к серверу

В начале работы над передачей данных через GPRS я допустил ошибку, которая стоила мне больше суток мучений. Не имея достаточного опыта взаимодействия с сервером через GET-запросы, я, получив поверхностные знания в Интернете, сделал запрос формы:

Этот запрос неверен, но он был отлично съеден браузером и прокси-сервером, с которого я отправлял отладочные запросы, поэтому я счел запрос правильным.

Самое удивительное, что SIM900 хорошо справился с «плохим» запросом (поэтому я отправлял запросы через стек TCP-IP). Однако однажды сервер начал отвечать на такие запросы с ошибкой 404. Произошло это из-за невыясненных обстоятельств: либо хостинг-провайдер изменил алгоритмы обработки запросов (отказывается это делать), либо это сделал оператор мобильной связи. Но факт остается фактом. Я попробовал отправить тот же запрос по HTTP — все заработало.

Объясняется это тем, что внутренний HTTP-протокол модуля SIM900 (как я уже сказал, фактически встроенный браузер) способен анализировать неправильные запросы и передавать их в сеть в правильном виде. Это еще одно преимущество (конечно, сомнительное) использования HTTP, так как позволяет программисту допускать некоторые неточности. В целом, конечно, запрос должен быть написан правильно и выглядеть так:

При таком правильном запросе SIM900 успешно обменивается данными как через стек TCP-IP, так и через HTTP.

Подключение платы расширения SIM900 GSM/GPRS Shield к компьютеру

Чтобы управлять картой расширения SIM900 GSM / GPRS Shield напрямую через компьютер, вам необходимо подключить ее к компьютеру с помощью любого преобразователя USB в TTL.

На изображении ниже показано, как SIM900 GSM Shield подключается к компьютеру через преобразователь PL2303 USB в TTL.

Подключение SIM900 GSM Shield к ПК через конвертер USB-TTL PL2303
Рисунок 12 — Подключение SIM900 GSM Shield к ПК через преобразователь USB-TTL PL2303

Передача данных по GPRS с помощью SIM900

Я начал свои первые эксперименты по передаче данных через GPRS, используя платформу Arduino UNO для управления SIM900 (просто потому, что она была под рукой). Для начала я купил хостинг с сервером для Apatche и развернул на нем простое приложение, способное умело отвечать на GET-запросы. Произошло! Я по-прежнему отправлял команды с ПК на контроллер Arduino, который, в свою очередь, отправлял их на SIM900.

gprs SIM900

Все работало нормально, пока GET-запросы были достаточно короткими (до 100 символов). Но как только запросы растянулись, начались сбои — запросы не пересылались полностью. Было отмечено, что сбои могут появляться или исчезать даже при увеличении / уменьшении программы управления Arduino на несколько строк. Позже выяснилось, что сбои связаны с программным обеспечением USART, которое Arduino UNO использует для связи с SIM900, поскольку этот USART полностью зависит от центрального контура контроллера. При небольшом количестве данных они всегда успевают передать, а при увеличении их количества результат передачи зависит от длительности программного цикла.

Вывод из всего вышесказанного: использование ПО USART при связи с SIM900 НЕ ДОПУСКАЕТСЯ, особенно при работе с большим объемом передаваемых данных.

У Arduino Uno всего один «железный» интерфейс USART, который использовался для подкачки с ПК, поэтому пришлось отказаться от UNO, заменив его Arduino Mega, который не страдает отсутствием «железного» USART. После этой «рокировки» работа устройства стала стабильной и корректной.

Скетчи для работы с модулем GSM

Отправка СМС на примере SIM900

Перед отправкой сообщения модуль необходимо настроить. Прежде всего, вам необходимо перевести передаваемое сообщение в текстовый формат. Для этого есть команда AT + CMGF = 1. Передать кодировку в GSM необходимо командой AT + CSCS = «GSM». Эта кодировка наиболее удобна, так как символы представлены там в виде кода ASCII, который легко понимается компилятором.

Затем вам нужно набрать SMS-сообщение. Для этого отправляется команда с номером абонента AT + CMGS = «+ 79XXXXXXXXX» r, в ответ предлагается ввести текст SMS. Вы должны отправить сообщение. По окончании нужно отправить комбинированный код Ctrl + Z, форма позволит отправить текст получателю. Когда сообщение будет отправлено, оно вернет ОК.

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

Получение СМС. Чтобы прочитать SMS-сообщение, используйте команду AT + CNMI = 2,2,0,0,0. Когда модуль получает SMS, он отправляет на последовательный порт + CMTI: «SM», 2 (в данном случае 2 — это прогрессивный номер сообщения). Для его чтения необходимо отправить команду AT + CMGR = 2.

Прием голосового вызова. Прежде всего, для разговора нужно подключить к модулю динамик и микрофон. При поступлении вызова будет показан номер, с которого он был сделан. Для проведения работ необходимо включить библиотеку GSM:

Если ваша SIM-карта заблокирована, вам необходимо ввести ее PIN-код. Если PIN-код не требуется, это поле необходимо оставить пустым.

В setup () необходимо выполнить инициализацию передачи данных на компьютер. Следующим шагом является создание локальной переменной для отслеживания состояния сетевого подключения. Скетч не запустится, пока SIM-карта не будет подключена к сети.

Функция gsmAccess.begin () используется для подключения к сети. Как только соединение будет установлено, будет возвращено значение GSM_READY.

vcs.hangCall (); — функция, показывающая, что модем готов к приему звонков.

getvoiceCallStatus () — определяет состояние скетча. Если кто-то звонит, возвращается RECEIVINGCALL. Чтобы зарегистрировать номер, вам нужно использовать функцию retrieveCallingNumber (). Когда на вызов ответят, ГОВОРИТ вернется. Затем эскиз будет ждать новой строки, чтобы прекратить разговор.

Расширение размера буфера SoftwareSerial на Arduino

Если ваше сообщение достаточно длинное, как наше, вы, вероятно, получите его с пропущенными символами. Это не из-за ошибочного кода. Буфер приема SoftwareSerial заполняется и отбрасывает символы. И вы недостаточно быстро читаете из буфера.

Самое простое решение — увеличить размер буфера SoftwareSerial со стандартного размера с 64 до 256 байт (или меньше, в зависимости от того, что вам подходит).

На компьютере с Windows перейдите в C: Program Files (x86) → Arduino → hardware → Arduino → avr → библиотеки → SoftwareSerial (→ src для последней версии Arduino IDE). Откройте SoftwareSerial.h и измените строку:

Сохраните файл и попробуйте снова скомпилировать скетч.

Читайте также: COM-port в Arduino: что означает Serial.begin 9600

Оцените статью
Блог про Arduino