Inspiration
While searching for ideas, our main goal was to develop an app with the motive to improve health and habits. As everyday users of computers and the like, we realized the importance of simple yet incredibly effective exercises to prevent common developments from repeated hand motions, such as carpel tunnel and arthritis. As the use of technology expands day by day, the need for ways to stay responsible with our health becomes more important than ever.
What it does
Move Your Joints monitors your time online and gives you reminders to take timed breaks for simple hand exercises. It comes with a rabbit desktop pet to serve as a cute companion and helpful reminder when its time to take a moment.
When the app is opened, the user can set their own limit for how long they can use their computer before they're prompted to take a break. Once the timer is initially setup, the timer will count down until a button appears to track the user's break. In case the app window isn't visible when this occurs, the bunny (which will forever be at the foreground of your monitor) will appear angry, jumping up and down to remind the user it is time for their break. When the user takes their break, a separate window opens for them to pick an exercise designed to prevent arthritis, and how long they want this break for. During break time, photos of bunnies doing the exercise will prompt up to encourage the user as well as a timer counting down from the desired time. Once the break time is over, the user will be shown a randomly selected encouraging message, and they'll be prompted with a button which closes the break window and resets the timer for their next cycle.
How we built it
We utilized Python to program the user experience and the data behind it. We primarily used Python's Tkinter library to create the desktop app, along with the visual functionality behind the virtual bunny. We also implemented the Random library to provide the virtual bunny pet with some simple yet adorable nuance, such as random sleep events, as well as randomly select encouraging messages when the user is done with their break. We utilized PIL to load pictures into the app.
Challenges we ran into
We ran into a lot of challenges! At first, our scope and scale was a big more ambitious. The original idea was to use an Arduino Uno to set up an ultrasonic sensor that checks if there is any mouse or keyboard movement, so that the program does not ask the user to do exercises when the user is not at their device. Likewise, we wanted to implement an algorithm (possibly some kind of ML) that would take GPU and CPU percent utilization, network increases, and keyboard strokes to determine what the user was likely doing, so that the program can behave smarter and avoid making the user take a break during a high stakes event (such as playing an FPS or hero shooter game) as opposed to something like simply browsing. Another ambition of ours was using OpenCV and the user's webcam to detect the type of movements the user was making in order to tell whether they were accurately completing their exercises. Unfortunately, a lot of these ambitions fell through for these 36 hours due to our lack of experience with a lot of these libraries as well as the surprising difficulty with keeping track of GPU utilization (as a different library is needed for NVIDIA vs. AMD GPUs and permissions were difficult to figure out). This, we decided to focus more on how the app would generally function, so we used the GUI library Tkinter. Again, a lot of our troubles resulted from an inexperience with libraries in general, so we ran into multiple challenges while learning everything we could and couldn't do, as well as workarounds (such as the fact you technically can't set the background of a window as transparent, but you can set a single color to be transparent and use that color instead).
Accomplishments that we're proud of
We're proud of having the app run with all the required labels, and correct timer based on user input. Mmaking sure all the labels where aligned and having the code run without any problems was a big challenge that we were able to fix. However, our biggest accomplishment is having our pet virtual pet bunny run and execute different emotions along with the app as it was one of our hardest challenges. Having the pet bunny be able to be dragged around, dropped, show an angry emotion when the time limit is reached, and move was a huge accomplishment for us showing our hard efforts while coding it.
What we learned
We learned how to utilize Tkinter library to effectively make apps, as well as integrating pictures, use rudimentary animation techniques, and develop a small physics system. We also learned how to make the app user-friendly and provide options to make the user have control of options and appeal more to them.
What's next for Move Your Joints!
Move Your Joints can go beyond and utilize face, activity, and movement recognition with libraries such as OpenCV to make sure the user is performing the exercise they selected and SciKit-learn to have the system adapt to your computer usage and create a more enjoyable experience. We also envision more choices to choose from, such as exercise or selections of different virtual pets, as well as be able to support across platforms. Also, utilizing a sensor, the break time and exercise can be more personalized and alert the user through an LED light as well when it is time for their break.
Built With
- pil
- python
- random
- tkinter
Log in or sign up for Devpost to join the conversation.