last commit
This commit is contained in:
231
README.md
231
README.md
@@ -1,114 +1,183 @@
|
||||
# Грузоблочный тренажер - Android приложение
|
||||
# Тренировочное приложение КГЭУ
|
||||
|
||||
Android приложение для управления грузоблочным тренажером с ESP32 микроконтроллером.
|
||||
Android-приложение для проведения и учёта тренировок с использованием тренажёра, подключённого к ESP32.
|
||||
|
||||
## Функциональность
|
||||
## Описание
|
||||
|
||||
1. **Регистрация участника** - добавление и выбор участника тренировки
|
||||
2. **Выбор режима упражнений** - выбор готового сценария или создание индивидуального
|
||||
3. **Пуск и останов упражнения** - управление тренировкой
|
||||
4. **Подсчет подъемов** - в режиме на время считаются выполненные подъемы
|
||||
5. **Отсчет времени** - в режиме на количество отсчитывается время выполнения
|
||||
6. **Кардиодатчик** - отображение показаний пульса в реальном времени через Bluetooth
|
||||
7. **Печать отчетов** - вывод результатов тренировки на принтер
|
||||
Приложение позволяет:
|
||||
- Регистрировать участников тренировок
|
||||
- Создавать и выбирать сценарии упражнений
|
||||
- Проводить тренировки с автоматическим подсчётом подъёмов
|
||||
- Отслеживать пульс через Bluetooth-кардиодатчик
|
||||
- Просматривать статистику тренировок
|
||||
|
||||
## Технологии
|
||||
## Режимы тренировок
|
||||
|
||||
- Kotlin
|
||||
- Jetpack Compose
|
||||
- Room Database
|
||||
- WebSocket (OkHttp) для связи с ESP32
|
||||
- Bluetooth LE для кардиодатчика
|
||||
- Navigation Component
|
||||
### Режим на время (TIME_BASED)
|
||||
- Задаётся время выполнения упражнения в секундах
|
||||
- Приложение считает количество выполненных подъёмов
|
||||
- Норматив: минимальное количество подъёмов за заданное время
|
||||
|
||||
## Настройка
|
||||
### Режим на количество (COUNT_BASED)
|
||||
- Задаётся целевое количество подъёмов
|
||||
- Приложение засекает время выполнения
|
||||
- Норматив: максимальное время для выполнения заданного количества подъёмов
|
||||
|
||||
### WebSocket подключение к ESP32
|
||||
## Технические требования
|
||||
|
||||
В файле `MainActivity.kt` измените URL WebSocket:
|
||||
- Android 14 (API 34) или выше
|
||||
- Bluetooth для подключения кардиодатчика
|
||||
- WiFi для подключения к ESP32
|
||||
|
||||
```kotlin
|
||||
val websocketUrl = "ws://192.168.1.100:81" // Замените на IP вашего ESP32
|
||||
```
|
||||
## Подключение к оборудованию
|
||||
|
||||
ESP32 должен отправлять сообщения в формате JSON:
|
||||
### ESP32
|
||||
Приложение подключается к ESP32 по TCP/IP. ESP32 должен отправлять JSON-сообщения с положением груза:
|
||||
```json
|
||||
{"position": "top"} // или "bottom"
|
||||
{"position": "top"} // Груз вверху
|
||||
{"position": "middle"} // Груз в движении
|
||||
{"position": "bottom"} // Груз внизу
|
||||
```
|
||||
|
||||
### Bluetooth кардиодатчик
|
||||
Поддерживаемые значения `position`:
|
||||
- `top`, `up` — верхнее положение
|
||||
- `middle`, `moving`, `in_motion`, `motion` — груз в движении
|
||||
- `bottom`, `down` — нижнее положение
|
||||
|
||||
Приложение автоматически сканирует и подключается к Bluetooth устройствам с Heart Rate Service (UUID: 0000180d-0000-1000-8000-00805f9b34fb).
|
||||
### Кардиодатчик
|
||||
Приложение поддерживает Bluetooth-кардиодатчики с протоколом Heart Rate Service (стандартный BLE профиль).
|
||||
|
||||
## Сборка проекта
|
||||
|
||||
### Требования
|
||||
- Android Studio Ladybug (2024.2) или новее
|
||||
- JDK 11
|
||||
- Android SDK 36
|
||||
|
||||
### Шаги сборки
|
||||
|
||||
1. Клонируйте репозиторий:
|
||||
```bash
|
||||
git clone <url-репозитория>
|
||||
cd AndroidStudioProjects
|
||||
```
|
||||
|
||||
2. Откройте проект в Android Studio:
|
||||
- File → Open → выберите папку проекта
|
||||
|
||||
3. Дождитесь синхронизации Gradle (происходит автоматически)
|
||||
|
||||
4. Соберите проект:
|
||||
- Build → Make Project (Ctrl+F9)
|
||||
|
||||
## Установка на телефон
|
||||
|
||||
### Способ 1: Через Android Studio (рекомендуется для разработки)
|
||||
|
||||
1. Включите на телефоне **Режим разработчика**:
|
||||
- Настройки → О телефоне → 7 раз нажмите на "Номер сборки"
|
||||
|
||||
2. Включите **Отладку по USB**:
|
||||
- Настройки → Для разработчиков → Отладка по USB → Включить
|
||||
|
||||
3. Подключите телефон к компьютеру USB-кабелем
|
||||
|
||||
4. Разрешите отладку на телефоне (появится диалог при первом подключении)
|
||||
|
||||
5. В Android Studio выберите ваше устройство в выпадающем списке устройств (рядом с кнопкой Run)
|
||||
|
||||
6. Нажмите **Run** (Shift+F10) или зелёную кнопку ▶
|
||||
|
||||
### Способ 2: Установка APK-файла
|
||||
|
||||
1. Соберите релизный APK:
|
||||
- Build → Build Bundle(s) / APK(s) → Build APK(s)
|
||||
- APK будет в папке `app/build/outputs/apk/debug/`
|
||||
|
||||
2. Скопируйте APK на телефон любым способом:
|
||||
- Через USB-кабель
|
||||
- Через облачное хранилище
|
||||
- Через мессенджер
|
||||
|
||||
3. На телефоне разрешите установку из неизвестных источников:
|
||||
- Настройки → Безопасность → Неизвестные источники (или аналогичный пункт)
|
||||
|
||||
4. Откройте APK-файл на телефоне и установите
|
||||
|
||||
### Способ 3: Через ADB (командная строка)
|
||||
|
||||
1. Установите ADB (входит в Android SDK Platform Tools)
|
||||
|
||||
2. Подключите телефон с включённой отладкой по USB
|
||||
|
||||
3. Проверьте подключение:
|
||||
```bash
|
||||
adb devices
|
||||
```
|
||||
|
||||
4. Установите APK:
|
||||
```bash
|
||||
adb install app/build/outputs/apk/debug/app-debug.apk
|
||||
```
|
||||
|
||||
Или соберите и установите одной командой:
|
||||
```bash
|
||||
./gradlew installDebug
|
||||
```
|
||||
|
||||
## Разрешения приложения
|
||||
|
||||
При первом запуске приложение запросит разрешения:
|
||||
- Bluetooth
|
||||
- Location (требуется для Bluetooth LE сканирования на Android 12+)
|
||||
- **Bluetooth** — для подключения к кардиодатчику
|
||||
- **Nearby Devices** — для сканирования Bluetooth-устройств
|
||||
- **Internet/Network** — для подключения к ESP32
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
app/src/main/java/ru/kgeu/training/
|
||||
├── bluetooth/ # Работа с Bluetooth (кардиодатчик)
|
||||
├── data/
|
||||
│ ├── dao/ # Data Access Objects для Room
|
||||
│ ├── database/ # Room Database
|
||||
│ ├── model/ # Модели данных
|
||||
│ └── repository/ # Репозиторий для работы с данными
|
||||
├── network/
|
||||
│ └── WebSocketClient.kt # WebSocket клиент для ESP32
|
||||
├── bluetooth/
|
||||
│ └── HeartRateMonitor.kt # Bluetooth сервис для кардиодатчика
|
||||
│ ├── dao/ # Data Access Objects для Room
|
||||
│ ├── database/ # Конфигурация базы данных
|
||||
│ ├── model/ # Модели данных (Participant, Scenario, Session)
|
||||
│ └── repository/ # Репозиторий для работы с данными
|
||||
├── network/ # TCP-клиент для ESP32
|
||||
├── ui/
|
||||
│ ├── navigation/ # Навигация
|
||||
│ ├── screen/ # UI экраны
|
||||
│ ├── theme/ # Тема приложения
|
||||
│ └── viewmodel/ # ViewModels
|
||||
└── util/
|
||||
└── PrintUtil.kt # Утилита для печати
|
||||
│ ├── navigation/ # Навигация приложения
|
||||
│ ├── screen/ # Экраны (Compose)
|
||||
│ ├── theme/ # Тема приложения
|
||||
│ └── viewmodel/ # ViewModels
|
||||
├── util/ # Вспомогательные утилиты
|
||||
├── MainActivity.kt # Главная Activity
|
||||
└── TrainingApplication.kt # Application класс
|
||||
```
|
||||
|
||||
## Режимы упражнений
|
||||
## Настройка подключения к ESP32
|
||||
|
||||
### Режим на время
|
||||
- Устанавливается целевое время (в секундах)
|
||||
- Считается количество выполненных подъемов
|
||||
- Тренировка завершается по истечении времени
|
||||
IP-адрес и порт ESP32 можно настроить в приложении перед началом тренировки.
|
||||
|
||||
### Режим на количество
|
||||
- Устанавливается целевое количество подъемов
|
||||
- Отсчитывается время выполнения
|
||||
- Тренировка завершается при достижении цели
|
||||
По умолчанию:
|
||||
- Порт: 8080 (или настраиваемый)
|
||||
- Протокол: TCP
|
||||
|
||||
## База данных
|
||||
## Решение проблем
|
||||
|
||||
Приложение использует Room Database для хранения:
|
||||
- Участников тренировок
|
||||
- Сценариев упражнений (готовых и пользовательских)
|
||||
- Сессий тренировок с результатами
|
||||
### Не подключается к ESP32
|
||||
1. Проверьте, что телефон и ESP32 в одной WiFi-сети
|
||||
2. Проверьте правильность IP-адреса и порта
|
||||
3. Убедитесь, что ESP32 запущен и слушает указанный порт
|
||||
|
||||
## Печать
|
||||
### Не подключается кардиодатчик
|
||||
1. Убедитесь, что Bluetooth включён на телефоне
|
||||
2. Проверьте, что кардиодатчик активен и не подключён к другому устройству
|
||||
3. Перезапустите кардиодатчик
|
||||
|
||||
Функция печати использует стандартную систему печати Android и поддерживает:
|
||||
- Печать на принтеры через Wi-Fi
|
||||
- Сохранение в PDF
|
||||
- Отправку по email
|
||||
### Приложение не устанавливается
|
||||
1. Проверьте версию Android (требуется 14+)
|
||||
2. Убедитесь, что разрешена установка из неизвестных источников
|
||||
3. Удалите предыдущую версию приложения, если она установлена
|
||||
|
||||
## Требования
|
||||
|
||||
- Android 8.0 (API 26) или выше
|
||||
- Поддержка Bluetooth LE
|
||||
- Подключение к сети для WebSocket
|
||||
|
||||
## Разработка
|
||||
|
||||
Для сборки проекта используйте:
|
||||
|
||||
```bash
|
||||
./gradlew assembleDebug
|
||||
```
|
||||
|
||||
Для установки на устройство:
|
||||
|
||||
```bash
|
||||
./gradlew installDebug
|
||||
```
|
||||
## Лицензия
|
||||
|
||||
Разработано для КГЭУ (Казанский государственный энергетический университет).
|
||||
|
||||
Reference in New Issue
Block a user