Давно хотел написать про 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)
Но по-моему куда интереснее сделать самому, тем более, когда есть возможность возможность делать всё не спеша, в удовольствие.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (7)
serafims
28.06.2015 15:24А в чем суть материнской платы для модуля и usb-донгла? На офф. сайте продается сам модуль за 10 баксов — можно ли его запрограммировать через адаптер RS-232TTL-USB? По какой цепочке происходит программирование?
xsemperx Автор
30.06.2015 14:13Насколько я могу судить, так не получиться потому что программируется он только через программатор. В данном случае, это материнская плата. Теоретически, можно купить только модуль и программатор, но он стоит 89$ (http://www.cypress.com/?rID=38154&source=shop)…
Jeditobe
Для тех, кто хотел бы приобрести подобный девайс:
CYPRESS SEMICONDUCTOR CY8CKIT-042 EVAL BRD, PSOC 4, PIONEER KIT
xsemperx Автор
Во-первых — Девайс вы указали не тот.
Во-вторых — Это вы к чему? Цена там выше, чем у оф. дистрибюторов.
Jeditobe
«Подобный», это не обязательно точно такой же.
Сроки и цена доставки у дистрибьюторов в конечном итоге могут оказаться и не такими выгодными.
xsemperx Автор
Да, только еще два нюанса:
1) Тот же кит который продаеться по линку на амазоне — на оф. сайте 25$ и без каких-либо ограничений
2) Кита, о котором идёт речь в посте на амазоне я не нашёл. Не только не нашёл у того продавца, вообще не нашёл. Возможно, «Limited Stock» как-то связан с тем, что кит новый?
Вообще наш с вами диалог напоминает ситуацию когда я рассказываю, как мне понравилась, например, груша, а вы говорите где купить яблок. Не находите?
nochkin
Не надо обращать внимание. Jeditobe обычно просто постит реферальные ссылки на Amazon и поэтому они часто не по теме.
Достаточно пробежаться по его комментариям.