Final Project - a Heartbeat-Sensing Crystal Ball

Initial Project Ideas

For my final project, I wanted to do some mechanism that helps reconcile long distances, read emotions and display them to someone else wirelessly. As an international student who has been living away from home for 8+ years and is also in a long-distance relationship, I know that video calls and text messages help a lot in keeping up to date with each other, but there’s still a gap in conveying the spontaneous demonstrations of feelings possible when living with someone. I wanted to do a crossover between mood rings and a crystal ball, that helps in communicating how you’re feeling to someone away.

My project is called CRYSTAL: Communicating Remote Yearnings Sentiments Through Aura Lights

Some of the requirements for my project are creating 2 light fixture/base and transparent spheres that display lights and change them according to a temperature sensor input (coming from the user’s palm). There are opportunities to add more sensors or inputs to create an accurate “reading” of one’s emotion. I would also need wireless communication between the 2 units so they can both display whatever “aura” was read by the user.

As part of the assignment for the first week, we were supposed to create a render of this possible final project. I wanted to try to familiarize myself with an animation/3D rendering tool before I had the details to create a technical drawing of my project, so I decided to try out Blender. Following this beginner tutorial on youtube, I was able to create my own version of a crystal ball, with an illuminated/smoky interior.

As an inspiration for how the LEDs will look into the crystal ball, I want to follow this DIY tutorial of a thundercloud lamp to give an eerie feel to the illumination. In input devices week , I also describe how I plan to use a temperature sensor to get biometric data from the user. Additionally, I bought these heart rate sensor modules I plan to integrate into my system.

My next tasks are summarized as follows:

Component Tools/Materials needed Expected timeline
Crystal Ball base 3D printed ASAP
Crystal Ball globe Resin cast? ASAP
Temperature and Heart Rate Sensors NTC thermistor, MAX30102 module Input Device Week
LED illumination Neopixel LEDs Output Device week
Communication between two boards 2 Working PCBs Networking week
User interface LED Display Interface and app programming week

Updates and final version(s)

Now we’re in the last stretch and it’s crunch time! As well as “let’s be realistic with what we can do until the final” time. Therefore, our idea became to use not 2 but one crystal ball, which is still going to accomplish the feat of ‘reading your palm’ i.e. your heartbeat. I am using the MAX30102 sensor, and I expand on how it works in the pages of Weeks 9, 11, and 12. I also bought a WS2812B LED strip and learned how to control it in Week 10, Output Devices. My needs from my microcontroller are pretty light, since I only need VIN, SDA, SCL and GND connections for my sensor and VIN (5V), one data line and GND for my LED strip.

After making my PCB, I embarked on the creation of the sensor module, which required some molding and casting. I asked John from the CBA section to provide the original handprint over some soft clay, and cast an Oomoo soft mold on top of it. The final piece was made out of Hydrocal, and I placed it on top of an Acrylic Box that was cut with a Laser Cutter and holds the custom PCB inside.

As for my actual crystal ball, I had the base 3D printed in Black Resing using the Formlabs printer, and its shape had sharp spirals that were designed in Fusion 360 in a similar way to my twisted pumpkin from Week 4. I accomplished the smoky interior of the crystal ball by gluing pieces of cotton in a DIY Snow Globe that held my LED structure. In the video on top of the page, you can find the iterations and the final version of my heartbeat-sensing crystal ball!

What does it do?

It is a crystal ball/cloud lamp that synchronizes with your heartbeat upon touching the sensing board.

Who's done what beforehand?

There are several decorative crystall ball lamps and there's a mood ring that help you feel a partner’s heartbeat, but I didn’t find a project that combined these features before to make a heartbeat sensitive crystalMysterious-Gothic-Style- ball lamp.

What did you design?

I designed the base of the lamp and the sensing box using Fusion 360 and my PCBs traces with Eagle.

What materials and components were use? Where did they come from? How much did they cost?

Component Supplier Price
MAX30102 Heart Rate Sensor Module Amazon $2.86 per unit
Crystal Ball globe Amazon $8.99
WS2812B LED Strip Amazon $20.99
Cotton Balls Dollar Tree Store $1.25
Oomoo, Hydrocal, Acrylic, Formlabs resin How to Make class inventory N/A

What parts and systems were made? What processes were used?

The sensing platform was cast out of hydrocal using an Oomoo mold, the acrylic box was laser cut and the base was 3D printed in resin using the Formlabs printer

What questions were answered? What worked? What didn't?

I thought my interactions on the demo day were nice and demonstrated that a responsive lamp is something people would engage with. I like the smoky lamp effect and the heart sensor but wish I had integrated a couple more sensors, maybe even a camera to capture the mood of the person and change the lights accordingly.

Things I did not account for the last week were that my connections between the LED strips and the female connectors on my board could be pretty inconsistent, leaving me sometimes with strange LED behavior even if the code was identical to what I had tried before.

How was it evaluated?

It needed to be sensitive to a person’s touch on the handprint and output a plausible heart rate (visualized in the lamp). Although I do believe that a person needs to be in contact with the sensor for at least a minute for good reading, I do believe that the lamp can say it has accomplished what it proposed.

What are the implications?

Creating interactive displays is fun, but truly capturing someone’s mood to try to interpret it as an object is a harder task.

Files for the final project can be found here