Ничто так не поднимает настроение, как продолжительная анаэробная тренировка. Но здесь важно не переусердствовать. В нашем возрасте (50+) тренировка может как улучшить самочувствие, так и ухудшить его. Поэтому во время бега я всегда контролирую пульс.
Стараюсь это делать, потому что следить за пульсом не так просто, как кажется. Часы с пульсометром часто «лагают», либо выдают неверные данные, либо попросту не определяют пульс. Телефон требует дополнительных движений, неудобен во время бега, тратит заряд батареи, и, к тому же, не хочется привлекать к нему лишнего внимания. Если бегаем на тренажёре, то лучше всего видеть пульс прямо перед глазами. Современные тренажёры умеют выводить пульс с помощью своих сенсоров или подключаясь к сенсорам бегуна. Однако может оказаться, что они подключились не к вашим сенсорам, а их собственные датчики также вызывают неудобства и часто работают ненадёжно. В конце концов, хотим ли мы, чтобы наш пульс знал весь интернет?
Чем ещё интересен пульс.
Можно соревноваться с самим собой, ориентируясь на показания пульса. Например, пробегать в одинаковых условиях одно и то же время, но стараться каждый раз уменьшать пульс в конце забега. Так можно найти наименее энергетически затратные способы бега. Или, наоборот, ускоряться до достижения своего максимального пульса и наблюдать, за какое время он был достигнут. Также очень интересно выяснить, за какое время пульс снизится до обычного после прекращения бега от максимального уровня. Для этого придётся анализировать записи в MATLAB.
Пульс может рассказать и о состоянии окружающей среды: достаточно ли кислорода, не слишком ли высока влажность, стоит ли вообще бегать в этом месте. Можно связать пульс с параметрами бега..., но это уже тема для другой статьи.
Аппаратная платформа
Что ж, пришлось разработать свой девайс. Как всегда, за основу берём модуль S7V30.
Вся библиография по проекту S7V30 собрана здесь
-
Открытый проект Wi‑Fi логгера по USB, CAN, RS-485, RS-232 — здесь первая публикация по модулю предшественнику нашего
-
Открытый проект встраиваемого модуля для IoT — схема и конструкция первой версии модуля. В текущей версии добавился только чип SPI Flash
-
Разработка универсального ПЛК для домашних агрегатов — здесь про то, где наш модуль применяется
-
Как сделать быстрый Wi‑Fi для ПЛК — здесь о том, как мы разогнали Wi‑Fi в нашем модуле
-
Архитектура, планирование и реализация DMA в микроконтроллерах Synergy — тут мы погружаемся в технологию быстрой пересылки данных внутри микроконтроллеров.
-
Делаем начальный загрузчик с криптографической защитой для Synergy на базе Azure RTOS — здесь описана первая версия нашего универсального и защищёного загрузчика.
-
Установка пароля на SD карту с помощью веб‑приложения на jQuery, веб‑сервера Azure RTOS и Synergy — а здесь мы нашли нетривиальное приложение для нашего модуля. С помощью него можно залочивать sd‑карты. Почти хакерский инструмент.
-
Открытый проект Wi‑Fi Bluetooth микророутера. Разворачиваем на модуле все необходимыме стеки чтобы по настоящему интегрировать его в IoT.
-
Опыты с акселерометром и гироскопом на платформе S7V30. Как легко и просто сделать датчик ориентации в пространстве.
Модуль S7V30 оснащён системой автономного питания, энергонезависимыми часами реального времени, высокоскоростными модулями Bluetooth и Wi-Fi (с пропускной способностью по UDP более 100 Мбит/сек), зарядкой через USB и доступом в интернет через USB, а также 6D IMU-чипом с низким энергопотреблением. Устройство работает на базе открытого фреймворка Azure RTOS с поддержкой драйверов exFAT, NetX Duo, GUIX и других. Это делает модуль серьёзным инструментом для записи активностей в реальном времени с частотой выборки IMU до 1666 Гц и созданием файлов данных объёмом в десятки гигабайт.
Как управляется трекер
На бегу нет времени искать и нажимать кнопки на таком маленьком устройстве. Поэтому управление осуществляется с помощью жестов. Жесты включают повороты в заданной ориентации, одиночные и двойные тапы, встряхивания и другие действия. В настройках, доступных через веб-браузер, можно задать, какие жесты и с какой интенсивностью включают, выключают прибор и переключают его режимы.
Такое управление стало возможным благодаря наличию на плате микросхемы ISM330DLCTR. Подробнее я рассказывал об этом в одной из своих статей. Тогда я не касался режимов микропотребления этой микросхемы, но её интересным свойством является возможность детекции механических воздействий при сверхнизком энергопотреблении. Микросхема способна определять смену ориентации, одиночные и двойные клики, вибрации, наклоны, а также состояние свободного падения, потребляя всего 10 микроампер.
Как оказалось, в состоянии сна микросхема довольно плохо отличает сильные механические воздействия друг от друга. Например, она легко может спутать одиночный тап с двойным или со сменой ориентации. Однако, что действительно хорошо удаётся микросхеме, так это надёжная детекция момента свободного падения. Например, можно настроить прибор так, чтобы он включался и выключался при подбрасывании на определённую высоту. Это делает случайное включение или выключение устройства практически невозможным.
Выбор LED матрицы
В качестве дисплея выбираем MKR RGB Shield. Этот модуль я уже использовал в предыдущем проекте. Светодиоды APA102 этого шилда интересны тем, что работают через интерфейс SPI, что позволяет использовать механизм DMA микроконтроллера, в отличие от матриц на светодиодах WS2812. Скорость интерфейса SPI для APA102 превышает 3 мегабита в секунду, что также имеет значение.
Тюнинг MKR RGB Shield для уменьшения тока потребления
Проблемой MKR RGB Shield для автономных устройств является высокий ток потребления даже при выключенных светодиодах. Поэтому приходится выполнить небольшой тюнинг его схемы. Вот как выглядит оригинальная схема MKR RGB Shield:
Когда все светодиоды выключены, MKR RGB Shield потребляет от аккумулятора с напряжением 3.7 В ток 30 мА.
После тюнинга схема выглядит так:
Дополнительный транзистор, управляемый микроконтроллером, служит для полного отключения шилда от аккумулятора. В результате его ток потребления уменьшается до менее 1 мкА (утечки, однако).
Тюнинг на плате выглядит так:
Работа на тренажере
Тренажёры, подобные тому, что на фотографии способны принимать ANT+ пакеты. Поскольку нагрудные пульсометры часто передают данные о пульсе в ANT+, то, встав на тренажёр, можно сразу увидеть свой пульс. Или чужой, так как тренажёр не выполняет аутентификацию пульсометров по ANT+. Наш прибор с пульсометром выполняет pairing по Bluetooth LE, поэтому всегда показывает данные только от конкретного указанного пульсометра. .
Какие пульсометры совместимы с нашим прибором и как их подключить
Наш прибор совместим со всеми Bluetooth-пульсометрами, имеющими в своём Bluetooth-профиле сервис с UUID = 0x180D.
Работа тестировалась с пульсометрами POLAR и GARMIN.
Подключение пульсометра выполняется через терминал. Для этого надо нажать последовательность: 4 - 1 - O.
Когда обнаруживается устройство с UUID, равным 0x180D, и подходящее нашей модели, надо нажать H. Будет выведен список обнаруженных пульсометров, с каждым из кторых будет установлена связь и прочитаны его данные, включая серийный номер.
Выбрать нужный и нажать Enter. Реквизиты устройства будут записаны в память. После этого надо выполнить сброс, и дисплей пульса станет готов к работе.
Можно сразу записать реквизиты пульсометра в параметрах устройства через терминал или через WEB интерфейс:
Адрес сенсора, Handle и CCCD Handle можно узнать с помощью программ типа nRF Connect.
Кроме того, устройство позволяет просто выводить произвольный текст.
Софт
Репозиторий проекта находится здесь.
Проект компилируется в среде IAR Embedded Workbench for ARM 9.60.3 и написан на языке C.
В проекте содержится 3900 файлов, основную часть которых составляют файлы универсального программного фреймворка платформы S7V30, который включает, в частности:
-
Операционную систему реального времени ThreadX.
-
Промежуточное программное обеспечение Eclipse ThreadX: FileX, NetX, GUIX, USBx.
-
Пакет программного обеспечения Synergy, включающий базовые драйверы для Azure RTOS.
-
Пакет Wi-Fi Host Driver (WHD) от Infineon.
-
Пакет BTSTACK Library от Infineon.
Благодаря этому фреймворку на платформе S7V30 можно быстро создавать широкий спектр приложений в области IoT и автоматизации. И да, тут опять для вывода нескольких цифр применен целый оконный GUI движок GUIX. Это дает возможность LED матрицу буквально за пару минут заменить на TFТ дисплей с большими шрифтами и виджетами.
Фреймворк изолирован и не зависит от основного приложения. Его можно компилировать отдельно и использовать для создания других приложений.
Исходные тексты самого конечного приложения находятся в директории src. В директории могут присутствовать артефакты от других планируемых приложений. Пускай это не смущает.
В файле Motion_sensor.c
находится задача, непосредственно работающая с IMU-микросхемой. По умолчанию эта задача сразу начинает записывать в файл данные гироскопа и акселерометра в реальном времени. Затем этот файл можно скачать с FTP-сервера устройства и проанализировать в MATLAB. Для удобства в директории MATLAB имеется соответствующий скрипт для импорта данных. Кроме того, в задаче по-прежнему может быть открыт канал прямой связи с MATLAB в реальном времени через Wi-Fi или USB, как это было продемонстрировано в данном проекте.
Все приложение трекера в работе занимает 6% процессорного времени. Если идет работа через WEB интерфейс или идёт скачивание файлов, то нагрузка повышается. Максимальный ток при работающем на полной скорости Wi-Fi - 200 мА. Сюда не входит ток потребляемый LED матрицей. Матрица в среднем в режиме индикации пульса потребляет 50 мА.
Полное поребление в режиме Deep Software Standby
Подбрасываем прибор и он переходит в так называемый "активный сон"
В целом, весь прибор при активном ISM330DLCTR, микроконтроллере, переведённом в режим Deep Software Standby с сохранением содержимого Standby SRAM, активных часах и счётчике заряда аккумулятора (схема модуля приведена здесь), потребляет 78 мкА при комнатной температуре.
В приборе встроен аккумулятор 500 мА*ч. И значит с таким аккумулятором прибор в активном сне продержится не менее 200 дней.
Итог
Честно говоря, трекер не особенно экономичен. В будущем нужно будет подумать о более энергоэффективном решении. Однако, это всего лишь демонстрационно-исследовательский проект, и от него нельзя требовать многого. Его функции и удобство использования всё ещё находятся в стадии изучения.
Автор: Indemsys