Introduction: Smart Crossfit Dumbbell

About: Maker | inventor of projects to inspire your ideas 💡 🤖

During the COVID-19 quarantine, all gyms and training sites were closed, for this reason, we had to start training in our homes. When training, it is important to take into account exercise and rest times. That is why this smart dumbbell was made, it does not require displacement or contact since it works by voice commands with Alexa.

Step 1: Hardware

The connections of this project are very simple, the most important thing is that if you want it to work in a portable way, you must power it with a LIPO battery charger module that is charged via USB.

Step 2: Functionality

The dumbbell works as follows, it is connected to an MQTT Broker as a client and subscribed to a topic. In the payload of the message, you receive what type of timmer is required can be EMON, TABATA or TIME CAP. If you do not know these terms, I will explain them below.

Step 3: Working Times


Is to do an exercise for one minute the number of rounds that have been defined. For example, if we define an EMON of 10 minutes, this exercise must be performed 10 times, the dumbbell has a BUZZER that alerts when there is a minute change. For the EMON the Payload Received will be:

 payload=EMONx # x is the time defined by the user


A Tabata is 8 rounds in which we will have 20 seconds of work and 10 seconds of rest, we do not have much more to say about the Tabata.

For the TABATA the Payload Received will be:



The time cap is an exercise countdown, only the duration of the day's work is defined. For the TIME CAP the Payload Received will be:


It is important to note that the dumbbell was designed to be portable and has a battery that allows you to perform more than 5 TIME CAPS of 30 minutes.

Until here we have the explanation of the firmware of the dumbbell, obviously, it will be important to take into account the libraries for the timmer and the display, but this will be in the code in the repository.

At this point, the dumbbell works if from a device such as a computer or a smartphone I connect to the broker and publish the messages previously seen in the topic of the dumbbell. But how do we make it work with Alexa?

This development has two steps, the first is to do an Alexa Skill that allows us to access different intents depending on what we say and the second one is to perform the endpoint code, in this case, using the AWS Lamda service and with python publish the data in the dumbbell topic.

For this project, as the number we give to EMON and TIME CAP can be from 1 to 30, Slots are used in the development of the Alexa Skill, then the SLOT data is taken and sent as a parameter to the payload of the publication in the broker.

For example, if we say Alexa tell the dumbbell to start an EMON of 15 minutes Alexa tell the dumbbell to start an EMON of 15 minutesT

he slot value will be 15 and this is what is passed as a parameter to: