Знакомый форм-фактор и новые возможности 2g-модулей

Схема проекта

Схема интерактивного автоответчика на основе платы Raspberry Pi и модуля SIM800L представлена на следующем рисунке.

Подача питания на модуль SIM800L: одна из главных составляющих успешной работы данного проекта – это обеспечение достаточного питания для модуля SIM800L. Напряжение питание для данного модуля может составлять от 3.7V до 4.2V – хорошо подходит для питания от литий-полимерных батарей (Li-po batteries). Оптимальное напряжение питания для модуля составляет примерно 4V. В схеме мы использовали понижающий конвертер (Buck converter) LM2596 для преобразования напряжения 12V 2A с выхода адаптера питания в напряжение питания 4V, которое требуется модулю SIM800L. Также убедитесь в том, что вы используете достаточно толстые и надежные провода для соединения понижающего конвертера и модуля SIM800L (чтобы по ним мог протекать достаточно большой ток).

Если питание будет недостаточно или соединения в этом месте будут плохие, то модуль SIM800L может самопроизвольно сбрасываться и передавать неправильные данные по последовательной связи. Поэтому убедитесь в том, что модуль SIM800L подключен к «правильному» адаптеру 12V 2A достаточно толстыми проводами с небольшим сопротивлением.

Последовательная связь между модулем SIM800L и платой Raspberry Pi: если вы посмотрите предыдущие проекты на нашем сайте с использованием GSM модулей, то вы увидите, что для взаимодействия с данными модулями (в том числе и с SIM800L) необходимы так называемые AT команды. Данные команды используются для совершения/приема звонков, передачи/приема сообщений, обнаружения нажатия клавиш и т.д. В данном проекте мы будем формировать AT команды с помощью языка Python на Raspberry Pi. Для этого в нашем проекте используется конвертер USB to TTL – чтобы подключить контакты Rx и TX модуля SIM800L к USB порту платы Raspberry Pi.

Аудио вход модуля SIM800L от платы Raspberry Pi: модуль SIM800L имеет в своем контакте микрофонный вход – контакты MIC+ и MIC- на модуле. При совершении звонка любой аудио сигнал, подаваемый на эти контакты, будет воспроизводиться в телефоне корреспондента, которому мы звоним. Обычно к этим контактам подключается микрофон, но в нашем проекте нам необходимо воспроизводить заранее записанный голос с платы Raspberry Pi. Поэтому мы будем подключать к разъему 3.5mm jack платы аудио кабель, нам необходимо конвертировать этот сигнал в аудио сигнал микрофонного уровня чтобы иметь возможность принимать его на GSM. Для этой цели можно использовать какое-нибудь профессиональное устройство, применяемое в звукозаписи, но автор проекта соединил эти контакты непосредственным образом и просто уменьшил уровень звука в плате Raspberry Pi на 2 единицы – он на практике проверил, что данное решение работает вполне хорошо.

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

Примечание: напряжение на выходе понижающего конвертера LM2596 может регулироваться в определенных пределах, поэтому прежде чем подключать к нему модуль SIM800L отрегулируйте напряжение на выходе конвертера LM2596 с помощью встроенного в него потенциометра до величины 4V, иначе, если напряжение на его выходе окажется более чем 4.2V, это может необратимо повредить модуль LM2596.

Если вы дошли до этого момента, то подайте питание на конструкцию проекта и вставьте SIM карту в модуль. Убедитесь в том, что вы вставили SIM карту в правильной ориентации и корректно закрепили антенну модуля. Если все работает так, как надо, то встроенный светодиод на модуле SIM800L должен начать мигать каждые 3 секунды. Это будет означать что модуль SIM800L готов к установлению соединения с сетью.

Класс излучения и антенны

К выбору Bluetooth-антенны для разрабатываемого устройства стоит подойти столь же серьезно, как и к выбору GSM-антенны. Прежде всего, следует определиться с максимальным расстоянием, на котором предполагается связываться посредством этой технологии с другими устройствами. Класс мощности передатчиков Bluetooth модулей SIM800x соответствует приблизительно значению 1,5, при этом их максимальная выходная мощность составляет 10 дБм (номинальное значение — 7,5 дБм). То есть максимальная дальность бесперебойной связи, при отсутствии препятствий в зоне прямой видимости и использовании антенн с круговой диаграммой направленности, составит около 25 м. Если установление связи на предельных значениях этой дистанции не предусматривается, можно использовать решение, в котором антенна разведена непосредственно на плате. Если же требуется связь на расстоянии более 25 м, рекомендуется использовать направленные антенны, имеющие заметно более высокие коэффициенты усиления излучаемого сигнала.

Реализация

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

Возможно, вам также будет интересно

В статье кратко рассмотрены беспроводные модемы литовской фирмы Teltonika, использующие помимо всем привычной технологии передачи данных GSM/GPRS относительно новый стандарт EDGE.

Авторы статьи предлагают ответ на вопрос, как быстро и с минимальными трудозатратами произвести переход на более совершенную и бюджетную серию 2G-модулей — SIM800, а именно SIM800/SIM800F/SIM800C, предлагаемую дистрибьютором МТ-Систем в качестве фокусной замены модемов SIM900R. Материал будет полезен специалистам, следящим за тенденциями рынка беспроводных технологий для M2M-решений, разработчи…

Компания Silicon Labs анонсировала новое поколение беспроводных мультипротокольных микроконтроллеров EFR32BG22, реализующих стандарты Bluetooth 5.2 и Bluetooth mesh.
EFR32BG22 поддерживают новые возможности стандарта Bluetooth 5.2, включая динамический контроль излучаемой мощности и функции определения местоположения Angle of Arrival и Angle of Departure.
Микросхемы EFR32BG22 отличаются …

Скетчи для работы с модулем GSM

Отправка СМС на примере SIM900

Перед тем, как отправить сообщение, нужно настроить модуль. В первую очередь нужно перевести в текстовый формат передаваемое сообщение. Для этого существует команда AT+CMGF=1. Нужно перевести кодировку на GSM командой AT+CSCS=»GSM». Эта кодировка наиболее удобная, так как там символы представлены в ASCII коде, который легко понимает компилятор.

Затем нужно набрать смс-сообщение. Для этого посылается команда с номером абонента AT+CMGS=»+79XXXXXXXXX» r, в ответ предлагается набрать текст смс. Нужно выполнить отправку сообщения. По окончании требуется отправить код комбинации  Ctrl+Z, модуль позволит отправку текста адресату. Когда сообщение будет отправлено, вернется OK.

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

Получение смс. Для чтения смс-сообщения используется команда AT + CNMI = 2,2,0,0,0. Когда на модуль придет текстовое сообщение, он отправит в последовательный порт +CMTI: «SM»,2 (в данном случае 2 – порядковый номер сообщения). Чтобы его прочитать, нужно отправить команду AT+CMGR=2.

Прием голосового звонка. В первую очередь для разговора нужно подключить к модулю динамик и микрофон. При получении звонка будет показан номер, с которого он совершен. Для осуществления работы нужно включить библиотеку GSM:

#include <GSM.h>

Если сим-карта заблокирована, нужно ввести ее пин-код. Если пин-код не требуется, это поле нужно оставить пустым.

#define PINNUMBER “”

В setup() должна быть произведена инициализация передачи данных на компьютер. Следующим шагом будет создание локальной переменной, чтобы отследить статус подключения к сети. Скетч не будет запущен, пока сим-карта не подключена к сети.

boolean notConnected = true;

С помощью функции gsmAccess.begin() происходит подключение к сети. При установлении соединения вернется значение GSM_READY.

vcs.hangCall(); – функция, показывающая, что модем готов принимать звонки.

getvoiceCallStatus() – определяет статус скетча. Если кто-то звонит, она возвращает значение RECEIVINGCALL. Для записи номера нужно воспользоваться функцией retrieveCallingNumber(). Когда будет совершен ответ на звонок, вернется TALKING. Затем скетч будет ждать символа новой строки, чтобы прервать разговор.

