Our Shawn met the love of his life today, Saturday, February 14, 2026. Tragically, they were separated the moment they met, across 13,000 km, one in Toronto, Canada, and the other in Guangzhou, China. To show his dedication to this new profound love for Miss C, he decided to make her a necklace that would show just how much his heart beats for her.
With less than nine hours and nothing more than an STM32 kit, our team took on the momentous task of reuniting Shawn with his lover.
We began by reading Shawn’s heartbeat with the DFR heart rate sensor, which we connected to an STM32 microcontroller. Confirming the presence of his pulse, we proceeded with connecting the MCU to an OLED display via Keil IDE, aiming to display his pulsing heart on the screen.
At the second hour, we ran into a hurdle, as both our sensors’ fragile wires were falling apart, resulting in us having to resolder them back on, not once, but twice. This may have led to unstable readings in the final product, but we still see the potential in incorporating a heart rate monitor for future prototypes.
We wanted to display our results to the world, and the STM32 does not have innate Internet access, so we set up an MQTT cloud broker server via HiveMQ, and connected to our STM32 by programming an ESP WiFi module and wiring that module to receive and transmit data to and from the STM32. The cloud hosting would allow the devices to be used on different networks and at any distance apart, provided that the MCUs have a WiFi connection (of course).
Finally, we connected a voice recorder module to our microcontroller to store romantic messages and a speaker to the voice recorder module to play the messages back.
Despite the fairytale romance shown above, we experienced difficulties connecting our devices to the same network and transmitting data between them. We weren’t allowed to host the controllers on our personal hotspot since the 8883 secure port was incompatible with an iPhone’s firewall. Luckily, another hacker taught us about creating a network hotspot from our laptop, which has fewer firewalls, allowing us to use the original port as intended (and required by HiveMQ).
Online references for the STM32 pinouts were incorrect, as we required the D6 and D7 ports, but were told to use D9 and D10. Countless reuploads proved that D6 and D7 were the correct pins to use.
A special thanks to our test data: “They say distance makes the heart grow fonder – at this point, mine should be a professional bodybuilder.” “The first time I hear your voice, my heart stops beating for a second.” “Sometimes I press my pillow against my chest and pretend it’s you, just so my heartbeat has something to lean on. And I swear it softens…like it recognizes the idea of you even when you’re not physically here.” “Are you the sea? Because wo xi huan ni ;D”
Built With
- 0.91""oled
- arduinoide
- esp8266wifi
- hivemq
- isd1820
- keilide
- psr-28n08a-jq
- pubsubclient
- sen0203
- si2c
- softwareserial
- stm32f103c8
- wificlientsecure

Log in or sign up for Devpost to join the conversation.