Inspiration

Ever wondered if the drinks you put in the fridge a while ago are already cold or not? Don't want to get up from the couch to check? Just grab your phone and ColDrinks tells you when your drinks are ready to be enjoyed!

Link to promotional video: https://www.youtube.com/watch?v=aO7WtFZdR18&feature=youtu.be

What it does

Have you ever bought lots of drinks and put them in the fridge to cool down and then checked several times if they are cold enough? Or have you even forgot about them while waiting? We have a solution for you. Our product is a small box that you place inside a fridge. You simply put a can or bottle on it and wait until the system sends a text message to your phone notifying that your drink is at the temperature you want to drink it. It is called ColDrinks.

How I built it

Our product is the combination of efficiency and viability. It is very easy to use and has great benefits. The Arduino uses power from a Minty Boost battery pack that we crafted in the soldering workshop. The battery pack is powered by two AA batteries and connected to the Arduino via USB. The Minty Boost pack is made of a printed circuit board (PCB), several resistors, capacitors, electrolytic capacitors, a diode, a power inductor, a converter chip, and a socket that protects the chip. Arduino has a Bluetooth module and a LM34 temperature sensor attached to it. The temperature sensor is placed on the top layer of a soft foam. This way when something is placed on it, the foam compresses and the bottle has perfect contact with the temperature sensor. However, when the bottle is removed the foam returns to its normal position.

We uploaded a code on the Arduino, that executes itself when connected to the battery pack. The temperature sensor starts sending information to the Arduino and values of temperature are printed on the Serial Monitor. The Arduino is connected to a Bluetooth module (transmitter), which sends a signal to another Arduino unit with a Bluetooth module (server), which is located in another casing. The other Arduino is connected to an Ethernet shield, which allows us to establish a connection to the Internet. We used services provided by Temboo and Twilio to execute text messaging. When the temperature hits the desired threshold, a signal is sent to the Temboo server, which initiates sending a message through the Twilio account. The Twilio service sends a text message to the number specified in the code. Because Arduino works well in different temperatures, the system will work for many hot and cold drinks. After observations we have found out that due to some malfunctions in the system, the temperature sensor sometimes gives an error voltage of 0, which translates to 32 Fahrenheit’s. We eliminated this problem by modifying the code to cancel out these error readings. (Adding if and else statements, depending on the readings.) The message will be sent to the phone only when Arduino starts getting a reasonable signal.

One of the main components of the project is the design of the casing. We tried various approaches to achieve the best design: using a servo to grab the bottle, using a spring that shoots to the bottle and attaches the sensor, using rack-and-pinions and so on. We found out that curving the top of the casing and attaching the temperature sensor on the bottom of the curve turned out to be the most reliable and the most beautiful design. We made the boxes with laser cutting equipment in one of the MEAM labs, under supervision of teaching assistants Sam Weintraub and Spencer Collins. The top of the box has lots of laser cuts on it, in order to make it elastic. When a bottle is placed on the casing, the material bends out, but its elasticity does not let it break. We researched the most common measurements used in bottles and cans. According to this research, we developed the perfect curve to accommodate most bottles. Bottles of various sizes always roll into the middle and press on the temperature sensor, producing a good reading.

We have also created a survey powered by Penn Engineering, which was targeted to figure out the possible market and the willingness of consumers to purchase our project. The results of the survey prove that lots of people have never thought about a device that would keep track of the temperature of their drink, (70%) but most people would like to have some kind of technology do this for them (79%). Lots of people liked our project and were interested in it (84%).

Here is a link to the survey: https://upenn.co1.qualtrics.com/jfe/form/SV_bCovaV9Ds8IR7ff

And the code that made this technology work:

Transmitter:

#include <SoftwareSerial.h>
SoftwareSerial  BTSerial(2, 3); //RX TX
int tempPin = A1;
String BTSend;

void setup() {
  BTSerial.begin(9600); 
  Serial.begin(9600);
  pinMode(tempPin, INPUT);
}

void loop() {
  float sensorReading = analogRead(tempPin); //read temperatuyre from the sensor
  sensorReading=(((sensorReading*5000)/1024)-500)/10;
  int degreeF = ((sensorReading*9)/5)+32; //convert the value of temperature
  BTSerial.println(String(degreeF));
  Serial.println(String(degreeF));
  delay(1000);
}'

Server:

#include <SoftwareSerial.h>
#include <SPI.h>
#include <Dhcp.h>
#include <Dns.h>
#include <Ethernet.h>
#include <EthernetClient.h>
#include <Temboo.h>

SoftwareSerial  BTSerial(2, 3);   
#define TEMBOO_ACCOUNT "srimali"
#define TEMBOO_APP_KEY_NAME "myFirstApp"
#define TEMBOO_APP_KEY "b7bb7ef00e2848849fdf14d9444cf14d"
String outString ="";    
boolean stringComplete = false;
int degreeF = 0;

byte mac[] = {0x90, 0xA2, 0xDA, 0x00E, 0x07, 0xC5};

EthernetClient client;

void setup() {
  BTSerial.begin(9600);
  Serial.begin(9600);
  outString.reserve(10);
  delay(2000);
  while(!Serial);
  Serial.print("DHCP:");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("FAIL");
    while(true);
  }
  Serial.println("OK");
  delay(1000);    
}

void loop() {
      if (BTSerial.available()) {
    char inChar = (char) BTSerial.read();
    outString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
  if (stringComplete) {
    degreeF = outString.toInt();
    Serial.println(degreeF); 
    if (degreeF < 67 && degreeF != 32) {

    Serial.println("Running SendSMS");
    TembooChoreo SendSMSChoreo(client);
    SendSMSChoreo.begin();
    SendSMSChoreo.setAccountName(TEMBOO_ACCOUNT);
    SendSMSChoreo.setAppKeyName(TEMBOO_APP_KEY_NAME);
    SendSMSChoreo.setAppKey(TEMBOO_APP_KEY);

    String AuthTokenValue = "380e755fb6c03d96923eba7dd59f0cc7";
    SendSMSChoreo.addInput("AuthToken", AuthTokenValue);
    String BodyValue = "Mr. Rimali, your drink is ready.";
    SendSMSChoreo.addInput("Body", BodyValue);
    String ToValue = "+17208626024";
    SendSMSChoreo.addInput("To", ToValue);
    String AccountSIDValue = "AC90f1f15922f1658eda4fb1dc60b49194";
    SendSMSChoreo.addInput("AccountSID", AccountSIDValue);
    String FromValue = "+14155992671";
    SendSMSChoreo.addInput("From", FromValue);
    SendSMSChoreo.setChoreo("/Library/Twilio/SMSMessages/SendSMS");
    SendSMSChoreo.run();

    while(SendSMSChoreo.available()) {
      char c = SendSMSChoreo.read();
      Serial.print(c);
    }
    SendSMSChoreo.close();
    delay(300000);
  }
    outString = "";
    stringComplete = false;
  }
}'

Built With

Share this project:
×

Updates