Установить GPRS-соединение и отправить данные на удаленный сервер

Сначала нужно установить библиотеку SoftwareSerial, которая позволяет обеспечивать последовательную передачу информации и связать GSM-модуль и микроконтроллер Ардуино.

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

AT+SAPBR=1,1 – открытие Carrier.

Следующие три команды связаны с установкой настроек подключения к сети.

AT+SAPBR=3,1,\”APN\”,\”internet.mts.ru\” – выбор оператора mts, имя точки доступа.

AT+SAPBR=3,1,\”USER\”,\” mts \” – выбор пользователя mts.

AT+SAPBR=3,1,\”PWD\”,\” mts \”

AT+SAPBR=1,1 – установка соединения.

AT+HTTPINIT – инициализация http.

AT+HTTPPARA=”URL”, – URL адрес.

AT+HTTPREAD – ожидание ответа.

AT+HTTPTERM – остановка http.

Если все выполнено правильно, в мониторе порта будут появляться строчки с АТ командами. Если отсутствует связь с модемом, то будет показывать по одной строке. При успешной установке GPRS-соединения  на модуле начнет мигать светодиод.

Arduino Code – Receiving Call

Receiving call doesn’t require any special code; you just have to keep listening to the SIM800L module. Yet, you may find this sketch very useful, when you need to trigger an action when a call from specific phone number is received.

Incoming call is usually indicated by ‘RING’ on serial monitor followed by phone number and caller ID. To accept/hang a call following AT commands are used:

ATA – Accepts incoming call.

ATH – Hangs up the call. On hanging up the call it sends NO CARRIER on the serial monitor indicating call couldn’t connect.

Below output on serial monitor shows call received by SIM800L GSM module.

Ошибка +CSQ: 0,0

Если команда получения уровня сигнала AT+CSQ возвращает +CSQ: 0,0, то наверняка будут проблемы с регистрацией в сети. Команда AT+CREG? вернет +CREG: 0,2 вместо +CREG: 0,1. Какие действия для разрешения ошибки:

Проверяем в другом устройстве, что SIM-ка корректно регистрируется в сети.
Вставляем в SIM800 в соответствии с пиктограммой на слоте и проверяем командой AT+CPIN, что SIM карта определилась корректно.
Командой AT+CBAND? проверяем, что SIM800 настроен на все диапазоны частот

На моем модуле, когда он нормально регистрируется в сети Билайна, результат: DCS_MODE,ALL_BANDS.

Основной момент на который обратить внимание!!! Не зависимо от того, какой ток держит блок питания или DC-DC step-down модуль, хоть 3A и вы в этом лично убеждались, попробуйте запустить SIM800 от батареи. Возьмите аккумулятор от мобильного телефона на 3,7 В или Li-Ion элемент 18650 на 3,7 V и присоедините плюс батареи к пину V_BAT , а минус — на GND.
Спустя некорое время проверяем уровень сигнала AT+CSQ

Скорее всего проблема с регистрацией разрешится.

Все GSM модули, не важно, дорогой SIM800 или дешевый M590 КРАЙНЕ чувствительны к качеству блока питания. И дело не только в токе, но и в пульсациях

Я запитывал SIM800C от разных БП с макисмальными токами до 2,1 A и он нормально включался, отвечал на AT команды, но не регистрировался в сети. После подключения на батарею TR 18650 сеть сразу нашлась.

Ниже приведены вырезки из design guide для модулей SIM800 и M590. Они почти сходятся в блоке фильтрации. Нужно ставить керамические конденсаторы на 10 pF и 33 pF (у M590 на 100 pF) для сглаживания высокочастотных пульсаций и электролитические хотя-бы на 100 uF, а лучше на 1000 uF.

Фильтры на блок питания для SIM800 Фильтры на блок питания для Neoway M590

Считываем данные с сервера в Arduino

После завершения процесс отладки записи статуса вкл/выкл насоса в файл pomidor.txt можно считывать данные в Arduino. Напишем функцию чтения данных с сервера (Листинг 7).

Листинг 7. Функция чтения данных с сервера.

В строке adress_site указываем адрес своего сайта форматом http://site.ru/. В строке adress_txt указываем путь к txt файлу.

Прочитаем статус вкл/выкл насоса из файла txt/pomidor.txt, отобразим значение на терминале и на выводе D5 платы Arduino (Листинг 8).

Листинг 8. Программа формирования логического уровня вывода D5 в зависимости от статуса насоса.

Пример отображения при нажатии кнопки включении насоса показан на Рисунке 12.

Рисунок 12. Пример отображения при нажатии кнопки «Вкл» насоса.

Пример реализации подключения gsm модуля sim800l к мк esp8266

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

Если уменьшение частоты световых сигналов не произошло, то стоит, при помощи АТ-команд, удостовериться, воспринял ли вообще sim800I сеть вашего мобильного оператора и нет ли никакой ошибки. Также проверьте правильность распиновки и как установлена СИМ-карта с антенной, ошибка может быть и в них.

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

Полезные ссылки

  • Код для ESP32 для отправки AT комманд на SIM800.
  • Hardware design manual SIM800 с сайта производителя (Eng).
  • Схема модуля SIM800C (комментарии на китайском).
  • Документация по AT коммандам SIM800 здесь.
  • https://simcom.ee/documents/SIM800x/SIM800_Series_download_Tools_Customer_v1.19.rar — программатор SIM800 модулей на сайте производителя.
  • Отправка через HTTP GET.
  • Отправка данных на ThingSpeak через HTTP GET.
  • Подробное описание SIM800L (Rus).
  • Подключение модуля SIM800C (Eng).
  • Подключение модуля SIM800C (Eng).
  • Подключение модуля SIM800C (Rus).
  • Подключение к Arduino SIM800 (Eng).
  • AT commands Neoway M590 (Eng).
  • Hardware design manual Neoway M590 (Eng).
  • Распайка модуля Neoway M590
  • Видео по пайке модуля Neoway M590.
  • Видео по сборке, подключению и тестированию Neoway M590.
  • Видео по подключению Neoway M590 к ПК.
  • Обстоятельное описание Neoway M590 (Rus).
  • Подключение Neoway M590 к Интернет
  • https://www.instructables.com/id/GSMGPRS-Module-DIY-Kit/
  • Распайка модуля Neoway M590 mini
  • Видео по распайке модуля Neoway M590 mini
  • Распайка и подключение Neoway M590 mini.

Схема SIM800C (комментарии на китайском)Скачать

SIM800C board description V2.0 (на китайском)Скачать

Типовые схемы

Рассмотрим примеры подключения указанных модулей к контроллерам Arduino.

Принцип дальнейших действий во всех случаях общий: GPRS модуль сопрягается с материнской платой главного контроллера. Для правильного выполнения подключения следует изучить инструкцию к используемой модели Arduino, выяснить распиновку на ней и на компоненте сотовой связи. Далее на собранную систему заводится питание. Когда устройство включено, его переходником USB-UART подключают к ПК и создают программу в среде Arduino IDE или другом удобном пакете ПО разработчика.

Рассмотрим несколько примеров сборки аппаратной части.

Arduino Uno и контроллер SIM800L

Поскольку напряжение SIM800L невелико, понадобится преобразователь.

Изучим распиновку устройства:

Последовательность действий:

  • подключаем плату UТO к компьютеру;
  • к ней подводится питание 12 В через конвертер;
  • минус источника выводится на контакт GND Ардуино, а GND — на контакт минуса конвертера;
  • плюс ИП идет к плюсу преобразователя;
  • плюс конвертера — к плюсу блока GSM;
  • минус с «земли» преобразователя на GND сотового блока;
  • RXT и TXD блока на 2, 3 пины микроконтроллера UNO соответственно.

К цифровым выводам можно подключать и другие устройства, объединяя, при необходимости, несколько дополнительных модулей и плат.

UNO и A6

Здесь напряжение питания стандартное, и конвертер в схему не включается. Платы соединяются напрямую.

Общая схема распиновки:

Принцип соединения контактов:

  • UART_RXD выводится на TX 1 UNO;
  • UART_TXD — на RX 0;
  • GND соединяется с GND на GSM-блоке;
  • пин электропитания VCC0 c кнопкой включения PWR-KEY.

Шилд GSM SIM900 и контроллер Arduino Mega

Пиковая сила тока при активации устройства может достигать 2 А, в связи с чем напрямую питание подключать нежелательно. Перед соединением плат нужно поставить SIM-карту в предназначенный для нее слот и установить TX и RX джамперы:

Последовательность дальнейших действий:

  • желтый провод (TX) объединяется с TX Arduino;
  • зеленым соединяются контакты RX;
  • GND выводится на «землю» микроконтроллера.

Проверить собранный гаджет можно следующим экспериментом:

  • соединить GND и RESET главного микроконтроллера;
  • вставить в разъем сим-карту;
  • подать питание на модуль GSM;
  • подключить центральную плату Arduino к ПК через порт USB, нажать кнопку ON;
  • Если все собрано верно, красный светодиод загорится, а зеленый станет мигать.

Тестирование работы автоответчика

Соберите схему проекта, приведенную выше в статье, убедитесь в подаче корректного напряжения питания на плату Raspberry Pi и GSM модуль.

Перед запуском программы убедитесь в том, что у вас в коде программы указан правильный COM порт – в нашем случае это “/dev/ttyUSB0”. Затем убедитесь в том, что у вас аудио сигнал с платы будет транслироваться на AV jack – это можно сделать, сделав клик правой кнопкой мыши на иконке громкоговорителя (speaker icon). Также убедитесь в том, что уровень звука установлен на low.

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

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

Вы можете изменить аудиофайлы, используемые в проекте, на свои. Также вы можете изменить тексты всех передаваемых сообщений на свой выбор. Более подробно работу проекта вы можете посмотреть на видео, приведенном в конце статьи.

Bluetooth-протоколы и профили модулей 800-й серии

Bluetooth имеет многоуровневую архитектуру, состоящую из основного протокола, протоколов замены кабеля, протоколов управления телефонией и заимствованных протоколов. Фактически, спецификация Bluetooth определяет только пять уровней: физический (RF), базовый (baseband, комбинация аппаратных и программных функций), протоколы управления каналом LMP (Link Management Protocol — аутентификация, инициализация соединений и шифрование) и L2CAP (Logical Link Control and Adaptation Protocol — отвечает за процедуры формирования и сборки пакетов), сетевой уровень и уровень приложений (профилей). Профилем называется набор возможностей и/или функций устройства, реализуемых посредством Bluetooth. Доступ клиента к устройству предоставляется на уровне профилей (рис. 1).

Рис. 1. Стек протоколов Bluetooth и доступ к нему со стороны клиентских устройств

К популярным профилям, наиболее широко востребованным в самых различных приложениях и поддерживаемым (или поддержка которых может быть реализована) модулями 800-й серии, относятся:

  • SPP (Serial Port Profile) — профиль, позволяющий осуществить замену стандартного порта беспроводным. SPP является базовым для DUN, FAX, HSP и AVRCP.
  • OPP (Object Push Profile) — базовый профиль передачи данных с инициацией со стороны отправляющего устройства («клиент»), предоставляющий возможность отправки и получения изображений, файлов и пр.
  • HFP (Hands-Free Profile) (AG and HF roles) — профиль передачи одноканального аудио. Используется для связи телефона и беспроводной гарнитуры.
  • A2DP (Advanced Audio Distribution Profile) — передача двухканального потока аудио к любому беспроводному устройству. Используется, в основном, при подключении беспроводной гарнитуры к удаленному устройству.
  • AVRCP (Audio/Video Remote Control Profile) позволяет управлять медиафункционалом бытового оборудования (ТВ, аудиоустройства, смартфоны, планшеты и т. д.).
  • DUN (Dial-up Networking Profile) — стандартный профиль для предоставления доступа в Интернет. Базируется на SPP, включает в себя команды PPP и AT, определенные в спецификации ETSI 07.07.
  • PBAP (Phone Book Access Profile) позволяет получить или отправить данные из телефонной записной книги устройств/устройства.

