
Идея заставить двигаться сутулого игрока в компьютерные игры не нова, уже давно существует Kinect у Microsoft, всякие датчики у Sony, Nintendo, а теперь ещё и аксессуары к шлемам виртуальной реальности, которые требуют, чтобы вы шевелили руками-ногами в процессе игры.
Однако, личный опыт пользования такими устройствами показал, что:
1. Играть можно только в те игры, которые явно заточены под датчики движения. А что делать тем, чья любимая игра — «Весёлые Зомби на Острове Невинных», выпущенная в прошлом веке?
2. Движения в игре не совпадают с комфортным/необходимым уровнем нагрузки. Либо быстро устаёшь, либо мышцы не получают нужной нагрузки.
Поэтому пришла в голову идея соединить простейший компактный спортивный тренажёр (степпер) с компьютером и сделать так, чтобы компьютер позволял играть только тогда, когда я соблюдаю определённый темп упражнения.
В результате, в первый день использования получившегося устройства, я сделал больше шагов, чем за год нерегулярных вялых подходов к аналогичному тренажеру в обеденный перерыв, а через месяц разбил в хлам резиновые ограничители. Хорошо ещё дырку в полу не продолбил и к соседям снизу не провалился.
Кому интересно повторить мой опыт — читаем дальше.
Кратко о том, как это работает
Когда вы шагаете на степпере, в нём перемещается магнит, замыкая и размыкая встроенный датчик (геркон), благодаря чему подсчитывается и выводится на дисплей число шагов.
Установим рядом аналогичный датчик, присоединим его к плате Arduino, а уж её – к компьютеру кабелем USB. Arduino будет сообщать программе на компьютере, когда вы сделаете очередной шаг. Если вы не слишком интенсивно шагаете, программа инструктирует Arduino о том, что нужно сперва привлечь ваше внимание моргающими светодиодами (красным, потом синим, потом обоими), а потом включить назойливый писк. Если это не помогает, программа затемняет изображение на экране компьютера.
Поверьте, это хорошо работает. Вы сразу возобновляете ходьбу.
Изначально я пытался блокировать работу мыши/клавиатуры как наказание за низкую интенсивность физического упражнения. Но это оказалось излишним/раздражающим, достаточно слегка понизить комфорт общения с компьютером, но не блокировать управление совсем.
Опыт использования и перспективы
Двигаться я стал гораздо больше, и это однозначно плюс. Но есть тонкости.
Недорогой степпер, к сожалению, меняет свои характеристики в первые же минуты использования. Масло в амортизаторах нагревается, становится жиже, и двигаться становится легче. У меня даже на коробке от степпера написано, что он рассчитан на 20 минут непрерывного использования.
Программа пока что настроена на один темп нагрузки. В идеале его нужно регулировать как вручную, так и по графику. А ещё лучше – в зависимости от датчика пульса.
Далее, ноги тренируются достаточно хорошо. А как же руки и всё остальное? Ведь руки заняты клавиатурой и мышью?
Пытался я высвободить руки, используя управление компьютером при помощи отслеживания направления взгляда и голоса. Ну… В шахматы так играть на компьютере можно, но в динамичную игру – у меня не получилось.
Посмотреть видео о попытках играть без помощи рук (используя программы, которые я писал для людей с ограниченными возможностями)
Управление голосом в игре:
Управление взглядом в игре:
Управление взглядом в игре:
Так что пока нагрузка на руки – вопрос открытый. Возможно, попробую размещать кнопки/датчики давления/гироскопы прямо на рукоятках тренажёров.
А вообще считаю, что фитнес-центры, в том виде, в котором они есть сейчас, себя отжили. Придёт время развлекательных центров, где физическая нагрузка будет стимулироваться какими-нибудь развлечениями, например, компьютерными играми/соревнованиями.
А пока — сделаем такой у себя дома.
Что нам понадобится?
1. Компьютер, установленный на возвышении. Это важно. Стоя на степпере, вы должны иметь комфортный доступ к клавиатуре и мыши. Я соорудил полочку на шведской стенке.
2. Тренажёр «степпер». Я взял “Domyos Mini Stepper Essential” в «Декатлоне». Но видел очень похожую модель и в «Спортмастере». Вообще сложилось впечатление, что все степперы делают по одинаковым чертежам, внося минимальные косметические изменения.
3. Набор с платой Arduino – самый простой, лишь бы туда входили:
— плата Arduino (в моём случае – китайский аналог Arduino Nano)
— провод USB для соединения с компьютером
— монтажная плата и провода
— 2 светодиода, 2 сопротивления 220 Ом, 1 сопротивление 10 кОм
Можно все эти элементы взять по отдельности.
4. пьезоизлучатель, рассчитанный на напряжение от 5 Вольт. На моём написано – HPM-14A.
5. миниатюрный геркон, например, МКА-10110А. Более крупный геркон здесь работает плохо! Проверено!
6. длинный двухжильный провод, чтобы соединить геркон в тренажёре и Arduino
7. колпачок от старого фломастера, чтобы разместить в нём геркон
8. Паяльник, дрель, пинцет, клеевой пистолет, тестер/мультиметр.
Пошаговая инструкция
1. Добавляем геркон в степпер
Аккуратно загибаем один из выводов геркона, удерживая пинцетом у основания, чтобы при сгибании не треснул стеклянный корпус! Я один геркон так потерял.
Подпаиваем провода:
Засовываем геркон в колпачок от фломастера и устанавливаем его, аналогично штатному, но с другого бока. Сразу установить на правильное место не получится. Правильное место – это когда геркон срабатывает точно посередине шага, когда правая педаль находится вровень с левой. Поэтому сначала приклеим скотчем и будем двигать вправо-влево, пока не найдём правильное положение (потребуется тестер, чтобы увидеть, когда контакт замыкается-размыкается):
Потом окончательно закрепляем колпачок с датчиком, заливая клее�� из клеевого пистолета. Пока клей не застыл окончательно, ещё можно слегка откорректировать положение датчика.
Провода от датчика, выведенные наружу через просверленное отверстие, имеет смысл снабдить легко отсоединяющимися разъёмами (взял из набора с Arduino). Потом много раз задевал провод ногой, и это спасало его от обрыва.
2. Собираем схему с платой Arduino

У меня это превратилось вот в такое переплетение проводов:
3. Заливаем программу в Arduino
Код программы
// версия для геркона, двух диодов и пьезоизлучателя
int brightnessB=LOW, brightnessR=LOW;
int blinkingB=0; int blinkingR=0;
int speakerPin=8;
int BlueLED=10;
int RedLED=11;
int freq[]={3830,3038,2550,3038};
int cur_freq=0;
int buzzer_value=0;
volatile int stepper=0, old_stepper=0;
// функция обработки прерывания на pin
void step()
{
stepper=!stepper;
Serial.print(stepper);
Serial.flush();
}
void setup() {
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(2,INPUT);
Serial.begin(9600);
//attachInterrupt(0,step,CHANGE);
}
void loop()
{
delay (200);
// 1. Принимаем команду от компьютера о яркости светодиода
while(Serial.available())
{
switch(Serial.read())
{
case '0': // красный и синий горят, сирена воет
brightnessB=HIGH; blinkingB=0;
brightnessR=HIGH; blinkingR=0;
buzzer_value=1;
break;
case '1':
// Синий и красный перемаргиваются.
brightnessB=LOW; blinkingB=1;
brightnessR=HIGH; blinkingR=1;
buzzer_value=0;
break;
case '2': // Синий моргает
brightnessB=HIGH; blinkingB=1;
brightnessR=LOW; blinkingR=0;
buzzer_value=0;
break;
case '3':// Красный моргает
brightnessB=LOW; blinkingB=0;
brightnessR=HIGH; blinkingR=1;
buzzer_value=0;
break;
case '4': // Красный горит
brightnessB=LOW; blinkingB=0;
brightnessR=HIGH; blinkingR=0;
buzzer_value=0;
break;
case '5':
// Тьма.
brightnessB=LOW; blinkingB=0;
brightnessR=LOW; blinkingR=0;
buzzer_value=0;
break;
}
} // Прочли все символы из буфера порта, поняли, какая яркость нам нужна
if(1==blinkingB)
{
if(HIGH==brightnessB) brightnessB=LOW; else brightnessB=HIGH;
}
if(1==blinkingR)
{
if(HIGH==brightnessR) brightnessR=LOW; else brightnessR=HIGH;
}
digitalWrite(RedLED,brightnessR);
digitalWrite(BlueLED,brightnessB);
if(1==buzzer_value)
{
tone(speakerPin, freq[cur_freq], 200);
cur_freq++;
if(cur_freq>3) {cur_freq=0;}
}
stepper=digitalRead(2);
if(old_stepper!=stepper)
{
Serial.print(stepper);
Serial.flush();
old_stepper=stepper;
}
}
Проверяем, что она работает – в Serial Monitor, который есть в среде разработки Arduino, можно увидеть растущую строку из нулей и единиц, когда вы шагаете на тренажёре.

А если вбивать цифры и посылать их Arduino, то он должен реагировать так:
5 – светодиоды погашены
4 – горит красный
3 – моргает красный
2 – моргает синий
1 – моргает то красный, то синий
0 – Пищит пищалка. Оба диода горят.
4. Запускаем программу на компьютере
Программу DimForce.exe можно взять на гитхабе (в том числе в виде исходников):
https://github.com/MastaLomaster/DimForce
На текущий момент в программе жёстко прошито, что Arduino соединён по порту COM9. Если у вас это не так, сконфигурируйте порт Arduino, как COM9. Либо перекомпилируйте программу, подправив в ней строку в файле DFSerial.cpp:
Port = CreateFile(L"\\\\.\\COM9", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
Когда вы шагаете на тренажёре, в окне программы ноль должен меняться на единицу и обратно:

Если перестанете шагать, светодиоды должны моргать всё назойливее, а затем включится пищалка, и в конце концов экран чуть потемнеет.
Не останавливайтесь! Занимайтесь на здоровье!
Only registered users can participate in poll. Log in, please.
Какие мысли приходят вам в голову при занятиях на тренажёре?
15.06%Какой я стану сильный39
1.54%Какая я стану стройная и красивая4
37.07%Когда кончится это мучение96
46.33%Мысли покидают меня120
259 users voted. 95 users abstained.