arduinoLab
Подключение GSM модуля на примере SIM800 к Arduino
О правильном подключении GSM модема SIM800L или по чему не работает модем с Arduino.
Особенности SIM800:
- Четырехдиапазонный GSM/GPRS модуль, 850/900/1800/1900 МГц
- В зависимости от версии модема, интерфейс USB для обновления программного обеспечения, UART, FM-radio, Bluetooth, PCM
- Управление AT командами
- Встроенный стек TCP/IP, UDP/IP, Протоколы HTTP, FTP, Email, PING, MMC
- Определение местоположения по базовым станциям.
- Декодирование и формирование DTMF-тонов
- Воспроизведение аудиофайлов локально и в сторону удаленного абонента
800 серия или что означает буква в конце:
Не только тип корпуса, хотя это основное различие. SIM800A, как и SIM800F, электрически совместим с популярным, но уже снятым с производства SIM900 и предназначен для его замены, SIM800C выполнен в корпусе с возможностью ручного монтажа, LGA монтаж, имеет на борту bluetooth, SIM800L для поверхностного монтажа и имеет на борту FM радио. Программно они полностью совместимы.
Как подключить к Arduino:
Питание:
Диапазон напряжение питания SIM800 (не китайского модуля на SIM800, а модема) составляет от 3,4 до 4,4 В. Рекомендуемое напряжение 4,0 В. Модем рассчитан на батарейное питание от одной Li-Ion банки, напряжение 5 вольт не допустимого, попытки запитать модем от 5 вольт приводит к тому, что модем выключается (уходит в защиту).
Источник питания должен обеспечивать достаточный ток, не менее 2А. Потребляемый ток модема зависит от режима его работы, максимальный пик потребления происходит при включении модуля и соединении с базовой станцией. На вход VBAT настоятельно рекомендуется подключать конденсатор большей емкости с низкий ESR. Потребление электричества не линейное, происходит короткими импульсами, в эти моменты важно не допустить проседания напряжения питания ниже 3,0 В.
В документации на модем, для получения заветных 4,0 вольт, рекомендуют использовать линейный стабилизатор с низким падением напряжения MIC29302 либо более распространенный DC-DC преобразователь LM2596, схема включения выше. Подойдет и MP1584EN, главное напряжение в приделах от 3,4 до 4,4 В и достаточный запас мощности. Плохая идея брать питание от USB, либо выхода 5 вольт ардуино, в этом случаи добиться стабильной работы модема, будет практически не возможно.
Логические уровни и UART:
Как и питание, у модема не стандартный логический уровень 2,8 В, что добавляет веселья. При попытки подключить что либо к 5 или 3,3 вольтовой логике, модем выключается.
Включение модема и PWRKEY:
Например чтобы включить модем, необходимо на ногу PWRKEY модема подать логический 0, тоесть соединить с массой.
В документации предлагают использовать транзисторный ключ, чтобы избежать возможность попадания высокого для модема напряжение 5 вольт на вход.
На китайских модулях о согласовании уровней не заботятся, часто выход PWRKEY выводят на колодку без транзистора, либо соединятся с массой на самом модуле, в этом случаи модуль включается при подачи питания, что не является верным и лишает возможности программного управления питанием модема с микроконтроллера.
Временные интервалы включения показаны на графике выше, включать модуль ногой PWRKEY следует по прошествии 0,5 секунд после подачи питания на ноги VBAT, а добиться ответа на команды по UART, можно не раньше трех секунд после включения.
Выходы TX и RX также должны быть согласованны, подключение модема к 5 вольтовой ардуино без согласования может вывести его из строя, хотя обычно модем поругавшись на «овервольтаж» выключится.
Один из вариантов согласования из документации, обратите внимание на выход VDD_EXT, на этом выходе модем формирует напряжение 2,8 вольт, предназначенное для периферийных устройств.
Другой вариант, рекомендуемый для 5 вольтовых уровней, конвертировать при помощи транзисторов, схема включения аналогична дешевым китайским конвертерам в виде модулей для ардуино.
Подобным решением можно воспользоваться только при проектировании устройств на SIM800, т.е. не используя готовые китайские модули для ардуино, на которых не озаботились вывести выход VDD_EXT на колодку.
Согласовать уровни можно делителем напряжения на двух резисторах, в этом случаи не понадобятся дополнительные напряжения и выход VDD_EXT, но данный способ увеличивает нагрузку на порт и может не стабильно работать на высоких скоростях UART интерфейса.
Правильным решением будет использовать модули с уже установленным на плате конвертером логических уровней, но про разновидности модулей ниже.
Разновидности китайских модулей:
Модуль на SIM800C с минимальной обвязкой. Отсутствует конвертер уровней UART интерфейса, фильтры, стабилизатор питания. Самый популярный, дешевый и малогабаритный.
Аналогичный китайский модуль на SIM800L
Этот модуль уже поинтереснее, есть конвертер уровней (на плате два транзистора 2n7002) два включенных последовательно диода, чтобы снизить напряжение питания 5 вольт до положенных модему 4.2 вольта, решение сомнительное но самое дешевое. Выведена нога для антенны встроенного bluetooth. Все еще отсутствуют фильтры в аналоговой части
Существует аналогичный модуль с тойже распиновкой, но за место конвертера уровней, стоит стабилизатор напряжения питания на DC-DC преобразователе MP1584EN. Странное решение.
Этот мало чем отличается от модулей выше, есть конвертер уровней, есть два диода чтобы снизить напряжение питания 5 вольт до положенных модему 4.2 вольта, к сожелению отсутствуют голосовые функции! возможно будет удобней в подключении, есть крепежные отверстия.
Вот, это уже чтото… Линейный стабилизатор напряжения питания MIC29302, конвертер логических уровней, на плате bluetooth антенна и SMA разъем для GSM антенны, Отсутствуют фильтры на аналоговой части.
Shield от Keystudio, вот это то как должно быть, есть возможность использовать внешнее питание и питание от ардуино, линейный стабилизатор питания MIC29302, фильтры в аналоговой части и джек для подключения гарнитуры, ионистор для часов, вывели даже USB. Один недостаток, цена…
Все таки как подключать к Arduino:
А что подключать и к чему? разновидностей модулей десятки, версий ардуино плат тоже. Я не рекомендую использовать плату Arduino UNO, как и любую другую с ATmega328, совместно с библиотекой SoftwareSerial для работы с модемом, возможно данная связка подойдет для проверки работы модема и отладки, но в устройствах стабильной работы добиться практически не возможно.
Модем общается с микроконтроллерам по средствам UART интерфейса, на UNO единственный аппаратный UART отдан для перепрошивки платы и «монитор порта», это принуждает использовать библиотеку SoftwareSerial.h которая не может нормально переварить поток с модема. Правильным решением будет использовать плату с несколькими аппаратными UART интерфейсами, например Arduino Leonardo, Arduino Mega.
В случаи с Arduino Leonardo и аппаратным UART:
Не простой случай с дешевым модулем на SIM800L, тут нужен отдельный стабилизатор напряжения питания на 4,0 В, нужно согласовывать логические уровни с ардуино при помощи резистивного делителя напряжения, ибо по другому согласовать не получится.
Чуть проще с подобными модулями, где конвертер уровней установлен на плате. Только не забываем дать питание и для конвертера.
Управление модемом:
Общение с модемом происходит при помощи АТ команд, в модем отправляется команда в текстовом виде, а после выполнения команды модем возвращает ответ, самая простая команда «AT» ответ на нее «OK«, служит для проверки соединения с модемом. Список всех доступных команд и возможных ответов можно посмотреть в документации на модем.
Для управления модемом через «монитор порта» в ардуинку нужно залить пример, который транслирует данные из «монитора порта» в UART к которому подключен модем. Убедитесь в правильной скорости UART интерфейса, в настройках модема, скорость порта может отличатся от 9600.
Подключение SIM800L к Arduino
В нашем новом информационном обзоре рассматриваем GSM модуль SIM800L к Arduino. Почему выбрано именно это устройство? Во-первых, оно достаточно известно и популярно среди «ардуинщиков». Во-вторых, обладает хорошими функциональными особенностями (о них чуть позже). Ну и в-третьих, модуль является доступным по стоимости решением для любого проекта.
Для чего же необходим данный датчик? – Он широко используется в радиоэлектронике для подключения колонок, микрофонов, FM-радио; приема ∕ отправки текстовых сообщений (SMS) и USSD-запросов, совершения звонков, определения GPS-координат и отправки данных по сети. Сфер применения подобных аппаратов много, потому перечислять не будем – смысл понятен.
Обратимся к разновидностям GSM модуля:
По сути все показанные на скриншоте контроллеры имеют схожие характеристики и лишь небольшие отличия в опциях (ну и в названии тоже). Часть из них могут не работать с голосовыми вызовами, не поддерживают GNSS или Bluetooth (V 3), не имеют FM-приемника и т.п.
Перейдем к базовым параметрам:
- напряжение питания: 3.7 — 4.4V;
- сетевой режим: 2G;
- рабочий ток: 0,7 мА (2А — максимальный);
- тип микрофона: электретный;
- скорость UART: 1200 – 115200 бит ∕ сек.;
- мощность: 1 – 2 Вт (зависит от диапазона);
- формат карты: microSIM;
- диапазон температур: –30 . +75 С;
- размеры: 25х 24х 4 мм.
Если говорить об особенностях чипа SIM800L, можно выделить следующие пункты:
- интерфейс USB для обновления ПО;
- 4-диапазонный GSM/GPRS модуль (до 1900 МГц);
- геолокация по базовым станциям;
- возможность подключения динамика + разъем для подключение выносной антенны;
- протоколы HTTP, FTP, Email, PING, MMC;
- поддержка RTC-часов;
- стек TCP/IP, UDP/IP.
Распиновка устройства:
Подключение SIM800L к Ардуино
Теперь перейдем к главному – подключим контроллер. Для реализации проекта нам потребуются такие аппаратные элементы:
- микроконтроллер Arduino UNO R3
- цифровой GSM-модуль SIM800L
- преобразователь напряжения (понижающий)
- любой внешний источник питания от 6В до 20В
- USB кабель для подключения к компьютеру
- комплект соединительных проводов
Важно! Для корректной работы нужен источник питания на 3,7 В, 2A (не больше, не меньше)!
Макетная схема сборки:
Для прошивки нам не нужно скачивать дополнительный софт – используем стандартную библиотеку SoftwareSerial (находим в среде разработки IDE).
Прописываем проверочный скетч:
Обратите внимание — устройство работает с АТ-командами по интерфейсу UART. Для новичка они не так уж просты.
Для отправки SMS коды будут иными:
Проверим нашу сборку, подключив питание и открыв монитор порта (Ctrl+Shift+M). Не забываем установить скорость (19200) и «новая строка» (Newline).
На этом позвольте закончить статью – надеемся, информация была вам полезна! Оставайтесь и дальше с нами! Удачи!
GSM модули для Ардуино: описание
Аппаратная платформа Arduino используется для реализации множества электронных приборов и систем умного дома, включая GSM-извещатель охранной системы. Конструктор Arduino, в паре с простым и доступным языком программирования, позволит создать собственные типовые проекты умного дома, с применением GSM модуля.
Назначение и принцип работы
GSM-модуль (Global System for Mobile Communications) использует сеть телефонной связи оператора, для получения и передачи сигнала на удаленный объект управления. Например, с помощью СМС команд можно:
- получать оповещение о состоянии объекта через используемые датчики;
- узнавать о срабатывании сигнализации;
- включать и выключать охранную систему.
С помощью GPRS, который также поддерживают GSM-модули, можно аналогичные команды обрабатывать через Internet.
С помощью такого функционала можно организовать автономную сигнализацию на удаленном объекте. Датчики будут фиксировать изменение состояния, а по каналам связи будет транслироваться информация об этом на ваш смартфон. По сути, можно организовать Smart Home самостоятельно, постепенно добавляя в схему дополнительное комплектующее.
Работает такое устройство на базе платы Arduino Uno. Никто не запрещает использовать платы Nano (mini-схема) или Mega если необходимо, но для удобства монтажа устройства минимальной комплектации, достаточно материнской платы Uno.
За передачу GSM или GPRS отвечает модуль, который соединяется с основной платой. Он расширяет возможности Arduino UNO, позволяя принимать и совершать звонки, отправлять SMS, обмениваться данными через GPRS. На рынке представлены несколько версий отличных GSM-плат, которые можно сопоставлять и программировать через AT-команды на необходимый функционал.
Топ 6 самых популярных модулей
Представленные ниже модули – популярный продукт для монтажа систем автономной сигнализации и иных проектов, для передачи управляющего сигнала через сети мобильных операторов.
Под модулем понимается изделие, состоящие из платы и элементов на ней (включая компонент, состоящий из чипсета и приемопередатчика). Компонент находятся под крышкой в едином форм-факторе (напоминает процессор для материнской платы компьютера). Распайка на плате расширения происходит через торцевые контактные ножки. Такая полноценная плата и называется модулем. Если на ней есть множество других элементов, ее иногда именуют шилд.
Ниже будут приведены модули, такие как Neoway M590, A6 и A7, и прочие, представлены их характеристики.
SIM900
Разработанный компанией SIMCom Wireless Solution модуль SIM900 подключается и обменивается данными через распространенный физический протокол передачи данных UART. Подключение к ПК осуществляется через USB-UART преобразователь.
Плата позволяет в двухстороннем режиме работать с сообщениями и звонками адресата.
Спецификация:
- Диапазон частот EGSM900, DCS1800, GSM850, PCS1900.
- Напряжение 3,2-4,8 В.
- Сила тока в режиме простоя – 450 мА.
- Максимальный ток – 2 А.
- Канал связи до 14.4 кбит/с.
- Диапазон температур от -30 °C до +80 °C без искажения, и от -40 °C до +85 °C, с незначительным отклонением радиочастотных характеристик, с сохранением работоспособности.
- Вес 6,2 г.
- Размеры 24 x 24 x 3 мм.
У компонента есть модификации: 900B, 900D, 900TE-C, 900R 900X. У каждой модификации своя специфика. SIM900D дополнен блоком заряда аккумулятора, а в SIM900X введены новые режимы энергосбережения, что позволяет использовать модули в современных системах трекинга автомобилей, охранной и промышленной автоматики. Все модификации компонентов можно найти в едином форм-факторе SMT, с торцевыми контактами под пайку. Но, не исключены варианты нахождения в других форм факторах.
SIM800L
Основа модуля – компонент SIM800L с реализацией обмена данными по каналам GSM и GPRS с помощью дуплексного режима. В модуль устанавливается SIM-карта, есть встроенная антенна и выход под еще одну антенну. Питание на плату подается через преобразователь напряжения DC-DC. Еще, есть возможность подключиться к другому источнику питания. Интерфейс подключения – UART.
Спецификация:
- Четырехдиапазонный сотовый терминал.
- Напряжение 3,8-4,2В.
- Ток в режиме ожидания – 0,7 мА. Предельный ток – 500 мА.
- Слот
- Поддержка 2G сети.
- Диапазон температур от -30 °C до +75 °C.
Шилд A6 работает в сетях мобильной связи и позволяет принимать и передавать сигналы с помощью GSM и GPRS. Модуль, созданный компанией AI-THINKER несколько лет назад, успешно показал себя и пользуется популярностью в системах автоматики.
ТТХ А6:
- Четырехдиапазонный сотовый терминал.
- Напряжение питания 5 В.
- Ток в спящем режиме – 3 мА.
- Ток режима ожидания – 100 мА.
- Ток режима соединения – 500 мА.
- Ток пиковой нагрузки – 2А.
- Разъем
- Скорость GPRS во время передачи сигнала 42,8 Кбит/сек.
- Температура от -30 °C до +80 °C.
Новый модуль А7 отличается от предшественника тем, что в него встроен GPS. Это решение позволило упростить конструкцию платы.
Основные параметры:
- Четырехдиапазонный сотовый терминал.
- Напряжение 3,3-4,6 В.
- Напряжение питания 5В.
- 10 Класс GPRS: канал передачи данных 85,6 кбит/с.
- Jammer эха и шумов.
Neoway M590
Модуль на основе компонента Neoway M590 позволяет принимать звонки, обмениваться данными и сообщениями. Имеет интерфейс подключения UART.
Характеристики:
- Диапазон частот EGSM900, DCS1800.
- 10 Класс
- Напряжение 3,3-5 В.
- Пиковый ток 2 А.
- Рабочий ток 210 мА.
- Коммуникационный сигнал 3,3 В.
- Температура от -40 °C до +80 °C.
Подключая модуль к контроллеру, потребуется преобразователь 3,3 В -> 5 В.
GSM GPRS модуль SIM900
На базе модуля SIM900 разработали и успешно используют SIM900 GSM GPRS Shield, в качестве модуля для подключения к Arduino UNO. По сравнению с остальными платами, стоимость этой на порядок дороже, и она укомплектована множеством разъемов и контактов. Среди основных параметров:
- Подключается плата к Arduino Mega и UNO.
- Четыре рабочих частоты, как и в остальных платах.
- Низкое энергопотребление 1.5 А в спящем режиме.
- GPRS мульти-слот класса 10/8.
- Рабочие температуры от -40°C до +85 °C.
Схема сборки типового проекта Умного дома
Рассмотрим варианты подключения нескольких модулей GSM к платам Arduino. В качестве примера рассматриваются платы Arduino UNO и MEGA.
Перед подключением модулей, вставьте соответствующего размера симку мобильного оператора в слот модуля. Далее, модуль соединяется с основной платой. Для этого нужно внимательно изучить инструкцию, определив распиновку модулей. После, подключив плату к питанию, с помощью переходника USB-UART контроллер подключается к компьютеру, через среду программирования Arduino IDE, или ее более комфортную альтернативу, прошивается и программируется AT-командами.
Естественно, по мере увеличения функционала вашего проекта, к плате необходимо добавить датчики, реле, розетки и другие компоненты. Об этом вы можете почитать на других страницах сайта.
Аппаратная часть: составляющие
В зависимости от того, какой GSM-модуль будет использоваться, зависят и составляющие схемы.
В основном это: микроконтроллер Arduino UNO, совместимый с платой GSM-модуль, DC-DC преобразователь понижающий (если коммуникационный сигнал ниже 5В), проводки и переходники для подключения.
SIM800L + Arduino UNO
Например, для подключения SIM800L к Arduino UNO, из-за малого напряжения в 3,8 В нужно подключить через преобразователь DC-DC. Распиновка модуля SIM800L выглядит так.
Подключение происходит в такой последовательности:
- Подключите Arduino UNO к компьютеру через порт USB.
- Источник питания на 12 В подключите через DC-DC.
- Минус с ИП на GND платы контроллера, и с GND в минус преобразователя.
- Плюс с ИП на плюс DC-DC.
- Плюс с DC-DC на плюс (Vcc) GSM модуля.
- Минус с земли преобразователя на GND модуля.
- RXD и TXD модуля соедините с пинами 2 и 3 Arduino UNO.
К любым digital pin (цифровые входы/выходы), если необходимо, можно соединять несколько модулей.
A6 + Arduino UNO
Так как GSM-модуль имеет стандартное напряжение питания, поэтому преобразователь в схеме не нужен. Подключать платы можно напрямую. Схема распиновки A6 на рисунке ниже.
Соединение происходит следующим образом:
- UART_RXD модуля к TX→1 микроконтроллера.
- UART_TXD модуля к RX ←0 микроконтроллера.
- GND контроллера с GND GSM-модуля.
- Пин VCC0 (питание) к кнопке питания на модуле PWR_KEY (power).
SIM900 Шилд + Arduino MEGA
Особенность платы в том, что при вызове устройства, сила тока достигает пикового предела в 2А. Поэтому, не подключайте питание напрямую. Прежде чем соединить, установите в слот сим карту и выставите TXD и RXD перемычку для слаботочной цепи, согласно картинке.
Далее, подключайте платы между собой:
- Желтым проводом соедините контакт TxD.
- Салатовым –
- Черным соедините GND плат.
- Через USB-порт соединить Микроконтроллер с ПК.
Чтобы удостовериться, что схема собрана верно, установите в IDE GPRS_Shield_Arduino.
Проверка правильной отработки схемы выглядит так:
- На плате Arduino соедините RESET и землю, чтобы информация поступала от Shield к ПК.
- Установите SIM-карту в слот и дайте напряжение на модуль.
- Основную плату по USB соедините с ПК и нажмите кнопку «ON».
- При правильной работе схемы, зеленый светодиод будет мигать, а красный постоянно гореть.
Программная часть: скетчи и библиотеки
После разбора аппаратной части, нужно запрограммировать собранное устройство. С помощью текстовых короткого AT-кода, можно задавать устройству прямые команды. Они воспринимаются устройством во время нахождения программируемого устройства в командном режиме. Команды устройство считывает напрямую с клавиатуры или с помощью ПО, такого как IDE. Программу или ее аналоги доступны для устройств, работающих на Linux, MacOS, Windows, Android. Поэтому, задавать команды удаленно с телефона можно тоже.
На примере программирования модуля SIM900, можно рассмотреть настройку основных инструментов взаимодействия с будущим охранным проектом, сделанным своими руками.
Работа с СМС уведомлениями
Сперва настройте кодировку, с которой нет проблем у компилятора, а затем отправляйте СМС:
- Зайдите в IDE и выполните команду AT+CMGF=1 для перевода в текстовый формат сообщения.
- Затем, командой AT+CSCS=«GSM» выберите ASCII-кодировку.
- За набор сообщения отвечает команда AT+CMGS=«+79********».
- После команды введите текст мессенджа и отправьте его.
- Отправив SMS, нажмите CTRL+Z и устройство отправит SMS-сообщение на приемник.
- После правильного выполнения команд, вернется «ОК».
Чтобы получить сообщение, следуйте example:
- Отправьте команду AT + CNMI = 2,2,0,0,0, чтобы прочитать SMS.
- Обратной связью от порта будет +CMTI: «SM»,2 – двойка значит номер SMS в порядке очереди.
- Отправьте команду AT+CMGR=2 для чтения SMS.
Звонки
Естественно, пока к схеме не подключены микрофон и динамик, ни о каком приеме звонка и речи быть не может. Когда осуществиться звонок, будет выведен номер, с которого звонили. Чтобы далее работать со звонками:
- Загрузите библиотеку #include .
- Если на сим установлен PIN, то введите команду #define PINNUMBER “”, где в скобках пропишите его. В случае, если пин не установлен, оставьте скобки пустыми.
- Выполнив данную команду, следует узнать статус симки с подключением к сети с помощью boolean notConnected = true.
- Установить активацию с сетью можно через begin(). Если соединение готово к работе, в обратной связи покажется статус GSM_READY.
Выводы
Соорудить собственноручную автономную GSM-сигнализацию не составит большого труда для технически не подкованных людей, в вопросах электро и схемотехники. Прочитав инструкцию и ознакомившись с распиновкой схем, можно подключить микроконтроллер к отвечающему за GSM передачу данных модуль. Также, для подключения доступны разнообразные модели GSM модулей, которые в соответствии со своими характеристиками можно применять для различных задач и так называемых project-объектов.
Касаемо программирования контроллеров, с этим тоже не возникнет проблем. С помощью библиотек, АТ-команд и скетчев, можно определять статус SIM-карты, получать и отправлять SMS сообщения, принимать звонки и тому прочее. Осуществляется это в среде программирования Arduino IDE или в аналогичных средах, установленных на удаленном устройстве, которыми могут быть как смартфон, так компьютер, что непосредственно подключен к программируемому устройству.