Подключение GSM модуля SIM800L к Arduino
- Подробности
- Создано: 15 июля 2015
Рассмотрим как связать Адруино с GSM модулем SIM800L. Существуют GSM шилды специально для Ардуино, но по цене они достаточно дороги, потому решил приобрести бюджетный вариант. Статья может быть полезна так же для подключения модуля SIM900, NEOWAY M590, и некоторых сотовых телефонов. Неудобный нюанс в том, что этот модуль требует нестандартное для Ардуино питание 3.7В, поэтому запитывать пришлось отдельно через понижающий преобразователь напряжения.
Подключение
Для подключения я использовал следующие компоненты:
- Контроллер Arduino UNO R3 + USB кабель
- GSM модуль SIM800L (питание от 3.7В до 4.2В)
- Преобразователь напряжения понижающий (DC-DC step-down converter)
- Батарея 12В (или любой источник питания от 6В до 20В)
- Соединительные провода
Соединяем Ардуино с компьютером через USB кабель.
Даем питание к GSM модулю от батареи 12В через преобразователь:
- от 12В «минус» идет на ардуино в «GND», от «GND» в преобразователь напряжения во «входящий минус».
- от 12В «плюс» идет в преобразователь напряжения во «входящий плюс».
Возникает вопрос: можно ли подать питание от самой Ардуино от 5В? Напрямую не рисковал бы. Но можно подобрать диод или стабилизатор напряжения.
Перед подключением к преобразователю напряжения необходимо его настроить выставив выходное напряжение на любое в диапазоне 3.7В — 4.2В. От преобразователя напряжения выходящие контакты подключаем к GSM модулю, соблюдая полярность.
TX и RX контакты на GSM модуле соединяем с 2 и 3 цифровыми контактами на Ардуино. Если необходимо подключить несколько GSM модулей к Arduino, то используйте другие пины и прописывайте в скетче через SoftwareSerial.
Скетч
#include <SoftwareSerial.h> SoftwareSerial mySerial(2, 3); // RX, TXvoidsetup() { Serial.begin(19200); //Скорость порта для связи Arduino с компьютером Serial.println("Goodnight moon!"); mySerial.begin(19200); //Скорость порта для связи Arduino с GSM модулем mySerial.println("AT"); } voidloop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
Процедура для отправки СМС
voidsms(Stringtext,Stringphone) { Serial.println("SMS send started"); mySerial.println("AT+CMGS=""+phone+"""); delay(1000); mySerial.print(text); delay(300); mySerial.print((char)26); delay(300); Serial.println("SMS send finish"); delay(3000);}
Процедуру добавлять в конец скетча и вызывать её из основного цикла так: sms(String(«текст СМС на англ.»),String(«+791212345678»));
Только отправлять СМС рекомендую по какуму нибудь событию и не просто так в цикле, а то бесконечно будет отправлять и деньги все съест с СИМки. Подключите датчик температуры или кнопку и по ее срабатывании отправляйте смс.
Проверка
Включаем питание затем через монитор порта, выставив скорость 19200 и обязательно опцию «новая строка».
Вводите команду «ATI» и нажмите ENTER. Должна появиться информация от модели модуля.
Пробовал отправить на модуль СМСку через бесплатный сервис от Теле2, приходят непонятные строки. Пробовал в модуле сменить кодировки. Вопрос пока не решен.
Видео
Добавить комментарий
В этом уроке вы узнаете как настроить модуль 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 и загрузите код ниже:
#include SoftwareSerial mySerial(8,7); // Change These Pins if you make different wiring void setup() { Serial.begin(19200); //Serial.println(“Begin”); mySerial.begin(19200); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); }
Откройте AT Command Tester Tool. Нажмите «Найти порты» и выберите правильный порт. Выберите «BaudRate» как 19200. Выбрав порт устройства и правильную скорость передачи (скорость последовательного порта), нажмите «Connect» (перевод — «соединиться») на AT Command Tester. Инструмент отправит запрос на устройство и подключится.
Регистрация устройства в сети необходима перед установлением соединения для передачи данных. В разделе «Выбор сети» устройство можно настроить для ручной или автоматической регистрации.
На вкладке «Голосовой вызов» вы можете проверить исходящие и входящие голосовые вызовы. Инструмент предоставляет простой в использовании интерфейс для набора исходящих номеров и приема входящих звонков.
ДомойДля начинающих
В предыдущей статье мы говорили о модуле SIM800l. В этой статье я хотел бы рассказать об управлении этим модулем. Как было сказано ранее — модуль управляется через UART интерфейс посредством AT команд. Конечно, все AT команды я перечислять не буду — для этого существует даташит, в котором все они подробно расписаны. Даташит вы можете скачать в конце статьи. Остановимся на самых распространенных и необходимых AT командах управления модулем SIM800l. Но прежде, я вкратце расскажу о том как подключить модуль. Итак, с питанием понятно — напряжение 4В и ток не менее 2А. Также понадобится переходник USB-UART, например такой. Подключаем переходник в свободный USB порт компьютера устанавливаем драйвера, далее подключаем RX вывод переходника к TX выводу модуля, а TX вывод модуля к RX выводу переходника. Вот и все. Запускаем любую терминальную программу (Hyper Terminal или PuTTy), и вносим настройки. Собственно по настройкам:
- Номер COM порта (смотрим в диспетчере устройств),
- Скорость соединения — 9600 (Хотя изначально модуль настроен на автоопределение).
- Четность — (8-N-1 4)
- Управление потоком — нет.
После подключения шлем модулю первую команду — AT и жмем Ентер. Если все правильно модуль должен ответить — OK. Теперь несколько команд для принудительной настройки UART порта модуля:
AT+IPR=115200 — эта команда настраивает скорость порта на 115200. Можно поставить любое значение: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200. Если поставить 0, то это означает автоопределение скорости (настройка по умолчанию). На команду модуль отвечает OK, или ERROR — если что-то не так. Чтобы узнать текущую установленную скорость даем команду AT+IPR?
AT+ICF=3,3 — эта команда служит для установки четности порта модуля. Имеет два параметра. Первый — отвечает за кол-во бит в посылке/четность/стопбит. Вот все варианты: 1 – 8/0/2, 2 – 8/1/1, 3 – 8/0/1, 4 – 7/0/2, 5 – 7/1/1, 6 – 7/0/1. Второй параметр — четность. Варианты: 0 – нечётный, 1 – чётный, 3 – нет. Т.е. команда AT+ICF=3,3 означает 8/0/1 (8 бит посылка, четность нет, стоп бит — 1). Для проверки текущей четности вводим AT+ICF?.
AT+IFC=0,0 — эта команда для установки контроля передачи данных. Первый параметр – терминалом от модуля, второй параметр – модулем от терминала. Возможные варианты: 0 – нет контроля, 1 – программный, 2 – аппаратный. По умолчанию контроль выключен.
Далее команды о состоянии модуля. Думаю принцип понятен и их я приведу уже в виде таблиц для удобства.
Команда | Ответ | Описание |
AT+GCAP | Возможности модуля | |
AT+GMM | Идентификатор модуля | |
AT+GMR | Ревизия | |
AT+GSN | IMEI |
AT+COPS? | Информация об операторе |
AT+COPS=? | Доступные операторы |
AT+CPAS | Информация о состояние модуля 0 – готов к работе 2 – неизвестно 3 – входящий звонок 4 – голосовое соединение |
AT+CREG? | Тип регистрации сетиПервый параметр: 0 – нет кода регистрации сети 1 – есть код регистрации сети 2 – есть код регистрации сети + доп параметрыВторой параметр: 0 – не зарегистрирован, поиска сети нет 1 – зарегистрирован, домашняя сеть 2 – не зарегистрирован, идёт поиск новой сети 3 – регистрация отклонена 4 – неизвестно 5 – роуминг |
AT+CSQ | Уровень сигнала: 0 -115 дБл и меньше 1 -112 дБл 2-30 -110..-54 дБл 31 -52 дБл и сильнее 99 – нет сигнала. |
AT+CCLK? | Текущая дата и время телефона. |
AT+CBC | Монитор напряжения питания модуляПервый параметр: 0 – не заряжается 1 – заряжается 2 – зарядка оконченаВторой параметр: 1-100 % — уровень заряда батареиТретий параметр: Напряжение питание модуля (VBAT), мВ |
AT+CADC? | Значение АЦП (до 2,8В) |
Команды настроек вызовов
Команда | Ответ | Описание |
AT+CLIP=1 | OK | АОН 1 – вкл / 0 – выкл |
AT+GSMBUSY=0 | OK | Запрет входящих звонков 0 – разрешены 1 – запрещены |
ATS0=0 | OK | Автоответ 0 – ручной 1-более – автомотический после заданного количества звонков |
Команды настроек СМС
Команда | Ответ | Описание |
AT+CMGF=1 | OK | Текстовый режим 1 – включить 0 – выключить см. примечание |
AT+CSCS= «GSM» | OK | Кодировка текстового режима Доступны следующие кодировки: IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1 см. примечание |
AT+CSCB=0 | OK | Приём специальных сообщений 0 – разрешен (по умолчанию) 1 – запрещен |
Прочие команды настроек модуля
Команда | Ответ | Описание |
ATE0 | OK | ЭХО 1 – вкл (по умолчанию) / 0 – выкл |
ATV1 | OK | Формат ответа модуля 0 – только ответ 1 – полный ответ с ЭХО (по умолчанию) |
AT+CMEE=0 | OK | Информация об ошибках 0 – отключён (по умолчанию) 1 – код ошибки 2 – описание ошибки |
AT+CCLK=»13/09/25,13:25:33+05″ | OK | Установка часов «yy/mm/dd,hh:mm:ss+zz» Где: год/месяц/дата, часы:минуты:секунды +часовой пояс |
AT+CPIN=XXXX | Ввод PIN кода | |
ATZ0 | Сброс настроек до значений по умолчанию (не до заводских) 0 или 1 – выбор профиля | |
AT&F | Сброс настроек до заводских | |
AT&W | OK | Сохранение настроек для текущего профиляПараметр 0 или 1 — выбор профиля Параметр указывать сразу за командой (AT&W0) |
AT+CPOWD=1 | NORMAL POWER DOWN | Выключение модуля 0 – срочное 1 – нормальное |
AT+CFUN=1,1 | Энергосберегающий режим и перезагрузкаПервый параметр: 0 – минимальный функционал 1 – нормальный режим (по умолчанию) 2 – выключения цепей приёма и передачи сигналаВторой параметр: 0 – выполнить без перезагрузки 1 – перезагрузить (доступно только в нормальном режиме, т.е. параметры = 1,1) |
Команды для осуществления телефонных звонков
Команда | Ответ | Описание |
ATD+380XXXXXXXX; | OK | Позвонить на номер +380XXXXXXXX; |
ATDL | OK | Позвонить по последнему исходящему номеру |
ATA | OK | Ответить на звонок |
ATH0 | OK | Повесить трубку/ разорвать соединение |
RING | Входящий звонок | |
AT+CLIP=1 | OK | см. настройки |
RING
+CLIP: «+380XXXXXXXX»,145,»»,,»»,0 |
Входящий звонок с включенным АОН Где:Первый параметр – номер телефона входящего звонка 2 – тип входящего номера 129 – не определен 161 – национальный 145 – интернациональный 177 – сетевой, специальный |
Команды для отправки СМС сообщений
Команда | Ответ | Описание |
AT+CMGS=
«+380XXXXXXXX» >Test sms.elschemo.ru |
Отправка СМС. Указываем номер получателя в кавычках и отправляем модулю с символом переноса строки (13 в ASCII). После приглашения «>» вводим текст сообщения. Для отправки в конце сообщения отправляем символ SUB (26 в ASCII) или ESC (27) для отмены. | |
+CMTI: «SM»,4 | Уведомление о приходе СМС.Второй параметр номер пришедшего СМС. | |
AT+CMGL=»REC UNREAD» | Чтение групп СМС. Всего 5 групп: REC UNREAD – входящие непрочитанные REC READ – входящие прочитанные STO UNSENT – Пользовательские непрочитанные STO SENT – пользовательские прочитанные ALL – прочитать все сообщения | |
AT+CMGR=2 | Чтение SMS сообщений. Запрос:Первый параметр – номер сообщения.Второй параметр (необязателен): 0 – обычный режим (по умолчанию) 1 – не изменять статус сообщения Ответ:Первый параметр – группа сообщений, см предыдущий пункт.Второй параметр – номер отправителя 3 – дата отправки Далее следует текс сообщения. | |
AT+CMGDA=»DEL SENT» | OK | Удаление групп СМС: DEL READ — прочитанные DEL UNREAD — не прочитанные DEL SENT — отправленные DEL UNSENT — не отправленные DEL INBOX — полученные DEL ALL — всех сообщения |
AT+CMGD=4 | OK | Удаление СМС.Первый параметр – номер сообщенияВторой параметр: 0 – удаление указанного сообщения (по умолчанию) 1 – удаление прочитанных сообщений 2 – удаление прочитанных и отправленных сообщений 3 – удаление прочитанных, отправленных и не отправленных сообщений 4 – удаление всех сообщений |
AT+CSCA? | Возвращает номер сервис центра отправки сообщений. |
Тоновый набор (DTMF)
Тоновые сигналы: 0-9,#,*,A-D
Команда | Ответ | Описание |
AT+VTD=3 | OK | Длительность тоновых сигналов для AT+VTD. Значение параметра 1..255 |
AT+VTS=»1,4,#,A,6,7,0″ | OK | Отправить последовательность тоновых сигналов (до 20). Длительность задается командой AT+VTS. |
AT+CLDTMF=7, «1,4,#,A,6,7,0» | OK | Проиграть на модуле (через аудио выход) тоновые сигналы.Первый параметр — длительность 1-100Второй параметр – строка тоновых сигналов, до 20. |
USSD
Команды приведены для текстового режима и в GSM кодировке.
Команда | Ответ | Описание |
AT+CUSD=1,»#100#» | USSD запросПервый параметр – режим обработки операции: 0 – выполнить запрос, ответ проигнорировать 1 – выполнить запрос, вернуть ответ 2 – отменить запросВторой параметр – запрос в кавычках. | |
ATD#100#; | Упрощенный USSD запрос (работает только при GSM кодировке) |
GPRS Настройка и установка GPRS соединения:AT+SAPBR=1,1 — установка GPRS связиAT+SAPBR=2,1 — полученный IP адрес+SAPBR: 1,1,«10.229.9.115»AT+SAPBR=4,1 — текущие настройки соединенияAT+SAPBR=0,1 — разорвать GPRS соединение Используемые источники:
- https://2150692.ru/faq/46
- https://arduinoplus.ru/sim800l-arduino-podkluchenie-i-nastroika/
- https://elschemo.ru/dlya-nachinayushhix/gsm-gprs-modul-sim800l-at-komandy/