Polar t31 как подключить к телефону
Разыскиваю датчик пульса, кот. мона подключить к HTC на android
может кто встречал?
активно использую прогу cardiotrainer, кот. пишет статистику с пом. GPS при тренировках (бег, лыжи, байк)
вот хочется узнать статистику по частоте пульса.
Polar WearLink®+ transmitter with Bluetooth®
Там же инфа где купить.
Недавно купил этот самый WearLink c bluetooth. Пульсометр работает отлично. Использую с программой Endomondo на SE live with walkman. Одна беда: как только устанавливается соединение endomondo и пульсометра сразу же растет погрешность GPS метров до 200-300, иногда вообще сигнал со спутников теряет. Получается либо трек, либо пульс :( Ни кто не сталкивался с такой проблемой? В чем причина и можно ли с этим что-то сделать? Как этот пульсометр с GPS на других девайсах дружит?at36, из отзывов в инете больше ни у кого не встречал таких проблем.
Добавлено 08.08.2012, 14:09:
Кто-нибудь знает пояс Suunto Dual Comfort Belt будет работать со смартфоном Sony Xperia Go?
Интересует точность измерений частоты пульса и как часто передаются данные о пульсе. Мне нужна высокая точность, желательно каждый удар с точность несколько миллисекунд, чтобы иметь возможность фиксировать не только частоту, но и ритмичность.И ещё: может кто-то случайно встречал блютус-пульсоксиметры? Зравствуйте друзья, сам давно озабочен проблемой измерения пульсам при тренировках с помощью андройд мобильника.
Вот что удалось выяснить по производителям:
Polar две модели Wearlink+BT и H7 smart BT, оба можна заказать на амазоне, но возник вопрос будет ли более новый H7 работать с galaxy s2 или он только под апараты с BT4.0 заточен или вообще только под iphone 4s?
То есть теоретически можно приконнектить сенсор H7 к андроиду, но поймёт ли его протокол какой-либо софт - большой вопрос, тем более что он работает с точностью ЭКГ, то есть он не частоту пульса кидает через BT, а полностью ЭКГ.
В общем "всё сложно".
Добавлено: посмотрел отзывы на амазоне на разные ремешки polar, как-то больно уныло :(
Polar две модели Wearlink+BT и H7 smart BT, оба можна заказать на амазоне, но возник вопрос будет ли более новый H7 работать с galaxy s2 Polar H7 supports Bluetooth Smart Heart Rate profile fully. But the Android Operating System does not officially support it, which is why we cannot promise H7 compatibility to Android phones for nowЧе то айфонный polarbeat кроме как на оффсайте polara нигде не упоминается
может я плохо искал но на appstore его нет, ни здесь на 4pda в разделе айфонов?
Да и по тем ссылкам на оффсайте не видно что он именно ЭКГ получает по форме с ремешка H7, всё как обычно только пульс.
Много отрицательных отзывов, например на тот же H7 - 77 отзывов на "5" и 28 на "1", я считаю, это многовато. Много похожих отзывов, сначала ремешок работает идеально, потом начинает произвольно отваливаться блютус и это никак не лечится, а поларовская поддержка молчит. И такая ситуция не только с H7.
Да и по тем ссылкам на оффсайте не видно что он именно ЭКГ получает по форме с ремешка H7, всё как обычно только пульс. The Polar H7 heart rate sensor is a great addition to our product portfolio as it gives ECG-accurate heart rate to any Bluetooth Smart ready device.Я не уверен правда что значит "ECG-accurate", может просто имеется ввиду высокая точность определения периода пульса, сложно сказать, подробного технического описания нет. Прикупил себе в Испании H7. Через пол дня мучений выводы следующие: не коннектится с IPHONE 4 и 5, но . внимание. нашелся на Андроиде XPERIA Z. покупался под IPHONE
ECG- accurate означает " с точностью как у ЭКГ"
И это не более чем рекламный ход потому что все датчики polar ( как для мобилы так и для наручных пульсомеров) инфа с которых потом может быть переброшена для анализа в Polar Por Trainer 5 - ОБЯЗАНЫ мерять с точностью ЭКГ, иначе программа неправильно будет расчитывать всякие аналитические вещи по R-R интервалам пульса.
Специально поговорил с кардиологом - Ни один спортивный датчик пульса на данный момент дать именно ЭКГ ( по форме ) не способен. Вообще когда меряют саму ЭКГ в поликлинике то ставят датчики кардиографа в нескольких точках сразу - а тут только одна точка установки.
Специально поговорил с кардиологом - Ни один спортивный датчик пульса на данный момент дать именно ЭКГ ( по форме ) не способен. Вообще когда меряют саму ЭКГ в поликлинике то ставят датчики кардиографа в нескольких точках сразу - а тут только одна точка установки.В общем я пока склоняюсь к покупке аналогового датчика, скоро должен прийти из китая, попробую сделать свой гаджет.
Вы только что получили новый полярные часы и у вас небольшие проблемы с Блютуз. Или вы пользуетесь этим устройством несколько лет, а Bluetooth больше не работает как раньше.
Это очень проблематично, потому что позволяет установите связь между телефоном / компьютером и устройством Polar. И это позволяет синхронизировать записанные данные в приложении.
В этой статье мы познакомим вас различные решения проблем с Bluetooth на часах Polar.
Если вы используете смартфон Android для синхронизации данных, ознакомьтесь с этой важной статьей, поскольку проблемы могут исходить именно оттуда:
Решение для Bluetooth, не работающего на ваших часах Polar
Вот различные шаги, которые необходимо предпринять для решения этой проблемы с Bluetooth на ваших часах Polar. Если это не работает, мы предполагаем, что проблема может быть в ваших часах Polar, а также в вашем телефоне или компьютере.
Поэтому приведенные ниже рекомендации также включают манипуляции на вашем смартфоне / ПК.
Отрежьте и перезапустите соединения ваших устройств
Вероятно, самое простое и стандартное решение для настройки в качестве первого шага, вы можете попробовать выключить свои устройства и их соединение Bluetooth.
Отключите и снова активируйте Bluetooth на вашем телефоне / компьютере
Перезапустите Bluetooth на своих устройствах. Это перезапустит соединение между вашими устройствами и часами Polar.
Включение режима полета на Polar
На вашем устройстве Polar есть режим полета, который отключает все соединения. Это позволяет вам при перезапуске обычного режима сбросить соединение Bluetooth.
- Прокрутите меню так, чтобы настройки ваших часов
- Вы увидите, как появится логотип самолета в режиме полета.
- Держите его нажатым, дольше или короче в зависимости от Полярная модель что у тебя есть
Затем перезапустите часы, выполнив обратную процедуру.
Так же, как и в режиме полета, выключите телефон или компьютер, а затем перезапустите его.
Советы по подключению Bluetooth между вашим Polar и вашим компьютером / телефоном
Убедитесь, что у вас достаточно аккумулятора на устройстве Polar.
Когда у вас низкий заряд батареи на устройстве Polar, каждая функция может работать в режиме энергосбережения. Иногда это означает, что, например, Bluetooth менее эффективен. В частности, это относится к GPS. Если, однако, у вас также были проблемы с GPS, ознакомьтесь с этой статьей:
Обновите свои приложения и устройство Polar
Для обеспечения хорошего функциональность из полярный инструмент, Это важно будь в курсе. Каждое обновление содержит исправления и повышенную стабильность.
Для этого вам просто нужно обновить программное обеспечение со своего телефона или ПК с помощью инструмента. FlowSync de Полярный.
Отсоедините любой USB-кабель от вашего Polar.
Невозможно одновременно подключить Polar с помощью кабеля и Bluetooth. Если вы выбрали Bluetooth, убедитесь, что кабель USB не подключен.
Альтернативы Bluetooth на ваших часах Polar
Bluetooth - это очень удобный способ подключить часы к телефону или компьютеру. Но это не единственный способ сделать это. Итак, если вы хотите обойти проблему, знайте, что можно сделать то же самое с помощью Wi-Fi, или USB-кабель.
Это не решит проблему с Bluetooth, но, по крайней мере, в краткосрочной перспективе вы можете продолжить синхронизировать ваши данные для сохранить на свой ПК или компьютер.
Если, несмотря на все эти манипуляции, ничего не работает, то Bluetooth по-прежнему не работает, возможно, ваши часы неисправны. Так что вы можете рассмотреть возможность возврата по гарантии или послепродажного обслуживания.
Экран – далеко не самая распространенная опция в пульсометрах и шагомерах. Как правило, в таких устройствах используется вибросигнал и синхронизация с мобильным устройством.
Возможность регулировки длины ремешка, обхватывающего запястье.
Опция смены ремешка на часах полезна на тот случай, если старый вышел из строя, а изделие вполне пригодно к эксплуатации.
Эта опция актуальна на случай необходимости оповещения о достижении цели занятия либо о превышении допустимого предела частоты пульса.
Материал, из которого создается ремешок пульсометра или шагомера.
Встроенный динамик – частая опция в современных моделях пульсометров. Обеспечивает воспроизведение звуковых сигналов, служит для звукового оповещения.
Встроенный GPS позволяет синхронизировать данные с компьютерным либо мобильным устройством перед пробежкой, чтобы увидеть карту местности, к примеру, или оценить пройденный маршрут.
Функция часов в устройстве.
Секундомер способен измерить время с точностью до миллисекунды. Пользователь может запускать и останавливать отсчет вручную. Зачастую опция применяется для измерения точного отрезка времени.
Опция задания границ сердечного ритма вручную в зависимости от типа тренировки.
Способность устройства вычислять количество сжигаемого в процессе тренировки жира.
В пульсометрах элементы питания бывают съемными и несъемными. Большинство моделей умных часов оборудовано несъемными аккумуляторами. Это – удобный вариант, поскольку пульсометры компактны, что дает возможность увеличить емкость элемента питания и, соответственно, период автономной работы. Минус: необходимость обращения в сервисный центр для замены элемента питания. Аккумулятор съемного типа применяется лишь в некоторых моделях пульсометров.
Wi-fi – один из базовых вариантов передачи информации посредством радиоканала. Ряд умных часов синхронизируется с мобильными устройствами посредством именно такой технологии.
Технология беспроводной передачи данных, применяемая преимущественно в спортивных приборах и датчиках. Большинство умных часов и браслетов оснащено именно такой системой.
Встроенный модуль Bluetooth обеспечивает связь с мобильным устройством. Это – удобная, универсальная технология, применимая в большинстве различных приборов.
Умные часы можно подключить к любому компьютеру или устройству, имеющему USB-разъем, благодаря кабелю и/или переходнику, который идет в комплекте поставки.
Около года назад я приобрел данный девайс для контроля частоты сердечных сокращений (далее - ЧСС) во время тренировок. Датчик отлично подсоединяется к телефону, умным часам по Bluetooth, но обычно, фитнесс-приложения, анализирующие подобного рода данные требуют либо подписки, либо нагружены излишне сложными аналитиками, которые мне, как рядовому пользователю не очень интересны. Поэтому у меня родилась идея написать свое приложение для контроля ЧСС во время тренировок для IOS на Swift.
Немного теории о технологии Bluetooth LE
Bluetooth Low Energy - очень популярный и распространённый протокол обмена данными, который мы используем повсеместно и который становится все популярнее с каждым днем. У меня даже чайник на кухне управляется дистанционно через BLE. Low energy, кстати, гораздо сниженное энергопотребление в отличие от "голого" Bluetooth, настолько сниженное, что устройство готово общаться по данному протоколу на одной батарейке несколько месяцев, а то и лет.
Конечно, цитировать и переписывать спецификацию протокола BLE 5.2 нет никакого смысла, поэтому ограничимся основными понятиями.
Центральное и периферийное устройство
В зависимости от использования и назначения, устройство Bluetooth может быть:
Центральным (главным) - получает данные от периферийного устройства (наш телефон)
Периферийным - устройство, которое отправляет данные на центральное устройство (датчик ЧСС)
Рекламные пакеты данных протокола
Рекламные или оповещательные данные отправляются с периферийного устройства в виде пакетов, которые содержат в себе основную информацию об устройстве: его название, а также его функциональные возможности. Задача центрального устройства, получить их, прочитать, а после выделить из списка периферии необходимый для подключения девайс.
Объем рекламных пакетов не очень большой и вместить всю информацию об устройстве не способен. Чтобы получить доступ ко всем возможностям и характеристикам устройства, необходимо выполнить подключение, после чего считать его данные, которые, в свою очередь, могут быть предоставлены в виде:
Сервиса (услуг) - набор данных, описывающих функции устройства. В нашем случае мы увидим службу получения ЧСС.
Характеристик - дополнительных описаний сервисов устройства. Например характеристика изменения сердечного ритма в секунду, а также положения датчика на теле.
Перейдем к написанию кода
Создадим проект в 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 устройств
Центральный менеджер ждет дальнейших указаний, и сейчас он их получит. Для этого в методе "centralManagerDidUpdateState" в случае ".poweredOn" после метода "print" пишем:
Менеджер начнет сканировать все доступные вокруг устройства, а чтобы мы смогли увидеть их в консоли приложения, необходимо реализовать метод делегата в extension ViewController ниже метода "centralManagerDidUpdateState" следующим образом:
Запускаем приложение. И теперь в консоли мы можем увидеть множество всех доступных для подключения устройств. Замечательно! Одним из них и является необходимый для подключения пульсометр. Но чтобы упростить поиск пульсометра, можно воспользоваться некоторой хитростью, которую я сейчас покажу.
Идентификатор служб UUID
Я ранее упомянул наличие данного идентификатора в протоколе Bluetooth как уникальную характеристику для различных устройств, поэтому могу сказать вам, что пульсометры обладают таким уникальным UUID для своей непосредственной службы измерения ЧСС. Список всех UUID можно также найти в спецификации, из которой я нашел нужный: "0x180D". Добавим новую константу в проект над объявленными ранее outlets:
Также обновим метод "centralManager.scanForPeripherals(withServices: nil)" добавив в него вышенаписанный идентификатор пульсометра:
Теперь центральный менеджер находится в поиске устройств с данным UUID, и после некоторого времени в консоли появиться заветное устройство:
<CBPeripheral: 0x280214000, identifier = D5A5CD3E-33AC-7245-4294-4FFB9B986DFC, name = COOSPO H6 0062870, state = disconnected>
Теперь необходимо создать переменную в проекте, с которой мы сможем связать данное устройство, для этого рядом с "var centralManager: CBCentralManager!" напишем:
А в методе "didDiscover peripheral" свяжем найденное устройство с вышеобъявленной переменной и прекратим поиск новых устройств с помощью метода:
Подключаемся к пульсометру
Для этого напишем под строкой "centralManager.stopScan()":
Нам уже удалось подключиться к пульсометру, но чтобы это действительно увидеть, необходимо реализовать еще один метод делегата "didConnect peripheral" ниже метода "didDiscover peripheral", который автоматически вызывается при подключении нового устройства:
Собираем проект, запускаем на устройстве и видим в консоле заветное "Соединение установлено". Хороший результат, теперь двигаемся дальше.
Получаем список сервисов с пульсометра
После того, как соединение установлено, необходимо сделать запрос об услугах (сервисах), которые данный пульсометр готов предоставить. Для этого после установки соединения вызовем метод "heartRatePeripheral.discoverServices()" в методе "didConnect", который примет следующий вид:
Запрос на получение сервисов сделан, а чтобы их увидеть и начать с ними работать, необходимо расширить класс протоколом "CBPeripheralDelegate" в самом низу нашего проекта и вызвать метод "peripheral(_:didDiscoverServices:)" следующим образом:
Метод получает сервисы, сообщает об этом центральному менеджеру и выводит их в консоль. В данный момент консоль будет пуста, так как необходимо делегировать данный протокол периферийному устройству "heartRatePeripheral". Сделаем это после инициализации периферийного устройства в следующем методе:
Отлично, делегат обьявлен, метод получения сервисов написан, запустим программу на телефоне и получим в консоль список служб пульсометра:
<CBService: 0x2824b4340, isPrimary = YES, UUID = Heart Rate>
<CBService: 0x2824b4240, isPrimary = YES, UUID = Battery>
<CBService: 0x2824b4280, isPrimary = YES, UUID = Device Information>
<CBService: 0x2824b4200, isPrimary = YES, UUID = 8FC3FD00-F21D-11E3-976C-0002A5D5C51B>
Не все сервисы нам интересны и оставить необходимо лишь первый. Для этого можно провести так называемую фильтрацию с помощью идентификатора UUID в методе "heartRatePeripheral.discoverServices()"
Вот теперь список служб отобразится в виде "<CBService: 0x2824b4340, isPrimary = YES, UUID = Heart Rate>", из которой мы сможем извлечь нужные нам характеристики - ящики (№ шкафа мы уже получили).
Достаем характеристики из шкафа
Шкаф-сервис нам известен, осталось посмотреть, что он предлагает и получить это. Сделаем запрос на получение характеристик, для этого в теле метода "didDiscoverServices - peripheral" реализуем метод - поиск:
Теперь доступный сервис будет посылать свои характеристики, а увидеть мы их сможем в самостоятельном методе делегата "CBPeripheralDelegate" под названием "didDiscoverCharacteristicsFor". Реализуем его и выведем в консоль все доступные характеристики:
Запускаем программу, видим, что характеристики получены, а консоль заполнилась следующими строками:
<CBCharacteristic: 0x28024c120, UUID = 2A37, properties = 0x10, value = , notifying = NO>
<CBCharacteristic: 0x28024c180, UUID = 2A38, properties = 0x2, value = , notifying = NO>
Видно, что у данной службы две характеристики, имеющие два уникальных идентификатора. Из спецификации на 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.
Читайте также: