Soul Spheres Duo - HCI Final Project
- Dec 1, 2020
- 7 min read
For my Human and Computer Interactions final I went with an idea that was very close to my heart. My concept was to create two orbs that connected a couple even if they are far apart. I am honestly not sure of the name but for now I'll go with Soul Spheres Duo.
They are a pair of small matte white orbs that sit upon a little stand that can be at your work desk or wherever you spend most of your time when picked up they sit lightly cupped in the palms. When person A picks up their orb, person's B orb will begin to glow a soft color that gradually fades between pink and red. Upon seeing this person B would pick up their orb and person's A would begin to glow and both orbs would start to lightly puls with a white light to the opposite person's pulse.
After both orbs are held for a few moments together they will turn a bright golden color.
I am a hopeless romantic, I wear my heart on my sleeve and am very close with my partner. I don't know how people can handle long distance relationships because even the thought of Tom going away for a few days to take his gemology exam in NYC makes me sad. I work from home and I spend a lot of time sitting at my desk and feel very lonely at times. On days when I feel alone or sad sometimes Tom randomly sends me a kind text or a heart emoji and as silly as it may be it makes me feel so happy. I am not alone, someone is out there thinking of me. The idea of this project really came from a longing for a more intimate and special way we could interact with each other at a distance that felt more special than texting an emjoi or sweet text. Something that we could interact with at the same time and see it, hold it, and see the other person's heart beat. Maybe that is too ooey gooey and needy for some but for me this would be so special, and just a way to add a little needed warmth and light to my day.

I chose the pink and red color because they are colors that are associated with love and are warm I have it turn to a golden color in the end upon both people holding it as a nod to one of my favorite games growing up, Harvest Moon Friends of Mineral Town. Honestly this a little flub on my part as I thought I remembered that the maximum heart color was golden once you reached the highest level of affection with your partner... but upon looking it up as I was writing this, I saw that I was wrong. It goes yellow to orange to red and then a darker red... maybe I am remembering it from a different game? Either way I have believed in this idea of the golden heart for so long that I didn't want to change it.... I like using the pink red and yellow because they remind me also of the colors on a salt lamp, which I think are very soothing. I think other people who are really close and miss each other a lot like we do would also enjoy something like this but when it came to designing this project I was selfish and really just thought about what would feel right to me. Still I would love if other people were interested because as lame as it sounds, I love Love, and I think anything that brings more of it into our day is great.
The way that these orbs would work is by enclosing a mini arduino uno board in each along with the necessary parts required to make it function. For the color change to start happening I decided to go with a temperature sensor, as while the orb is being held it will begin to heat up. Originally I was thinking of using a light sensor that when it was held would be covered and that would trigger the effect but I realized that means every night the orbs would come on and decided against it. For the white pulse I would use a heart rate sensor, the person would know where this is and place their finger on it lightly while holding the orb. The orbs would send and receive information through a wifi connector using a server hosted online. The other components would be an RGB light for the changing color and a small diffused white light for the pulse sensor with wires connecting it all and a small rechargeable battery so it can be charged on the stand through a standard usb charger. All this would be encased in a hard plastic sphere to protect all the parts with a matte softer white material on the outside of the sphere.

For the physical demo of this piece I put together a larger version of what would sorta be happening in the orbs on my regular arduino uno board. In my original setup (as seen to the right) I used a very large diffused 10mm RGB LED and 4 small white diffused LED's to have a more optimal look. However I was having a very hard time with using the 10mm RGB because it doesn't work the same as the 5mm which I was surprised by, I honestly thought it would be the exact same just larger. I was able to overcome one difference of how the power ran through the 10mm vs the 5 but when it came to programming the colors on the large one I could just not get it to work right. I was using the RGB practice example and it would work perfect fine for the 5mm but then would be random for the 10mm. I tried switching the pins around in the program to what color they corresponded to and was able to get it to run in order but it was backwards. I thought "that's fine I'll just program it backwards" but whatever I tried would not get the right result. So in the end I ended up removing the 10mm RGB and replaced it with the standard 5mm one and removed 3 of the 4 white LEDs because they were too overpowering for the single 5mm RGB light.
Parts List for Demo
1 SparkFun RedBoard
1 Breadboard
10 Jumper Wires
3 330 Ω Resistors
1 Temperature Sensor
1 Pulse Sensor Amped
1 5mm RGB LED
1 3mm Diffused White LED
To the right you can see the layout both a drawn version and picture of my project. --->
I then fabricated a top out of a pigment screw top container and ...waittttt for itttt... a tissue to go over the lights to make it look better.

