FitBox

Autor: Ioana Laura Stăncioiu
Grupa: 336CA

Introducere

Proiectul constă în dezvolarea unui tracker pentru actvitatea fizică. Dispozitivul te ține la curent cu numărul de pași, distanța parcursă și caloriile cosumate și te motivează în încercarea de a deveni o persoana mai activă. Pentru ca informațiile să fie ușor de vizualizat aceastea sunt afișate în timp real pe telefon, printr-o conexiune de tip bluetooth. De asemenea, trackerul iți reamintește sa fii activ prin intermediul unui semnal sonor.

Descriere generală

Componentele principale ale dispozitivului sunt:

  • accelerometru, folosit pentru calcularea numărului de pași
  • modul bluetooth, prin intermediul căruia se realizează conexiunea dintre Arduino și aplicația mobilă
  • buzzer, emite un semnal sonor daca au trecut 10 secunde de când utilizatorul s-a mișcat ultima oară, de asemenea te felicită din 10 în 10 pași

Aplicația mobilă 1) afișează următoarele informații:

  • Numărul de pași
  • Caloriile consumate
  • Distanța parcursă(km)
  • Activitate (mesaj sugestiv despre starea utilizatorului)

Schemă bloc

Hardware Design

Componente

Nume Număr Piese
Arduino Nano 1
Modul Bluetooth HC-05 1
Piezo Buzzer 1
Accelerometru ADXL345 1
Perfboard 5×7 1
Rezistență 100 Ω 1
Rezistență 1 kΩ 1
Rezistență 2 kΩ 1
Baterie 9V 1
Conector baterie 9V 1
Întrerupător 1
Baretă 40 pini mamă-tată 2

Schema electrică

Modulul bluetooth HC-05 suportă tensiuni de maxim 3.3V pe pinul RX, astfel a fost nevoie să adaug un divizor de tensiune pentru a limita tensiunea de 5V de la pinul TX de pe placuța Arduino.

Software Design

Mediul de dezvoltare

  • Arduino IDE → dezvoltarea codului și încărcarea acestuia pe plăcuța Arduino
  • Autodesk Eagle → realizarea schemei electrice
  • draw.io → realizarea schemei bloc

Biblioteci folosite

  • Wire (I2C communication)2)
  • Adafruit_ADXL345 (ADXL345 accelerometer)3)
  • Adafruit Sensor (ADXL345 accelerometer)4)
  • Adafruit BusIO (I2C communication)5)

Structura codului

Algoritm numărare pași6) 7) 8)

Pentru calculul accelerației, se face o medie pe cele 3 axe, pe un sampling size de 100. Apoi, se calculează magnitudinea accelerației, aceasta fiind folosită în calcule ulterioare. Pentru a detecta un pas se verifică dacă diferența dintre două magnitudini succesive este mai mare ca un threshold, caz în care se înregistrează un pas.

Starea utilizatorului

Pentru interactivitatea aplicției, odată cu semnalul sonor, utlizatorul primește și un mesaj sugestiv.
Valorile posibile sunt:

  • Move! → au trecut 10 secunde de când a fost înregistrat un pas
  • One more! → încurajează utlizatorul să se miște în continuare
  • Good job! → utilizatorul s-a deplasat 10 pași

Valorile de 10 secunde și 10 pași sunt alese în scop pur demonstrativ. Într-un context din viața reală acestea ar fi mult mai mari, pentru o apreciere corectă a activității.

Funcții

  • setup() → inițializează accelerometrul și apelează funcția readAvgAccel pentru calibrarea sa
  • loop() → logica programului, apelează în ordine countSteps, checkNumSteps, checkMovement și sendData
  • readAvgAccel() → calculează accelerația media pe axele x, y și z, folosită ca un punct de referință pentru calcule ulterioare
  • countSteps() → face diferența dintre două accelerații succesive, daca aceasta este mai mare decât o limită prestabilită, se incrementează numărul de pași
  • getAccel() → calculează accelerația
  • checkMovement() → verifică dacă utilizatorul s-a mișcat în ultimele 10 secunde, daca îl atenționează printr-un semnal sonor
  • checkNumSteps() → felicită utlizatorul din 10 în 10 pași printr-un semnal sonor
  • sendData() → trimite datele aplicației de pe telefon prin interfața serială UART

Rezultate Obţinute

Produs final

fitbox.jpg

Circuit final

Demo

Concluzii

Mi-a plăcut foarte mult să lucrez la acest proiect și consider ca am învățat multe despre cum pot face un dispozitiv funcțional cu o utilitate practică. Experiența nu ar fi fost completă fară lipirea componentelor pe perfboard, proces, care deși a durat mai mult decât aproximasem inițial, m-a ajutat sa dobandesc skill-uri noi și a fost pretty fun per total ;-).
Cu toate că algoritmul de pași mai poate fi îmbunătățit, nefiind suficient de precis, sunt destul de mulțumită de produsul finit.

Download

Jurnal

  • 21.04.2022: alegere temă proiect
  • 26.04.2022: publicare descriere wiki
  • 02.05.2022: comandă piese
  • 05.05.2022: finalizare circuit hardware
  • 07.05.2022: finalizare software
  • 15.05.2022: lipire componente pe perfboard
  • 25.05.2022: finalizare pagină wiki

Bibliografie/Resurse

pm/prj2022/avaduva/activity_tracker.txt · Last modified: 2022/05/27 23:28 by laura.stancioiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0