ГТО по-современному

Готов к труду и обороне – так расшифровывается это загадочное ГТО. Система ГТО была создана ещё в 30ых годах 20 века, но была благополучно забыта после развала СССР. В 2014 году произошло возрождение ГТО.

На дворе 21 век – век технологий. Почему бы нам не автоматизировать сдачу ГТО?

Сегодня мы будем модернизировать сдачу норматива по бегу.

Идея

Начинается все, как обычно, с идеи. Смотрим на картинку.

Алгоритм

Алгоритм такой:

  • Подключаемся по Bluetooth к устройству
  • Когда будем готовы, нажимаем кнопку старт
  • Раздается сигнал, сообщающий бегуну о старте. Время пошло
  • Ожидаем финиша
  • Как лишь бегун пересекает линию финиша – посылаем команду на смартфон о финише.
  • В приложении будет показано время финиша. Если время финиша устраивает, то переходим на экран, который попросит ввести данные о бегуне и дистанцию, а потом выведет результат забега в виде значка ГТО.

Детали

Нам понадобятся:

Arduino UNO

Будет мозгом нашего устройства.

 

 

 

Troyka shield

Его надеваем на Arduino UNO. К нему проще простого подключить все датчики и Bluetooth.

Bluetooth модуль

С его помощью мы будем связываться со смартфоном. См. статью Подключаем к Arduino модуль Bluetooth

Динамик

Для готового устройства нужно взять что-нибудь мощнее. Для прототипа сойдет обычная пищалка.

Лазер

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

Фоторезистор

На него нужно направить луч лазера.

Макет устройства

Начнем с присоединения Troyka к Arduino UNO. Насаживаем Troyka поверх Arduino UNO

Теперь нужно подключить датчики и Bluetooth. Собираем схему.

Ещё нужно подумать на счет размещения фоторезистора и лазера. Лазер должен быть направлен точно в фоторезистор. Фоторезистор стоит защитить ободом для того, чтобы уменьшить воздействие света. Я собрал небольшой макет. Каркас распечатан на 3D принтере.

Макет собран. Пришло время программирования.

Код

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX Bluetooth

#define BUZZER 4
#define LASER 2
#define LDR A5 //Light Depend Resistor, если что

int val; //Показания фоторезистора
char inc_byte; //Переменная для входящих данных от Bluetooth
float s_time, f_time, r_time; //Переменные для подсчета времени

void setup()
{
mySerial.begin(9600);
Serial.begin(9600);

pinMode(BUZZER, OUTPUT);
pinMode(LASER, OUTPUT);
digitalWrite(LASER, HIGH);
}

void loop()
{
//Если появились данные с Bluetooth
if (mySerial.available() > 0)
{
//Считываем входящий байт
inc_byte = mySerial.read();
Serial.println(inc_byte);
// Если пришла команда СТАРТ
if (inc_byte == ‘S’)
{
Serial.println(«Start»);
tone(BUZZER, 1000);
delay(1000);
noTone(BUZZER);
s_time = millis();
while (inc_byte != ‘i’)
{
finish();
}
}
}
}

void finish()
{
// Ждем сигнала пересечения линии
val = (analogRead(LDR));
if (val > 50)
{
f_time = millis();
r_time = f_time — s_time;
r_time = r_time / 1000 + 1.0;
Serial.println(«Finised»);
Serial.println(r_time);
//Отправляем сообщение о финише через Bluetooth
mySerial.write(‘F’);
inc_byte = ‘i’;
}
}

Пояснения

millis() – функция, встроенная в Arduino IDE, которая возвращает время, прошедшее с момента запуска контроллера. Она может пригодиться для измерения времени, прошедшего с начала какого-нибудь события.

Я написал небольшую программу для тестирования этой функции. После запуска программы, откройте Serial monitor. Когда будете готовы, впишите ‘s’ в строку ввода данных.

bool start = false;
int incByte = 0;
float s_time, f_time, rf_time;

void setup()
{
Serial.begin(9600);
Serial.println(«Type ‘s’ when you are ready»);
while(!start)
{
if (Serial.available() > 0)
{
incByte = Serial.read();
if(incByte == ‘s’) start = true;
}
}
Serial.println(«Arduino started!»);
s_time = millis();
Serial.print(«Start time is: «);
Serial.println(s_time);
delay(2000); //Искусственная задержка.
f_time = millis();
rf_time = (f_time — s_time) / 1000.0;
Serial.print(«Finish time is: «);
Serial.println(f_time);
Serial.print(«Measured time in seconds is: «);
Serial.println(rf_time);
}

void loop()
{
// put your main code here, to run repeatedly:
}

Запуская программу, вы можете заметить, что замеренное время иногда отличается от ожидаемого на 1 миллисекунду или около того. Так происходит из-за того, что на выполнение команд контроллеру нужно время. Небольшое, но все же.

Приложение для Android

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

Я сделал макет такого приложения. После соединения с Bluetooth вылезает экран с секундомером. При нажатии кнопки “Start”, на Arduino посылается сигнал о начале забега. Издается звуковой сигнал, который сообщает бегуну о начале забега. Как лишь бегун пересекает линию финиша, Arduino отправляет сигнал об остановке.

Если время забега устраивает, нужно нажать на “Results”. Откроется новый экран. Здесь нужно заполнить информацию о бегуне. Когда информация будет заполнена, нужно нажать на “My result”. Ваш результат будет выведен на экран в виде значка ГТО.

Если делать настоящее приложение, то нужно добавить возможность поделиться результатом или сохранить его в базу данных ГТО. Так же нужно добавить возможность добавления бегуна для быстрого результата. А это же макет, показывающий, как ещё можно использовать Arduino, Bluetooth и датчик пересечения.

Я не буду рассказывать о том, как создать такое приложение – эта тема далеко не на один урок. Для тех, кто разбирается — скачать файлы приложения можно тут. Делалось приложение в Android Studio, если что.

Будущее?

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

Физруки по всей стране смогут вздохнуть с облегчением – не надо больше самостоятельно вносить результаты в тетради или таблицы Excel. Все сделает устройство. Нужно лишь поудобнее расположиться в кресле и, потягивая лимонад из бокала, нажимать на кнопку.

Идем дальше. А что если устройство будет полезным не лишь физрукам? Оно пригодится всем спортсменам бегунам. Устройство будет устанавливаться на легкоатлетических дорожках и помогать бегунам заниматься спортом.

 

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

Но чего-то я размечтался. Пора закругляться.

Итог

Сегодня мы нашли ещё одно применение Bluetooth, собрали датчик пересечения из лазера и фоторезистора, а также помечтали о получении мотивации таки выйти и сделать кружок на стадионе. А чего, собственно, мечтать? За дело!  

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.