And here are some pictures with the glowing light on. OOoOohhhh sooo pretty.
Below is a video of the Arduino Uno physical build in progress. As you can see the RGB starts to glow as the temperature sensor is touched. I had the colors cycle through the colors as if the other person had picked theirs up as well. Then the heart rate sensor makes the white LED blink to my pulse. In the conceptual project my input would be the output to my partners LEDS and their input would be what I would see on my end.
You can see the code I set up below. v
// Variables
int PulseSensorPurplePin = 1; // Pulse Sensor PURPLE WIRE connected to ANALOG PIN 0
//int LED13 = 13; // The on-board Arduion LED (from original code)
//int LED4 = 4;
//int LED5 = 5;
//int LED6 = 6;
int LED7 = 7;
const int RED_PIN = 9;
const int GREEN_PIN = 10;
const int BLUE_PIN = 11;
int Signal; // holds the incoming raw data. Signal value can range from 0-1024
int Threshold = 650; // Determine which Signal to "count as a beat", and which to ingore.
const int hot = 77; //set parameter for being held
// The SetUp Function:
void setup() {
//pinMode(LED13,OUTPUT); // pin that will blink to your heartbeat!
// pinMode(LED4,OUTPUT); // took out pins 4 - 6 for one light instead of 4
// pinMode(LED5,OUTPUT);
// pinMode(LED6,OUTPUT);
pinMode(LED7,OUTPUT);
pinMode(A0, INPUT); //temp sensor
pinMode(RED_PIN, OUTPUT); //rgb lights
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
Serial.begin(9600); // Set's up Serial Communication at certain speed.
}
// The Main Loop Function
void loop()
{
PROGRAM(); // Gradual fade from Red to Green to Blue to Red
}
void PROGRAM()
{
for (int x = 0; x <= 1000; x++)
{
RGB(x); // Increment x and call RGB() to progress through colors.
delay(20); // Delay for 10 ms (1/100th of a second) - to help the "smoothing"
}
}
void RGB(int color) {
Signal = analogRead(PulseSensorPurplePin); // Read the PulseSensor's value.
// Assign this value to the "Signal" variable.
Serial.println(Signal); // Send the Signal value to Serial Plotter.
int sensor = analogRead(A0);
float voltage = (sensor / 1024.0) * 5.0;
float tempC = (voltage - .5) * 100;
float tempF = (tempC * 1.8) + 32;
Serial.print("temp: ");
Serial.print(tempF);
//Setup for RGB
int redIntensity;
int greenIntensity;
int blueIntensity;
color = constrain(color, 0, 1000); // constrain the input value to a range of values from 0 to 767
if (tempF < hot) { //not being held/cold
digitalWrite(RED_PIN, LOW);
digitalWrite(GREEN_PIN, LOW);
digitalWrite(BLUE_PIN, LOW);
Serial.println(" It's Cold.");
}
else { //beingheld/hot
if (color <= 250) // RANGE 1 (0 - 250) - pink to red
{
redIntensity = 255; // red on
greenIntensity = 0; // green off
blueIntensity = 50 - color/5; // blue on to off
}
else if (color <= 500) // RANGE 2 (251 - 500) - red to yellow
{
redIntensity = 255; // red on
greenIntensity = (color - 250)/3; // green off to on
blueIntensity = 0; // blue off
}
else if (color <= 750) // RANGE 3 (501-750) - yellow to red
{
redIntensity = 255; // red on
greenIntensity = (750 - color)/3; // green on to ff
blueIntensity = 0; // blue off
}
else // RANGE 4 (751-1000) - red to pink
{
redIntensity = 255; // red
greenIntensity = 0; // green off
blueIntensity = (color - 750)/5; // blue off to on
}
// THIS IS WHAT ORANGE LOOKS LIKE
//redIntensity = 255;
//greenIntensity = 40;
//blueIntensity = 0;
// THIS IS WHAT PINK LOOKS LIKE
//redIntensity = 255;
//greenIntensity = 0;
//blueIntensity = 50;
// "send" intensity values to the Red, Green, Blue Pins using analogWrite()
analogWrite(RED_PIN, redIntensity);
analogWrite(GREEN_PIN, greenIntensity);
analogWrite(BLUE_PIN, blueIntensity);
if(Signal > Threshold){ // If the signal is above "550", then "turn-on" Arduino's on-Board LED.
// digitalWrite(LED13,HIGH);
// digitalWrite(LED4,HIGH);
// digitalWrite(LED5,HIGH);
// digitalWrite(LED6,HIGH);
digitalWrite(LED7,HIGH);
Serial.println(" Pulse On.");
}
else {
// digitalWrite(LED13,LOW); // Else, the sigal must be below "550", so "turn-off" this LED.
// digitalWrite(LED4,LOW);
// digitalWrite(LED5,LOW);
// digitalWrite(LED6,LOW);
digitalWrite(LED7,LOW);
Serial.println(" Pulse Off.");
}
}
delay(10);
//temp part
}




































Comments