Модуль SIM868E

Модуль SIM868E: использование возможностей Bluetooth Low Energy

№ 03’2018
PDF версия
В прошлом году продуктовая линейка компании SIMCom Wireless Solutions, ведущего производителя ОЕМ-модулей стандартов GSM, 3G, LTE, GPS/ГЛОНАСС, пополнилась комбинированным решением, совмещающим функции модуля сотовой связи и навигации (GSM+GNSS) — SIM868E. Одной из ключевых особенностей данного модуля является одновременная поддержка технологий Bluetooth Low Energy (Bluetooth LE, BLE) и Bluetooth Classic. На момент выхода модуля, была реализована только серверная часть BLE. Затем программное обеспечение модуля было доработано, и теперь данный стек поддерживает все возможности, предоставляемые технологией Bluetooth LE. В данной статье будет рассмотрена клиентская часть стека BLE данного модуля и практические аспекты его применения, которые будут полезны специалистам и разработчикам устройств транспортной, промышленной телеметрии, систем охраны, автоматизации и передачи данных.

Введение

В текущем программном обеспечении, модуль SIM868E способен работать в сетях GSM одновременно по двум сим-картам (Dual Sim Dual Standby), принимать навигационные сигналы GPS/ГЛОНАСС и других систем, а также задействовать стеки Bluetooth Classic и Bluetooth Low Energy. Обзор основных возможностей SIM868Eбыл приведен в статье [3]. Там же подробно рассмотрена сама технология BLE, реализация пользовательских профилей, обзор встроенных, а также процесс взаимодействия с другими устройствами.

В данной статье рассмотрена клиентская часть: сканирование, подключение, взаимодействие с характеристиками и дескрипторами других устройств. Подробное описание всех используемых команд содержится в [4]. В качестве GATT-сервера в описанных примерах использовались приложения BLE Scanner[5], Light Blue[6], а также сам модуль SIM868E[3].

 

Сканирование адвертов

Процесс сканирования позволяет получить информацию об окружающих устройствах: mac-адрес, транслируемую информацию (advert), мощность сигнала.

Пример характеристик при обнаружении iBeacon-маяка сканируемых адвертов

Рис. 1. Пример характеристик при обнаружении iBeacon-маяка сканируемых адвертов

Для примера (рис. 1) рассмотрим обнаружение iBeacon-маяка со следующими параметрами:

AT+BTPOWER=1 //включение Bluetooth
OK
AT+BLECREG //регистрация GATT-клиента
+BLECREG: 1,ABCDEF50 //1 — id клиента, AVCDEF0 — имя
OK
AT+BLESCAN=1,1 //запуск сканирования: 1 — id клиента, 1 — начать сканирование
OK
+BLESCANRST: ABCDEF50,1,26,1e:dd:82:4b:74:a8,…
….
+BLESCANRST: ABCDEF50,10,69,50:2d:ca:b6:38:dd,02011A1AFF4C000215B0702980A295A8ABF734031A98A512DE045708AEC8 //ABCDEF50 — имя GATT-клиента, 10 — индекс при сканировании, 69 — RSSI, 50:2d:.. — MAC адрес, 02011A… — транслируемая информация (advertising data)
AT+BLESCAN=1,0 //прекращение сканирования (0)
+BLESCAN: 0,0,ABCDEF50
OK

Данный режим может быть полезен для считывания информации с датчиков без подключения путем анализа транслируемой в эфир (advertising data). Другое возможное применение — это ориентация в пространстве, на основе одного или нескольких датчиков благодаря показателю мощности сигнала — RSSI (<RSSI>–127=<значение в дБм>, т.е. в указанном примере –58 дБм).

Также сканирование необходимо как обязательный первый этап перед подключением, т.к. для дальнейших операций используется индекс, полученный при сканировании (10 для iBeacon’a).

 

Соединение и запись в характеристику

Создадим профиль и добавим к нему характеристику для записи (рис. 2, 3).

Созданный профиль

Рис. 2. Созданный профиль

Профиль с добавленной характеристикой

Рис. 3. Профиль с добавленной характеристикой

Начальное значение — «0x0000»; характеристика доступна только для записи. В данном примере будет показана запись в характеристику без подтверждения (write without response). Для записи с подтверждением (write) требуется соответствующее значение для команды AT+BLECWC и подтверждение на стороне GATT-сервера.

Со стороны модуля SIM868E алгоритм следующий:

AT+BTPOWER=1
OK
AT+BLECREG
+BLECREG: 1,ABCDEF50 //1 — id клиента, AVCDEF0 — имя
OK
AT+BLESCAN=1,1 //запускаем сканирование
OK
+BLESCANRST: ABCDEF50,1,70,6b:fc:af:75:4d:7b,02011A030310100B09424C4520446576696365
…
+BLESCANRST: ABCDEF50,4,25,…
AT+BLESCAN=1,0 //останавливаем сканирование
+BLESCAN: 0,0,ABCDEF50
OK
AT+BLECCON=1,1,1 //соединение с удаленной стороной: 1 — id клиента, 1 — индекс при сканировании (самое первое устройство), 1 — тип соединения (прямое)
OK
+BLECCON: 1,ABCDEF50,6b:fc:af:75:4d:7b,1 //1 — соединение установлено, далее: имя клиента, mac-адрес, id соединения (1)
AT+BLECSS=1,1 //получение сервисов в профиле устройства: 1 — id клиента, 1 —id соединения
+BLECSS: ABCDEF50,1,1,0018,0,1
+BLECSS: ABCDEF50,2,1,0118,0,1
+BLECSS: ABCDEF50,3,1,6643AE107948F8A59145B4BB781E61D0,0,1
+BLECSS: ABCDEF50,4,1,AE045DDC43D3909342456749E080A49F,0,1
+BLECSS: ABCDEF50,5,1,0F18,0,1
+BLECSS: ABCDEF50,6,1,0518,0,1
+BLECSS: ABCDEF50,7,1,0A18,0,1
+BLECSS: ABCDEF50,8,1,D0002D121E4B0FA4994ECEB531F40579,0,1
+BLECSS: ABCDEF50,9,1,DCF855AD02C5F48E3A43360F2B50D389,0,1
+BLECSS: ABCDEF50,10,1,5BF1A927902AEC89C3411FE7D439940C,0,1 //имя GATT-клиента, 10 — порядковый номер сервиса в профиле, 1 — id соединения, id сервиса (CUSTOM SERVICE в настройках профиля сервера), номер для этого UUID-сервиса, 1 — тип сервиса: основной
OK
AT+BLECGC=10 //получение информации о характеристике
+BLECGC: 0,ABCDEF50,1,10,1,9D539DBE320748B8954F7A4DAA8BC23D,0,140 //запрос информации о характеристике: 0 — информация получена, имя GATT-клиента, 1 — id соединения, 10 — порядковый номер сервиса, 1 — номер характеристики, id характеристики (в скриншоте из приложения — вторая строка «CUSTOM SERVICE»), номер для этой UUID характеристики, атрибуты данной характеристики (это число — доступные возможности: запись, расширенные свойства и т. д.)
OK
AT+BLECWC=10,1,0,1a2b3c,1 //запись в характеристику: 10 — порядковый номер сервиса, 1 — номер UUID-характеристики, 0 — тип аутентификации (нет), значение, 1 — тип записи — запись без подтверждения
OK
+BLECWC: 0,ABCDEF50,1,10,1 //подтверждение: 0 — успешно записано, имя GATT-клиента, id соединения, порядковый номер сервиса, номер UUID-характеристики
AT+BLECDISC=1,1 //команда на разрыв соединения, id клиента, id соединения
OK
+BLECCON: 0,ABCDEF50,6b:fc:af:75:4d:7b,1 //0 — соединение разорвано, имя клиента, mac-адрес, id соединения

Сразу после подачи AT+BECWCзначение на удаленной стороне изменилось на соответствующее (рис. 4).

Значение на удаленной стороне изменилось после подачи AT+BECWC

Рис. 4. Значение на удаленной стороне изменилось после подачи AT+BECWC

 

Чтение характеристики                                                                                                                  

Создадим характеристику внутри сервиса с атрибутом чтения, значение — «0x223322» (рис. 5).

Характеристика внутри сервиса с атрибутом чтения

Рис. 5. Характеристика внутри сервиса с атрибутом чтения

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

