Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

Acceleration and Gyroscope Analyzer for Archery

Опис

Цей проєкт є повноцінною IoT системою для моніторингу та аналізу рухів в реальному часі, розробленою спеціально для лучників. Вона використовує дані з акселерометра та гіроскопа, отримані з мікроконтролера ESP32, для оцінки стабільності та динаміки рухів під час тренувань зі стрільби з лука. Система надає інструменти для візуалізації сенсорних даних та визначення стану спокою/активності, допомагаючи покращити техніку та ефективність тренувань.

Особливості

  • Збір даних: Зчитування даних акселерометра та гіроскопа з мікроконтролера ESP32.
  • Реальний час: Передача сенсорних даних у реальному часі від ESP32 до сервера та веб-клієнтів за допомогою WebSockets.
  • Аналіз стабільності: Бекенд-сервер аналізує потокові дані для визначення стану системи (спокій "REST" або активний рух "ACTIVE") на основі дисперсії показників.
  • Веб-інтерфейс: Інтерактивний веб-дашборд для візуалізації графіків акселерації та гіроскопа в реальному часі та відображення статусу системи.
  • Дистанційне керування: Можливість надсилання команд (наприклад, "START", "STOP") з веб-інтерфейсу на ESP32.
  • Хмарне розгортання: Інфраструктура сервера розгорнута на Digital Ocean, забезпечуючи доступність та масштабованість.
  • Сторінка калібрування: Окрема веб-сторінка для потенційного калібрування датчиків пристрою.

Архітектура

Система побудована за принципом "клієнт-сервер" з вбудованим пристроєм:

  1. ESP32 (Embedded Device): Збирає дані з акселерометра та гіроскопа, а потім надсилає їх у бінарному форматі на бекенд-сервер через WebSocket з'єднання /esp. Також приймає команди від сервера.
  2. FastAPI Backend Server: Побудований на Python (FastAPI). Він виступає в ролі центрального хаба:
    • Приймає дані від ESP32 та розпаковує їх.
    • Виконує аналіз стабільності руху.
    • Пересилає оброблені дані та статус стабільності на підключені веб-клієнти через WebSocket з'єднання /ws.
    • Пересилає команди від веб-клієнтів до ESP32.
    • Використовує асинхронне логування.
  3. Веб-клієнт (Frontend): Розроблений з використанням HTML, CSS та JavaScript. Підключається до бекенду через WebSocket /ws:
    • Відображає потокові дані акселерометра та гіроскопа у вигляді графіків за допомогою Chart.js.
    • Показує поточний стан системи (REST/ACTIVE).
    • Дозволяє користувачеві надсилати команди "START" / "STOP" на ESP32.
    • Має адаптивний дизайн для різних розмірів екранів.

Використані технології

  • Вбудоване ПЗ (Firmware):
    • Мікроконтролери: ESP32
    • Мова програмування: C++
  • Бекенд:
    • Мова програмування: Python
    • Веб-фреймворк: FastAPI
    • Веб-сервер (ASGI): Uvicorn
    • Протоколи: WebSockets
    • Додатково: struct (для розпаковки бінарних даних), numpy (для аналізу стабільності), logging (для системного логування)
  • Фронтенд:
    • Мови розмітки/стилів: HTML, CSS
    • Мова програмування: JavaScript
    • Бібліотеки: Chart.js (для візуалізації даних)
  • Хмарні платформи:
    • Digital Ocean (для розгортання сервера)
    • AWS (якщо використовували конкретні сервіси, наприклад, AWS IoT Core або EC2)

Встановлення та запуск

Для повного розгортання та запуску проєкту необхідно налаштувати три основні компоненти: прошивку ESP32, бекенд-сервер та фронтенд.

1. Прошивка ESP32 (Firmware)

  1. Клонуйте репозиторій: git clone https://github.com/NazikMGE/Acceleration-and-Gyroscope-Analyzer.git
  2. Відкрийте проєкт ESP32: Використовуйте PlatformIO у VS Code.
  3. Налаштуйте Wi-Fi: Вкажіть ваші облікові дані Wi-Fi.
  4. Вкажіть IP-адресу сервера: Переконайтеся, що ESP32 знає IP-адресу вашого розгорнутого сервера Digital Ocean.
  5. Прошийте ESP32: Завантажте скомпільовану прошивку на ваш мікроконтролер ESP32.

2. Бекенд-сервер (FastAPI)

  1. Перейдіть до директорії бекенду: cd aws_side/src
  2. Створіть віртуальне середовище: python -m venv venv
  3. Активуйте віртуальне середовище:
    • Windows: .\venv\Scripts\activate
    • Linux/macOS: source venv/bin/activate
  4. Встановіть залежності: pip install fastapi uvicorn numpy.
  5. Запустіть сервер: uvicorn fast_api:app --host 0.0.0.0 --port 5000 (для локального тестування).
  6. Розгортання на Digital Ocean: Ви можете розгорнути цей сервер на Droplet Digital Ocean, використовуючи Uvicorn з Nginx як проксі-сервер для керування трафіком та забезпечення HTTPS.

3. Фронтенд (Веб-інтерфейс)

  1. Розміщення файлів: Файли index.html, calibration.html та папка staticcss та js файлами) повинні бути доступні через веб-сервер (наприклад, Nginx, який проксує запити до FastAPI, або окремий веб-сервер). У вашому FastAPI проєкті ці файли, ймовірно, подаються як статичні файли або шаблони.
  2. Доступ: Після запуску бекенд-сервера, відкрийте веб-інтерфейс у браузері, перейшовши за адресою сервера (наприклад, http://ваша_ip_адреса_digital_ocean:5000/ або http://ваша_ip_адреса_digital_ocean/ якщо використовується Nginx).

Використання

  1. Підключення ESP32: Після прошивки ESP32 автоматично спробує підключитися до вашого сервера. Статус підключення буде відображатися на веб-дашборді.
  2. Перегляд даних: На сторінці "Home" ви побачите графіки акселерації та гіроскопа, що оновлюються в реальному часі. Статус системи ("Система: Спокій" або "Система: Активна") буде відображатися нижче графіків.
  3. Керування: Використовуйте кнопки "START" та "STOP" для надсилання команд на ESP32.
  4. Калібрування: Перейдіть на сторінку "Calibration" для доступу до функцій калібрування (якщо реалізовано в прошивці та JS).

Потенційні покращення / Майбутні функції

  • Збереження даних: Інтеграція з базою даних (наприклад, PostgreSQL, MongoDB) для зберігання історичних даних сенсорів.
  • Розширений аналіз: Впровадження більш складних алгоритмів аналізу рухів (наприклад, розпізнавання пострілу, аналіз траєкторії лука).
  • Авторизація користувачів: Додавання системи реєстрації/авторизації для індивідуальних профілів лучників.
  • Мобільний додаток: Розробка нативного мобільного додатку для зручнішого моніторингу та керування.
  • Конфігурація через веб-інтерфейс: Можливість змінювати порогові значення стабільності або інші параметри ESP32 без перепрошивки.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages