Difference between revisions of "ECE434 Project - BT StopWatch"

From eLinux.org
Jump to: navigation, search
(Future Work)
m
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Category:ECE497 |PB]]
 
 
[[Category:ECE434Fall2022 |PB]]
 
[[Category:ECE434Fall2022 |PB]]
 
{{YoderHead}}
 
{{YoderHead}}
Line 24: Line 23:
 
00 Not Late
 
00 Not Late
  
Score:  90/100
+
Score:  xx/100
 
</pre>
 
</pre>
  
Line 45: Line 44:
 
Give step by step instructions on how to install your project.   
 
Give step by step instructions on how to install your project.   
  
* Include your [https://github.com/ github] path as a link like this to the read-only git site:  [https://github.com/MarkAYoder/gitLearn https://github.com/MarkAYoder/gitLearn].
+
1) Connect bone to internet and follow instructions on the [https://github.com/prof-nuduls/BT_StopWatch GitHub]
* Be sure your README.md is includes an up-to-date and clear description of your project so that someone who comes across you git repository can quickly learn what you did and how they can reproduce it.
+
 
* Include a Makefile for your code if using C.
+
2) Make sure git is installed and setup on both device
* Include any additional packages installed via '''apt'''. Include '''install.sh''' and '''setup.sh''' files.
+
 
* Include kernel mods.
+
3) Clone the repository on both devices using the following command
* If there is extra hardware needed, include links to where it can be obtained.
+
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 ==
 
== User Instructions ==
  
Once everything is installed, how do you use the program?  Give details here, so if you have a long user manual, link to it here.
+
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.
  
Consider making it autostart for full credit.
+
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 ==
 
== Highlights ==
  
Here is where you brag about what your project can do.
+
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.
  
Include a [http://www.youtube.com/ YouTube] demo the audio description.
+
Here is a video demo which is available on [https://youtu.be/-Ch7axrCIds YouTube].
 +
 
 +
We've also included a [https://www.hackster.io/mac0_tac0/bluetooth-stopwatch-with-profile-selector-4d2d3d Hackster.io] page.
  
 
== Theory of Operation ==
 
== Theory of Operation ==
  
Give a high level overview of the structure of your software. Are you using GStreamer?  Show a diagram of the pipeline.  Are you running multiple tasks?  Show what they do and how they interact.
+
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.
  
 
[[File:Stopwatch_Code_Block.png|1000px|]]
 
[[File:Stopwatch_Code_Block.png|1000px|]]
Line 74: Line 95:
 
== Work Breakdown ==
 
== Work Breakdown ==
  
List the major tasks in your project and who did what.
+
'''<big><big>Timeline:</big></big>'''
 +
* 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
  
Also list here what doesn't work yet and when you think it will be finished and who is finishing it.
+
'''<big><big>Division of Labor:</big></big>'''
 +
* 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 ==
 
== Future Work ==
Line 84: Line 113:
 
== Conclusions ==
 
== Conclusions ==
  
In conclusion, this project presents a well-designed and functional Bluetooth enabled stopwatch that allows users to store and retrieve their time and time-splits through a simple and easy-to-use interface. The decision to use two BeagleBone Black devices as the stopwatch and server respectively, helps to keep the processing power low while maintaining efficient communication between the devices. The inclusion of profiles for Tux and Boris also adds an element of fun and personality to the project.
+
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.
 +
 
  
 
{{YoderFoot}}
 
{{YoderFoot}}

Latest revision as of 14:16, 27 November 2023

thumb‎ Embedded Linux Class by Mark A. Yoder


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)

Transmitter Board (Stopwatch)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.

Stopwatch Code Block.png

Receiver Code Block.png

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.




thumb‎ Embedded Linux Class by Mark A. Yoder