Измеритель пульса для спортивных тренировок
19.04.2020
Мои жалкие попытки заняться спортом не дали больших успехов, и чтобы хоть как-то подбодрить себя в этом прекрасном начинании, я решил, что мне нужен пульсометр. Что вот именно он будет поддерживать во мне желание заниматься дальше, а также будет показывать динамику занятий, их длительность и энергичность. И конечно же считать килокалории.
Попробовал вбить что-то в google на эту тему. Оказалось, что в мире много людей думает также, как и я. Огромное количество наручных браслетов, которые меряют всё что душе угодно!
У меня случайно оказался под рукой Xiaomi Mi Band 2. И я решил, что задача с честью выполнена.
Но через несколько тренировок выяснилось, что значения пульса, которые он показывает к жизни никакого отношения не имели. Его родное приложение тоже сильно оставляло желать лучшего. И как бы я любил продукты этого бренда – нет, браслет полное барахло. Нет, вполне возможно, что он прекрасно работает как шагомер. Или как датчик сна. Или как бюджетный вариант Apple Watch. Но под мою задачу это не подходило вообще никак.
Нужно было искать что-то более качественное. Выбор пал на Huawei Honor Band 4.
В сравнении с Mi Band это бы прорыв. Мне даже показалось, что измерения стали адекватными. Приложение на телефоне сильно оставляло желать лучшего, но у Xiaomi тоже сильно выигрывало. Появились интересные значения, интересная информация для анализа.
Но сравнить показания пульсометра было не с чем. Из нормальных пульсометров у меня был только тот, что встроен в велотренажёр, но он за давностью лет был немного неисправен и надежда была на него небольшая. Конечно, можно было бы померять пульс вручную. Но настолько скучно мне ещё не было. И, поскольку никаких других версий не поступало – Honor Band прожил у меня больше полугода постоянных тренировок.
И тут молитвами добрых друзей у меня появился эллиптический тренажёр. С нормальным датчиком пульса! И это убило Honor Band. Оказалось, что значения, которые он показывает недалеко ушли от Mi Band. Разница легко могла составлять 120 на браслете и 160 в реальности. Стало очень обидно и пользование им перестало приносить радость. Хотя остальные его функции, кроме пульсометра, были неплохими.
Полистав очередные отзывы стало понятно, что все наручные браслеты не выдерживают критики и ловить в этой области что-то дальше нет никакого смысла.
Что же делать? Нагрудный кардиомонитор! За лидера рынка у нас Garmin. Под него наверняка куча софта… Стандарта два – BLE(Bluetooth Low Energy) и ANT+( Adaptive Network Topology Plus). Какой из них выбрать? Первый вроде как ширпотреб, но можно зацепить за телефон. Удобно. Второй профессиональный. Но не понятно как с ним работать. Но тут мне повезло. Я нашёл двухдиапазонный Garmin HRM Dual!
Гармин как обычно нас радует прекрасной ценой. Без слёз не взглянешь. Хорошо, что на Avito народ торгует всеми новыми игрушками от Гармина в два, а то и в три раза дешевле…
Приехал ко мне пульсометр от Гармина. Про него рассказать особо нечего… Не очень, конечно, удобно его таскать на груди, но жить с этим можно. В остальном от вещь в себе. Надел и занимайся.
Другое дело софт к нему. Для меня история неочевидная…
Телефон сразу нашёл пульсометр и зацепился по нему по BLE.
Но нужно было какое-то приложение, которое бы умело работать с этим пульсометром. Вы бы с чего начали? Я начал с Garmin Connect! Это прекрасная программа! Я помню её ещё по моим Garmin-часам. 63 мегабайта на Play Store. Мне кажется многие игрушки меньше. Но ладно, надо так надо. На телефоне эта чудо программа занимает почти весь телефон, хорошо развернувшись. В Notification bar от неё мусора столько, что она явно думает, что это её телефон, а не мой. Батарейку жрёт (по battery monitor) только в путь. И это всё при том, что к ней ничего не подключено! Страшно представить, что будет, если я ещё и часы надену и подключу к ней.
Ладно, что-то то я отвлёкся. Так вот – Garmin Connect не смог найти Garmin Hrm Dual и не смог к нему подключиться. Вообще никак. Нет и всё. Ничего сделать нельзя.
Пришлось искать. Какая-то статья. И вы знаете… Первая же программа Pulsometer RR заработала! И показала мой пульс. Но интерфейс программы, конечно, нужно видеть. Что-то я там выше распинался про Garmin… Да, здесь всё ещё хуже. Но спасибо авторам программы – я хотя бы смог убедиться, что нагрудный ремень вообще работает.
Я ещё попробовал разные программы. Strava, Runkeeper, Endomondo. У меня сложилось странное впечатление от них… Это какие-то монстрообразные программы, написанные не очень понятно для кого и не очень понятно зачем. Пульсометр увидела только Endomondo. Но это тоже очень, очень странная программа. О, хорошо что вспомнил – пойду отключу платную подписку на неё. 300 рублей в месяц. Или 1000 рублей в год. И вы бы только видели за что… Кроме всего прочего Endomondo легко и непринуждённо падает во время тренировки и перестаёт что либо считать. Тренировку нельзя продолжить, если ты её остановил. Зато делать тренировки по 2-5 секунд продолжительностью – считается нормальным. Ладно, оставлю их, пусть они все будут счастливы.
Нужно было что-то делать. Раз здесь ловить нечего, значит наш выбор ANT+! Но для того, чтобы начать с ним работать нужен приёмник ANT+. Вещь редкая. Мало кому нужная. Связавшись с 5-6 магазинами стало понятно, что везде всё под заказ от месяца. Неудобненько. Удалось найти новый стик на Avito. Повезло. CYCPLUS.
Стик приехал. Но нужно его ведь к чему-то подключать? Скачал кучу каких-то нелепых программ. Никто его не видит.
Прекрасный сайт www.thisisant.com. Там все программы для работы с ANT+! Если будете идти по моему пути - проходите мимо. Там вам не рады. Даже то, что удалось скачать после регистрации работать не захотело вообще никак. Ну, или, моих инженерных талантов не хватило на то, чтобы заставить эту штуку работать.
Ладно, под Windows не получилось. Попробуем под Linux. Здесь всё ещё страннее. В целом в сети есть упоминания о людях, которые "смогли". Но есть одна странность – все проекты имеют последний срок обновления 5-8 лет назад. Ни один из них не собирается ни на какой из свежих версий Linux. А те что собираются – не работают. Явно был какой-то момент в этой жизни, когда это людей интересовало. Но потом они бросили это. И сейчас найти что-то внятное не представляется возможным.
Тут мне подсказали, что в современных телефонах бывает встроенный ANT+ модуль. Я не очень поверил, но спецификация Samsung сказала, что он там и вправду есть. Может здесь будет чудо? Странное зрелище. Если разрешить в системных настройках модуль ANT+ и поставить программу AntTester – она в самом деле говорит, что модуль есть и к работе готов. Но вот незадача – все программы, которые с этим модулем готовы работать, очень давно не обновлялись. У меня на телефоне сейчас Android 10 и любая попытка софта обратиться к ANT+ модулю заканчивается системной ошибкой и требованием обновиться. Но, как и с софтом под Linux – обновлять эти программы давно никто не собирается.
Вернулся к Linux. Много перебрал разных вещей. В основном это Python-библиотеки. Есть Node.js. Разные были. Список я не составил. Не работало ничего. И тут – случилось чудо. Одна из библиотек заработала.
https://github.com/corbamico/ANT-Library
Нет, не то чтобы это было подарком судьбы. Больше было похоже на какую-то домашнюю заплатку, оторванную от чего-то другого. И автор вообще явно не очень рассчитывал, что кто-то будет использовать эту библиотеку. Но с какими-то танцами и матами оно завелось.
Но вот как-то оно завелось… Нечётко что ли. То работает, то не работает. В инструкции к нагрудному ремню сказано, что прежде, чем его надевать – нужно смочить контактные площадки. Я уже замучался их мочить, потому-то мне всё время казалось что они подсохли и он выключился. Но когда я их мочил – становилось лучше, хоть и ненадолго. Короче непонятно было что происходит. И тут мне ещё раз повезло…
Я случайно заметил, что если повернуться лицом к ANT-стику, то библиотека начинает работать сильно лучше! Но зачем поворачиваться лицом к стику, если он от меня лежит в метре? И тут до меня начало доходить…
Ну это же ненормальные ведь люди?!? А смачивание контактов видимо помогало мне ненадолго повернуться к стику. Реально, это работает в прямом смысле "при прямой видимости". Если я поворачиваюсь к стику спиной, то сигнал вообще не проходит. На одном метре.
Не подумайте, я не хочу обидеть протокол ANT+, или производителя стика, или производителя пульсометра… Но что-то у меня не сложилось. Стало понятно, что я зашёл в очередной тупик. И кажется тут просвета нет.
Вот здесь тоже какие-то люди жалуются на дальность связи по ANT.
Но они спрашивают про BLE… Может повернуться туда?
Не очень, конечно, там всё сладко. За основу я взял RPi со встроенным Bluetooth-модулем. Стандартные утилиты hcitool хоть и увидели HRM Dual, но цепляться за него не захотели. Отняли у меня часа полтора. Но потом… Потом мне удалось найти прекрасную библиотеку.
https://github.com/fg1/BLEHeartRateLogger
Такое впечатление, что её писал первый адекватный человек, с которым мне довелось столкнуться на поприще возни с пульсометром. Это абсолютно нормально оформленная, здраво работающая программа, которая не захотела ничего лишнего и завелась почти с первой попытки. Не с первой, потому что вначале она решила зацепиться за Honor Band. Те были к этому не готовы. Но прямое указание BLE MAC решило вообще все вопросы и всё завелось моментально.
Дальше дело осталось за малым. Полученные значение были завёрнуты в MQTT, веб сервер их подхватил и они оказались выведены на часы спортивного зала. Всё предельно просто и прозрачно. Очень рекомендую. Дальность проверить не смог – больше чем на 10 метров мне не отойти от приёмника. Но приёмник ещё и в железной коробке, которая его явно экранирует. Работает идеально.
Осталось немного доделать расчёт длительности тренировок и графики пульса. Но это дело наживное. Это процесс творческий и сильно более благодарный, чем всё описанное выше.