Sim800l подключение к ардуино uno

Содержание

О правильном подключении 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.

О правильном подключении 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.

Рассмотрим как связать Адруино с GSM модулем SIM800L. Существуют GSM шилды специально для Ардуино, но по цене они достаточно дороги, потому решил приобрести бюджетный вариант. Статья может быть полезна так же для подключения модуля SIM900, NEOWAY M590, и некоторых сотовых телефонов. Неудобный нюанс в том, что этот модуль требует нестандартное для Ардуино питание 3.7В, поэтому запитывать пришлось отдельно через понижающий преобразователь напряжения.

Подключение

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

  1. Контроллер Arduino UNO R3 + USB кабель
  2. GSM модуль SIM800L (питание от 3.7В до 4.2В)
  3. Преобразователь напряжения понижающий (DC-DC step-down converter)
  4. Батарея 12В (или любой источник питания от 6В до 20В)
  5. Соединительные провода

Соединяем Ардуино с компьютером через USB кабель.

Даем питание к GSM модулю от батареи 12В через преобразователь:

  • от 12В минус идет на ардуино в GND, от GND в преобразователь напряжения во входящий минус.
  • от 12В плюс идет в преобразователь напряжения во входящий плюс.

Возникает вопрос: можно ли подать питание от самой Ардуино от 5В? Напрямую не рисковал бы. Но можно подобрать диод или стабилизатор напряжения.

Перед подключением к преобразователю напряжения необходимо его настроить выставив выходное напряжение на любое в диапазоне 3.7В — 4.2В. От преобразователя напряжения выходящие контакты подключаем к GSM модулю, соблюдая полярность.

TX и RX контакты на GSM модуле соединяем с 2 и 3 цифровыми контактами на Ардуино. Если необходимо подключить несколько GSM модулей к Arduino, то используйте другие пины и прописывайте в скетче через SoftwareSerial.

Скетч

Процедура для отправки СМС

Процедуру добавлять в конец скетча и вызывать её из основного цикла так: sms(String(текст СМС на англ.),String(+791212345678));

Только отправлять СМС рекомендую по какуму нибудь событию и не просто так в цикле, а то бесконечно будет отправлять и деньги все съест с СИМки. Подключите датчик температуры или кнопку и по ее срабатывании отправляйте смс.

Проверка

Включаем питание затем через монитор порта, выставив скорость 19200 и обязательно опцию новая строка.

Вводите команду ATI и нажмите ENTER. Должна появиться информация от модели модуля.

Пробовал отправить на модуль СМСку через бесплатный сервис от Теле2, приходят непонятные строки. Пробовал в модуле сменить кодировки. Вопрос пока не решен.


Источник: car3g.ru