О правильном подключении 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 GSM/GPRS используя AT Команды и микроконтроллер Ардуино.
Комплектующие
- Sim800L
- Arduino Uno
- Преобразователь постоянного тока LM2596
Sim800L – самое доступное (и довольно дешевое) решение для вашего проекта, управляемого GSM / GPRS. Вы можете совершать телефонные звонки, получать и отправлять текстовые сообщения, получать информацию о местоположении. Вы можете делать все, что вы обычно делаете со своим мобильным телефоном.
Прежде чем интегрировать этот модуль в свой проект, вы должны проверить, работает ли модуль. Он работает с AT-командами, и эти команды могут показаться запутанными. Поэтому я рекомендую вам использовать программное обеспечение. Я использовал AT Command Tester Tool, который можно бесплатно использовать в течение 7 дней. Я покажу, как использовать это программное обеспечение для настройки модуля SIM800L. Когда вы будете настраивать программное обеспечение, вам понадобится установить дополнение JAVA (англ. – add on) и открыть файл jar с помощью JAVA.
Подключение модуля к Arduino
Вы должны подавать на модуль SIM800 точно 4,2 В. Я использовал понижающий модуль LM2596. Настраиваем выходное напряжение до 4,2 В от потенциометра. Не забудьте соединить Arduino GND с выходом LM2596 (-). Сначала подключите ваш модуль Sim800L к Arduino;
- NET -> Нет соединения
- VCC -> LM2596 Out (+)
- RST -> Arduino D9
- RXD -> Arduino D7
- TXD -> Arduino D8
- GND -> LM2596 Out (-)
Код урока
Откройте пустой эскиз Arduino и загрузите код ниже:
Откройте AT Command Tester Tool. Нажмите «Найти порты» и выберите правильный порт. Выберите "BaudRate" как 19200. Выбрав порт устройства и правильную скорость передачи (скорость последовательного порта), нажмите «Connect» (перевод – "соединиться") на AT Command Tester. Инструмент отправит запрос на устройство и подключится.
Регистрация устройства в сети необходима перед установлением соединения для передачи данных. В разделе «Выбор сети» устройство можно настроить для ручной или автоматической регистрации.
На вкладке «Голосовой вызов» вы можете проверить исходящие и входящие голосовые вызовы. Инструмент предоставляет простой в использовании интерфейс для набора исходящих номеров и приема входящих звонков.
О правильном подключении 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.