Table of Contents

Step Tracker

Teodora Labusca

Introducere

Proiectul consta intr-un pedometru ce va afisa numarul de pasi parcursi pe un dispozitiv mobil.

Descriere generala

Dispozitivul mobil ales se va conecta la modulul Bluetooth al proiectului, iar la o durata de timp selectata, se va calcula numarul total de pasi, utilizand un accelerometru, care va fi afisat pe ecranul telefonului. Mai multe detalii legate de utilizare se gasesc sub sectiunea Software Design.

Exista si optiunea de hard RESET pe placuta.

Hardware Design

Schema bloc

Lista de piese

Schema electrica

Software Design

Cum functioneaza

La nivel de utilizator, programul functioneaza astfel: initial, asteapta sa primeasca valoarea '1' pentru a incepe activitatea. Dupa care va afisa mesajele urmatoare si va incepe contorizarea numarului de pasi

Numarul de pasi esti contorizat in functie de miscarea mainii, fiind considerati 2 pasi prin miscarile urmatoare:

Implementare

Am observat ca la nivelul mainii, valorile accelerometrului penduleaza intr-un interval aproximativ constant

De aceea am ales sa calculez o valoare medie, iar oricand aceasta este depasita, sa fie adaugat un pas. Valoarea medie este calculata luand USED_VAL valori (#define in cod) si facand media pentru axele Y si Z, Y fiind axa sus-jos, iar Z fata-spate. Dupa calculul mediei, se adauga un pas de fiecare data cand media este depasita plus un OFFSET(#define in cod).

Am folosit si o variabila took_step care poate fi modificata in caz ca este nevoie de o mai buna acuratete astfel: variabila va fi setata la 1 cand mana a fost miscata in fata/spate si va fi resetata la 0 doar cand este in intervalul [avg - OFFSET/2, avg + OFFSET/2] pe axa Z. Utilizarea variabilei poate fi schimbata prin setarea valorii STEP(#define in cod) la 0 pentru a nu fi folosit sau la 1, altfel.

Rezultate obtinute

Proiectul final arata astfel:

Am observat urmatoarele aspecte in timpul realizarii:

  1. datorita logicii din spatele programului, nu poate exista 100% acuratete deoarece o miscare simpla a mainii poate fi considerata un pas, iar un pas in timp ce mana nu este miscata, nu va fi adaugat la suma totala
  2. pentru mine, cea mai mare acuratete o primesc utilizand setarile din codul actual
  3. nu se schimba valorile medii pentru Y si Z in cazul in care este schimbat nivelul (ex. urcat/ coborat pe scari, pozitionarea la un alt etaj, etc.), ceea ce m-a facut sa pastrez aceasta implementare
  4. prin eliminarea variabilei Y din conditiile de incrementare a pasilor, poate fi fixat la brau sau piept(personal, mi se pare mai greu de tinut nemiscat), ceea ce va elimina o buna parte a problemelor punctului 1

Concluzie

Download

Arhiva proiect + README

Arhiva cod

Jurnal

20/04/2019 - Crearea paginii wiki

21/04/2019 - Adaugarea schemei bloc

05/05/2019 - Adaugarea schemei electrice

06/05/2019 - Lipirea componentelor de baza

19/05/2019 - Realizare partii hardware

21/05/2019 - 23/05/2019 - Testarea componentelor si gasirea codului necesar

24/05/2019 - Finalizarea partii software

Bibliografie/Resurse

Arduino BPM and Pedometer

Arduino Pedometer

Bluetooth Module info + test code

Cod ADXL345 + I2C

Cod USART0

Atmel Studio 7 (create .hex file + GUI)

HIDBootFlash (load .hex file)

Serial Bluetooth Terminal (Android app)

Images

Documentatie

PDF file