Чтобы задействовать тот или иной профиль, необходимо установить сопряжение между устройствами (если оно не было установлено ранее), после чего следует установить соединение по требуемому профилю и начать работу. Встречная работа с устройствами Bluetooth 4.0 LE (Low Energy) модулями 800-й серии не поддерживается.

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

Первым делом необходимо провести инициализацию и первичную настройку модуля SIM800L. Для этого в теле setup() вызываем подпрограмму init_GSM(), которая перезагружает модуль и последовательно отправляет команды:

AT
ATE0
AT+GSMBUSY=0
AT+CPAS
AT+CREG?
AT+CSQ
AT+CBC
AT+CUSD=1,»*111#»

Разберем назначение каждой команды:

  • AT – проверяем готовность модуля в приему команд.
  • ATE0 – отключаем режим ЭХО.
  • AT+GSMBUSY=0 – запрещаем входящие звонки.
  • AT+CPAS – проверяем готовностью и текущее состояние модуля.
  • AT+CREG? – проверка регистрации в сети.
  • AT+CSQ – проверка уровня сигнала.
  • AT+CBC – проверяем питание.
  • AT+CUSD=1,»*111#» – проверяем баланс SIM-карты.

Каждую команду необходимо проверять на наличие положительного ответа «ОК», в противном случае нужно заново отправить команду и дождаться нужного ответа. Как правило, при первом включении команда AT+CPAS с первого раза не дает ответ «ОК», обычно готовность появляется после 2-3 попыток.

На Рисунке 5 показан процесс выполнения подпрограммы init_GSM.

Рисунок 5. Процесс выполнения подпрограммы init_GSM.

На Листинге 1 показан пример обработки команды AT+CPAS.

Листинг 1. Программа обработки команды AT+CPAS.

Во время ответа от модуля в cycle_for() происходит сравнение и установка значения в bit_ok. Если значение равняется 1, то модуль вернул «ОК», при ответе 2 – модуль возвращает «Error». Если положительно ответа нет, то через 1 секунду повторяем отправку i раз.

Hardware Overview of SIM800L GSM/GPRS module

At the heart of the module is a SIM800L GSM cellular chip from SimCom. The operating voltage of the chip is from 3.4V to 4.4V, which makes it an ideal candidate for direct LiPo battery supply. This makes it a good choice for embedding into projects without a lot of space.

All the necessary data pins of SIM800L GSM chip are broken out to a 0.1″ pitch headers. This includes pins required for communication with a microcontroller over UART. The module supports baud rate from 1200bps to 115200bps with Auto-Baud detection.

The module needs an external antenna to connect to a network. The module usually comes with a Helical Antenna and solders directly to NET pin on PCB. The board also has a U.FL connector facility in case you want to keep the antenna away from the board.

There’s a SIM socket on the back! Any activated, 2G micro SIM card would work perfectly. Correct direction for inserting SIM card is normally engraved on the surface of the SIM socket.

This module measures only 1 inch² but packs a surprising amount of features into its little frame. Some of them are listed below:

  • Supports Quad-band: GSM850, EGSM900, DCS1800 and PCS1900
  • Connect onto any global GSM network with any 2G SIM
  • Make and receive voice calls using an external 8Ω speaker & electret microphone
  • Send and receive SMS messages
  • Send and receive GPRS data (TCP/IP, HTTP, etc.)
  • Scan and receive FM radio broadcasts
  • Transmit Power:
  • Serial-based AT Command Set
  • FL connectors for cell antennae
  • Accepts Micro SIM Card
Добавить комментарий

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

Adblock
detector