ECE434 Project - BT StopWatch

Team members: Derick Miller, Marco Saucedo

Grading Template
I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

 Add Extras

09 Executive Summary 09 Packaging 09 Installation Instructions 09 User Instructions 09 Highlights 09 Theory of Operation 09 Work Breakdown 09 Future Work/Conclusions 09 Hackster.io 09 Demo/Poster 00 Not Late

Score: xx/100

Executive Summary
This project is a bluetooth enabled stopwatch, where the stopwatch will store profile accounts and then allows the user to get times, and time-splits of the profile account and then transmits the final time and splits to the receiver which then inputs the times and time-splits into google sheets.

We focused on the profile and portability aspect of the stopwatch. We wanted to make an interface with easy to use software and only three buttons. To keep processing power and our systems light, we decided to implement one BeagleBone Black (BBB) as our actual "Stopwatch" and another BBB as a host that would stay on indefinetly and act as a "Server" where it would await Bluetooth commands from our stopwatch.

In the code, we have developed profiles for our Linux mascots, Tux and Boris. Below we have included instructions on how to setup and run our application.

Packaging
The packaging for the project is composed of 3 GPIO Buttons, 2 HC-05 Bluetooth Modules, 1 SPI LCD Display

Diagrams of the Transmitter Board (Stopwatch)  and the     Reciever Board (Server)



Installation Instructions
Give step by step instructions on how to install your project.

1) Connect bone to internet and follow instructions on the GitHub

2) Make sure git is installed and setup on both device

3) Clone the repository on both devices using the following command bone$ git clone https://github.com/prof-nuduls/BT_StopWatch

Stopwatch

4) Navigate into GUI folder bone$ cd ./BT_StopWatch/GUI

5) Run the following command to start timer application bone$ sudo ./timer.py

Reciever

6) Navigate to Receiver folder bone$ cd ./BT_StopWatch/Receiver

7) Run the following command to start receiver application bone$ ./receiver.py

User Instructions
You will enter the welcome screen where you will Press START to select a profile. Using the LAP Button you will be able to cycle through the profiles. In order to select a profile, you will hit the START Button To start the stopwatch, press the START Button

Press the LAP Button when you want to lap, and a split time will appear.

Once you are done, press the STOP Button to stop the program and register the final time. After the Stop button has been pressed, the data will transfer to connected Bluetooth reciever and uploaded onto Google Sheets.

Highlights
Our project boasts a Bluetooth-enabled stopwatch that prioritizes user-friendliness, offering a simple interface and only three buttons. The inclusion of profiles for Tux and Boris also adds an element of fun and personality to the project.

To ensure optimal performance and efficiency, we've opted for a two-BeagleBone Black device setup - one serving as the stopwatch and the other functioning as a server to receive Bluetooth commands. Additionally, our stopwatch can transmit final times and splits to Google Sheets, simplifying the process of tracking and analyzing your workout data. Overall, this project offers a streamlined and fun way to time your workouts, with plenty of room for further expansion and customization.

Here is a video demo which is available on YouTube.

We've also included a Hackster.io page.

Theory of Operation
The user will run the transmitter code on a BeagleBone Black and run the receiver code on a separate Beagle Bone Black. The transmitter/GUI side uses 3 buttons (Start,Stop,Lap) to interface with the SPI LCD Display. The user will select a profile, then start the stopwatch, gather splits and relevant race data, and once the stop button is pressed the final time is displayed and transmitted over bluetooth to the receiver which logs the split data into google sheets for the relevant profile.





Work Breakdown
 Timeline:  
 * Create basic code for HC-05 Bluetooth Modules to Transmit and Receive data to one another -- Feb. 9
 * Create basic code for GUI on the SPI LCD Display controlled by buttons -- Feb. 12
 * Debug and straighten out any bugs or erroneous button presses that could occur -- Feb. 18
 * Send Final time and splits to Bluetooth Receiver and send the results to google sheets -- Feb. 19

 Division of Labor:  
 * Develop configuration, transmitter, and receiver code for HC-05 Bluetooth Modules (DERICK)
 * Develop Stopwatch and GUI Code, that stores splits into arrays and displays them onto the screen (MARCO)
 * Develop Bluetooth Receiver code/Google Sheets code, and add transmitting functionality to GUI and Stopwatch code (DERICK)
 * fix minor bugs, and test stopwatch (MARCO & DERICK)

Future Work
To make this project even more interesting, future additions could include incorporating a larger display to provide better visibility for users, and incorporating machine learning to provide personalized coaching and recommendations for improvement based on users' previous performance. Additionally, expanding the project to include other fitness tracking features like heart rate monitoring, distance tracking, and calorie tracking would also be a valuable addition.

Conclusions
Working on this project, we learned how to implement new hardware and protocols we've never interfaced with before, using forums to get assistance, and learned how to collaborate using GitHub in an effective manner in a team setting. It was rewarding to see all of the information we have learned about opensource, linux, and github come together in a final project and we think it came out great.