Прокачиваем беговую дорожку

    Недавно я решился на очень странную для себя покупку. Да, я купил себе беговую дорожку.



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

    Так я решил сделать что-то подобное и с беговой дорожкой: подключить её к смартфону или планшету, чтобы собирать и отображать статистику.

    Как обычно, моё повествование и в виде традиционной текстовой статьи, и посредством видео. Кому как больше нравится.

    Видео



    Статья


    Конструкция


    Ещё в момент, когда я собирал беговую дорожку, я заметил, что пульт и само беговое полотно соединяют всего навсего четыре провода. Судя по всему, часть из них используется для питания пульта, ведь к сети 220 вольт подключается само полотно, а остальные провода нужны для передачи контрольных сигналов в обратную сторону — от пульта к полотну, они управляют скоростью и углом наклона дорожки.

    Я подключил осциллограф параллельно этим проводам, пробуя разные комбинации.

    В итоге выяснил, что всё примерно так, как я и предполагал. Один из проводов — это земля, и ещё один — питание 12 вольт. Остальные передают цифровые данные.

    В одном из них сигнал меняется при переключении скорости и угла наклона. Это именно то, что мне нужно! Амплитуда сигнала — около четырёх вольт. Только вот протокол не похож на что-то стандартное, и сигнал ну очень шумный, когда дорожка включена, надо его как-то фильтровать.



    По последнему же проводу просто идут импульсы с постоянной частотой. Судя по всему, чтобы пульт видел подключение к беговому полотну. Если этот провод отключить, пульт сразу выдаёт ошибку.

    Показания с датчика пульса по этим проводам явно не передаются, но оно и не нужно. Лучше подключить отдельный нагрудный датчик, который я уже давно использую при езде на велосипеде. К тому же выяснилось, что датчик пульса на самой беговой дорожке сильно врёт, занижая показания.

    Сборка устройства


    Итак, дальше стоит задача собрать плату, которая подключается параллельно этим проводам, считывает текущие показания скорости и угла наклона и каким-то образом передаёт их по беспроводному соединению в планшет или смартфон.

    В очередной раз я решил использовать одноплатный компьютер Onion Omega2. Он должен отлично справиться с поставленной задачей. Нужно только понизить напряжение питания до 3.3 вольт и отфильтровать данные от помех.

    Для понижения напряжения я сейчас использую вот такие вот готовые платы с DC-DC конвертером. Они стоят какие-то копейки, выдерживают до пары ампер, а выходное напряжение настраивается крутилкой.



    При этом эта плата имеет выводы, чтобы паяться прямо на другую плату, очень удобно. Главное — не свернуть крутилку напряжения после установки в схему.

    Для фильтрации помех на линии данных я сделал обычный RC-фильтр: резистор на 2.2 килоома и конденсатор на 22 пикофарада. Это должно отфильтровать высокочастотные помехи, оставив низкочастотный сигнал.

    Получилась достаточно маленькая платка.



    Я подключил её к проводам беговой дорожки, чтобы посмотреть, насколько хорошо фильтруется сигнал, когда она включена и, судя по всему, форма сигнала стала почти идеальной.



    Модуль ядра


    Однако, так просто работоспособность железа не проверить. Как мы увидели
    ранее на осциллографе, сигналы идут очень быстро, а у нас используется не микроконтроллер, а одноплатный компьютер Omega2 с Linux на борту. Под Linux мы не сможем так быстро обрабатывать сигналы из юзерспейса. А вот из ядра сможем! Поэтому самое время написать модуль ядра Linux!

    Для этого нужно скачать исходники ядра Linux, в нашем случае это сборка OpenWRT под Omega2, и создать в них директорию с исходным кодом нашего модуля.

    Написание кода модуля во многом похоже на программирование микроконтроллера. Тоже пишем на Си, тоже всё низкоуровневое, тоже работаем с прерываниями и тоже обращаемся к выводам GPIO. Только вот помимо всего перечисленного ещё взаимодействуем с пространством пользователя посредством псевдофайла. Таким образом наш модуль ядра становится чем-то вроде переходника между железом и обычными приложениями. Собственно, это и называется драйвером.

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



    Вскоре стало ясно, что сигналы кодируются длительностью высокого уровня. Он то длиною в 600 микросекунд, то в 1200 микросекунд. Низкий же уровень всегда длиною 600 микросекунд кроме начальной последовательности.

    Всего получается 17 таких таких перепадов вниз-вверх. Судя по всему, это 16 бит данных плюс начальная последовательность. Я сделал их декодирование, взяв за основу, что длинные высокие перепады — это логический ноль, а короткие — логическая единица и вывел то, что получилось. Сразу стало видно необходимые мне данные!



    16 бит — это, как известно, два байта. Первый байт говорит о типе передаваемых данных: угол наклона или скорость, а второй байт — сами данные. Драйвер получается предельно простой.

    Единственным параметром драйвера является номер порта.

    /* Module parameters */
    static u8 receive_pin = 11;
    module_param(receive_pin, byte, S_IRUGO);
    MODULE_PARM_DESC(receive_pin,"Treadmill receiver pin number (default 11)");
    

    При инициализации настраиваем его на вход и задаём прерывание, которое будет срабатывать при каждом изменении уровня на нём.

    /* Allocate and init the timer */
    data_recv_timer = kzalloc(sizeof(struct hrtimer), GFP_KERNEL);
    if (!data_recv_timer) {
        pr_err("treadmill: can't allocate memory for timer\n");
        treadmill_free();
        return -1;
    }
    hrtimer_init(data_recv_timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
    data_recv_timer->function = recv_timer_callback;
    

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

    /* IRQ fired every rising/falling edge of receiver pin */
    static irq_handler_t treadmill_irq_handler(unsigned int irq,
        void *dev_id, struct pt_regs *regs)
    {
        u64 now = ktime_to_us(ktime_get_boottime());
        u8 value = gpio_get_value(receive_pin);
        u64 time_passed;
        reset_recv_timer();
    
        if ((timings_pos & 1) == value)
        {
            time_passed = now - last_time;
            if (timings_pos < TIMINGS_BUFFER_SIZE)
            {
                timings[timings_pos] = time_passed;
                timings_pos++;
            }
            last_time = now;
        }
    
        /* Announce that the IRQ has been handled correctly */
        return (irq_handler_t) IRQ_HANDLED;
    }
    

    Фишка в том, что если таймер всё-таки сработает, значит перепадов уровня на пине не было достаточно давно, а соответственно пора обработать собранную информацию. В функции, которую вызывает таймер, проверяется, что было ровно 34 перепада, после чего смотрим, какой длительности был каждый интервал. Если там то 600 микросекунд, то 1200 микросекунд, то возьмём за границу 900. Если интервал меньше, то пишем в результат единицу, сдвигая его на один бит. После обработки каждого интервала, отправляем результат в открытые псевдофайлы, передавая таким образом данные в юзерспейс.

    /* Timer */
    static enum hrtimer_restart recv_timer_callback(struct hrtimer *timer)
    {
        int i, p;
        u16 data;
    
        if (timings_pos != 34) {
            pr_debug("treadmill: invalid edges count: %d", timings_pos);
            timings_pos = 0; 
            return HRTIMER_NORESTART;
        }
    
        data = 0;   
        for (i = 2; i < timings_pos; i += 2)
        {
            data >>= 1;
            if (timings[i] < 900) // 600us = 1, 1200 us = 0
                data |= 0x8000;
        }
        
        for (p = 0; p < 2; p++) {
            for (i = 0; i < treadmill_number_opens; i++) {
                if (!(opened_files[i]->f_mode & FMODE_READ)) continue;
                ((struct cfile_t*)opened_files[i]->private_data)->receiver_buffer[
                    ((struct cfile_t*)opened_files[i]->private_data)->receiver_write_pos++
                    % RECEIVER_BUFFER_SIZE] = (data >> (8 * p)) & 0xFF;
            }
        };
        wake_up_interruptible(&wq_data);
    
        timings_pos = 0; 
       
        return HRTIMER_NORESTART;
    }
    

    Сервер на Python и определение скорости


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

    Значение 9 соответствует одному километру в час, а значение 160 соответствует 18 километрам в час. То есть зависимость данных от реальной скорости совсем не очевидная. Я выписал все значения вручную, вбил их в Excel, построил график и получил весьма неровную кривую.



    Причём есть скорости, когда показания на пульте разные, а данные и скорость самой дорожки остаются одинаковыми! Например, 5.2 км/час и 5.3 км/час — это на самом деле одинаковые скорости. Везде обман. Интересно, какая там скорость на самом деле? Замерить бы как-то, но оставлю это на потом.

    Если не считать этого перевода попугаев в километры в час, то скрипт получился предельно простым. Читаем данные из псевдофайла Linux, декодируем, принимаем подключения по сети и передаём данные подключившимся по сети клиентам в виде JSON строки.

    class TreadmillServer:
        def __init__(self, device = "/dev/treadmill", port = 11010, interface = '0.0.0.0'):
            self._device = device
            self._port = port
            self._interface = interface
            self._working = False
            self._clients = []
            self._server_sock = None
            self.incline = 0
            self.speed = 0
    
        def start(self):
            self._working = True
            self._server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self._server_sock.bind((self._interface, self._port))
            self._server_sock.listen(10)
            print("Listening port", self._port)
            Thread(target=self._port_listener, name="Treadmill port listener", daemon=True).start()
            Thread(target=self._device_listener, name="Treadmill device listener", daemon=True).start()
    
        def stop(self):
            self._working = False
            if self._server_sock != None:
                try:
                    self._server_sock.close()
                except:
                    pass
                self._server_sock = None
    
        def __del__(self):
            self.stop()
    
        def _port_listener(self):
            while self._working and self._server_sock:
                try:
                    conn, addr = self._server_sock.accept()
                    print('Connected: {0}'.format(addr))
                    TreadmillClientConnection(self, conn, addr)
                except Exception as e:
                    print("Error:", e)
    

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

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



    Как известно, металл экранирует радиосигнал, поэтому Wi-Fi антенну я вынес наружу трубы, но под пластмассовый кожух, который прячет провода.



    На этом непосредственно “умная” беговая дорожка уже готова. Она уже умеет раздавать статистику по сети. Осталось только написать для неё клиент!

    Клиент на Android


    Чем по моему представлению должен быть такой клиент. Это приложение под Android, которое я буду запускать на планшете или смартфоне и класть поверх дисплея самой беговой дорожки, соответственно оно должно выводить на экран всю информацию по упражнениям, заменяя собой дисплей самой беговой дорожки. Приложение должно уметь работать в фоне, чтобы я мог без проблем смотреть видео во время пробежек. Также оно оно должно вести подробную статистику по пробежкам, синхронизируя всё с облаком и рисуя графики зависимости пульса от скорости и угла наклона.

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

    Датчик пульса


    Самым сложным внезапно оказалась работа с датчиком пульса. Обнаружилось множество подводных камней. Есть у меня вот такой вот нагрудный пульсометр:



    Я им уже давно пользуюсь, когда катаюсь на велосипеде. Он вполне стандартный, работает по BLE а-ля Bluetooth Low Enegy, без проблем спаривается и с телефоном, и с навигатором от Garmin. Я и подумать не мог, что работать с ним из своего приложения будет так неочевидно. У подобных датчиков есть стандартные GUID идентификаторы для разных показаний.

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

    Samsung Health SDK


    Что же касается статистики и графиков. Я решил не изобретать велосипед, а использовать то, что я уже использую при покатушках на велосипеде, а именно как-то подружиться с замечательным приложением Samsung Health.

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

    Поиск показал, что у Samsung Health есть свой SDK, который хоть и не совсем внятно, но всё-таки документирован: img-developer.samsung.com/onlinedocs/health/android/data/index.html

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

    Все эти данные нужно корректно сохранить и подготовить. Некоторые надо вычислить.

    Подсчет высоты


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

    Подсчёт калорий


    Но как считать калории? Причём подсчёт калорий является обязательным для Samsung Health. При этом сожжённые калории — это ну очень неточный показатель, который зависит от множества самых разных факторов. Не уверен, есть ли смысл в их подсчёте.

    Я не стал придумывать что-то своё и просто нагуглил калькулятор (https://42.195km.net/e/treadsim/) и скопировал к себе алгоритм из его джаваскрипта (https://42.195km.net/e/treadsim/treadsim107.js). На входе он принимает пройденное расстояние, угол подъёма и… вес.

    Я мог бы задавать свой вес вручную, но раз уж мы работаем с Samsung Health, я могу брать свой текущий вес оттуда. Ведь я использую умные весы от Xiaomi, которые синхронизируются с Google Fit у меня на телефоне, Google FIt через отдельное приложение синхронизируется с Samsung Health, Samsung Health через облако синхронизируется с собой же на планшете, где его получает уже моё приложение.

    Внешний вид приложения


    Визуально у приложения задача — это крупно отображать основные показания: скорость, угол, пульс, расстояние, калории. Лучше делать это белым цветом на чёрном фоне, чтобы расход заряда аккумулятора при использовании AMOLED экрана был минимальным, ведь мы конечно же указываем, что при отображении нашего активити экран должен быть включен постоянно.



    Кнопки автоматически скрываем, когда беговая дорожка активна. Запустить и остановить тренировку можно только при нулевой скорости.

    И конечно же надо сделать поддержку режима “картинка в картинке”. Делается это всего в несколько строк. Надо просто указать в манифесте, что активити поддерживает этот режим, а в коде переходить в него при сворачивании приложения. В результате можно смотреть, например, YouTube и видеть в уголке экрана показания беговой дорожки. Получилось очень удобно.



    Но на этом этапе меня окончательно настигла боль разработчика под Android, ведь у меня уже получается четыре разных размера экрана: телефон и планшет в обычном режиме и они же в режиме “картинка в картинке”. И так получилось, что если я подбираю нормальный размер шрифтов под один размер экрана, то в других случаях всё то слишком мелко, то слишком крупно.

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

    Результат


    И вот результат. Открываем приложение, ждём соединения с беговой дорожкой и датчиком пульса, запускаем тренировку и пользуемся беговой дорожкой как обычно.
    По окончании тренировки останавливаем беговую дорожку. По достижении нулевой скорости появится кнопка “завершить тренировку”. Нажимаем её, и статистика отправляется в Samsung Health. Открываем его и видим все данные.







    Можно посмотреть график пульса, скорости и подъёма, сравнить свои успехи в разные промежутки времени, всё это хранится в облаке и доступно со всех устройств.

    Можно и с Google Fit это синхронизировать. Красота. Я доволен результатом. Теперь главное — не забрасывать занятия. Можно добавить в функционал приложения, чтобы оно напоминало о тренировках, если я долго ленюсь. Но эту функцию мне делать уже лень.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 38

      +5
      Честно, я ожидал, что придётся навешивать ещё и свои датчики. То, что всё обошлось небольшим реверсом и написанием софта, — большая удача.
        0
        Учитывая что беговая дорожка стационарный объект, в отличии от велосипеда. Передавать и обрабатывать данные можно на умный дом. А приложением со смартфона/планшета смотреть статистику. Ну и в браузере с компьютера тоже можно смотреть.
          +5
          Вы знаете, все в вашем проекте хорошо, кроме того, что вы бегаете по часу подряд с пульсом 160. В связке с информацией, что вы приобрели дорожку «недавно», я бы сказал, что вреда от такого режима больше, чем пользы.
            0

            Это ходьба, а не бег. Ниже пульс при этом почти не опускается.

              +6
              Имхо — у Вас сильно косячит или дорожка с определением скорости (такое бывает, там очень большая погрешность) или пульсомер с определением пульса (хотя нагрудный вроде не должен). Иначе объяснить макс. пульс в 175 при макс. скорости 5.5км/ч очень тяжело, тем более всего при 80кг весе, даже с учетом 10% наклона.

              p.s.: Кому не хочется работать руками и дорожка не поддерживает слив данных — есть внешний standalone датчик, при чем более точный чем у дорожки, NPE runn — офигенная тема, меряет скорость, наклон и даже каденс.
                0

                Я сравнивал показания с другими пульсометрами, не косячит.

                  +2

                  10% наклона это совсем не мало)

                  +6
                  Вообще 160 ударов в минуту это вполне себе интенсивная работа, HIIT, спарринг или взрывная нагрузка (бёрпи, или быстрый продолжительный бег). Vsevo10d ихмо правильно заметил, при ходьбе пульс вряд ли выйдет за 100-120.

                  Вам либо поправку надо сделать, либо к кардиологу сходить (я серьезно, такой пульс при ходьбе — это очень плохо).
                    0
                    это вы в наклон не ходили) спокойно 175 делал)
                      +2
                      на эллипсе имитация подъема по ступенькам да, немного разгоняет пульс, но до 140-150 и это немного не «просто ходьба». Хотя конечно если очень интенсивно крутить ногами то и 170+ можно накрутить))
                      +1
                      Вам либо поправку надо сделать, либо к кардиологу сходить (я серьезно, такой пульс при ходьбе — это очень плохо).

                      Прежде чем заниматься каким либо видом дополнительной физической активности следует сходить сделать обследование, и в т.ч. побеседовать не только с обычными врачами но и спортивными.
                    0
                    Это нормально когда человек только начинает тренить. Я первый год бегал стабильно на 166, на ускорениях получалось разогнать до 197. Сейчас при часовой пробежке, проблематично догнать до 160, обычно около до 150. Если не каждый день на 166, то вполне нормально. Есть конечно прверженцы скиран, но там всё тоже не так однозначно. (у меня больше вопрос к их методике, как можно понизить пульс если ты это не тренишь а бегаешь всегда на сильно ниже). Кмк, но нужна просто разноплановая нагрузка и без перетрена чтоб.
                    Ну и кроме того, бывают индивидуальные особенности когда чссв среднем выше, ии наоборот в среднем ниже (есть знакомые у кого в покое ниже 60, а ночью так и подавно — бегает ультрамарафоны, а есть кто всё время бегает на 180, вне зависимости от темпа, и выбегают 3км из 10 минут, и марафоны стабильно тоже).
                    Но имхо, если лишний вес и прочее, лучше всего начинать с тренажерка + велосипед. Начинать с тренеровками со своим весом может быть куда травмоопаснее.
                      +3
                      Ну, во-первых, 5 км/ч — это учащенная ходьба, а не бег. Я промолчал насчет этого, потому что там угол вверх, а я так сходу не соображу, насколько это тяжелее.
                      Но я больше про то, что человек так себя истязает целый час. Да, ЧСС = 0,7*(220-возраст) считаются нормальной нагрузкой при аэробике или беге на выносливость. Но автор вообще ничего не говорит о задаче (возможно, он ее и не формулировал), а даже при интенсивных тренировках такая длительность чрезмерна. После 20 минут подряд пульса в 160 ничего, кроме изнурения и расширения левого желудочка уже не добиваешься.
                        0
                        Ну, во-первых, 5 км/ч

                        учащенная хотьба это после 6.30, и то, по 6 минут вполне бегают заминки. тем быстрее 6 минут это бег.
                        После 20 минут подряд пульса в 160 ничего, кроме изнурения и расширения левого желудочка уже не добиваешься.
                        да нет. Есть индивидуальные особенности, к примеру такие как тахикардия (просто чуть быстрее бьется сердце в среднем) тогда и при беге средний темп будет тоже выше. Нет никаких строгих границ которые подходят для всех. И уж тем более ориентироваться на 0,7*(220-возраст) без учета уровня подготовки полный бред.
                        80% бегового объема должны само собой на низком пульсе быть, но прежде чем на нем начать бегать, надо хоть какую то базу наработать.
                        Но я больше про то, что человек так себя истязает целый час.
                        да не факт, если человеку комфортно то всё норм.
                        даже при интенсивных тренировках такая длительность чрезмерна.

                        наоборот такая длительность норм при низкоинтенсивных тренеровках. На интенсивных обычно минут за 20 убиваешься (не считая разминки и заминки).
                        0
                        Это нормально когда человек только начинает тренить. Я первый год бегал стабильно на 166, на ускорениях получалось разогнать до 197. Сейчас при часовой пробежке, проблематично догнать до 160, обычно около до 150.
                        Чуть скорректируем.
                        Тут речь о балансе тренированности мышечной системы/кардио системы.
                        Если сердце прокачано слабее чем мышцы (среднестандартная ситуация для нетренированного человека), то будет большой пульс, но слабая нагрузка на мышцы.
                        Среднестистический бег (если так можно выразиться) прокачивает обычно кардио, поэтому «в среднем по палате» бег приведет к тому, что сердце прокачается и мышцы просто не смогут дать достаточную нагрузку что бы задрать пульс вверх.
                        Однако если заниматься целенаправленно (по системе) на прокачку мышц, то они догонят кардио и не будет проблем догнать пульс хоть до 200.
                        Как упрощенный итог можно сказать, что если час бегаешь на 180, то сердце слабее мышц и надо качать его. Если час бегаешь на 140, то мышцы слабее сердца и надо качать их.
                        Еще неплохой вариант бегать с девайсом измерителем уровня кислорода в крови. При кислороде больше 90 — пульс хоть 180 будет — нет проблем, а если при пульсе 140 опускается ниже 90 кислород — надо по любому бежать медленнее.

                        как можно понизить пульс если ты это не тренишь а бегаешь всегда на сильно ниже
                        Тренировка сердца идет на любом пульсе выше 90, опять же — в среднем по палате. Скирановцы (видео сейчас не посмотреть, просто по памяти) советуют тренировать сердце в районе 120, что в принципе имеет определённую логику — кислородного голодания при таком пульсе теоретически не появляется (поэтому нет усталости и проблем со здоровьем и перетрена), а тренировка/нагрузка все же идет т.к. это больше 90 (поэтому пульс постепенно понижается).
                          0
                          советуют тренировать сердце в районе 120
                          видео звучит очень категорично «бегать на пульсе до 120» и «когда сможешь бегать на 120 в течении 30 минут то можешь начать тренироваться серьезно». Если неподготовленный будет держать пульс меньше 120 постоянно при беге, у него пульс до такого и не опустится, годами, потому что не будет соответствующей нагрузки для тренеровки чего либо. Организм к бегу очень быстро адаптируется, и старается как можно меньше потреблять.
                          В коментариях на форумах, Парняков уже не так категоричен и у него проскакивали уже другие вариации. Но сейчас ненайду для цитат.
                          Тут речь о балансе тренированности мышечной системы/кардио системы.

                          ну да, вполне себе.
                          Однако если заниматься целенаправленно (по системе) на прокачку мышц, то они догонят кардио и не будет проблем догнать пульс хоть до 200.

                          Не обязательно, слабые неподготовленные мышцы быстрее закисляются, сильнее поднимают уровень углекислого газа в крови — это очень даже может сильно разогнать чсс.
                          Ну а так, это обычная проблема, многие считают что бег это просто и дешево, одел кеды (условно, самую простую обувь) и побежал. Как результат прощай колени, так как если есть лишний вес и/или в основном сидячий образ жизни они и так не особо в порядке, да им еще и нагрузку.
                          В идеале конечно же должно быть всё поставлено и с разминкой и заминкой.
                          что то типа 15 минут на разогрев(можно чуть побегать) 15 минут разминка, потом минут 40 основная работа (кросс или поскоростить, если второе то еще СБУ сделать), потом пол часика ОФПшечку, ну и растяжка-заминка. Собственно программа минимум :)
                            0
                            бег это просто и дешево
                            Мы бы сказали, что на бытовом уровне (физкультура, а не спорт) это либо сложно либо дорого.
                            При хорошей технике (сложно) колени не убиваются. Так же они не убиваются в хорошей обуви (не дешево). Амортизацию реально научились делать.
                            При этом дорогая обувь для бега (амортизация все дела) убивается намного быстрее дешевых кроссовок, что тоже оказывается неприятным сюрпризом. Когда кроссачи за 100 с лишним бачей через 2 месяца идут на помойку, в то время как китайский ноунейм за 10 баксов служит десятилетиями:)

                            p.s.: Спортивная ходьба как вариант. Ударная нагрузка стремится к нулю, потенциал скорости до 10км/ч что вполне себе нагрузка. Имхо — незаслуженно забываемый вариант тренировки.

                            когда сможешь бегать на 120 в течении 30 минут то можешь начать тренироваться серьезно
                            Тут надо учесть что именно на скиране называют бегом. Там все что медленнее 15км/ч автоматом записывают в лучшем случае в «трусцу», в ряде случаев могут опустить планку до 12км/ч. С учетом этого — 30 минут на 120 пульсе вполне себе достижение.
                          0
                          Я случайно минусанул ваш комментарий. Все по делу. Извините.
                        +1
                        Тоже озадачился на днях, но решил просто на мотор присоседить FC-03 для снятия ардуинкой скорости и с GY-521 забирать угол наклона. Ну а дальше по BLE отдавать в приложение.
                          0

                          Вот тоже сразу пришла в голову мысль, к чему весь этот реверсинжениринг, когда два датчика (обороты и любой колхоз для угла, там очень маленький диапазон) и *дуина/ESP8266… Вроде сильно проще, чем разбор протокола и модуль ядра… Хотя за оттачивание клинка автору однозначно респектище! ))

                            0

                            У любой задачи есть как простое рабочее решение, так и "красивое".
                            Вот дуина и пара датчиков, прицепленные сбоку к дорожке — это просто и работает, а так, чтобы всё через родные датчики — это именно то самое "красивое" решение (которое в абсолюте является разработкой своей открытой прошивки для родной головы тренажёра).


                            У обоих подходов свои плюсы и минусы, и разные цели: в простом варианте — чтобы было можно пользоваться, в "красивом" — потому что ещё и интересно, как оно работает.

                          +1
                          Кластера всегда интересно смотреть
                            0
                            Задумывался о покупке дорожки, но отпугнула стоиомость и возможная сложность обслуживания. Пока обхожусь подъемом по лестнице. Но продолжаю облизываться на дорожки)
                              0
                              Аналогично. Места у нас не много, поэтому выбор очень невелик, да и цены кусаются
                                0
                                По стоимости — хорошие от 50круб начинаются, но это приобретение на 3-5 лет, а то и дольше.
                                Сложность обслуживания — регулярно требуется только полотно смазать — полил его смазкой, дал 5 минут поработать и всё.
                                Складные дорожки в сложенном положении занимают квадратный метр площади.
                                  +3

                                  ИМХО, пока у вас есть хоть малейшая возможность гулять в парке/лесу — нужно пинать себя и ни в коем случае не покупать дорожку. Появится — будете на ней (если не забросите, конечно). Но воздействие от прогулки на природе гораздо более многогранное, чем просто от нагрузки мышц. Впрочем, это только моё мнение, ни разу не настаиваю. Каждому своё…

                                    0
                                    Согласна, нагрузка на дорожке совсем не та. Поэтому рекомендуется ставить наклон 1-2% в зависимости от скорости бега, чтобы хоть как-то имитировать дополнительную нагрузку при неровности рельефа и сопротивлении ветра. + Дорожки делают с хорошей амортизацией, человеку также не нужно менять направление бега, поэтому есть очень большой риск травмироваться после выхода на обычный асфальт
                                  0
                                  Посмотрите в сторону эллиптических тренажёров.
                                    0
                                    Эллипсы (если сравнивать со складными дорожками) занимают много места. Хотя конечно если сравнивать эллипс для дома с полноразмерной беговой дорожкой, то он покомпактнее будет…

                                    В общем для меня место на данный момент критично.
                                  0
                                  А не думали насчет превращения этой штуковины в ANT датчик? Подозреваю, что какие-то навороченные дорожки умеют с телефонами синхронится, и спецификации должны быть.
                                    0
                                    Немного прошлый век… Достаточно прикрутить управление дорожкой (уклоном и скоростью для интервалок) по ANT+ или BT для Zwift, rouwy или бесплатного аналога golden cheetah. Пульсометр цепляется к ПО и все выгружается куда хош.
                                      0
                                      Добавьте управление скоростью и подъемом, плюс развлекательную видеодорожку(или street view) и получите аналог платного ifit…
                                        0
                                        круто! а не думал к zwift прикрутить?
                                          +1

                                          Я хочу к тренажеру (дорожка, вело, эллипс) приблуду, которая на монитор перед тренирующимся будет выводить 3д-картинку из какого-нибудь флайт-симулятора, где можно летать над детализированной поверхностью (типа микрософт флайт симулятор). Наклоны головы — крен, поворот, тангаж, мощность — скорость бега. Статистика, оно хорошо, но хочется иногда и мозг поразвлечь в тот же час. Различный аудиоконтент не всегда в тему (или надоедает).
                                          Все пока не стронуться с места дальше идеи.

                                            +1
                                            Опасно это, ноги побегут туда, куда повернется голова, а там уже дорожки не будет. На Ютубе есть видео для беговой дорожке, я чуть не улетел с одним, там было дерево на пути и резкий поворот, так я и повернул…
                                              0

                                              Ну я на эллипсоиде скучаю, туда мне кажется в тему такое было бы. Рендерить просто дорогу с пейзажем тоже быстро надоест. А вот летать над практически неисчерпаемой местностью с вариативностью движения — самое то. Я бы и просто над GoogleEarth полетал, жизни не хватить все облетать.

                                            0
                                            А какие проблемы были со снятие показаний пульса, если там стандартный профиль BLE HRS?
                                              –1
                                              Все это, конечно, интересно, но… Зачем столько усилий, если нормальные умные часы/пульсометры прекрасно работают с беговыми дорожками? У меня Garmin, там есть специальный режим для бега на дорожке (а также бега в легкоатлетическом манеже, бега по лестнице и кучи всего еще). Часы берут среднюю длину шага при вашем беге (берет в расчет предыдущие забеги на улице с GPS), считает частоту шагов и вуаля — по итогам выдает километраж. При необходимости показания можно откалибровать, если результаты на дорожке и часах отличаются

                                              Only users with full accounts can post comments. Log in, please.