Sim800C подключение к arduino: Подключение GSM модуля SIM800C к ESP8266/ESP32/Arduino

Содержание

Подключение 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, можно не раньше трех секунд после включения.

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.

  
void setup() {
  // initialize both serial ports:
  Serial.begin(9600);
  Serial1.begin(9600);
}

void loop() {
  // read from port 1, send to port 0:
  if (Serial1.available()) {
    int inByte = Serial1.read();
    Serial.write(inByte);
  }

  // read from port 0, send to port 1:
  if (Serial.available()) {
    int inByte = Serial.read();
    Serial1.write(inByte);
  }
}


В случаи с Arduino UNO и SoftwareSerial.h :


Работа со встроенным TCP/IP-стеком модулей GSM/GPRS серии SIM800 компании SIMCom Wireless Solutions

Компания SIMCom Wireless Solutions, ведущий разработчик и производитель GSM/GPRS, 3G, LTE и GPS/ГЛОНАСС- решений для М2М-отрасли, предлагает новую линейку GSM/GPRS-модулей серии SIM800 на замену хорошо известной в мире серии SIM900. В новых модулях улучшен ряд ключевых качеств, таких как массо-габаритные параметры, скорости передачи данных, цена. Кроме того, в новой линейке реализована поддержка Bluetooth и множества сетевых протоколов передачи данных, включая SSL.

 

Серия GSM/GPRS-модулей SIM800

В России линейка SIM800 (табл. 1) представлена модулями SIM800C, SIM800C-DS, SIM800H, SIM800, SIM800F [1]. Все они покрывают подавляющее большинство потребностей рынка М2М. Так, SIM800C в популярном корпусе LCC является фокусным и базовым решением для широкого спектра приложений. SIM800C-DS самый малогабаритный в мире GSM/GPRS-модуль с поддержкой двух SIM-карт (Dual SIM Dual Standby). Этот модуль нашел применение в охранном секторе и приложениях, где необходимо мгновенное переключение между сетями сотовой связи и требуется разделить балансы конечного потребителя и интегратора. Модуль SIM800H аналогичен модулю SIM800C по техническим характеристикам, но его основные потребители те, кому нужна поддержка передачи данных CSD и кого не смущает корпус LGA, подразумевающий пайку в печи. Модули SIM800F и SIM800 (24

×24 мм) не выделяются какими-либо особенными качествами, их основная задача замена модулей SIM900R или SIM900 в текущих проектах и упрощение освоения серии SIM800 для новых разработок. Генеральное отличие между SIM800 и SIM800F заключается лишь в том, что первый поддерживает CSD, а второй, как SIM800С и SIM800C-SD, нет.

Таблица 1. Линейка GSM/GPRS-модулей серии SIM800

Модуль

SIM800C

SIM800C-DS

SIM800H

SIM800

SIM800F

Корпус

LCC

LCC+LGA

LGA

LCC

Размер, мм

15,7×17,6

15,8×17,8

24×24

GPRS

85,6 кбит/с ↕

Bluetooth

3.0 (кроме SIM800C-DS)

Количество SIM-карт

1

2

1

Функции

Voice Call, USSD, SMS, CSD (только SIM800H и SIM800), DTMF, Jamming Detection, MMS, Audio R/F, Embedded AT (опционально)

Поддерживаемые протоколы передачи данных

PPP, TCP/IP, UDP/IP, FTP, HTTP, SMTP, POP3, SSL

Интерфейсы

2×UART, USB

2×UART, USB, I2C, SPI

Аудио

MIC, SPK 32 Ом

PCM, MIC, 2×SPK 8/32 Ом

PCM, 2×MIC, 2xSPK 8/32 Ом

PCM, MIC, SPK 32 Ом

Память пользователя

Внутренняя

Внутренняя, SD-карта (<32 Гбайт)

Внутренняя

Рабочее напряжение, В

3,4–4,4

Диапазон рабочих температур, °С

–40…+85

Следует подчеркнуть, что GSM/GPRS-модули серии SIM800 поддерживают беспроводную технологию связи Bluetooth 3.0 Classic (профили SPP, HFP и проч.) на аппаратном уровне. Поддержка Bluetooth требует соответствующего программного обеспечения (ПО). Данная функция, нисколько не увеличивая стоимость изделия, дает пользователю уникальные возможности: голосовые вызовы посредством стандартной беспроводной гарнитуры, обмен произвольными данными на расстояниях в десятки метров, файлами и контактами из записной книжки все то, для чего предназначен Bluetooth, но в разрезе задач IoT. Также разработчику следует знать, что модули серии SIM800 поддерживают технологию Embedded AT. Она позволяет интегрировать пользовательский Си-код в операционную систему (ОС) модуля и управлять всеми его ресурсами: SMS, голосовые вызовы, выход в Интернет, управление интерфейсами UART, SPI, I2C, GPIO и проч. Это весьма полезная технология, широко применяемая, когда остро стоит вопрос о стоимости и/или размере конечного изделия. Подробней о работе Bluetooth и Embedded AT в модулях серии SIM800 можно узнать отдельно из руководств по применению или у инженеров технической поддержки компании и дистрибьюторов. В данной же статье речь пойдет о работе со встроенным TCP/IP-стеком.

 

Протокол TCP/IP в М2М

Рис. 1. Обобщенная схема системы сбора данных посредством сети GSM

Обобщенная схема любой системы сбора данных построена на принципах клиент-серверного подключения (рис. 1). То есть где-то в сети есть сервер, который ждет подключения М2М-устройств и принимает от них полезные данные (расход топлива, координаты перемещения объекта, температура, тревожный сигнал, количество потребленной электроэнергии и т. п.) в зависимости от приложения и задач, выполняемых системой. В качестве клиентов в такой схеме выступают устройства на базе GSM/GPRS-модуля и управляющий контроллер (хост): модуль предоставляет доступ в Интернет, а хост управляет этим процессом. Такие клиент-серверные соединения для передачи данных, как правило, используют протокол TCP/IP.

Опытные разработчики знают, что посредством GSM/GPRS-модуля можно выйти в Интернет и подключиться к серверу двумя способами при помощи протокола канального уровня PPP или встроенного протокола TCP/IP. Оба варианта доступны в GSM/GPRS-модулях серии SIM800.

Когда в распоряжении клиентской части имеются продвинутые аппаратные ресурсы хоста и ОС типа Linux или Android, для выхода в Интернет часто применяют протокол PPP. Протоколы до уровня приложений при этом реализованы в самой ОС хоста. Но это относится к небольшому числу случаев. В подавляющем большинстве М2М-приложений ставятся жесткие требования к стоимости проекта, который подразумевает недорогой хост с небольшой памятью и простейшей ОС (без особых изысков). Реализация собственного стека протоколов (надстройка над PPP) в таком случае часто выводит проект за временные рамки сдачи работ и рамки бюджета единицы изделия.

Рис. 2. Граф процессов и состояний стека протоколов TCP/IP

В таких случаях более оправданным является применение встроенного стека TCP/IP-модуля, т. к. значительно упрощается процесс отладки и удешевляется стоимость конечного изделия. Разработчику не нужно знать/помнить принципы сетевых протоколов, тайминги, инкапсуляцию и т. д. (рис. 2), не нужно обрабатывать кадры, пакеты и сегменты данных. При работе со встроенным TCP/IP-стеком модуля хост имеет дело лишь с потоком полезных данных (рис. 3), обмениваясь ими с сервером на прикладном уровне стека протоколов.

Рис. 3. Стек протоколов TCP/IP

GSM/GPRS-модуль, управляемый хостом через последовательный порт UART, берет на себя общение с сетью сотовой связи и работу в IP-сети. Хосту для этого предоставляется командный интерфейс, т. е. доступ к сетевым функциям происходит посредством простой и понятной системы AT-команд [4]. При этом все сложные сетевые процессы, такие как активация контекста, открытие сессии, передача данных, закрытие сессии и т. д., скрыты от хоста.

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

 

Возможности встроенного стека протоколов TCP/IP в GSM/GPRS-модулях серии SIM800

Встроенный стек модуля гибок и может быть настроен на различные режимы работы в зависимости от пожеланий и фантазии разработчика. На рис. 4 схематически указаны режимы работы встроенного стека. Они определяют роль модуля по отношению к удаленной стороне (клиент/сервер), способ передачи данных и количество одновременно открытых соединений.

Рис. 4. Режимы работы встроенного стека TCP/IP-модулей серии SIM800

Режимы работы встроенного стека настраиваются в момент инициализации, до активации контекста и установления соединения, при помощи следующих АТ-команд:

  • AT+CIPMUX=<n>,где<n>=0 моносокет, <n>=1 мультисокет;
  • AT+CIPMODE=<n>где<n>=0 командный режим передачи данных,<n>=1 прозрачный.

Так, в режиме мультисокета модуль может открыть и поддерживать до шести одновременных соединений или работать только с одним соединением (моносокет).

Как видно, есть два способа обмена данными с удаленной стороной: прозрачный и командный режимы. В прозрачном режиме данные, находящиеся на стороне клиента, во время открытой сессии передаются и принимаются в последовательный порт UART модуля в том же виде, в каком их видит на удаленной стороне сервер. В некоторых случаях предпочтительней командный режим, при котором GSM/GPRS-модуль настроен на прием только АТ-команд, и, чтобы осуществить отправку данных на сервер или принять их, потребуется подавать данные вкупе с АТ-командами. Кстати, мультисокет исключает работу модуля в прозрачном режиме передачи данных.

На рис. 4 показано, что GSM/GPRS-модуль может быть настроен на выполнение роли клиента или сервера. Роль модуля не задается АТ-командой, как количество соединений или режим обмена данными, а определяется способом открытия соединения. В дальнейшем мы будем рассматривать вариант открытия одного соединения (моносокет) с удаленным сервером (роль модуля клиент). Передачу данных рассмотрим как в командном, так и в прозрачном режиме. Но перед тем как перейти к практическим примерам, надо разобраться с механизмом работы встроенного стека TCP/IP.

Механизм работы встроенного стека TCP/IP описывается диаграммой состояний, показанной на рис. 5. Это диаграмма состояний для односокетного соединения. Как видно, всего состояний 10. Все они, от IP INITIAL до PDP DEACT, замыкают цикл от активации контекста и открытия соединения до закрытия соединения и деактивации контекста именно в таком порядке, в нормальном случае. Состояние стека можно контролировать командой AT+CIPSTATUS (без параметров).

Рис. 5. Диаграмма состояний встроенного TCP/IP-стека модулей серии SIM800

Начальное состояние стека после инициализации AT+CIPMUXи AT+CIPMODE IP INITIAL, оно означает, что GPRS-контекст не настроен. Во время активации контекста информация направляется в сеть GPRS и может служить условием доступа к услугам пакетной передачи данных. Сегодня многие операторы сотовой связи дают доступ в GPRS независимо от того, какой контекст был задан. Однако этап настройки контекста пропускать не следует.

Настройка контекста осуществляется по команде AT+CSTT=<APN>,<USR>,<PASS>, где <APN> точка доступа, <USR> логин, <PASS> пароль. Эти параметры можно получить от поставщика мобильной связи. После этой команды встроенный стек принимает состояние IP START. Кстати, если говорить о повторном открытии сессии (питание не отключалось), то команду AT+CSTT можно подавать без параметров. Модуль примет в исполнение ранее заданные параметры и приведет встроенный стек в верное состояние.

После успешной настройки контекста его следует активировать командой AT+CIICR (без параметров). С момента активации контекста модуль получает доступ в сеть GPRS и на стороне оператора сотовой связи начинается отсчет трафика. За этим этапом следует переход встроенного стека в состояние IP STATUS посредством запроса своего IP-адреса в сети командой AT+CIFSR (без параметров).

Итак, к примеру, мы имеем сервер с IP-адресом 192.168.123.123 и открытым портом 1234. Для подключения к этому серверу должна быть исполнена команда AT+CIPSTART=”TCP”,”192.168.123.123”,1234. Важно, чтобы состояние стека перед подачей этой команды было IP STATUS. В противном случае связь не будет установлена. Кстати, допускается вместо IP-адреса задавать доменное имя, например: AT+CIPSTART=”TCP”,”www.simcomm2m.com”,1234.

Когда соединение с сервером установлено, состояние стека приобретает статус CONNECT OK. Теперь между сервером и хостом установлен канал передачи данных уровня приложений. После того как обмен данными будет завершен, соединение с сервером можно будет закрыть командой AT+CIPCLOSE. При этом есть варианты закрытия:

  • Штатное закрытие соединения при помощи команды AT+CIPCLOSE (без параметров) или AT+CIPCLOSE=0, которое проходит с отправкой командных пакетов в адрес сервера и ожиданием от сервера подтверждения закрытия (рис. 6). Это согласованное закрытие сокета.
  • Быстрое закрытие при помощи команды AT+CIPCLOSE=1, которое подразумевает перевод состояния стека в состояние TCP CLOSED без уведомления сервера. Этот случай актуален при потере связи с сервером или с GPRS-сетью. Этот способ нужен, чтобы вернуть стек в предсказуемое состояние, не тратя время на ожидание подтверждения, которое может и не прийти.

После закрытия соединения с сервером GPRS-контекст все еще активен. Его следует закрыть командой AT+CIPSHUT (без параметров). После этого стек модуля переходит в начальное состояние IP INITIAL, и он готов к новой сессии.

 

Обработка исключительных случаев

Все команды GSM/GPRS-модулей серии SIM800 имеют время исполнения. Разработчику ПО хоста важно знать время исполнения отдельно для каждой команды, чтобы исключить бесконечное ожидание реакции на команду (открытие соединения, к примеру). Значения максимального времени исполнения задокументированы, их можно найти в системе команд GSM/GPRS-модуля [4]. В таблице 2 указаны значения максимального времени исполнения основных команд встроенного TCP/IP-стека. Как видно, некоторые команды исполняются десятки секунд. Это объясняется зависимостью этих команд от быстродействия сети и сервера.

Таблица 2. Максимальное время исполнения команд встроенного стека TCP/IP

Команда

Максимальное время исполнения, с

CIICR

85

CIPSTART

160

CIPSEND

645

CIPCLOSE

120

CIPSHUT

65

Рис. 6. Нормальная процедура закрытия соединения с сервером

Получается, некоторые команды могут исполняться несколько минут, прежде чем можно будет понять, что что-то пошло не так. В М2М такие задержки, конечно, недопустимы. Как же обрабатывать случаи, когда время исполнения команды затянулось, а реакции так и не последовало? Все зависит от того, на каком этапе установления соединения произошел сбой (ошибка или вышел таймаут) и в каком состоянии находится стек (рис. 6). Причин сбоя может быть несколько, и реакция может быть разная, но главное вернуть встроенный стек в исходное состояние IP INITIAL или IP STATUS. Рассмотрим на примере несколько случаев:

  1. Сервер вышел из строя или доступ в Интернет ограничен (потеря пакетов, высокий пинг и проч.). В этом случае все команды из таблицы 1 приведут к длительному времени исполнения. Чтобы повторить попытку соединения с этим или другим сервером, следует перед этим закрыть сокет командой AT+CIPCLOSE=1. При этом деактивировать контекст командой AT+CIPSHUT не обязательно.
  2. Потеря связи с GSM-сетью. Такое возможно в местах плохого покрытия сети, из-за ухудшения условий приема сигнала или внезапной выемки SIM-карты из прибора. Здесь следует проверить готовность SIM-карты (AT+CPIN? или чтение ячейки памяти командой AT+CMGR), уровень сигнала (AT+CSQ), наличие регистрации в сети (AT+CREG?) и доступ к услугам GPRS (AT+CGATT?). Если физический доступ к GSM-сети пропадет после или во время открытия сессии командой AT+CIPSTART, то придется закрыть соединение (AT+CIPCLOSE=1), деактивировать контекст и восстанавливать соединение с начала, сразу после того как будут успешно проверены SIM-карта, уровень сигнала, регистрация в сети и доступ к услугам GPRS.
  3. Истек срок жизни контекста. Когда открывается контекст, сеть выделяет определенные ресурсы на его поддержание. Операторы сотовой связи не допускают мертвые контексты, когда ресурс занят, а обмена данными в этом контексте нет. Если обмена данных нет, то через некоторое время оператор деактивирует контекст. У разных операторов это время разное примерно от трех до семи минут. Модуль при этом в порт UART выдаст уведомление: +PDP DEACT. Его нужно обработать и сбросить встроенный стек в исходное состояние командой CIPSHUT. Однако иногда в некоторых приложениях требуется поддерживать контекст в активном состоянии. Для этого можно периодически обмениваться с сервером пустыми данными, типа эха. Но это неудобно в реализации. Взамен можно воспользоваться функцией поддержания соединения командой AT+CIPTKA [4].
  4. Нагрузка на сеть GSM. Всем известно, что GPRS-услуги и голосовая связь делят общие ресурсы. GPRS всегда выделяется оператором по остаточному принципу, а у голосовых соединений наивысший приоритет. Контекст может быть деактивирован оператором принудительно. Внешне данный случай выглядит как предыдущий (п. 3), и обрабатывать его следует аналогично.

Следует предусмотреть случай, когда переинициализация соединения не дает желаемого эффекта. В этом случае рекомендуются штатное выключение/включение модуля и повторная попытка восстановить соединение с самого начала.

 

Работа со встроенным стеком протоколов TCP/IP в GSM/GPRS-модулях серии SIM800

Перейдем к практике применения встроенного стека TCP/IP на примере GSM/GPRS-модуля SIM800C, а точнее, на примере отладочного набора (рис. 7). В качестве сервера для наглядности будем использовать ПК с внешним статическим IP-адресом и учебную программу Server (рис. 8) примитивный TCP-сервер.

Рис. 7. Отладочный набор для GSM/GPRS- модуля SIM800C

При запуске программы сервер уже готов к работе. В окне программы всегда отображается информация об IP-адресе сервера и номере порта для подключения. Эту информацию мы и используем при открытии соединения на стороне SIM800C. Также в окне программы есть поля Received (для отображения принятых данных от удаленной стороны, от SIM800C) и Sending (для ввода данных в сторону удаленной стороны, к SIM800C). Данные по умолчанию отправляются/принимаются в формате ASCII-символов. Если требуется передавать произвольные бинарные данные, то для этого нужно поставить галочку возле параметра HEX.

Рис. 8. Окно программы Server

Итак, ниже приведен рабочий АТ-лог, который можно применить на практике. После каждой AT-команды для модуля SIM800C идут ответы и сообщения от модуля. Данный лог демонстрирует инициализацию стека, настройку контекста и открытие соединения с удаленным сервером, а также различные способы обмена данными в командном и прозрачном режимах.

Инициализация

AT+CPIN? // Проверка готовности SIM-карты.

+CPIN: READY

OK

AT+CSQ // Уровень сигнала RSSI = 20 ед. 
(примерно -73 дБм), удовлетворительный уровень.

+CSQ: 20,0

OK

AT+CREG? // Проверка наличия регистрации в сети GSM.

+CREG: 0,1

OK

AT+CGATT? // Проверка доступа к услугам пакетной передачи данных.

+CGATT: 1

OK

AT+CIPMODE=0 // Командный режим передачи данных.

OK

AT+CIPMUX=0 // Моносокет.

OK

Настройка контекста и открытие соединения

AT+CIPSTATUS

OK

STATE: IP INITIAL

AT+CSTT=”internet” // Настройка точки доступа.

OK

AT+CIPSTATUS

OK

STATE: IP START

AT+CIICR // Активация контекста.

OK

AT+CIPSTATUS

OK

STATE: IP GPRSACT

AT+CIFSR

100.91.34.225

AT+CIPSTATUS

OK

STATE: IP STATUS

AT+CIPSTART=”TCP”,”81.95.20.18”,2020 // Открытие соединения с удаленным сервером.

OK

CONNECT OK // Сообщение об успешном открытии соединения.

AT+CIPSTATUS

OK

STATE: CONNECT OK

Передача данных с подтверждением в командном режиме

AT+CIPSEND? // Проверяем максимальный размер данных, которые можно послать в сторону удаленной стороны. Этот размер зависит от сети.

+CIPSEND: 1460

OK

AT+CIPQSEND? // Нормальный режим передачи данных. В этом режиме каждая порция высланных данных подтверждается сообщением SEND OK, что означает, что сервер данные принял и подтвердил их получение.

+CIPQSEND: 0

OK

AT+CIPSEND=100 // Передача 100 байт данных.

> // Приглашение. hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello // Размер данных не должен быть больше 1460 байт, 
и в конце блока данных следует байт 0x1A.

SEND OK // Данные успешно переданы.

AT+CIPSEND // Передача данных произвольного размера.

> hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello // Размер данных не должен быть больше 1460 байт, и в конце блока данных следует байт 0x1A.

SEND OK

Быстрая передача данных в командном режиме

AT+CIPQSEND=1 // Режим быстрой передачи данных. Этот режим подразумевает передачу данных без ожидания от сервера подтверждения о получении.

OK

AT+CIPSEND=100 // Передача 100 байт данных.

> hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello

DATA ACCEPT:100 // Модуль принял данные в свой буфер и вышлет их в сторону сервера в фоновом режиме.

AT+CIPACK // Проверка: 300 байт передано на сервер, из них 300 байт сервером приняты и подтверждены.

+CIPACK: 300,300,0

OK

AT+CIPSEND // Передача данных произвольного размера происходит аналогичным образом.

> hellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohellohello

DATA ACCEPT:100

AT+CIPACK

+CIPACK: 400,400,0

OK

AT+CIPQSEND=0 // Нормальный режим передачи данных.

OK

Прием данных в командном режиме, автоматический вывод принятых данных

AT // Модуль находится в командном режиме;

OK

AT

OK

HelloHelloHelloHelloHelloHelloHelloHelloHelloHello // Данные, принятые от сервера, выводятся из порта UART модуля автоматически. Данные выводятся как есть, и это неудобно, поэтому будут полезны следующие настройки.

AT

OK

AT+CIPHEAD=1 // Перед блоком данных, принятых от сервера, добавлять заголовок формата +IPD,<длина блока данных>.

OK

AT+CIPSRIP=1 // При приеме данных показывать уведомление в виде RECV FROM:<IP адрес отправителя>,<порт>.

OK

Прием данных в командном режиме, ручной вывод принятых данных

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

AT+CIPCLOSE // Закрытие соединения.

CLOSE OK

AT+CIPSTATUS

OK

STATE: TCP CLOSED

AT+CIPSHUT // Деактивация контекста.

SHUT OK

AT+CIPRXGET?

+CIPRXGET: 0 // Автоматический вывод принятых данных.

OK

AT+CIPRXGET=1 // Настройка ручного вывода данных.

OK

AT+CSTT

OK

AT+CIICR

OK

AT+CIFSR

100.69.113.182

AT+CIPSTART=”TCP”,”81.95.20.18”,2020

OK

CONNECT OK

AT

OK

AT

OK

+CIPRXGET: 1,”81.95.20.18:2020” // Уведомление 
о приеме данных от сервера.

AT

OK

AT+CIPRXGET=4 // Уточнение размера принятых данных.

+CIPRXGET: 4,100 // Пришло 100 байт данных.

OK

AT+CIPRXGET=2,20 // Вывести 20 байт в порт UART;

+CIPRXGET: 2,20,80,”81.95.20.18:2020” // В буфере модуля осталось 80 байт.

HelloHelloHelloHello // Запрошенные 20 байт данных.

OK

AT+CIPRXGET=2,20 // Вывести 20 байт в порт UART.

+CIPRXGET: 2,20,60,”81.95.20.18:2020” // В буфере модуля осталось 60 байт.

HelloHelloHelloHello // Запрошенные 20 байт данных.

OK

AT+CIPRXGET=2,60 // Вывести 60 байт в порт UART.

+CIPRXGET: 2,60,0,”81.95.20.18:2020” // Приемный буфер модуля пуст.

HelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHelloHello // Запрошенные 60 байт данных.

OK

AT+CIPRXGET=4 // Проверка наличия данных в буфере модуля.

+CIPRXGET: 4,0 // Буфер пуст.

OK

Обмен данными с сервером в прозрачном режиме

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

AT+CIPCLOSE

CLOSE OK

AT+CIPSHUT

SHUT OK

AT+IFC=2,2 // Аппаратный контроль потока должен быть включен, чтобы избежать потери данных.

OK

AT+CIICR

OK

AT+CIFSR

100.104.155.220

AT+CIPSTART=”TCP”,”81.95.20.18”,2020

OK

CONNECT // Соединение установлено.

* * *

Благодаря подробному освещению возможностей встроенного стека протоколов TCP/IP новой линейки модулей серии SIM800, выгод его применения и приведению объемного исчерпывающего примера работы со стеком в различных режимах, данная статья поможет разработчику быстро освоить материал официальных руководств по применению модулей SIMCom Wireless Solutions и послужит в разработке отправной точкой.

Литература
  1. www.simcomm2m.com/russian
  2. Батуев Б. Embedded AT: начало работы с технологией интеграции пользовательского ПО в GSM/GPRS-модуль SIM800/SIM800H // Беспроводные технологии. 2014. № 3.
  3. Руководство по применению встроенного стека протоколов TCP/IP GSM/GPRS-модулей серии SIM800SIM800. Series_TCPIP_Application Note_V1.01.pdf.
  4. Система АТ-команд GSM/GPRS-модулей серии SIM800. SIM800_Series_AT_Command_ Manual_V1.09.pdf.

Опыт применения GSM модуля в домашней автоматизации / Хабр

На даче холодно, и вы хотите за несколько часов до своего приезда туда включить обогреватель, или вас беспокоит возможность аварийного отключения системы отопления загородного дома в ваше отсутствие. Все эти проблемы можно решить с помощью GSM модуля, который умеет отправлять и получать SMS сообщения и реагировать на них, включая и выключая нужную нагрузку. В теории все просто, на практике же на пути реализации подобного устройства есть множество подводных камней.



Мой план заключался в том, чтобы создать простое и дешевое устройство, оснащенное двумя датчиками температуры, датчиком влажности, GSM модулем, а также твердотельным реле и розеткой для подключения нагрузки. То, что получилось в итоге, можно увидеть на фото. В качестве датчика температуры и влажности был выбран климатический сенсор BME280, его канал давления не используется. На фото его можно увидеть под прозрачным колпачком слева от основного модуля. Такое расположение уменьшает влияние тепловыделения внутри корпуса на показания датчика. В качестве колпачка используется китайская пластиковая пробирка с двумя отверстиями для вентиляции. Второй датчик температуры выносной, сделан на DS18B20. Он расположен внутри металлического зонда, с корпусом соединен кабелем через обычный аудио разъем для наушников. Зонд предназначен для измерения температуры непосредственно отопительной системы. Основной объем корпуса занимает твердотельное реле (я выбрал помощнее) и преобразователь из 220В в 5В для питания схемы. Розетка для подключения нагрузки смонтирована на задней стороне корпуса, на фото она не видна. OLED дисплей на базе контроллера Sh2106 отображает показания датчиков, а также показывает, включена ли нагрузка. Для управления всей системой используется модуль Arduino Pro Mini в версии 3.3В 8МГц. Я не большой фанат этой платформы, но обилие библиотек, в том числе заботливо выпиленных автором, делает ее оптимальным выбором, когда нужно быстро сделать что то простое.

GSM модуль SIM800L размещен в отдельном металлическом корпусе для уменьшения создаваемых им помех на остальные части схемы. Как показала практика, помехи от этого уменьшаются не сильно. А радикально их уменьшает выносная антенна, подключенная экранированным кабелем к коаксиальному разъему, на фото выше она на переднем плане. Но об этом подробнее мы поговорим позже.

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

В гаражах, где я частенько бываю, недавно поставили на въезде шлагбаум, который открывается, если позвонить на определенный номер. Судя по всему, он сделан на похожем GSM модуле. Меня удивило, как сложно бывает дозвониться по этому номеру, чтобы он открылся. Теперь я знаю множество причин для этого. Это знание стоило мне нескольких месяцев экспериментов и внушительного количества потраченных на них денег. Я надеюсь, что теперь это знание послужит кому то еще. Рассмотрим, на что важно обратить внимание, продвигаясь от очевидных аппаратных проблем к менее очевидным программным.

Первое, что важно сделать правильно, — вставить сим-карту


Мне казалось очевидным, что сим-карта вставляется скошенным уголком вперед. С неделю я пытался понять, почему модуль не желает регистрироваться в сети, попутно осваивая команды в терминале. В итоге на каком то англоязычном форуме я нашел упоминание о том, что вставлять ее нужно скошенным уголком назад. Странно, что она вообще вставляется и так и эдак.

Чтобы хорошо работать, нужно хорошо питаться


Требования к питанию у GSM модуля достаточно специфические. Он сделан на базе микросхемы, разработанной для кнопочных мобильных телефонов, и рассчитан на питание непосредственно от литиевого аккумулятора. Поэтому, 5В для него много, а 3.3В — мало. К тому же, в режиме передачи на максимальной мощности он способен потреблять ток до 2А. Если источник питания не способен обеспечить нужный ток, GSM модуль может перезагрузиться при попытке регистрации в сети и продолжить перезагружаться в бесконечном цикле. Периоды пикового потребления обычно длятся меньше секунды, поэтому есть соблазн применить слаботочный стабилизатор с накопителем энергии для периодов пиковой нагрузки. В качестве такого накопителя можно применить литиевый аккумулятор. При этом важно обеспечить возможность его отключения и важно не забыть ей воспользоваться, иначе отключение устройства от сети закончится глубоким разрядом аккумулятора и его необратимым повреждением. Другой вариант — это поставить вместо аккумулятора ионистор (суперконденсатор). Он не боится глубокого разряда. Но у него тоже есть проблемы с надежностью. Одна ячейка ионистора обычно рассчитана на напряжение от 2.5 до 3В. Ионисторы, рассчитанные на большее напряжение, состоят из нескольких ячеек (обычно из 2-х). При этом, однако, дисбаланс напряжения на ячейках может закончится пробоем ячейки. Такой дисбаланс легко получить за счет разницы в емкости ячеек или разницы в токе утечки. Следует также учитывать параметр внутреннего сопротивления ионистора. Ионисторы с большим внутренним сопротивлением на больших токах бесполезны, а ионисторы с малым сопротивлением стоят не дешевле аккумулятора. После того, как у меня ионистор скоропостижно скончался из-за дисбаланса ячеек, я просто применил преобразователь из 220В в 5В достаточной мощности. Чтобы понизить напряжение до нужного GSM модулю, я поставил между преобразователем и модулем обычный кремниевый диод. На таком диоде обычно падает 0.7В, так что модулю достаются необходимые 4.3В. После диода полезно поставить электролитический конденсатор большой емкости. Он сгладит провалы напряжения при внезапном включении передатчика.

От передающей антенны лучше держаться подальше


Даже после того, как я обеспечил GSM модулю требуемое питание, симптом перезагрузки периодически проявлялся, но на этот раз перезагружалась Arduino. Наблюдение за ее питанием при помощи осциллографа показало, что питание тут непричем. Судя по всему помеху создавал передатчик модуля, поскольку проблема возникала тем чаще, чем хуже были условия приема сигнала базовой станции. Столь радикальный эффект помех от передающей антенны вполне объясним, если вспомнить, что передатчик модуля способен выдать в антенну 2 ватта. Такая мощность может за 5 минут вскипятить миллилитр воды или нагреть ваше ухо на несколько градусов. Для борьбы с этой проблемой были опробованы разные методы. Для начала я подключил внешнюю антенну, которая располагалась снаружи корпуса и соединялась с модулем коротким коаксиальным кабелем. Однако, ожидаемого эффекта это не дало. Тогда я расположил модуль в отдельном металлическом корпусе, к которому снаружи крепилась антенна. Стало лучше, но не сильно. Радикально улучшил ситуацию только вынос антенны на некоторое расстояние от устройства за счет ее подключение коаксиальным кабелем достаточной длины.

Почему так происходит, легко понять из физических соображений. Типичная антенна — это ‘четвертьволновой штырь’, то есть половинка от дипольной антенны. Но, чтобы создать электрическое поле, половинки диполя недостаточно, нужна вторая половинка, тогда между отрицательно и положительно заряженными элементами антенны возникнет электрическое поле. У правильной штыревой антенны второй половиной является либо поверхность земли, либо корпус прибора, либо специальные проводящие ‘противовесы’. Но для маркетологов все это слишком сложно, поэтому нам обычно продают только половинку от нормальной антенны. Как же она работает? Очень просто — второй половинкой является кабель, которым подключена антенна. То, что он экранирован, ничего не меняет. Внешняя поверхность его оплетки играет роль второй половинки дипольной антенны. При этом помеха легко наводится на проходящие по соседству провода несмотря на то, что кабель казалось бы экранирован. Ну а если кабеля нет, например мы спрятали модуль в металлический экран, из которого торчит антенна? Если экран большой (по сравнению с длиной волны), то он работает, как вторая половина излучателя, а если маленький, то излучают прочие провода, которые подведены к этому модулю, совершенно не важно, какие. Следующий рисунок иллюстрирует вышесказанное (плюсы и минусы показаны для наглядности, в реальности заряд элементов антенны меняет знак с частотой несущей).

Слева показана ‘правильная’ антенна, ее подводящий кабель не излучает помех. На среднем рисунке показана антенна, которую вы обычно покупаете. Здесь подводящий кабель является частью излучателя и создает помехи проходящим поблизости проводам. Справа показана ситуация, когда источник сигнала спрятан в компактный экранированный корпус. Здесь любые провода, подведенные к такому корпусу, являются частью излучателя.

Мораль заключается в том, что единственный надежный способ защититься от помех, создаваемых передающей антенной, — унести ее подальше от остальной электроники, подключив коаксиальным кабелем достаточной длины. Какая длина является достаточной? Расстояние естественно соизмерять с длиной волны, в данном случае это максимум 30 см. Это и есть минимальное расстояние на которое следует отнести антенну, но чем дальше, тем лучше.

Не все последовательные порты одинаково полезны


В простых AVR микроконтроллерах, которые все обычно и используют, аппаратный последовательный порт всего один, и он используется для загрузки программы. Поэтому, программная реализация последовательного порта является очень популярным решением. Я собираюсь доказать утверждение, которое многим покажется неожиданным, — для управления GSM модулем программная реализация последовательного порта непригодна вообще.

Суть проблемы в том, что программная реализация последовательного порта запрещает прерывания на все время передачи или приема очередного символа. Казалось бы, что в этом плохого, так многие делают. Например, реализация протокола 1-Wire для чтения термометров Dallas Semiconductor тоже запрещает прерывания на время передачи одного бита, то есть на 65 микросекунд. Это конечно тоже не слишком хорошо. Если в системе есть другие обработчики прерываний, они не смогут обеспечить время реакции на прерывание меньше этих 65 микросекунд. Если запрос на прерывание приходит, когда они запрещены, он будет обработан только после того, как прерывания разрешат снова. Например, аппаратный последовательный порт использует прерывания для того, чтобы положить в буфер приемника очередной принятый символ. Если следующий символ придет, пока не обработано прерывание от предыдущего, тот будет потерян. Это значит, что работать со скоростью больше 115200 бит в секунду аппаратный последовательный порт не сможет. В случае программной реализации последовательного порта все хуже. Для его работы нужно, чтобы время реакции на прерывание было меньше времени передачи одного бита. Это ограничивает нас скоростью 9600 бит в секунду.

Более серьезная проблема заключается в том, что программная реализация последовательного порта сама запрещает прерывания. Причем время, на которое она их запрещает (время передачи или приема одного символа) всегда примерно в 10 раз больше, чем максимальное время обработки прерывания, требуемое для корректной работы приемника того же программного последовательного порта. То есть, он всегда мешает сам себе до такой степени, что одновременно не может принимать и отправлять данные. Конечно, в большинстве случаев это и не требуется. В большинстве, но не в нашем случае с GSM модулем. Он таки может неожиданно для нас по собственной инициативе начать передавать данные (например при получении SMS сообщения). И в случае применения программной реализации последовательного порта это легко может привести к сбою протокола обмена с модулем. Поэтому, я просто применил один и тот же аппаратный последовательный порт и для программирования Arduino и для общения с GSM модулем. Неудобно конечно, но это единственный способ сделать надежно работающее устройство.

Асинхронному протоколу — асинхронный обработчик


Асинхронный протокол — это такой протокол, при котором одна сторона обмена может начать передавать информацию неожиданно для другой стороны, то есть без всякой синхронизации с ее сообщениями. Именно таков протокол обмена с GSM модулем. Он исправно отвечает на запросы со стороны Arduino, но может и начать передавать что то свое, например сообщить о принятом SMS сообщении. И это создает реальную проблему, поскольку ни одна из известных мне библиотек для работы с модулем под Arduino асинхронность протокола не учитывает вообще никак. Представим себе, что Arduino передала модулю команду, а модуль в тот же самый момент передал информацию о принятом SMS сообщении. Эта информация будет принята вместо ответа на команду. В результате в качестве ответа на команду библиотека вернет ошибку (в лучшем случае, в худшем все ‘повиснет’), а сообщение о принятом SMS будет потеряно.

Починить это легко — нужно просто написать свой, асинхронный обработчик протокола. Асинхронный обработчик предъявляет только необходимый минимум требований к ответам модуля на его команды. На каждую команду модуль в итоге отвечает либо OK, либо ERROR. И это все, что нужно для того, чтобы зафиксировать ответ. Все остальные строки, которые приходят от модуля, обрабатываются независимо от того, пришли они в ответ на команду или сами по себе. Смысл этих строк всегда можно определить по их началу. Если строка начинается с +CSQ, то она содержит информацию о качестве сигнала. Если она начинается +CMT, то это информация о полученном SMS, и в ней содержится адрес отправителя. Первая строчка посылается в составе ответа на команду AT+CSQ, а вторую модуль присылает по собственной инициативе, но для нас это различие абсолютно несущественно. Принятые SMS сообщения модуль направляет непосредственно в последовательный порт. Это позволяет избежать чтения их из памяти и последующего удаления. Чтобы мы могли распознать SMS сообщения в общем потоке сообщений от модуля, они должны начинаться с символа #, в противном случае сообщение игнорируется.

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

Чтобы получать строки, начинающиеся с определенной последовательности символов, клиент создает специальный объект — ловушку. Таких ловушек он может создать любое количество. Полученные от модуля строки, отличные от OK, ERROR, которые не попали ни в одну из ловушек, просто игнорируются. Поскольку такая архитектура не требует полного анализа ответов модуля на множество различных типов команд, код библиотеки в разы компактнее любой из известных мне библиотек.

Что в итоге?


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

Для заинтересовавшихся — ссылка на гитхаб, где вы найдете исходники проекта и описание команд, которые можно посылать устройству в SMS сообщениях.

github.com/olegv142/GsmMon

Модуль sim800l. AT команды

В предыдущей статье мы говорили о модуле SIM800l. В этой статье я хотел бы рассказать об управлении этим модулем. Как было сказано ранее — модуль управляется через UART интерфейс посредством AT команд. Конечно, все AT команды я перечислять не буду — для этого существует даташит, в котором все они подробно расписаны. Даташит вы можете скачать в конце статьи. Остановимся на самых распространенных и необходимых AT командах управления модулем SIM800l. Но прежде, я вкратце расскажу о том как подключить модуль. Итак, с питанием понятно — напряжение 4В и ток не менее 2А. Также понадобится переходник USB-UART, например такой. Подключаем переходник в свободный USB порт компьютера устанавливаем драйвера, далее подключаем RX вывод переходника к TX выводу модуля, а TX вывод модуля к RX выводу переходника. Вот и все. Запускаем любую терминальную программу (Hyper Terminal или PuTTy), и вносим настройки. Собственно по настройкам:

  1. Номер COM порта (смотрим в диспетчере устройств),
  2. Скорость соединения — 9600 (Хотя изначально модуль настроен на автоопределение).
  3. Четность — (8-N-1 4)
  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+GCAP:+FCLASS,+CGSM
OK
Возможности модуля
AT+GMMSIMCOM_SIM900
OK
Идентификатор модуля
AT+GMRRevision:1137B09SIM900M64_ST
OK
Ревизия
AT+GSN01322600XXXXXXX
OK
IMEI
AT+COPS?+COPS: 0,0,»MTS-RUS»
OK
Информация об операторе
AT+COPS=?+COPS: (2,»MTS RUS»,»»,»25001″),(1,»MOTIV»,»MOTIV»,»25035″),(1,»Utel»,»Utel»,»25039″),,(0,1,4),(0,1,2)
OK
Доступные операторы
AT+CPAS+CPAS: 0
OK
Информация о состояние модуля
0 – готов к работе
2 – неизвестно
3 – входящий звонок
4 – голосовое соединение
AT+CREG?+CREG: 0,1
OK
Тип регистрации сети
Первый параметр:
0 – нет кода регистрации сети
1 – есть код регистрации сети
2 – есть код регистрации сети + доп параметры
Второй параметр:
0 – не зарегистрирован, поиска сети нет
1 – зарегистрирован, домашняя сеть
2 – не зарегистрирован, идёт поиск новой сети
3 – регистрация отклонена
4 – неизвестно
5 – роуминг
AT+CSQ+CSQ: 17,0
OK
Уровень сигнала:
0 -115 дБл и меньше
1 -112 дБл
2-30 -110..-54 дБл
31 -52 дБл и сильнее
99 – нет сигнала.
AT+CCLK?+CCLK: «00/01/01,04:21:27+00»
OK
Текущая дата и время телефона.
AT+CBC+CBC: 0,95,4134
OK
Монитор напряжения питания модуля
Первый параметр:
0 – не заряжается
1 – заряжается
2 – зарядка окончена
Второй параметр:
1-100 % — уровень заряда батареи
Третий параметр:
Напряжение питание модуля (VBAT), мВ
AT+CADC?+CADC: 1,7
OK
Значение АЦП (до 2,8В)

Команды настроек вызовов

КомандаОтветОписание
AT+CLIP=1OKАОН
1 – вкл / 0 – выкл
AT+GSMBUSY=0OKЗапрет входящих звонков
0 – разрешены
1 – запрещены
ATS0=0OKАвтоответ
0 – ручной
1-более – автомотический после заданного количества звонков

Команды настроек СМС

КомандаОтветОписание
AT+CMGF=1OKТекстовый режим
1 – включить
0 – выключить
см. примечание
AT+CSCS= «GSM»OKКодировка текстового режима
Доступны следующие кодировки:
IRA, GSM, UCS2, HEX, PCCP, PCDN, 8859-1
см. примечание
AT+CSCB=0OKПриём специальных сообщений
0 – разрешен (по умолчанию)
1 – запрещен

Прочие команды настроек модуля

КомандаОтветОписание
ATE0OKЭХО
1 – вкл (по умолчанию) / 0 – выкл
ATV1OKФормат ответа модуля
0 – только ответ
1 – полный ответ с ЭХО (по умолчанию)
AT+CMEE=0OKИнформация об ошибках
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&WOKСохранение настроек для текущего профиля
Параметр 0 или 1 — выбор профиля
Параметр указывать сразу за командой (AT&W0)
AT+CPOWD=1NORMAL POWER DOWNВыключение модуля
0 – срочное
1 – нормальное
AT+CFUN=1,1Энергосберегающий режим и перезагрузка
Первый параметр:
0 – минимальный функционал
1 – нормальный режим (по умолчанию)
2 – выключения цепей приёма и передачи сигнала
Второй параметр:
0 – выполнить без перезагрузки
1 – перезагрузить (доступно только в нормальном режиме, т.е. параметры = 1,1)

Команды для осуществления телефонных звонков

КомандаОтветОписание
ATD+380XXXXXXXX;OKПозвонить на номер +380XXXXXXXX;
NO DIALTONE
BUSY
NO CARRIER
NO ANSWER
Нет сигнала
Если вызов отклонён
Повесили трубку
Нет ответа
ATDLOKПозвонить по последнему исходящему номеру
ATAOKОтветить на звонок
ATH0OKПовесить трубку/ разорвать соединение
RINGВходящий звонок
AT+CLIP=1OKсм. настройки
RING

+CLIP: «+380XXXXXXXX»,145,»»,,»»,0

Входящий звонок с включенным АОН
Где:
Первый параметр – номер телефона входящего звонка
2 – тип входящего номера
129 – не определен
161 – национальный
145 – интернациональный
177 – сетевой, специальный

Команды для отправки СМС сообщений

КомандаОтветОписание
AT+CMGS=

«+380XXXXXXXX»
>Test sms.elschemo.ru

>
+CMGS: 15
OK
Отправка СМС.
Указываем номер получателя в кавычках и отправляем модулю с символом переноса строки (13 в ASCII).
После приглашения «>» вводим текст сообщения.
Для отправки в конце сообщения отправляем символ SUB (26 в ASCII) или ESC (27) для отмены.
AT+CMGF=1
AT+CSCS= «GSM»
Режим и кодировка.
см. настройки и примечание
+CMTI: «SM»,4Уведомление о приходе СМС.
Второй параметр номер пришедшего СМС.
AT+CMGL=»REC UNREAD»+CMGL: 4,»REC UNREAD»,»+380XXXXXXXX»,»

«,»13/09/24,23:02:22+24»
Test2.
OK

Чтение групп СМС.
Всего 5 групп:
REC UNREAD – входящие непрочитанные
REC READ – входящие прочитанные
STO UNSENT – Пользовательские непрочитанные
STO SENT – пользовательские прочитанные
ALL – прочитать все сообщения
AT+CMGR=2+CMGR: «REC READ»,»+380XXXXXXXX»,»

«,»13/09/21,11:57:46+24»
Test sms. elschemo.ru
OK

Чтение SMS сообщений.
Запрос:
Первый параметр – номер сообщения.
Второй параметр (необязателен):
0 – обычный режим (по умолчанию)
1 – не изменять статус сообщения
Ответ:
Первый параметр – группа сообщений, см предыдущий пункт.
Второй параметр – номер отправителя
3 – дата отправки
Далее следует текс сообщения.
AT+CMGDA=»DEL SENT»OKУдаление групп СМС:
DEL READ — прочитанные
DEL UNREAD — не прочитанные
DEL SENT — отправленные
DEL UNSENT — не отправленные
DEL INBOX — полученные
DEL ALL — всех сообщения
AT+CMGD=4OKУдаление СМС.
Первый параметр – номер сообщения
Второй параметр:
0 – удаление указанного сообщения (по умолчанию)
1 – удаление прочитанных сообщений
2 – удаление прочитанных и отправленных сообщений
3 – удаление прочитанных, отправленных и не отправленных сообщений
4 – удаление всех сообщений
AT+CSCA?+CSCA: «+380991234567»,145
OK
Возвращает номер сервис центра отправки сообщений.

Тоновый набор (DTMF)

Тоновые сигналы: 0-9,#,*,A-D

КомандаОтветОписание
AT+VTD=3OKДлительность тоновых сигналов для 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#»OK
+CUSD: 0,»Balance:240,68r «,
USSD запрос
Первый параметр – режим обработки операции:
0 – выполнить запрос, ответ проигнорировать
1 – выполнить запрос, вернуть ответ
2 – отменить запрос
Второй параметр – запрос в кавычках.
ATD#100#;OK
+CUSD: 0,»Balance:280 UAH»,
Упрощенный USSD запрос (работает только при GSM кодировке)

GPRS
Настройка и установка GPRS соединения:
AT+SAPBR=3,1,«CONTYPE»,«GPRS»
AT+SAPBR=3,1,«APN»,«internet.beeline.ru»
AT+SAPBR=3,1,«USER»,«beeline»
AT+SAPBR=3,1,«PWD»,«beeline»

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 соединение

Очередная GSM сигнализация или «работа над ошибками».

Добрый день! Это скорее не обзор, а дополнение к этому обзору. Очередная GSM сигнализация собрана. Основные преимущества этой сигнализации:
1. Автономность работы примерно 60 часов на одном аккумуляторе 18650 (2Ah) при отсутствии сетевого питания;
2. Необходимо меньшее количество компонентов;
Практически все ключевые моменты расписаны в предыдущем обзоре выше по ссылке, «воды» в этом обзоре будет мало 🙂

Итак, что нам понадобится:
1. Arduino Nano v3 — Arduino Nano v3 — 150 ₽.
2. GSM Модуль — M590e — 110 ₽ или SIM800L — 250 ₽.
3. Контроллер заряда-разряда для Li-ion аккумулятора — TP4065 — 25 ₽.
4. Разъём для подключения питания — XT60 — 2 шт * 25 ₽ = 50 ₽.
5. Светодиод RGB с общим анодом — 1шт * 5 ₽.
6. Герконовый датчик — 70 ₽.
7. Резисторы 20 кОм — 10 ₽.
8. Выключатель — 15 ₽.
9. Разъём для подключения датчика — JST SM — 10 ₽.
10. PowerBank 6 x 18650 — 160 ₽.
11. Аккумулятор 18650 — из личных запасов.
12. Зарядное устройство 5В 1А — из личных запасов.
13. GSM антенна, опционально. Штатная антенна «пружинка» тоже хорошо справляется со своей задачей.

Дополнительный обвес, поддерживается в актуальных прошивках которые выложены в виде HEX — файла:
1. Датчик движения HC-SR501 — 50 ₽.
2. Модуль и ему подобные расширители портов ввода/вывода на чипе PCF8574, для подключения дополнительных 8 датчиков — 80 ₽.
3. Резисторы номиналом 2,2 кОм и 3,3 кОм, для контроля наличия внешнего питания.
4. Доработка источника резервного питания, аккумулятор разряжается только при отключении внешнего питания. Так же на плате разведён делитель напряжения из 3 пункта.

Делитель напряжения


Приступим к сборке и настройке:
Подключаем всё согласно схеме

Все резисторы номиналом 20 КОм.

Подключение модема.
Модем <—> Arduino
TXD <->D8
RXD <->D9
Модем <—> Контроллер Li-ion TP4056
VCC <->OUT+
GND<->OUT-

Подключение светодиода. Светодиод с общим анодом.
Светодиод <—> Arduino
R <-> D10
G <-> D12
B <-> D11
Anode <-> +5V

Подключение герконового датчика.
Герконовый датчик <—> Arduino
Контакт 1 <-> +5V
Контакт 2 <-> D6
Так же D6 надо замкнуть на GND через резистор на 20 кОм.

Важно! Пару слов о модемах.
Если планируете использовать модем SIM800L никаких настроек и модернизаций производить не нужно.
Если планируете использовать модем M590, то идём по ссылке и читаем пункт «Модем и его настройка», настраиваем скорость порта и шунтируем диод. То есть выпаиваем диод и на его место впаивается перемычка. Так же между пинами boot и gnd ставим резистор на 10кОм. Теперь модем будет работать не от 5В, а от 4,2В, как и задумано производителем. Точно такое же напряжение получаем с выхода платы контроллера Li-ion.

Ниже схема подключения к источнику питания:

Ардуина хоть и рассчитана на питание 5В но ведёт себя вполне адекватно при напряжении питания 3В. Модем при напряжении 3В уже работать отказывается 🙂
Блок питания 5В лучше взять «брендовый», в данном случае использовал зарядник от Sony 1А.
Дополнительный конденсатор в цепи питания модема устанавливать нет необходимости, так как плата контроллера заряда — разряда TP4056 спокойно может отдать около 2А.

Прошивку для сигнализации и информацию о том, как это всё работает берём из этого обзора. В дальнейшем возможны какие-либо незначительные изменения. При разработке и отладке упёрся в объём оперативной памяти Arduino, которой как оказалось очень не пока хватает.

В файл SoftwareSerial.h (C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src\SoftwareSerial.h) необходимо внести изменения

было так:

#define _SS_MAX_RX_BUFF 64 

стало так:


#define _SS_MAX_RX_BUFF 192

Фото процесса сборки и готового устройства

Аппаратные баги
Если устройство зависает при отключении питания, смотрим сюда, полное обсуждение тут.
Если устройство «не понимает» смс команды, читать тут.

PS. Потребляемый ток 30 мА/ч в режиме ожидания, 60 мА/ч в момент совершения вызова и отправки смс.
На этом всё, спасибо за внимание!

Управляем нагрузкой модулем SIM800L и Arduino | Лучшие самоделки

Рассмотрим простой пример работы с недорогим GSM модулем SIM800L управляя с помощью SMS сообщений нагрузкой, данный пример подходит и к другим модулям такого же типа SIMxxx, эта статья поможет в освоении этого модуля и в будущем на основе него можно уже создавать более сложные схемы, так, можно на нём создать например, GSM сигнализацию и управление удалённо различным оборудованием.

Управляем нагрузкой модулем SIM800L и Arduino

Что нам понадобится:

  • GSM/GPRS модуль SIM800L;
  • Arduino UNO;
  • Понижающий DC-DC преобразователь.
Как работать с GSM модулем SIM800L:

В данном примере мы сможем управлять свечением светодиода подключенного к Ардуино Уно посылая по SMS команды «1» и «0», таким образом включая и выключая светодиод но можно управлять и любой другой нагрузкой используя вместо светодиода реле, а что уже будет подключать реле это уже зависит только от Вашей фантазии и надобности.

Управляем нагрузкой модулем SIM800L и Arduino

Модуль SIM800L подключается к Arduino через серийный порт:

Pin 2 Arduino — pin TX SIM800L

Pin 3 Arduino — pin RX SIM800L

Схема подключения всех модулей показана на схеме ниже, преобразователь напряжения здесь необходим так как SIM модулю требуется напряжение около 4В (он питается от 3.7 до 4.2 В), но запитать от питающих напряжений самого Ардуино мы не сможем, так как 3,3 В ему недостаточно для работы, а от 5 В он может сгореть. Поэтому подключаем 5 В к Arduino и к DC-DC преобразователю, а затем от преобразователя на котором выставлено 4 вольта подаём питание на СИМ модуль.

Управляем нагрузкой модулем SIM800L и Arduino

Заливаем скетч в Ардуино, у меня светодиод подключен к pin 10 Arduino. Теперь проверим работу схемы: отправляем на SIM карту которая вставлена в SIM800L модуль СМС с «1» и в течении 10 секунд загорится светодиод, а чтобы его выключить отсылаем сообщение с «0». Таким образом Вы научились управлять нагрузкой с помощью модуля SIM800L и Arduino.

Скачать скетч.

arduino-uno — Клиент MQTT на Arduino + SIM900

Библиотека MQTT для SIM800 GSM-модема доступна по адресу ElementzTechBlog , ElementzGithubRepository

Функциональности:

Автоматическое подключение

   Automatically connect to TCP and to MQTT server.

функция подключения

   This function can be used to connect your client to MQTT broker.
   Use only if you do not use Auto connect functionality.
   Optionally  you can use username, password, WILL topic and WILL Message.

Функция OnConnect CallBack

   This call back function is called when MQTT connection is established.
   You can call subscription and publish functions inside it (according to your need).

функция публикации

   This function can be used to publish messages to different topics.
   You can select  QoS levels and RETAIN flag according to your need.

функция подписки

   This function can be used to subscribe messages from different topics.

Функция OnMessage CallBack

   This callback function is called when messages are received from  subscribed topics
   Topic, TopicLength, Message, MessageLength are the arguments of  OnMessage callback function.
   Inside this, you can write your custom code.

функция отмены подписки

   This function can be used to unsubscribe from a previously subscribed topic.

функция разъединения

   This function can be used to disconnect your client from MQTT broker.

Keep Alive

   You can specify your KeepAlive duration while initializing.
   Ping requests are sent and received automatically.

GSM управляемая домашняя автоматизация с использованием SIM800 с Arduino

Пожалуйста, ПОДПИСАТЬСЯ на мой канал для других проектов ………………

Gsm based Home Автоматизация используется для управления домашними устройствами, такими как телевизор, свет, кондиционер и т. Д.

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

Для этого нужно отправить SMS, тогда кондиционер включится.

Это простой способ сэкономить электроэнергию и сделать наш дом умным.

Преимущество: —

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

Шаг 1: Необходимые компоненты

3 Дополнительные изображения

  • Arduino uno
  • GSM sim800
  • 4 светодиода
  • LCD (2X16)
  • Потенциометр 10K
  • Некоторые вилки и розетки
  • Реле 12 В для нагрузки переменного тока ( или реле 5 В, как вам нравится)
  • ULN2003 ic для реле
  • соединительный провод
  • ноль печатной платы

Шаг 2: Загрузите программу

Загрузите zip-файл и распакуйте его, здесь, в папке, вы получите коды, которые у нас есть загрузить в ардуино и две схемы.

Вложения

https://github.com/vishalsoniindia/GSM-Controlled-Home-Automation-Using-SIM800-With-Arduino/archive/master.zip

📷 gsm sim800 control automation.zip

Скачать

  • 📷 gsm sim800 control automation.z ip Загрузить

Шаг 3: Подключите схему

Теперь подключите ЖК-дисплей, как показано на схеме, и модуль GSM.

ЖК-дисплей можно припаять на нулевую плату.

В модуле GSM 5 В и заземление будут обеспечиваться от Arduino или внешнего адаптера.

GSM-соединения: —

RX gsm ——————-> TX arduino

TX gsm ——— ————> RX Arduino

ВЫХОД: —

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

7 —————> LED1

8 —————> LED2

9 ——— ——> LED3

Шаг 4: Настройка модуля GSM

Теперь вставьте sim-карту в модуль GSM и удерживайте кнопку питания модуля GSM для включения.

GSM SIM800 требуется внешний источник питания 5 В. Если у вас другой модуль GSM, вы должны соответствовать требованиям внешнего напряжения для вашего модуля.

Шаг 5: Готово, давайте попробуем

Отправьте несколько команд вашему симу, которые вставлены в модуль GSM.

То есть …………….

# A. все включено *

# A. все выключено *

# A. вентилятор включено *

#A .fan off *

# A. свет включен *

# A. свет выключен *

# A.tv включен *

# A.tv off *

Шаг 6: Подключите нагрузку переменного тока

Настройте эту схему на нулевой плате …….

Если вы хотите подключить нагрузку переменного тока или домашние устройства, такие как лампа, вентилятор и т. д.

Тогда у вас есть Схема подключения ULN2003 ic к реле приведена.

На принципиальной схеме есть реле 12 В, но вы можете использовать реле 5 В вместо реле 12 В.

, если вы используете реле 5В, то контакт 9 ULN2003 будет подключен к 5В.

Теперь выходные контакты 7, 8, 9 подключены к контактам 1, 2, 3 ULN2003, а реле будет подключено к контактам 14, 15, 16 ULN2003.

после этого теперь вы можете подключить лампу, как показано на схеме.

будьте осторожны с питанием переменного тока

sim800c_gsm_gprs_shield_v2.0_sku_tel0089-DFRobot

  • ДОМ
  • СООБЩЕСТВО
  • ФОРУМ
  • БЛОГ
  • ОБРАЗОВАНИЕ
ДОМ ФОРУМ БЛОГ
  • Контроллер
    • DFR0010 Arduino Nano 328
    • DFR0136 Сервоконтроллер Flyduino-A 12
    • DFR0225 Romeo V2-Все в одном контроллере R3
    • Arduino_Common_Controller_Selection_Guide
  • DFR0182 Беспроводной геймпад V2.0
  • DFR0100 Комплект для начинающих DFRduino для Arduino V3
  • DFR0267 Блуно
  • DFR0282 Жук
  • DFR0283 Мечтательный клен V1.0
  • DFR0296 Блуно Нано
  • DFR0302 MiniQ 2WD Plus
  • DFR0304 Беспроводной геймпад BLE V2
  • DFR0305 RoMeo BLE
  • DFR0351 Romeo BLE mini V2.0
  • DFR0306 Блуно Мега 1280
  • DFR0321 Узел Wido-WIFI IoT
  • DFR0323 Блуно Мега 2560
  • DFR0329 Блуно М3
  • DFR0339 Жук Блуно
  • DFR0343 Контроллер с низким энергопотреблением UHex
  • DFR0355 SIM808 с материнской платой Leonardo
  • DFR0392 DFRduino M0 материнская плата, совместимая с Arduino
  • DFR0398 Контроллер роботов Romeo BLE Quad
  • DFR0416 Bluno M0 Материнская плата
  • DFR0575 Жук ESP32
  • DFR0133 X-Board
  • DFR0162 X-Board V2
  • DFR0428 3.5-дюймовый сенсорный TFT-экран для Raspberry Pi
  • DFR0494 Raspberry Pi ШАПКА ИБП
  • DFR0514 DFR0603 IIC 16X2 RGB LCD KeyPad HAT V1.0
  • DFR0524 5.5 HDMI OLED-дисплей с емкостным сенсорным экраном V2.0
  • DFR0550 5-дюймовый TFT-дисплей с сенсорным экраном V1.0
  • DFR0591 модуль дисплея raspberry pi e-ink V1.0
  • DFR0592 Драйвер двигателя постоянного тока HAT
  • DFR0604 HAT расширения ввода-вывода для Pi zero V1.0
  • DFR0566 Шляпа расширения ввода-вывода для Raspberry Pi
  • DFR0528 Шляпа ИБП для Raspberry Pi Zero
  • DFR0331 Romeo для контроллера Edison
  • DFR0453 DFRobot CurieNano — мини-плата Genuino Arduino 101
  • TEL0110 CurieCore Intel® Curie Neuron Module
  • DFR0478 Микроконтроллер FireBeetle ESP32 IOT (V3.0) с поддержкой Wi-Fi и Bluetooth
  • DFR0483 FireBeetle Covers-Gravity I O Expansion Shield
  • FireBeetle Covers-24 × 8 светодиодная матрица
  • TEL0121 FireBeetle Covers-LoRa Radio 433 МГц
  • TEL0122 FireBeetle Covers-LoRa Radio 915 МГц
  • TEL0125 FireBeetle охватывает LoRa Radio 868MHz
  • DFR0489 FireBeetle ESP8266 Микроконтроллер IOT
  • DFR0492 FireBeetle Board-328P с BLE4.1
  • DFR0498 FireBeetle Covers-Camera & Audio Media Board
  • DFR0507 FireBeetle Covers-OLED12864 Дисплей
  • DFR0508 FireBeetle Covers-Двигатель постоянного тока и шаговый драйвер
  • DFR0511 FireBeetle Covers-ePaper Черно-белый дисплейный модуль
  • DFR0531 FireBeetle Covers-ePaper Черно-белый и красный дисплейный модуль
  • DFR0536 Плата расширения геймпада с микробитами
  • DFR0548 Плата расширения микробитового драйвера
  • ROB0148 micro: Maqueen для micro: bit
  • ROB0150 Microbit Круглая плата расширения для светодиодов RGB
  • MBT0005 Micro IO-BOX
  • SEN0159 Датчик CO2
  • DFR0049 DFRobot Датчик газа
  • TOY0058 Датчик атмосферного давления
  • SEN0220 Инфракрасный датчик CO2 0-50000ppm
  • SEN0219 Гравитационный аналоговый инфракрасный датчик CO2 для Arduino
  • SEN0226 Датчик барометра Gravity I2C BMP280
  • SEN0231 Датчик гравитации HCHO
  • SEN0251 Gravity BMP280 Датчики атмосферного давления
  • SEN0132 Датчик угарного газа MQ7
  • SEN0032 Трехосный акселерометр — ADXL345
  • DFR0143 Трехосевой акселерометр MMA7361
  • Трехосный акселерометр серии FXLN83XX
  • SEN0072 CMPS09 — Магнитный компас с компенсацией наклона
  • SEN0073 9 степеней свободы — бритва IMU
  • DFR0188 Flymaple V1.1
  • SEN0224 Трехосевой акселерометр Gravity I2C — LIS2DH
  • SEN0140 Датчик IMU с 10 степенями свободы, версия 2.0
  • SEN0250 Gravity BMI160 6-осевой инерционный датчик движения
  • SEN0253 Gravity BNO055 + BMP280 интеллектуальный 10DOF AHRS
  • SEN0001 URM37 V5.0 Ультразвуковой датчик
  • SEN0002 URM04 V2.0
  • SEN0004 SRF01 Ультразвуковой датчик
  • SEN0005 SRF02 Ультразвуковой датчик
  • SEN0006 SRF05 Ультразвуковой датчик
  • SEN0007 SRF08 Ультразвуковой датчик
  • SEN0008 SRF10 Ультразвуковой датчик
  • SEN0149 URM06-RS485 Ультразвуковой
  • SEN0150 URM06-UART Ультразвуковой
  • SEN0151 URM06-PULSE Ультразвуковой
  • SEN0152 URM06-ANALOG Ультразвуковой
  • SEN0153 Ультразвуковой датчик URM07-UART
  • SEN0246 URM08-RS485 Водонепроницаемый гидролокатор-дальномер
  • SEN0304 Ультразвуковой датчик URM09 (Gravity-I2C) (V1.0)
  • SEN0304 Ультразвуковой датчик URM09 (Gravity-I2C) (V1.0)
  • SEN0300 Водонепроницаемый ультразвуковой датчик ULS
  • SEN0301 Водонепроницаемый ультразвуковой датчик ULA
  • SEN0307 URM09 Аналог ультразвукового датчика силы тяжести
  • SEN0311 A02YYUW Водонепроницаемый ультразвуковой датчик
  • SEN0312 ME007YS Водонепроницаемый ультразвуковой датчик
  • SEN0313 A01NYUB Водонепроницаемый ультразвуковой датчик
  • DFR0066 SHT1x Датчик влажности и температуры
  • DFR0067 DHT11 Датчик температуры и влажности
  • SEN0137 DHT22 Модуль температуры и влажности
  • DFR0023 Линейный датчик температуры DFRobot LM35
  • DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
  • DFR0024 Gravity DS18B20 Датчик температуры, совместимый с Arduino V2
  • SEN0114 Датчик влажности
  • Датчик температуры TOY0045 TMP100
  • TOY0054 SI7021 Датчик температуры и влажности
  • SEN0206 Датчик инфракрасного термометра MLX
  • SEN0227 SHT20 Водонепроницаемый датчик температуры и влажности I2C
  • SEN0236 Gravity I2C BME280 Датчик окружающей среды Температура, влажность, барометр
  • SEN0248 Gravity I2C BME680 Датчик окружающей среды VOC, температура, влажность, барометр
  • DFR0558 Цифровой высокотемпературный датчик силы тяжести типа К
  • SEN0308 Водонепроницаемый емкостный датчик влажности почвы
  • SEN0019 Регулируемый переключатель инфракрасного датчика
  • SEN0042 DFRobot Инфракрасный датчик прорыва
  • SEN0143 SHARP GP2Y0A41SK0F ИК-датчик рейнджера 4-30 см
  • SEN0013 Sharp GP2Y0A02YK ИК-датчик рейнджера 150 см
  • SEN0014 Sharp GP2Y0A21 Датчик расстояния 10-80 см
  • SEN0085 Sharp GP2Y0A710K Датчик расстояния 100-550 см
  • Модуль цифрового ИК-приемника DFR0094
  • DFR0095 Модуль цифрового ИК-передатчика
  • SEN0018 Цифровой инфракрасный датчик движения
  • DFR0107 ИК-комплект
  • SEN0264 TS01 ИК-датчик температуры (4-20 мА)
  • SEN0169 Аналоговый pH-метр Pro
  • DFR0300-H Gravity: аналоговый датчик электропроводности (K = 10)
  • DFR0300 Гравитационный аналоговый датчик электропроводности V2 K = 1
  • SEN0165 Аналоговый измеритель ОВП
  • SEN0161-V2 Комплект гравитационного аналогового датчика pH V2
  • SEN0161 PH метр
  • SEN0237 Гравитационный аналоговый датчик растворенного кислорода
  • SEN0204 Бесконтактный датчик уровня жидкости XKC-Y25-T12V
  • SEN0205 Датчик уровня жидкости-FS-IR02
  • SEN0244 Gravity Analog TDS Sensor Meter для Arduino
  • SEN0249 Комплект измерителя pH с аналоговым наконечником копья силы тяжести для применения в почве и пищевых продуктах
  • SEN0121 Датчик пара
  • SEN0097 Датчик освещенности
  • DFR0026 Датчик внешней освещенности DFRobot
  • TOY0044 УФ-датчик
  • SEN0172 LX1972 датчик внешней освещенности
  • SEN0043 TEMT6000 датчик внешней освещенности
  • SEN0175 УФ-датчик v1.0-ML8511
  • SEN0228 Gravity I2C VEML7700 Датчик внешней освещенности
  • SEN0101 Датчик цвета TCS3200
  • DFR0022 Датчик оттенков серого DFRobot
  • Датчик отслеживания линии SEN0017 для Arduino V4
  • SEN0147 Интеллектуальный датчик оттенков серого
  • SEN0212 TCS34725 Датчик цвета I2C для Arduino
  • SEN0245 Gravity VL53L0X Лазерный дальномер ToF
  • SEN0259 TF Mini LiDAR ToF Laser Range Sensor
  • SEN0214 Датчик тока 20А
  • SEN0262 Гравитационный аналоговый преобразователь тока в напряжение для приложений 4 ~ 20 мА
  • SEN0291 Gravity: Цифровой ваттметр I2C
  • DFR0027 Цифровой датчик вибрации DFRobot V2
  • DFR0028 DFRobot Датчик наклона
  • DFR0029 Цифровая кнопка DFRobot
  • DFR0030 DFRobot емкостный датчик касания
  • Модуль цифрового зуммера DFR0032
  • DFR0033 Цифровой магнитный датчик
  • DFR0034 Аналоговый звуковой датчик
  • SEN0038 Колесные энкодеры для DFRobot 3PA и 4WD Rovers
  • DFR0051 Аналоговый делитель напряжения
  • DFR0052 Аналоговый пьезодисковый датчик вибрации
  • DFR0076 Датчик пламени
  • DFR0053 Аналоговый датчик положения ползуна
  • DFR0054 Аналоговый датчик вращения V1
  • DFR0058 Аналоговый датчик вращения V2
  • Модуль джойстика DFR0061 для Arduino
  • DFR0075 AD Клавиатурный модуль
  • Модуль вентилятора DFR0332
  • SEN0177 PM2.5 лазерный датчик пыли
  • Модуль датчика веса SEN0160
  • SEN0170 Тип напряжения датчика скорости ветра 0-5 В
  • TOY0048 Высокоточный двухосевой датчик инклинометра, совместимый с Arduino Gadgeteer
  • SEN0187 RGB и датчик жестов
  • SEN0186 Метеостанция с анемометром Флюгер Дождь ведро
  • SEN0192 Датчик микроволн
  • SEN0185 датчик Холла
  • FIT0449 DFRobot Speaker v1.0
  • Датчик сердечного ритма SEN0203
  • DFR0423 Самоблокирующийся переключатель
  • SEN0213 Датчик монитора сердечного ритма
  • SEN0221 Датчик угла Холла силы тяжести
  • Датчик переключателя проводимости SEN0223
  • SEN0230 Инкрементальный фотоэлектрический датчик угла поворота — 400P R
  • SEN0235 Модуль поворотного энкодера EC11
  • SEN0240 Аналоговый датчик ЭМГ от OYMotion
  • SEN0232 Гравитационный аналоговый измеритель уровня звука
  • SEN0233 Монитор качества воздуха PM 2.5, формальдегид, датчик температуры и влажности
  • DFR0515 FireBeetle Covers-OSD Модуль наложения символов
  • SEN0257 Датчик гравитационного давления воды
  • SEN0289 Gravity: Цифровой датчик встряхивания
  • SEN0290 Gravity: Датчик молнии
  • DFR0271 GMR Плата
  • ROB0003 Pirate 4WD Мобильная платформа
  • Мобильная платформа ROB0005 Turtle 2WD
  • ROB0025 NEW A4WD Мобильный робот с кодировщиком
  • ROB0050 4WD MiniQ Полный комплект
  • ROB0111 4WD MiniQ Cherokey
  • ROB0036 Комплект роботизированной руки с 6 степенями свободы
  • Комплект наклонно-поворотного устройства FIT0045 DF05BB
  • ROB0102 Мобильная платформа Cherokey 4WD
  • ROB0117 Базовый комплект для Cherokey 4WD
  • ROB0022 4WD Мобильная платформа
  • ROB0118 Базовый комплект для Turtle 2WD
  • Робот-комплект ROB0080 Hexapod
  • ROB0112 Мобильная платформа Devastator Tank
  • ROB0114 Мобильная платформа Devastator Tank
  • ROB0124 Мобильная платформа HCR с всенаправленными колесами
  • ROB0128 Devastator Tank Мобильная платформа Металлический мотор-редуктор постоянного тока
  • ROB0137 Explorer MAX Робот
  • ROB0139 Робот FlameWheel
  • DFR0270 Accessory Shield для Arduino
  • DFR0019 Щит для прототипирования для Arduino
  • DFR0265 IO Expansion Shield для Arduino V7
  • DFR0210 Пчелиный щит
  • DFR0165 Mega IO Expansion Shield V2.3
  • DFR0312 Плата расширения Raspberry Pi GPIO
  • DFR0311 Raspberry Pi встречает Arduino Shield
  • DFR0327 Arduino Shield для Raspberry Pi 2B и 3B
  • DFR0371 Экран расширения ввода-вывода для Bluno M3
  • DFR0356 Щит Bluno Beetle
  • DFR0412 Gravity IO Expansion Shield для DFRduino M0
  • DFR0375 Cookie I O Expansion Shield V2
  • DFR0334 GPIO Shield для Arduino V1.0
  • DFR0502 Gravity IO Expansion & Motor Driver Shield V1.1
  • DFR0518 Micro Mate — мини-плата расширения для микробита
  • DFR0578 Gravity I O Expansion Shield для OpenMV Cam M7
  • DFR0577 Gravity I O Expansion Shield для Pyboard
  • DFR0626 MCP23017 Модуль расширения с IIC на 16 цифровых IO
  • DFR0287 LCD12864 Экран
  • DFR0009 Экран ЖК-клавиатуры для Arduino
  • DFR0063 I2C TWI LCD1602 Модуль Gadgeteer-совместимый
  • Модуль DFR0154 I2C TWI LCD2004, совместимый с Arduino Gadgeteer
  • Светодиодная матрица DFR0202 RGB
  • DFR0090 3-проводной светодиодный модуль
  • TOY0005 OLED 2828 модуль цветного дисплея.Совместимость с NET Gadgeteer
  • Модуль дисплея TOY0006 OLED 9664 RGB
  • Модуль дисплея TOY0007 OLED 2864
  • Модуль дисплея FIT0328 2.7 OLED 12864
  • DFR0091 3-проводной последовательный ЖК-модуль, совместимый с Arduino
  • DFR0347 2.8 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
  • DFR0348 3.5 TFT Touch Shield с 4 МБ флэш-памяти для Arduino и mbed
  • DFR0374 Экран LCD клавиатуры V2.0
  • DFR0382 Экран со светодиодной клавиатурой V1.0
  • DFR0387 TELEMATICS 3.5 TFT сенсорный ЖК-экран
  • DFR0459 Светодиодная матрица RGB 8×8
  • DFR0460 Светодиодная матрица RGB 64×32 — шаг 4 мм / Гибкая светодиодная матрица 64×32 — Шаг 4 мм / Гибкая светодиодная матрица 64×32 — Шаг 5 мм
  • DFR0461 Гибкая светодиодная матрица 8×8 RGB Gravity
  • DFR0462 Гибкая светодиодная матрица 8×32 RGB Gravity
  • DFR0463 Gravity Гибкая светодиодная матрица 16×16 RGB
  • DFR0471 Светодиодная матрица RGB 32×16 — шаг 6 мм
  • DFR0472 Светодиодная матрица RGB 32×32 — шаг 4 мм
  • DFR0464 Gravity I2C 16×2 ЖК-дисплей Arduino с подсветкой RGB
  • DFR0499 Светодиодная матрица RGB 64×64 — шаг 3 мм
  • DFR0506 7-дюймовый дисплей HDMI с емкостным сенсорным экраном
  • DFR0555 \ DF0556 \ DFR0557 Gravity I2C LCD1602 Модуль ЖК-дисплея Arduino
  • DFR0529 2.2-дюймовый ЖК-дисплей TFT V1.0 (интерфейс SPI)
  • DFR0605 Gravity: Цифровой светодиодный модуль RGB
  • FIT0352 Цифровая светодиодная водонепроницаемая лента с RGB-подсветкой 60LED м * 3 м
  • DFR0645-G DFR0645-R 4-цифровой светодиодный сегментный модуль дисплея
  • Артикул DFR0646-G DFR0646-R 8-цифровой светодиодный сегментный модуль дисплея
  • DFR0597 Гибкая светодиодная матрица RGB 7×71
  • DFR0231 Модуль NFC для Arduino
  • Модуль радиоданных TEL0005 APC220
  • TEL0023 BLUETOOH BEE
  • TEL0026 DF-BluetoothV3 Bluetooth-модуль
  • Модуль беспроводного программирования TEL0037 для Arduino
  • TEL0044 DFRduino GPS Shield-LEA-5H
  • TEL0047 WiFi Shield V2.1 для Arduino
  • TEL0051 GPS GPRS GSM модуль V2.0
  • TEL0067 Wi-Fi Bee V1.0
  • TEL0073 BLE-Link
  • TEL0075 RF Shield 315 МГц
  • TEL0078 WIFI Shield V3 PCB Антенна
  • TEL0079 WIFI Shield V3 RPSMA
  • TEL0084 BLEmicro
  • TEL0086 DF-маяк EVB
  • TEL0087 USBBLE-LINK Bluno Адаптер для беспроводного программирования
  • TEL0080 UHF RFID МОДУЛЬ-USB
  • TEL0081 УВЧ RFID МОДУЛЬ-RS485
  • TEL0082 UHF RFID МОДУЛЬ-UART
  • TEL0083-A GPS-приемник для Arduino Model A
  • TEL0092 WiFi Bee-ESP8266 Wirelss модуль
  • Модуль GPS TEL0094 с корпусом
  • TEL0097 SIM808 GPS GPRS GSM Shield
  • DFR0342 W5500 Ethernet с материнской платой POE
  • DFR0015 Xbee Shield для Arduino без Xbee
  • TEL0107 WiFiBee-MT7681 Беспроводное программирование Arduino WiFi
  • TEL0089 SIM800C GSM GPRS Shield V2.0
  • Модуль приемника RF TEL0112 Gravity 315MHZ
  • TEL0113 Gravity UART A6 GSM и GPRS модуль
  • TEL0118 Gravity UART OBLOQ IoT-модуль
  • Модуль TEL0120 DFRobot BLE4.1
  • Bluetooth-адаптер TEL0002
  • Модуль аудиоприемника Bluetooth TEL0108
  • TEL0124 SIM7600CE-T 4G (LTE) Shield V1.0
  • DFR0505 SIM7000C Arduino NB-IoT LTE GPRS Expansion Shield
  • DFR0013 IIC в GPIO Shield V2.0
  • Плата привода двигателя датчика DFR0057 — Версия 2.2
  • DFR0062 Адаптер WiiChuck
  • DFR0233 Узел датчика RS485 V1.0
  • DFR0259 Arduino RS485 щит
  • DFR0370 Экран CAN-BUS V2
  • DFR0627 IIC для двойного модуля UART
  • TEL0070 Multi USB RS232 RS485 TTL преобразователь
  • DFR0064 386AMP модуль аудиоусилителя
  • DFR0273 Экран синтеза речи
  • DFR0299 DFPlayer Mini
  • TOY0008 DFRduino Плеер MP3
  • SEN0197 Диктофон-ISD1820
  • DFR0420 Аудиозащитный экран для DFRduino M0
  • DFR0534 Голосовой модуль
  • SD2403 Модуль часов реального времени SKU TOY0020
  • TOY0021 SD2405 Модуль часов реального времени
  • DFR0151 Модуль Gravity I2C DS1307 RTC
  • DFR0469 Модуль Gravity I2C SD2405 RTC
  • DFR0316 MCP3424 18-битный канал АЦП-4 с усилителем с программируемым усилением
  • DFR0552 Gravity 12-битный модуль I2C DAC
  • DFR0553 Gravity I2C ADS1115 16-битный модуль АЦП, совместимый с Arduino и Raspberry Pi
  • DFR0117 Модуль хранения данных Gravity I2C EEPROM
  • Модуль SD DFR0071
  • Плата привода двигателя датчика DFR0057 — Версия 2.2
  • DFR0360 XSP — Программист Arduino
  • DFR0411 Двигатель постоянного тока Gravity 130
  • DFR0438 Яркий светодиодный модуль
  • DFR0439 Светодиодные гирлянды красочные
  • DFR0440 Модуль микровибрации
  • DFR0448 Светодиодные гирлянды, теплый белый цвет
  • Встроенный термопринтер DFR0503 — последовательный TTL
  • DFR0504 Гравитационный изолятор аналогового сигнала
  • DFR0520 Двойной цифровой потенциометр 100K
  • DFR0565 Гравитационный цифровой изолятор сигналов
  • DFR0563 Гравитация 3.Датчик уровня топлива литиевой батареи 7V
  • DFR0576 Гравитационный цифровой мультиплексор I2C с 1 по 8
  • DFR0117 Модуль хранения данных Gravity I2C EEPROM
  • DRI0001 Моторный щит Arduino L293
  • DRI0002 MD1.3 2A Двухмоторный контроллер
  • DRI0009 Моторный щит Arduino L298N
  • DRI0021 Драйвер двигателя постоянного тока Veyron 2x25A Brush
  • DRI0017 2A Моторный щит для Arduino Twin
  • Драйвер двигателя постоянного тока DRI0018 2x15A Lite
  • Микродвигатель постоянного тока FIT0450 с энкодером-SJ01
  • FIT0458 Микродвигатель постоянного тока с энкодером-SJ02
  • DFR0399 Микро-металлический мотор-редуктор постоянного тока 75 1 Вт Драйвер
  • DRI0039 Quad Motor Driver Shield для Arduino
  • DRI0040 Двойной 1.Драйвер двигателя 5A — HR8833
  • DRI0044 2×1.2A Драйвер двигателя постоянного тока TB6612FNG
  • Драйвер двигателя постоянного тока DFR0513 PPM 2x3A
  • DFR0523 Гравитационный цифровой перистальтический насос
  • DRI0027 Digital Servo Shield для Arduino
  • DRI0029 Сервопривод Veyron, 24 канала
  • SER0044 DSS-M15S 270 ° 15KG Металлический сервопривод DF с аналоговой обратной связью
  • DRI0023 Экран шагового двигателя для Arduino DRV8825
  • DRI0035 TMC260 Щиток драйвера шагового двигателя
  • DFR0105 Силовой щит
  • DFR0205 Силовой модуль
  • DFR0457 Контроллер мощности Gravity MOSFET
  • DFR0564 Зарядное устройство USB для 7.Литий-полимерная батарея 4 В
  • DFR0535 Менеджер солнечной энергии
  • DFR0559 Солнечная система управления мощностью 5 В для подсолнечника
  • DFR0559 Менеджер солнечной энергии 5 В
  • DFR0580 Solar Power Manager для свинцово-кислотных аккумуляторов 12 В
  • DFR0222 Реле X-Board
  • Релейный модуль DFR0017, совместимый с Arduino
  • DFR0289 Релейный контроллер RLY-8-POE
  • DFR0290 RLY-8-RS485 8-релейный контроллер
  • DFR0144 Релейный экран для Arduino V2.1
  • DFR0473 Gravity Digital Relay Module Совместимость с Arduino и Raspberry Pi
  • KIT0003 EcoDuino — Комплект для автомобильных заводов
  • KIT0071 MiniQ Discovery Kit
  • KIT0098 Пакет компонентов подключаемого модуля Breadboard
  • Артикул DFR0748 Цветок Китти
  • SEN0305 Гравитация: HUSKYLENS — простой в использовании датчик машинного зрения с искусственным интеллектом

    Arduino Nano взаимодействует с SIM800C

    Обменивайтесь данными с SIM800C с помощью Arduino Nano

    Завершение сложных вещей простым оборудованием — наша цель.SIM800C — это вариант передачи данных, такой как GSM / GPRS. Цена в Китае очень низкая, а популярные товары реализуют услугу Интернет. Выбор MCU для вашего приложения на основе вашей миссии также является ключом к успеху проекта или продукта. Здесь нам нужен MCU для выполнения таких услуг, как Интернет-связь, например, для обслуживания машины посещаемости, для которой мы выбираем продукт Arduino Nano. Подключение оборудования и программирование программного обеспечения для реализации связи SIM800C описаны ниже.

    Введение в сетевую карту GPRS

    SIM800C — это четырехдиапазонный модуль GSM / GPRS. Основные технические параметры и технические характеристики следующие:

    • Четырехдиапазонный 850/900/1800/1900 МГц

    • GPRS, мультислотовый класс 12/10

    • Соответствует стандарту GSM 2/2 +
      — Класс 4 (2 Вт при 850/900 МГц)
      — Класс 1 (1 Вт при 1800/1900 МГц)

    • Размер: 17,6 15,7 2,3 мм

    • Масса: 1.3g

    • Управляется AT-командами (3GPP TS 27.007, 27.005 и расширенный набор AT-команд SIMCOM)

    • Диапазон напряжения: 3,4 ~ 4,4 В

    • Диапазон рабочих температур: от -40 до +85 ° C

    Обмен информацией

    В некотором смысле карта SIM800C является сервером, MCU действует как клиент, отправляет AT-команду на SIM800C, а SIM800C отвечает MCU. Подробности AT-команды здесь не рассматриваются.Во-первых, вы знаете две важные команды:

    1. AT это как приветственный приказ
    2. AT + GSV Это заказ для получения информации о производителе продукта.

    Продукт Arduino Nano много рассказывался в предыдущем разделе. Здесь это не вводится. Предыдущее сообщение в блоге более подробно.

    Подключение устройства состоит из 2 частей:

    • Схема подключения Arduino Nano
    • Схема подключения SIM800C

    Схема подключения Arduino Nano

    SIM800C может быть подключен к микроконтроллеру 5 В или 3.Микроконтроллер 3В. Мы выбрали продукт Arduino с напряжением питания 5 В. Силовые подключения следующие:

    Блок питания подключен к 5В и ГНГ. Линия связи может обозначаться как D10 и D11 как линии Rx и Tx, используемые для подключения к SIM800C.

    Схема подключения SIM800C

    Если вы используете MCU 5 В, вы можете использовать блок питания MCU для питания SIM800C. Но здесь следует обратить внимание на то, что блок питания SIM800C не требуется. Обычно требуется достичь 500 мА при питании 5 В, а иногда даже более 500 мА.Питание от обычного USB 5V не гарантирует, что источник питания соответствует требованиям. Клеммы

    5V: внешний источник питания 5V
    V_TTL: источник питания MCU
    GND: Земля
    TXD: Подключите к приемному концу MCU, передающему концу последовательной связи SIM800C, вот клемма 10, подключенная к MCU, которая Rx MCU.
    RXD: Подключитесь к передатчику MCU, принимающей стороне последовательной связи SIM800C, вот клемма 11 MCU, Tx MCU.

    Обратите внимание, что порт взаимозаменяем с MCU, TXD <-> Rx, RXD <-> Tx.

    Программное обеспечение использует программное обеспечение для программирования Arduino IDE. Как упоминалось ранее, это программное обеспечение имеет две формы:

    • Онлайн-форма IDE
    • Установлена ​​IDE сейчас

    Обе формы IDE доступны и постоянно обновляются. Эта экосистема все еще очень сильна, но китайские собратья не в сети, в основном на английском языке, а китайцы не могут, иначе она будет сильнее.

    Теперь о внедрении нашего программного обеспечения:

      #include 
    
    SoftwareSerial SIM800C (10, 11);
    логическое bState, bOldState;
    int incomingByte = 0;
    
    void setup () {
      
      
      pinMode (13, ВЫХОД);
      Serial.begin (9600);
      while (! Serial) {
        ;
      }
    
      Serial.println («Доброе утро, старый друг!»);
      
      SIM800C.begin (9600);
      SIM800C.println («AT + CMGF = 1»);
      
    }
    
    void loop () {
      
      if (SIM800C.available ()) {
        Serial.write (SIM800C.read ());
        digitalWrite (13, ВЫСОКИЙ);
      }
      если (Serial.имеется в наличии()) {
        SIM800C.write (Serial.read ());
    
    
    
    
      }
      
    }
    
      

    Программирование завершено.

    Давайте посмотрим на наши результаты.


    Здесь мы отправляем AT-команду, и SIM800C возвращает Ok. Затем отправьте AT + GSV и верните:
    13: 33: 20.943 -> SIMCOM_Ltd
    13: 33: 20.943 -> SIMCOM_SIM800C
    13: 33: 20.979 -> Revision: 1418B06SIM800C24

    Связь прошла успешно. Изначально задача была выполнена.

    GSM GPRS SIM800C Модем — совместим с Arduino

    Shield подключает ваш Arduino к Интернету через беспроводную сеть GPRS.Просто подключите этот модуль к своей плате Arduino, подключите SIM-карту от оператора, предлагающего покрытие GPRS, и следуйте нескольким простым инструкциям, чтобы начать управлять своим миром через Интернет. Вы также можете совершать / принимать голосовые вызовы (вам потребуется внешний динамик и микрофон) и отправлять / получать SMS-сообщения.

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

    Заявки:

    • Промышленная автоматизация.
    • Регистрация данных на основе GPRS.
    • Приложение GPRS и GPS.
    • Домашняя автоматизация.
    • Мониторинг здоровья.
    • Автоматизация сельского хозяйства.
    • Отслеживание транспортных средств.
    • Удаленный мониторинг и управление.
    • Запись прогнозов погоды на основе GPRS.
    • GSM Оповещение о безопасности на основе GPRS.
    • Удаленный терминал на базе GPRS для передачи файлов.
    • IVRS.
    • Массовая отправка.
    1. Розетка постоянного тока 12В / 2А
    2. Дополнительный винтовой разъем Блок питания 12В / 2А
    3. Контакты выбора при включении питания
    4. Аудиоразъем
    5. Шлейфовая антенна с разъемом SMA
    6. Разъем Mini USB
    7. Слот для SIM-карты
    8. Модем SIM800C
    9. Сеть, индикатор состояния и питания
    10. Общий GPIO для SIM800C

    11.Держатель SIM-карты

    12.MAX232 IC

    Размер:

    SIM800C Общие характеристики

    • Четырехдиапазонный 850/900/1800/1900 МГц
    • GPRS мультислотовый класс 12/10
    • Мобильная станция GPRS класса B
    • Соответствует GSM фазе 2/2 +: класс 4 (2 Вт при 850/900 МГц)
    , класс 1 (1 Вт при 1800/1900 МГц)
    • Размеры: 17,6 * 15,7 * 2.3 мм
    • Вес: 1,3 г
    • Управление с помощью AT-команд: (3GPP TS 27.007, 27.005 и расширенные AT-команды SIMCom)
    • Диапазон напряжения питания 3,4 ~ 4,4 В
    • Низкое энергопотребление
    • Рабочая температура: -40 ℃ ~ 85 ℃.

    Спецификации данных GPRS

    • GPRS класс 12: макс. 85,6 кбит / с (нисходящий / восходящий канал)
    • Поддержка PBCCH
    • Схемы кодирования CS 1, 2, 3, 4
    • PPP-стек
    • USSD.

    Характеристики для SMS через GSM / GPRS

    • точка-точка MO и MT
    • Сотовая рассылка SMS
    • Текст и режим PDU.

    Программные функции

    • 0710 Протокол MUX
    • Встроенный протокол TCP / UDP
    • FTP / HTTP
    • MMS
    • POP3 / SMTP
    • DTMF
    • Обнаружение помех
    • Аудиозапись
    • SSL
    • Bluetooth 3.0 (необязательно).

    Технические характеристики для голосовой связи

    • Tricodec: половинная скорость (HR), полная скорость (FR), расширенная полная скорость (EFR)
    • AMR: половинная ставка (HR), полная ставка (FR)
    • Работа в режиме громкой связи (подавление эха).
    Интерфейсы:
    • 42 контакта SMT, включая
    • Аналоговый аудиоинтерфейс
    • Резервное копирование RTC
    • Интерфейс USB
    • Последовательный интерфейс
    • Интерфейс для внешней SIM-карты 3V / 1.8V
    • GPIO
    • АЦП
    • Панель антенны GSM
    • Антенная площадка Bluetooth.

    Совместимость:

    • AT сотовый командный интерфейс.
    Сертификаты
    • CE, FCC, GCF, TA, ROHS, REACH, CTA, CCC

    Документы:

    Github

    DFRobot Shield GPRS SIM800C — Щит для Arduino Botland

    Описание

    Shield для Arduino, позволяющий отправлять текстовые сообщения в кодировке UCS2 и создавать соединения в сети GSM.Он обменивается данными через последовательный интерфейс UART (RX, TX) с помощью AT-команд.

    Предмет продажи — щиток, Ардуино можно приобрести отдельно.

    Прикладной модуль SIM9800C со встроенной антенной, обеспечивает связь через сеть GSM / GPRS. На плате находится разъем для SIM-карты, подключение дополнительных Arduino Shield допускается с помощью выводных разъемов.

    Продукт совместим с Arduino

    Образец кода и подробную информацию можно найти в руководстве пользователя.

    Соединение

    На плате есть разъемы, совместимые с Arduino Uno, Leonardo и производными. Чтобы начать работу с устройством, достаточно подключить модуль и загрузить в Arduino пример кода производителя.

    Спецификация
    • Напряжение питания: от 7 В до 12 В (обязательно)
    • Потребление тока: около 100 мА при питании 7 В
    • Модуль, управляемый AT-командами
    • Встроенный модуль GSM / GPRS SIM800C:
      • Диапазон A 850/900/1800/1900 МГц
      • GPRS мультислотовый класс 1-12
      • Стандарт GSM 2/2 +
    • GSM антенна для U.Разъем FL
    • Bluetooth 3.0
    • Светодиодные индикаторы: питание, статус работы, подключение к сети
    • Переключиться на способ связи: USB / Arduino
    • Слот для SIM-карты
    • Поддержка RTC
    • Поддержка DTMF
    • Разъем 3,5 мм для наушников
    • Штекер 3,5 мм для микрофона
    • Выдвинутая кнопка RESET Arduino
    • Размеры платы: 81 х 53 мм

    Iot | Беспроводное покрытие

    Учебное пособие по модулю Arduino GSM SIM800

    Модуль GSM SIM800 — это хороший способ подключить ваши крутые проекты Arduino к Интернету и дать ему суперспособность для связи с миром.

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

    Мне пришлось пройти через ту же проблему. Мои модули Arduino GSM (SIM800 и 900) изначально не работали, и мне пришлось часами пытаться выяснить, как заставить их работать.

    Идея этого урока — облегчить вашу жизнь, поделившись тем, что я нашел. После того, как вы закончите это руководство, вы сможете подключаться и управлять своим проектом Arduino IoT с помощью приложения Blynk.

    Необходимые позиции:

    — Arduino Uno (или Mega)

    — GSM модуль SIM800

    — Плата для выпечки и несколько перемычек

    — Активная SIM-карта

    Задача 1: Проверка работоспособности модуля GSM.
    Примечание. Убедитесь, что вы сделали это в первую очередь, чтобы установить и запустить последовательную связь между модулем Arduino и GSM.

    1. Вставьте SIM-карту в модуль GSM.

    Примечания:

    * Убедитесь, что SIM-карта активна.

    * Убедитесь, что оператор сети по-прежнему использует 2G !!!

    * Предупреждение: PAYG SIM иногда не работает. Моя изначально не работала.

    2. Подключите Arduino к GSM-модулю SIM800, как показано ниже.

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

    Фотография подключения модуля Arduino и GSM

    3.Загрузите следующий код (для включения последовательной связи модуля GSM)

    Следующий код считывает и записывает данные из модуля GSM SIM800 с помощью контактов 8 и 7 Arduino соответственно и настраивает модуль GSM на работу со скоростью 9600 бод.

    Вы можете использовать последовательный монитор Arduino IDE для связи с модулем после загрузки этого скрипта с правильным подключением.

    4. Настройте модуль GSM с помощью последовательного монитора Arduino.

    После загрузки вышеуказанной конфигурации откройте Arduino Serial Monitor и установите скорость передачи 9600 бод и возврат каретки.

    Как показано ниже, используйте AT-команды для связи с модулем GSM SIM800.

    Введите «AT» и введите. Если модуль отвечает «ОК», у вас есть последовательная связь с модулем !!!

    Затем введите «AT + CREG?» команда, чтобы проверить, зарегистрирован ли модуль GSM в сети 2G. Ответ «+ CREG: 0,1» подтверждает, что модуль зарегистрирован в сети.

    • Проблема с SIM-картой является наиболее вероятной причиной отсутствия ответа от модуля на запрос «AT + CREG?» команда.Я бы порекомендовал использовать контрактную сим-карту, так как обе мои PAYG-симки не работали.

    • Также оставьте сим-карту в модуле и попробуйте позвонить по номеру с мобильного устройства. Если звонки настраиваются (слышен звонок с мобилы) симка в норме.

    Наконец, проверьте, работает ли соединение GPRS, введя «AT + CGATT?». Ответ «+ AT + CGATT ?: 1» подтверждает, что соединение GPRS (данные) установлено.

    Если ваши ответы такие же, как показано ниже, все в порядке с вашим GSM-модулем SIM800 Arduino и sim-картой.

    проектов Интернета вещей (IoT) с использованием GSM / GPRS / GPS SIM800 Shield для Arduino

    Наша плата GSM / GPRS / GPS представляет собой экран Arduino на основе четырехдиапазонного модуля GSM / GPRS / GPS SIM808, обеспечивающего отслеживание сотовой связи и GPS в одном модуле.

    Он позволяет добавлять в приложение отслеживание местоположения, голос, текст, SMS и данные. Этот щит подходит прямо к вашему Arduino или совместимому устройству.

    В основе — мощный сотовый модуль GSM (мы используем новейшую SIM808) со встроенным GPS.Этот модуль может делать практически все.

    Модуль управляется AT-командой через UART и поддерживает логический уровень 3,3 В постоянного тока и 5 В постоянного тока.

    Чтобы быстро начать программирование модуля SIM800 в сочетании с Arduino, мы собрали несколько онлайн-ссылок, а именно:

    Быстрый запуск SIM 800 (SIM800L) с Arduino

    SIM800 — один из наиболее часто используемых модулей GSM среди любителей и сообщества Arduino.Несмотря на то, что справочник по AT-командам доступен при быстром поиске в Google, новичку непросто правильно понять и использовать Arduino с SIM800. Таким образом, в этом посте кратко описывается, как новичок может взаимодействовать с SIM800 с помощью Arduino, а в нескольких будущих публикациях мы рассмотрим несколько других реальных случаев использования, обсуждая, как SIM800 можно эффективно использовать с Arduino. Подробнее …

    Сотовый модуль SIM800 и Arduino: мощная комбинация Интернета вещей

    Интернет вещей (IoT) был тенденцией в мире технологий.Интернет вещей изменил наш подход к работе, от бытовой электроники до бизнес-процессов и производственных процессов. Физические объекты и цифровой мир сейчас связаны более чем когда-либо.

    SIM800 от SimCom и Arduino UNO — два самых популярных модуля разработки, которые помогут вам начать работу с IoT. Эти два модуля настоятельно рекомендуются из-за их популярности и поддержки со стороны сообщества любителей и разработчиков. Подробнее …

    Отправить получать SMS и звонить с помощью модуля GSM SIM800L и Arduino

    Хотите ли вы слушать, что происходит в вашем доме, находящемся в нескольких милях от вас, или активировать дождевальную систему в своем саду просто беззвучным звонком; Тогда модуль SIM800L GSM / GPRS станет для вас надежной отправной точкой для начала работы с IoT!

    Модуль SIM800L GSM / GPRS — это миниатюрный GSM-модем, который может быть интегрирован в большое количество проектов IoT.Вы можете использовать этот модуль для выполнения почти всего, что может сделать обычный сотовый телефон; SMS-сообщения, совершайте или принимайте телефонные звонки, подключаясь к Интернету через GPRS, TCP / IP и многое другое! В довершение всего, модуль поддерживает четырехдиапазонную сеть GSM / GPRS, что означает, что он работает практически в любой точке мира. Подробнее …

    Настройка GPRS с SIM800L

    SIM800L поддерживает General Packet Radio Service (GPRS) для подключения к Интернету с помощью HTTP. Модуль имеет встроенный стек TCP / IP, доступ к которому можно получить с помощью AT-команд.Это может быть очень удобно для постоянной регистрации данных в сетях с низкой пропускной способностью. Сначала мы воспользуемся AT-командами, чтобы сделать HTTP-запрос GET для получения простой страницы, а затем воспользуемся библиотекой.

    Двигаясь дальше, я также хотел бы изучить возможность запуска MQTT, который больше подходит для низкой скорости передачи данных и бесшовного ведения журнала. Итак, приступим. Подробнее …


    Легко создавайте проекты GSM и GPS, используя платформу Arduino!

    В проектах GSM и GPS С Arduino Марко Шварц с веб-сайта Open Home Automation представляет пошаговый метод создания собственных подключенных проектов с использованием платы Adafruit FONA и платформы Arduino.

    • Используйте оборудование GSM и GPS с платформой Arduino
    • Отправляйте оповещения по SMS и отслеживайте данные удаленно
    • Управляйте устройствами из любой точки мира через GPRS
    • Создайте GPS-трекер Arduino

    Получите эту книгу, чтобы приступить к созданию ваши собственные проекты GSM и GPRS с Arduino!

    Дополнительная информация .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *