Pull Up Tracker

by timonbynens in Circuits > Raspberry Pi

20 Views, 0 Favorites, 0 Comments

Pull Up Tracker

image_2026-06-18_144406636.png

Meet the ai powered Pull Up Tracker. By combining computer vision with physical hardware, this system completely automates your pull up logging. A camera tracks your body's movement in real time, accurately detecting your form and counting your reps without you ever needing to touch a phone. With a simple tap of an RFID key fob and the press of a physical arcade button, your workout data is securely processed and saved straight to a database. This is the future of pull up training and tests.


How It Works:

  1. Put your box about 2-3 meters away from you with the camera pointing towards you, capturing your full body and the bar.
  2. Press the button to start your set and start performing reps.
  3. When finished doing pull ups, press the button again and your set will be saved to the current session data. The lcd will also display all this information.
  4. If you want your data saved log in with your RFID badge and it will automatically be saved.
  5. If you are done training just plug the tracker out and done.

Supplies

inside.jpg
image_2026-06-18_144813709.png

The supplies required for this project are the following:

Hardware:

  1. lcd: displays information from current session/set.
  2. RGB led light: gives visible feedback from range on your reps.
  3. Push button: to start and stop a set. (8,28€)
  4. Camera: visual input to used to measure pull ups. (29,99€)
  5. RFID reader: used to save your progress and data with your specific id when logged in.
  6. Raspberry pi 5: run the code and save the database, also connects to each component. (99,00€)
  7. Jumper wires: connect everything.
  8. MicroSD card
  9. Power supply: powers rpi5
  10. Custom wooden box: to put everything in and make an actual product. (3,90€)
  11. Pull up bar: to perform your pull ups on (14,99€)
  12. All components without a price came from the freenovo board (59,99€) or where included with the pi

Software:

  1. Programmed in python
  2. MediaPipe model for pose detection
  3. Database for local storage
  4. Data gather trough myself and friends
  5. Github to save code trough out the making of the project.


Estimated price: 216,46€

Define the Project Goals and Requirements

The goal was to create a pull up tracker that can help you train and can be used for tests to remove human bias.

  1. Detect pull ups
  2. Count the repetitions and know whether it was good or bad form
  3. Display all the info on an lcd
  4. Be able to save your data to see progress
  5. Physical button to start and stop sets
  6. Led light for clear visual feedback when performing pull ups.
  7. Custom enclosure that is small and compact

Prices are listed at the supplies tab.

Gather Data and Make a Trained Ai Model

model.png
data.png
modelsvs.png
frame_0_10_17f.jpeg

Programming my ai model using mediapipie. I tested gradient boosting, grid search and random forest to see which was the mosst accurate. It ended up being the random forest which I then exported to a .pkl model and .csv to use in my project.

The data was gathered trough me and my friend doing pull ups and recording it from different angels and in different places so the model is not trained in 1 environment. We also used diffrent cameras and sometimes added noise or distractions so my ai model will be stronger.

Code the Gradio Website

image_2026-06-18_145419663.png
dashboard.png
history.png
operating.png

The next step for my project was to build a gradio website so I could start testing my project and model using the camera and the feedback I got on the website.

At this point all my hardware was able to connect to my pi and was testable but it wasn't put together or in an enclosure yet.

Create the Enclosure

finalbox.jpg
sketch.png
boxespy.png
lasercut.jpg

Creating my enclosure all started by measuring my components in real life and then converting them into an object in my blender sketch.

Then after everything was added and it looked good I went to boxes.py to create my starting point for my box that would be cut out of 4mm plywood with a laser cut.

After making sure everything was ready and every hole was in the correct place for the laser cutting I went to laser cut it during project night and assembled it with glue so everything stays in place.

Create and Connect the Backend

history.png
fastapi.png
adminer.png
vssetupbackend.png

Next up was creating a backend so that your progress could actually be saved and visible.

I did this trough models, repositories and routers so that you can save remove and search up the data. I created 3 tables in adminer trough postress.

Now every time you are logged in your current session will be saved to your id.

Make Everything Work Remotely

pullupservice.png

The last step to complete my project was to make it boot up when plugged in and be able to be used without a laptop. I did this by making a service that starts up when the pi boots up. Now you can use it without your laptop but.

You can still connect to the gradio using http://10.32.2.76:7860 when connected to the wifi and you can still acces the backend trough http://10.32.2.76:8000/docs.

This is really handy since the gradio gives way clearer feedback and more in depth analysis.

Downloads

Now Enjoy the Product

Now that all is done we can finally enjoy the product I build.

Just follow these simple steps.

First way:

  1. Put your box about 2-3 meters away from you with the camera pointing towards you, capturing your full body and the bar.
  2. Press the button to start your set and start performing reps.
  3. When finished doing pull ups, press the button again and your set will be saved to the current session data. The lcd will also display all this information.
  4. If you want your data saved log in with your RFID badge and it will automatically be saved.
  5. If you are done training just plug the tracker out and done.


Second way:

  1. Put your box about 2-3 meters away from you with the camera pointing towards you, capturing your full body and the bar.
  2. Open the Gradio page trough http://10.32.2.76:7860
  3. Read the instructions on the about page.
  4. Go to the operating page and press start or your physical button.
  5. Start performing reps.
  6. When done press stop or your physical button again and look at the data available on the screen or lcd.
  7. When logged in go to the history tab and enjoy all your previous data and the one from this session. Your data gets saved automatically.
  8. If you are done training just plug the tracker out and done.