4.5 KiB
4.5 KiB
Грузоблочный тренажер - Android приложение
Android приложение для управления грузоблочным тренажером с ESP32 микроконтроллером.
Функциональность
- Регистрация участника - добавление и выбор участника тренировки
- Выбор режима упражнений - выбор готового сценария или создание индивидуального
- Пуск и останов упражнения - управление тренировкой
- Подсчет подъемов - в режиме на время считаются выполненные подъемы
- Отсчет времени - в режиме на количество отсчитывается время выполнения
- Кардиодатчик - отображение показаний пульса в реальном времени через Bluetooth
- Печать отчетов - вывод результатов тренировки на принтер
Технологии
- Kotlin
- Jetpack Compose
- Room Database
- WebSocket (OkHttp) для связи с ESP32
- Bluetooth LE для кардиодатчика
- Navigation Component
Настройка
WebSocket подключение к ESP32
В файле MainActivity.kt измените URL WebSocket:
val websocketUrl = "ws://192.168.1.100:81" // Замените на IP вашего ESP32
ESP32 должен отправлять сообщения в формате JSON:
{"position": "top"} // или "bottom"
Bluetooth кардиодатчик
Приложение автоматически сканирует и подключается к Bluetooth устройствам с Heart Rate Service (UUID: 0000180d-0000-1000-8000-00805f9b34fb).
При первом запуске приложение запросит разрешения:
- Bluetooth
- Location (требуется для Bluetooth LE сканирования на Android 12+)
Структура проекта
app/src/main/java/ru/kgeu/training/
├── data/
│ ├── dao/ # Data Access Objects для Room
│ ├── database/ # Room Database
│ ├── model/ # Модели данных
│ └── repository/ # Репозиторий для работы с данными
├── network/
│ └── WebSocketClient.kt # WebSocket клиент для ESP32
├── bluetooth/
│ └── HeartRateMonitor.kt # Bluetooth сервис для кардиодатчика
├── ui/
│ ├── navigation/ # Навигация
│ ├── screen/ # UI экраны
│ ├── theme/ # Тема приложения
│ └── viewmodel/ # ViewModels
└── util/
└── PrintUtil.kt # Утилита для печати
Режимы упражнений
Режим на время
- Устанавливается целевое время (в секундах)
- Считается количество выполненных подъемов
- Тренировка завершается по истечении времени
Режим на количество
- Устанавливается целевое количество подъемов
- Отсчитывается время выполнения
- Тренировка завершается при достижении цели
База данных
Приложение использует Room Database для хранения:
- Участников тренировок
- Сценариев упражнений (готовых и пользовательских)
- Сессий тренировок с результатами
Печать
Функция печати использует стандартную систему печати Android и поддерживает:
- Печать на принтеры через Wi-Fi
- Сохранение в PDF
- Отправку по email
Требования
- Android 8.0 (API 26) или выше
- Поддержка Bluetooth LE
- Подключение к сети для WebSocket
Разработка
Для сборки проекта используйте:
./gradlew assembleDebug
Для установки на устройство:
./gradlew installDebug