Датчик пульса для android bluetooth

Как выбрать Bluetooth-монитор сердечного ритма для Android

Предлагаем поговорить о новинках последнего десятилетия и в этой статье расскажем про лучший Bluetooth-монитор сердечного ритма на Android.

Какой датчик был использован

Мы для исследования наших Bluetooth-мониторов сердечного ритма Android использовали беспроводной Bluetooth-датчик сердечного ритма Zеphyr hxm для Android. Он крепится на грудь спортсмена для обеспечения как можно более точных данных, держится на груди на удобном эластичном ремне. Кроме этого, пульсометр может отслеживать RR-интервал, пройденное расстояние и скорость, с которой движется человек на тренировках.

Подключение к смартфону происходит через Bluetooth 2.0 или 4.0, такой стандарт поддерживает почти любой смартфон, так что это большой плюс. Срока службы батареи хватает до 150 полных часов.

Приложения для спорта

Теперь, когда про Bluetooth-датчик сердечного ритма на Android мы рассказали, перейдем к приложениям, в которых можно задействовать показатели пульсометра.

Endomоndo Spоrts Trаcker

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

RunKееper

Второе приложение для Android-смартфонов называется RunKeeper . Это, пожалуй, единственный достойный конкурент для Endomоndo, потому как обладает аналогичными функциями.

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

К тому же программа имеет интеграцию с Facebоok и Twittеr.

Runtаstic

И последнее приложение, которое не должно быть пропущено. Это Runtastic с поддержкой Bluetooth-датчиков – умный комбомонитор сердечного ритма для Android. Его качество на уровне предыдущих двух приложений, но оно разработано только для беговой активности: может отслеживать бег, трусцу, ходьбу или поездки на велосипеде с помощью GPS, измерять время пробежек, их дистанцию, темп, скорость и сожженные калории. Программа может строить диаграммы активности, сплит-таблицы.

Сравнивая описанные Bluetooth-мониторы для Android, не стоит заочно делать выводы, что какое-то лучше другого, так как они все достойны внимания. Рекомендуем испробовать каждое из них и выбрать самое удобное для себя.

Bluetooth-пульсометр на Android: Видео

Источник

Про пульсометр для смартфона.

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

Если вы любите заниматься бегом в парке или стадионе, периодически путешествуете на велосипеде или роликах, а зимой бывает выбираетесь покататься на лыжах, то вам было бы полезно знать, что ваш, лежащий в кармане без дела смартфон мог бы сослужить вам хорошую и полезную службу. Во время таких занятий бывает интересно знать какое же расстояние вы в итоге прошли, сколько времени потратили, с какой скоростью двигались, в какой точке леса или города вы сейчас находитесь и многие другие данные. А если вы являетесь спортсменом любителем, то эта информация вам просто необходима. Большинство граждан либо не обращает внимание на возможность получения таких данных, либо покупают специальные часы-навигаторы, которые стоят не малых денег. Так вот в любом смартфоне на системе Android или Apple есть ряд спортивных приложений, которые бесплатно помогут решить все выше перечисленные задачи.

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

Способы измерения пульса с помощью смартфона.

Есть два способа измерить ваш пульс в «походных» условиях. Оба способа подразумевают установку на ваш смартфон специального приложения.

Первый способ.

Установите себе на смартфон одно из приложений: Instant Heart Rate, Runtastic Heart Rate или Pulsometer. Чтобы измерить пульс вам достаточно лишь приложить палец к камере вашего смартфона и активировать программу.

Через 5-10 секунд программа установит ваш точный пульс в данный момент. Данный тип измерения пульса имеет небольшую погрешность и может использоваться в повседневной жизни. Минусы данного способа в том, что вам нужно совершить множество дополнительных действий: остановиться, достать телефон, активировать программу, приложить палец и т.д. Таким способом вы сможете измерить ваш пульс только в определенных точках вашей тренировки, и данный тип измерения вам не даст общей картины пульса во время тренировки. Поэтому для тех, кто хочет получать информацию о пульсе в течении всей тренировки есть другой способ.

Читайте также:  Как очистит память андроида htc

Измерение пульса с помощью приложения для смартфона

Второй способ.

Данный способ не потребует от вас прерывания тренировки и позволит вам измерять ваш пульс в течении всего занятия. Для этого вам во первых необходимо установить спортивное приложение, а во вторых приобрести недорогой датчик сердечного ритма для смартфонов. Рекомендуется устанавливать сразу мощное и функциональное приложение, которое помимо пульса будет собирать всю информацию о тренировке: расстояние, скорость, темп, маршрут на карте, высоту подъема и спуска и т.д., а в качестве дополнения программа может быть использована как виртуальные тренер, который будет помогать вам развивать ваши физические возможности. Стоимость таких датчиков колеблется в диапазоне от 50$ до 150$. Для сравнения самый простой китайский наручный пульсометр стоит около 100$, и кроме пульса и времени ничего не измеряет. Если же вы приобретаете наручный пульсометр для измерения скорости и расстояния с функцией GPS (типа Garmin или Suunto), то его стоимость начинается от 300$ и доходит до 1000$. Выгода очевидна, поэтому рассмотрим данный способ подробнее.

Беспроводной датчик-пульсометр для смартфона.

Прежде чем выбрать датчик для смартфона нужно уточнить какой вид беспроводной BlueTooth связи поддерживает ваш телефон. Большинство современных смартфонов, производимых за последние 2 года имеют стандарт BlueTooth 4.0 — такой стандарт поддерживается большинством датчиков пульса. Смартфоны выпущенные до 2014 г как правило имеют стандарт связи BlueTooth 3.0 и ниже. В этом случае можно также найти беспроводной датчик-пульсометр, например модель Polar WearLink transmitter сможет работать с такими смартфонами, как Samsung Note 1, Galaxy 3 и другими.

В качестве подопытного датчика мы выбрали модель BCP-62 с современным форматом BlueTooth 4.0, произведенную голландской фирмой BBB. Она занимается производством огромного количества профессиональных аксессуаров для велоспорта. И попробуем синхронизировать датчик с телефоном Samsung Galaxy S3 mini.

В комплекте вы найдете овальный датчик и эластичный ремень. На ремне с внешней стороны есть две ответные металлические кнопки, такие же кнопки есть на датчике. Как только вы присоединяете датчик к ремню он начинает работать, если отцепили хотя бы одну кнопку — датчик выключается на неопределенный срок. Батарейка при этом не расходуется.

На синхронизацию датчика и смартфона уйдет не более 5 минут! Прежде всего нужно установить батарейку. Далее необходимо активировать датчик путем присоединения к кнопкам. После этого на телефоне активируем функцию BlueTooth. Как только ваш смартфон обнаружит датчик попытайтесь присоединится к нему. Система скорее всего запросит пароль, который как правило равен либо «0000»(четыре нуля), либо «1234». Первый этап пройден!

Чтобы начать видеть свой пульс нужно войти в специальное спортивное приложение. Мы рекомендуем использовать приложение RunKeeper, которое даже в своем бесплатном базовом исполнении позволяет получать информацию с датчика пульса. Но также вы можете использовать и другие известные приложения такие, как Runtastic или Endomondo, которые позволят использовать датчик только после небольшого денежного взноса. Если приложение установлено, то осталось только надеть датчик на себя — он надевается на голое тело, иначе индикации пульса не будет.

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

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

Успехов в спортивных достижениях и следите за своим пульсом!

Источник

Подключаем нагрудный датчик пульса по Bluetooth на Swift

С чего все началось?

Около года назад я приобрел данный девайс для контроля частоты сердечных сокращений (далее — ЧСС) во время тренировок. Датчик отлично подсоединяется к телефону, умным часам по Bluetooth, но обычно, фитнесс-приложения, анализирующие подобного рода данные требуют либо подписки, либо нагружены излишне сложными аналитиками, которые мне, как рядовому пользователю не очень интересны. Поэтому у меня родилась идея написать свое приложение для контроля ЧСС во время тренировок для IOS на Swift.

Немного теории о технологии Bluetooth LE

Bluetooth Low Energy — очень популярный и распространённый протокол обмена данными, который мы используем повсеместно и который становится все популярнее с каждым днем. У меня даже чайник на кухне управляется дистанционно через BLE. Low energy, кстати, гораздо сниженное энергопотребление в отличие от «голого» Bluetooth, настолько сниженное, что устройство готово общаться по данному протоколу на одной батарейке несколько месяцев, а то и лет.

Конечно, цитировать и переписывать спецификацию протокола BLE 5.2 нет никакого смысла, поэтому ограничимся основными понятиями.

Центральное и периферийное устройство

В зависимости от использования и назначения, устройство Bluetooth может быть:

Читайте также:  Как следить за андроид смартфоном

Центральным (главным) — получает данные от периферийного устройства (наш телефон)

Периферийным — устройство, которое отправляет данные на центральное устройство (датчик ЧСС)

Рекламные пакеты данных протокола

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

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

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

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

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

Перейдем к написанию кода

Создадим проект в Xcode с одноимённым названием, после чего добавим несколько необходимых Label в Main.storyboard и перетянем outlets этих labels во View Controller, закрепим их с помощью constraints, а также скроем их для первоначального изображения в методе viewDidLoad, как я сделал это на изображении:

Я создал outlets для текстовых значений «121» и «грудь», другие же текстовые значения просто закрепил на view, так как изменений в них делать мы не планируем.

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

В файле Info.plist проекта необходимо добавить свойство: Bluetooth Always Usage Description и прикрепить к нему описание, чтобы уведомить пользователя об использовании данных по Bluetooth при первом запуске приложения. Если данное свойство не добавить в список, то приложение «упадет» с одноименной ошибкой. Не забывайте про это!

Подключаем библиотеку Bluetooth

Тут все просто, для подключения библиотеки воспользуемся следующей строчкой:

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

Для начала создадим переменную центрального (главного) устройства в проекте рядом с объявлением других переменных:

Теперь, чтобы получить доступ к методам необходимо назначить ViewController делегатом, но предварительно подпишем его под протокол CBCentralManagerDelegate. Сделать это предлагаю в extension ViewController, так будет рациональнее.

Xcode на такое пользовательское действие отреагирует ошибкой: «Type ‘ViewController’ does not conform to protocol ‘CBCentralManagerDelegate'», оповещая, что данный протокол требует обязательную реализацию метода: «func centralManagerDidUpdateState(_ central: CBCentralManager)». Нажмем «fix», добавив этот метод в проект. Данный метод нужен для автоматической проверки состояния центрального менеджера, которого мы создали ранее.

Чтобы отобразить все состояния центрального менеджера, в теле метода «func centralManagerDidUpdateState(_ central: CBCentralManager)» напишем:

Xcode автоматически предложит вставить все возможные состояния данного условия, соглашаемся с ним. А в каждом из состояний напишем функцию print(«это состояние»):

Теперь нам осталось проинициализировать переменную «centralManager» и задать ей делегирование. Сделаем это в методе «viewDidLoad», а в качестве параметра очереди напишем «nil», определяя всю работу про Bluetooth в главной очереди.

Собираем проект, запускаем на устройстве с включенным Bluetooth, видим системный запрос за его использование, соглашаемся и получаем в консоль заветное сообщение «central.state is poweredOn«, которое сигнализирует нам о том, что центральный менеджер готов к работе. Если выключить Bluetooth на телефоне, то в консоли появится логичное «central.state is poweredOff«.

Поиск Bluetooth устройств

Центральный менеджер ждет дальнейших указаний, и сейчас он их получит. Для этого в методе «centralManagerDidUpdateState» в случае «.poweredOn» после метода «print» пишем:

Менеджер начнет сканировать все доступные вокруг устройства, а чтобы мы смогли увидеть их в консоли приложения, необходимо реализовать метод делегата в extension ViewController ниже метода «centralManagerDidUpdateState» следующим образом:

Запускаем приложение. И теперь в консоли мы можем увидеть множество всех доступных для подключения устройств. Замечательно! Одним из них и является необходимый для подключения пульсометр. Но чтобы упростить поиск пульсометра, можно воспользоваться некоторой хитростью, которую я сейчас покажу.

Идентификатор служб UUID

Я ранее упомянул наличие данного идентификатора в протоколе Bluetooth как уникальную характеристику для различных устройств, поэтому могу сказать вам, что пульсометры обладают таким уникальным UUID для своей непосредственной службы измерения ЧСС. Список всех UUID можно также найти в спецификации, из которой я нашел нужный: «0x180D». Добавим новую константу в проект над объявленными ранее outlets:

Также обновим метод «centralManager.scanForPeripherals(withServices: nil)» добавив в него вышенаписанный идентификатор пульсометра:

Теперь центральный менеджер находится в поиске устройств с данным UUID, и после некоторого времени в консоли появиться заветное устройство:

Теперь необходимо создать переменную в проекте, с которой мы сможем связать данное устройство, для этого рядом с «var centralManager: CBCentralManager!» напишем:

А в методе «didDiscover peripheral» свяжем найденное устройство с вышеобъявленной переменной и прекратим поиск новых устройств с помощью метода:

Читайте также:  Magic eraser background editor android

Подключаемся к пульсометру

Для этого напишем под строкой «centralManager.stopScan()»:

Нам уже удалось подключиться к пульсометру, но чтобы это действительно увидеть, необходимо реализовать еще один метод делегата «didConnect peripheral» ниже метода «didDiscover peripheral», который автоматически вызывается при подключении нового устройства:

Собираем проект, запускаем на устройстве и видим в консоле заветное «Соединение установлено». Хороший результат, теперь двигаемся дальше.

Получаем список сервисов с пульсометра

После того, как соединение установлено, необходимо сделать запрос об услугах (сервисах), которые данный пульсометр готов предоставить. Для этого после установки соединения вызовем метод «heartRatePeripheral.discoverServices()» в методе «didConnect», который примет следующий вид:

Запрос на получение сервисов сделан, а чтобы их увидеть и начать с ними работать, необходимо расширить класс протоколом «CBPeripheralDelegate» в самом низу нашего проекта и вызвать метод «peripheral(_:didDiscoverServices:)» следующим образом:

Метод получает сервисы, сообщает об этом центральному менеджеру и выводит их в консоль. В данный момент консоль будет пуста, так как необходимо делегировать данный протокол периферийному устройству «heartRatePeripheral». Сделаем это после инициализации периферийного устройства в следующем методе:

Отлично, делегат обьявлен, метод получения сервисов написан, запустим программу на телефоне и получим в консоль список служб пульсометра:

Не все сервисы нам интересны и оставить необходимо лишь первый. Для этого можно провести так называемую фильтрацию с помощью идентификатора UUID в методе «heartRatePeripheral.discoverServices()»

Вот теперь список служб отобразится в виде » «, из которой мы сможем извлечь нужные нам характеристики — ящики (№ шкафа мы уже получили).

Достаем характеристики из шкафа

Шкаф-сервис нам известен, осталось посмотреть, что он предлагает и получить это. Сделаем запрос на получение характеристик, для этого в теле метода «didDiscoverServices — peripheral» реализуем метод — поиск:

Теперь доступный сервис будет посылать свои характеристики, а увидеть мы их сможем в самостоятельном методе делегата «CBPeripheralDelegate» под названием «didDiscoverCharacteristicsFor». Реализуем его и выведем в консоль все доступные характеристики:

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

Видно, что у данной службы две характеристики, имеющие два уникальных идентификатора. Из спецификации на Bluetooth узнаем, что UUID = 2A37 отвечает за измерение ЧСС, а UUID = 2A38 за положение датчика на теле. Положение датчика на теле не самая интересная характеристика в данной теме, но будет полезно считать и ее.

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

Характеристики отличаются друг от друга типами свойств. Например, характеристика ЧСС имеет свойство «.notify» т.е. она уведомляет об изменении значения ЧСС, а характеристика положения на теле имеет свойство «.read», т.е. может быть считана напрямую. Данное пояснение необходимо, чтобы правильно получить значения из них.

Положение пульсометра на теле

Характеристика выведена консоль, теперь нужно лишь реализовать метода считывая значений из нее. Для этого напишем запрос на чтение значений «peripheral.readValue(for: characteristic)»

Запрос написан, как вы догадываетесь, нужно реализовать еще один метод «peripheral(_:didUpdateValueFor:error:)» делегата «CBPeripheralDelegate», который будет в асинхронном режиме получать ответ с данного запроса, причем в данном методе напишем конструкцию «switch — case», чтобы была возможность разделить характеристики по уникальному идентификатору:

В консоли после выполнения данной программы появится строка «1 bytes». Это нужный результат, потому что мы пытались вывести объект типа «data».

Чтобы «распасить» данный байт, необходимо снова прибегнуть к спецификации, из которой мы сможем понять, как данный байт заполнен. Ускоряя результат, реализуем ниже функцию получения строки положения на теле датчика ЧСС из этого байта:

И теперь вызовем данную функцию в методе «didUpdateValueFor characteristic», одновременно выводя результат на экран телефона (не забудем показать скрытый label для положения датчика):

Ура! Характеристика успешно получена, прочитана и выведена на экран!

Не совсем ясно, где еще можно носить данный пульсометр, поэтому существует данная характеристика 🙂

Получение ЧСС и вывод на экран пользователя

Осталось совсем немного, и теперь нужно получить значения из характеристики ЧСС. Как мы помним, у нее тип значения «.notify», поэтому нам нужно как бы «подписаться на нее», чтобы она присылала обновленные значения ЧСС. Для этого нужно выполнить метод «peripheral.setNotifyValue(true, for: characteristic)» в функции «didDiscoverCharacteristicsFor service:

Если запустить приложение, то в консоли появятся стоки:

Unhandled Characteristic UUID: 2A37

Unhandled Characteristic UUID: 2A37

Unhandled Characteristic UUID: 2A37

Именно в этой характеристики и лежат данные о ЧСС. Теперь необходимо провернуть такую же развертку этих данных, обращаясь к спецификации. В некоторых моделях данные могут быть представлены либо 1 либо 2 байтами. Чтобы не получить конфуз, реализуем метод для «парсинга» этих данных в нужном порядке в протоколе «CBPeripheralDelegate».

И, наконец, добавим еще один case в методе «peripheral(_:didUpdateValueFor:error:)», в котором получим ЧСС, а также обновим и покажем label пользовательского интерфейса:

Теперь данные с пульсометра выводятся на экран телефона. Я даже слегка нервничаю 🙂

Итоги

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

Источник

Оцените статью