AT+BLECCON=1,1,1 //подключение
OK
+BLECCON: 1,ABCDEF50,7d:ef:ad:c0:02:03,1
AT+BLECSS =1,1 //получение списка сервисов
+BLECSS: ABCDEF50,1,1,0018,0,1
+BLECSS: ABCDEF50,2,1,0118,0,1
+BLECSS: ABCDEF50,3,1,6643AE107948F8A59145B4BB781E61D0,0,1
+BLECSS: ABCDEF50,4,1,AE045DDC43D3909342456749E080A49F,0,1
+BLECSS: ABCDEF50,5,1,0F18,0,1
+BLECSS: ABCDEF50,6,1,0518,0,1
+BLECSS: ABCDEF50,7,1,0A18,0,1
+BLECSS: ABCDEF50,8,1,D0002D121E4B0FA4994ECEB531F40579,0,1
+BLECSS: ABCDEF50,9,1,DCF855AD02C5F48E3A43360F2B50D389,0,1
+BLECSS: ABCDEF50,10,1,ABFC554CD54AFA9D8B4C6C648BE6C156,0,1
OK
AT+BLECGC=10 //информация о характеристике
+BLECGC: 0,ABCDEF50,1,10,1,9630AD29E03050A7E044362DD4D123CD,0,2 //атрибут 2 в конце — только чтение
OK
AT+BLECRC=10,1,0 //чтение характеристики: порядковый номер сервиса, номер UUID-характеристики, тип аутентификации (0 — нет)
OK
+BLECRC: 0,ABCDEF50,1,10,1,223322 //результат: 0 — успешно прочитана, имя GATT-клиента, id соединения, порядковый номер сервиса, номер UUID-характеристики, значение
//Меняем значение в характеристике на удаленном устройстве
AT+BLECRC=10,1,0 //считываем заново
OK
+BLECRC: 0,ABCDEF50,1,10,1,001122 //значение изменилось на 001122
AT+BLECDISC=1,1 //разрываем соединение
OK
+BLECCON: 0,ABCDEF50,7d:ef:ad:c0:02:03,1

 

Получение нотификаций и работа с дескрипторами

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

Рассмотрим пример для сервиса, где есть атрибут нотификации:

AT+BLECCON=1,1,1 //подключение
OK
+BLECCON: 1,ABCDEF50,7d:ef:ad:c0:02:03,1
AT+BLECSS =1,1 //получение списка сервисов
+BLECSS: …
OK
AT+BLECRN=1,1,1,10,1 //регистрация запроса на нотификацию: 1 — регистрация, id клиента, id соединения, порядковый номер сервиса, номер UUID-характеристики
+BLECRN: 1,0,ABCDEF50,1,10,1 //1 — регистрация, 0 — подтверждение, имя GATT-клиента, id соединения, порядковый номер сервиса, номер UUID-характеристики
OK
//Внесены изменения в характеристику
+BLECN: ABCDEF50,1,10,1,1,12345 //имя GATT-клиента, id соединения, порядковый номер сервиса, номер UUID-характеристики, 1 — тип (нотификация), измененное значение
Для работы с дескрипторами существуют отдельные команды — для записи и чтения:
AT+BLECWD=1,1,10,1,1,0,121212,1 //id клиента, id соединения, порядковый номер сервиса, номер UUID-характеристики, номер дескриптора, аутентификация (0 — нет), записанное значение, тип записи (1 — без подтверждения)
OK
+BLECWD: 0,ABCDEF50,1,10,1,1 //0 — успешно записан
AT+BLECRD=1,1,10,1,1,0 //запрос на чтение: id клиента, id соединения, порядковый номер сервиса, номер UUID-характеристики, номер дескриптора, аутентификация (0 — нет)
OK
+BLECRD: 0, ABCDEF50,1,10,1,1,121212 //0 — дескриптор успешно прочитан, последний параметр — значение

 

Заключение

Модуль SIM868E, выполненный на обновленном чипсете от MediaTek, предоставляет широкие возможности для производителей М2М-оборудования. Наличие полноценного BLE-стека позволяет реализовать на базе модуля удобный и энергоэффективный обмен данными. В качестве возможных применений BLE может использоваться для навигации внутри помещений, идентификации пользователей, контроля доступа, мобильных приложений и считывания показаний беспроводных датчиков уровня топлива. Выбирая SIM868E, пользователь получает универсальное и доступное решение, сочетающее модуль сотовой связи, навигации и Bluetooth в едином корпусе.

Литература

1. www.simcomm2m.com.
2. www.mt-system.ru.
3. Новинский Д. Модуль SIM868E: обзор новых возможностей комбинированного решения // Беспроводные технологии. № 3. 2017.
4. SIM800 Series Bluetooth Application Note.
5. www.bluepixeltech.com.
6. www.punchthrough.com/blog.

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

Ваш адрес email не будет опубликован.