Introduction: Heart Visualizer | See Your Heart Beat
We have all either felt or heard our heart beating but not many of us have seen it. This was the thought that made me start with this project. A simple way to visually see your heartbeat using a Heart sensor and also teaching you basics about electronics and robotics along with being fun to use and appealing to look at.
I hope you have fun making it!
Step 1: Tools, Components, and Materials
- Arduino Nano
- Servo SG90
- MAX30100 Pulse Oximeter SpO2 and Heart-Rate Sensor Module
- 4.7kohm resistors (x 3)
- Micro USB Female jack (power input)
- Male and female pin header connectors
- M3*10mm (x20)
- M3*10mm (x20)
- M3*25mm (x4)
- M3 Nuts (x50)
- Acrylic sheet
- 40mm (x2)
- 25mm (x4)
- Soldering Iron
- 3D printer
Step 2: 3D Printing Parts
There are 17 unique parts to be printed, most of them are pretty small, with a total print time of around 19 hours. I used white PLA with 100% infill and a layer height of 2mm. You can change these values if needed it should work fine but make sure that the small parts have 100% infill, for strength.
Zip file consisting of all the STL print-ready files. (https://www.thingiverse.com/thing:4266297/zip)
After the files have been printed you can use sandpaper or a hand file and clean out the printed parts especially the links where the parts slide through each other. Smoothening the joints will make the mechanism smooth and will provide less resistance to the servo. This process can take as long as you want as one can get lost trying to make the printed parts look perfect.
You can re-drill the holes in the 3d printed parts using a 3mm bit. All the holes are of the same dimensions. This will make it easier while screwing in the nuts later on in the assembly.
Step 3: Making the Base
To make the base I used a clear Acrylic sheet of thickness 2.5mm (you can use 3mm sheet too). I have attached an A4 size outline that you can stick on the sheet and cut. If you have a laser cutter then I have attached two .dxf files for you to work with.
Since I don’t have a laser cutter I used an angle grinder to do the job and for making holes I used a 3mm drill bit.
Step 4: Servo Modification
The servo comes with a few connectors but we won’t be able to use them. So, we will have to make a custom one.
For this first cut out the connectors given with the servo and separate the part that attaches to the servo. Now attach the part to the 3d printed servo connector and use super glue them together. We should now have a custom connector.
Attach the connector to the servo using the given M2 screw and make sure that it moves like above. (orientation matters)
Step 5: Making the Circuit / Electronics
I have used a perf board to solder all the components to make the circuit compact but you can also use a small breadboard and jumper wires if soldering is not something you are comfortable doing.
Here’s the wiring diagram for the components.
You can also this Pulse sensor (link) but MAX30100 has better noise filtering so you will be able to pick the heartbeat more consistently.
I have used the single power source for the heart sensor, Arduino and servo. It works fine without any problems. But if you are using a different servo (higher specs) having separate power source for Arduino and servo would work better.
Make sure to check the connectivity of all the pins and also make sure there is no unwanted shorting in the perf board.
Step 6: Uploading the Code Using Arduino IDE
First, let’s start by installing the necessary libraries to get the sensor working. A big thanks to Oxullo (https://github.com/oxullo) for making such a good library.
You can follow these instructions if you need help with installing libraries (https://www.arduino.cc/en/guide/libraries). I have attached the library for you to download.
After you have installed the let’s test if everything is working perfectly.
- Open Arduino IDE and open the example sketch under Files --> Examples --> MAX30100 --> MAX30100 Tester.
- Select “Arduino nano” in board under Tools menu. If you have an old nano board make sure you select ATmega328P (Old Bootloader) in Processor under Tools.
- Upload the code to the board. If there are no errors you can open the Serial Monitor, select Baud rate as 115200 and place your finger on the sensor. You should see a change in value.
- Congratulations! the difficult part is over. But if you do face any errors don’t hesitate to ask in the comments section or a simple google search should be enough.
Now let’s test our code. Upload the below code and open the serial monitor. You should see it saying beat as your heart beats and the servo should start moving back and forth with every beat.
Step 7: Assembly Time!
Now that we have prepared all the needed components it time to start assembling them. I have made a short video showing the assembly process. The process can get quite irritating as everything fits together in a small space. But you will be satisfied by the end of the assembly.
I used a power bank to power the visualizer. But anything that outputs 5v should work.
Use plastic Greece if needed at the joints to make the motion smoother and also reduce noise.
Don’t tighten nuts too much keep them loose enough so that the joints can move freely.
Update: During the assembly of the stand I used a hollow tube [01:38] and then two 3d printed parts [00:16] [03:14]on either side. I have now made a single 3d printed part called stand which replaces these 3 parts, so you don't have to worry about finding a hollow tube.
After that tedious process, you should have the HEART Visualizer ready to show your heartbeat. Just place the finger on the sensor and you should see the heartbeat along with your heart.
Step 8: Have Fun!
This is a cool way to see someone’s heartbeat. Compare your heartbeats with your family and see who has the lowest or the highest heartbeat. You can even see your heart rate when you are just sitting or right after workout/play and see the heartbeat faster.
If you want to make changes to the design you can download the step file here https://sharathnaik.com/heartvisualizer/
I have tried to make the project as simple as possible for everyone to build their own. If you have any doubts or if I have made mistakes anywhere feel free to use the comments section.
First Prize in the