Virtual Comfort Pet

Made by Xiaowen Xu

A comfort pet that can feel your energy when it hurt by the cold temperature.



Winter is coming! It's easier for us to feel lonely and being abandoned when we stay at a cold temperature. But when you have a friend who can feel your energy and temperature, you will feel much better. In the current market for virtual Pet, many products focus on developing the personalities and the integrated functions but ignore the emotional and physical bonding with humans. 


To develop a virtual pet, who can show her bad status when at bad weather until receiving your support and energy. There is an energy transition between you and your virtual pet. In other words, your pet will be alive again from your energy. Thus, the users will have a feeling of being needed by others.


The first person I interviewed is my father, who is a college teacher and spend most of his life teaching others. But when the retirement day is coming nearly and nearly, he has anxiety feeling that he has not been needed by his students, even the society. Especially in the bad weather when he stays at home alone, the loneliness swallowed up his sense of achievement in life. How to design a virtual pet that makes him feel needed again?

My full process:

1. Interview and get the insight

3. Ideation

4. Build the circuit and pseudocode

5. Coding and connect with weather API

6. Adjust and test code



List of Parts:

  • 1 Breadboard
  • 1 Particle Argon
  • 1 FSR Sensor
  • 3 LED (Red, blue and Green)
  • 4 Resistors
  • 1 USB Micro B Cable
  • 12 Jumper Wires


When the bad weather is coming, the data of weather will be sent to the endpoint via webhook. The LED status will become "low", which means the pet "is near death". At this time, if you give it a good press, feeling your 'energy', the pet will be "alive" again.

// Define a pin that we'll place the FSR on
// Remember to add a 10K Ohm pull-down resistor too.
int fsrPin = A0;

// Create a variable to hold the FSR reading
int fsrReading = 0;

// Define a pin we'll place an LED on
int ledPin = D2;
int ledPin2 = D4;
int ledPin3 = D6;

// Create a variable to store the LED brightness.
int ledBrightness = 0;

void setup()
  // Set up the LED for output
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
    // Create a cloud variable of type integer
  // called 'light' mapped to photoCellReading
  Particle.variable("force", &fsrReading, INT);

void loop()
  // Use analogRead to read the photo cell reading
  // This gives us a value from 0 to 4095
  fsrReading = analogRead(fsrPin);
  if (fsrReading <= 1365){
      ledBrightness = map(fsrReading, 0, 1365, 0, 255);
      analogWrite(ledPin, ledBrightness);
      analogWrite(ledPin2, 0);
      analogWrite(ledPin3, 0);
  }else if(fsrReading > 1365 && fsrReading <= 2730) {
      ledBrightness = map(fsrReading, 1365, 2730, 0, 255);
      analogWrite(ledPin2, ledBrightness);
      analogWrite(ledPin, 255);
      analogWrite(ledPin3, 0);
      ledBrightness = map(fsrReading, 2730, 4095, 0, 255);
      analogWrite(ledPin, 255);
      analogWrite(ledPin2, 255);
      analogWrite(ledPin3, ledBrightness);
Click to Expand
IoT personal h1
Xiaowen Xu -
Share this Project


A comfort pet that can feel your energy when it hurt by the cold temperature.


February 1st, 2019