Pull to refresh

Всё становится лучше, когда есть Bluetooth

C *

Давно хотел написать про Bluetooth LE (4.0-4.1) кит (CY8CKIT-042-BLE) от Cypress Semiconductor.
Вообще-то планы были написать подробнее другой кит, поверхностный обзор которого я публиковал ранее. Но так и не собрался с мыслями, а тут появилось кое-что более интересное.

Процесс заказа и доставки я описывать не стану, во-первых, это есть в старой статье, во-вторых каких-либо сюрпризов не было.
Итак, я попробую в короткой форме описать сам кит и примеры его использования.

Аппаратная часть


Толковой фотографии у меня не получилось, ограничусь картинкой из пресс-релиза:

Комплект поставки:
  • Материнская плата
  • Плата (модуль) с CY8CKIT-142 PSoC 4 BLE
  • Плата (модуль) с CY5671 PRoC BLE
  • USB-BLE донгл (о нём подробнее далее)
  • Набор кабелей
  • Батарейка
  • Инструкця
  • USB кабель

То есть в комплекте два модуля с похожими, но всё-таки разными чипами.
Стоит отметить, что донгл может быть использован только с ПО от Cypress, средствами ОС с ним не сделать, ну кроме как использовать каким-то образом UART.
Каждый из модулей может быть как использован как самостоятельно, так и использоваться вместе с материнской платой, которая является и программатором.

CY8CKIT-142 PSoC 4 BLE

Этот модуль интересен тем, что тут больше аналоговой и цифровой периферии (выдержки из пресс-релиза):
  • 48-MHz ARM Cortex-M0 CPU
  • 128 KB Flash and 16 KB SRAM
  • Bluetooth LE (Smart) connectivity with Bluetooth 4.1 (2.4-GHz Bluetooth LE radio; -92-dBm Rx sensitivity, up to +3-dBm Tx power)
  • Programmable analog (4 x Op-amps; 1 x 12-bit, 1-Msps SAR ADC; 2 x Low-Power Comparators; 1 x Cypress CapSense touch controller with SmartSense Auto-Tuning)
  • Programmable digital (4 x universal digital blocks; 4 x 16-bit configurable Timer/Counter/PWM blocks; 2 x configurable serial communication blocks)
  • Flexible Low Power Modes: (1.3-μA Deep-Sleep Current; 150-nA Hibernate Current; 60-nA Stop Current
  • Wide Operating Range 1.7 – 5.5 V (Radio operational 1.9 V onwards)
  • 56-QFN (7 x 7 x 0.6 mm), 68-ball WLCSP (3.9 x 3.5 x 0.55 mm)

Мне же был интересен больше следующий модуль:

CY5671 PRoC BLE

Для меня интересен он был тем, что с ним можно было использовать библиотеку для распознавания жестов на панели ёмкостного тачпада, которого, кстати, нету в комплекте:
  • 48-MHz ARM Cortex-M0 CPU
  • 128 KB Flash and 16 KB SRAM
  • Bluetooth LE (Smart) connectivity with Bluetooth 4.1 (2.4-GHz Bluetooth LE radio; -92-dBm Rx sensitivity, up to +3-dBm Tx power)
  • Flexible Low Power Modes: (1.3-μA Deep-Sleep Current; 150-nA Hibernate Current; 60-nA Stop Current
  • Analog and digital peripherals (One 12-bit, 1-Msps SAR ADC; Four 16-bit TCPWM blocks; Two SCBs, configurable as I2C, SPI or UART; I2S for audio input)
  • Integrated library support for one- and two-finger gestures
  • 56-QFN (7 x 7 x 0.6 mm), 68-ball WLCSP (3.9 x 3.5 x 0.55 mm)

Стоимость кита – 49$ плюс доставка.

Разработка приложений


Как я уже писал, Cypress Semiconductor предоставляет бесплатную IDE – PSoC Creator. Отдельно хотелось бы остановиться на части, которая помогает получить от BLE то, что нужно, иными словами сконфигурировать BLE Stack + Application layer. Я сейчас не хочу углубляться в то, чем является Bluetooth Low Energy (aka BLE). Информации про это есть много, в том числе и на хабре.

PSoC Creator

Актуальная версия на данный момент – 3.2 доступна для скачивания на оф. сайте: www.cypress.com/psoccreator после регистрации. Среда разработки не подверглась значительным изменениям с момента написания прошлой статьи, так что особо углубляться не вижу смысла, напомню только что вся разработка базируется на понятии компонент – библиотек которые реализуют тот или иной функционал.

BLE стек (компонента BLE)

Тут я бы хотел поподробнее остановиться на описании не самой компоненты BLE, а, скорее на примерах, которые доступны в PSoC Creator:

Каждый из этих примеров это простой проект, который показывает реализацию того или иного профиля. Для данной статьи я планировал использовать BLE_HID_Mouse, но по ряду причин, основная из которых то, что у меня нету тачпада, который я мог бы использовать, чтобы обойтись без симуляции (в примере курсор просто «рисует» квадрат) я решил использовать пример BLE_HID_Keyboard. Забегая вперёд скажу, что там тоже «симуляция» клавиатуры, но так нагляднее.

Итак, откроем пример BLE_HID_Keyboard:



Сам проект содержит ЦАП (измерение уровня батареи), COM порт для дебага, светодиодные индикаторы (3х цветный светодиод на плате кита), и вотчдог в режиме обычного таймера.

Откроем конфигурацию BLE компоненты:



Вкладка конфигурации профилей:



Кроме профиля клавиатуры тут также присутствуют сервисы BAS (Battery Service), DIS (Device Information Service), SCPS (Scan Parameter Service). В принципе, при желании можно добавить любой сервис, как стандартный, так и свой:



После чего в GATT базу данных будет внесены все характеристики и дескрипторы сервисов, к тому же, если сервис стандартный, для него будут сгенерированы API.

Каждый из сервисов можно сконфигурировать, например DIS сервис, поле с названием производителя:



Или же имя устройства:



Попробуем запрограммировать кит и включив BLE 4.0-совместимый адаптер начать поиск новых устройств:



То же самое с телефона:



Ну и если подключиться к устройству от «клавиатуры» начнут приходить данные:











К чему это я



Ну, во-первых, как просто и легко можно окунуться в мир BLE. Есть статьи были и описывали решения от Nordic, TI, но вот упоминания Cypress Semiconductor не было, вот я и решил исправить это. Для меня был интересен еще и тот факт, как сравнительно просто, можно сделать самостоятельно устройство, которое не только будет иметь беспроводную связь, а еще и будет поддерживаться современными ОС «из коробки» и без лишних костылей.

Во-вторых, я давно хотел бы попробовать сделать самостоятельно пульт ДУ для ПК. Собственно для этого я заказал кит и начал с ним разбираться. По что с китом определился, но открыт вопрос про тачпад. Как вириант – заказать еще один кит от Cypress с таким шилдом. Ну или попробовать развести самостоятельно, но тут не факт, что хватит энтузиазма и знаний. Кто знает какие-то еще варианты, напишите в комментариях. Нужен шилд для ёмкостного тачпада хотя бы 5х5.
Еще один интересный кит, который, возможно, подходил бы больше под мои цели:
CY5672 PRoC BLE Remote Control Reference Design Kit (RDK)
Но по-моему куда интереснее сделать самому, тем более, когда есть возможность возможность делать всё не спеша, в удовольствие.
Only registered users can participate in poll. Log in, please.
Нужен ли подробный обзор компоненты BLE и её возможностей от Cypress?
64.23% Да, нужно 88
13.14% Нет не нужно 18
22.63% Мне всё равно 31
137 users voted. 67 users abstained.
Tags:
Hubs:
Total votes 17: ↑15 and ↓2 +13
Views 27K
Comments Comments 7