Wearables & Out in the World: Repman, the Perfect Workout Companion
by Jonathan Dyer, Anatol Liu, Kiran Matharu
Our team got the idea for Repman because one of our team members is a collegiate athlete and because of that, even though he has been lifting for years, any time he has lifted it’s always been with a trainer. Until just recently, when he had a peculiar experience – lifting while keeping his own keeping sets, reps and most importantly tempo all on his own. Any experienced lifter understands that tempo is very important in the weight room and it is often hard to keep on your own. So our group set out to correct this problem by creating Repman, the Perfect Workout Companion.
Repman counts your reps as you go and vibrates when you have completed your set. It then waits for a set rest period, and vibrates three times when it is time to start the next set. At this point, the user can get into position and tap the wristband to start the next set. Repman works on multiple workouts, including benchpress, curls, and even shoulder press. It can be used throughout your entire workout without distracting from it, since it doesn’t require any outside devices like phones.
For our first design we used a store bought wristband, made a pressure sensor to be used as a button and housed the Light Blue Bean on the top of the wrist. The idea from our initial design came from talking to other members of Carnegie Mellon’s football team and researching existing designs for similar wearables. The picture shown is of a wristband that has the same functions as our wristband (and more) called the “push” band (http://www.trainwithpush.com/). Our Wrist Band accomplished the same design with a 3D printed casing and would attach by sewing it into the wristband.
After being told by our teachers that people would likely prefer to simply tap the wristband while working out to use it, we researched CapSense buttons and how to use them. CapSense added several complications that prohibited us from developing a more through design for the casing of the band. We were also told to expand our sensing to several other workouts by making our peak/trough detection algorithm more robust which we were able to do and the improved code is below. We also added the ability to keep track of rest periods, buzz when the rest period is over and start the next set. For our next iteration of the project, we plan to create a simple phone app that will allow the user to input their own sets and reps, refine the casing and improve our peak detecting algorithm even more.
Repman uses a Light Blue Bean microcontroller, conductive fabric (for a Capsense button) and a vibe motor. The schematic of the circuit only requires a few pins of the Light Blue Bean. A vibe motor is connected between Pin 3 and a ground pin. Pin 4 is connected to conductive fabric on the outside of the wristband, which acts as a button. The Arduino CapSense library is used to sense taps on the button. Lastly, the ground pin needs to be grounded, so it pin is connected to conductive fabric on the inside of the wristband. This makes it so that the person wearing the wristband touches the conductive fabric and acts as the ground for the capacitive touch sensing. A detailed picture of the circuit digram can be found below:
In this code, we wait until the start button has been pressed. After the start button has been pressed, we start looking for reps. Each time a rep has been completed, we increment a rep counter variable by one. Rep detection works by taking acceleration data and detecting if there has been a peak or valley. This is motivated by the fact that doing a rep entails moving forward and backwards along a path. Thus, somewhere along that path, acceleration must reverse. The code looks for points where the acceleration changes direction and counts that as one rep. After ten reps have been completed, Repman will buzz, and then sleep for 30 seconds (standard rest period for athletes). All variables related to rep detection will be reset. After 30 seconds, Repman will start waiting for the start button to be pressed, restarting the process. A Github link to the code can be found below: