0% found this document useful (0 votes)
51 views10 pages

Final Paper

The document summarizes a student engineering project called "The Daily Brew" which combines an alarm clock, coffee maker, cereal dispenser, and MP3 player into one automated morning routine device. The team designed, built, and tested a prototype that connects an Arduino to these components. They presented their project at a Design Expo where it received positive feedback. The summary discusses the project goals, design process including CAD models and revisions, operating instructions, and lessons learned for future improvements.

Uploaded by

api-302908716
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views10 pages

Final Paper

The document summarizes a student engineering project called "The Daily Brew" which combines an alarm clock, coffee maker, cereal dispenser, and MP3 player into one automated morning routine device. The team designed, built, and tested a prototype that connects an Arduino to these components. They presented their project at a Design Expo where it received positive feedback. The summary discusses the project goals, design process including CAD models and revisions, operating instructions, and lessons learned for future improvements.

Uploaded by

api-302908716
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

Final Report

The Avengineers
The Daily Brew

Emily Byrne, Lauren Hampton, Joseph Prieto


Matt Skogen, Devon Soto, Giordan Thompson

Our client is not specific. We target anyone who enjoys waking up to a cup of
coffee. Whether that is a college or high school student who woke up late, or a busy
worker who has no time to wait for a pot of coffee, our design will make the morning a
more seamless time. Our goal is to make mornings a time for efficiency. Functionally, our
projects main goal was to have the alarm and coffee maker connected. We had originally
planned for the cereal compartment to be an extra component and we had planned to use
a buzzer as the alarm. As time went on, the additional components became feasible and
we stretched our skills to incorporate all four components. Our project was perfectly in
the realm of our abilities to the point where there was a good amount of complication to
test our ability to gain more skills and troubleshoot, meanwhile allowing us to apply
skills we came in with. The key design included in the project is how the components fit
together. We hoped to make our project compact yet reliable. We built an alarm that takes
the essentials of a morning routine and combines them into an automatic design.
We began with the primary basis of our project: the alarm and the coffee-maker.
From there we added the additional components.

Figure 1: Original Design

Our first step in the design process was


to create a compact product that can fit
on almost all nightstands.

Figure 3: Final Model

Our final project (including the nameplate). All


parts included and functioning.

Figure 2: CAD Model

We finalized our design with a


CAD model and included our
upgraded design for the cereal
compartment

Given more time, more attention would have been put to the alarm. Our alarm
clock is fairly basic and could be improved to fit more common demands such as a
snooze function, buttons to change the alarm time (instead of changing the code), and
upgrading the speakers so instead of using the MP3 shield it uses an iPod to play a more
diverse range of songs. Another component that would improve our design even more
would be if there was a component that could keep milk chilled and pour a designated
amount into the cereal.
Operating Instructions:
1. Connect Arduino to Computer and change the code to set alarm
to desired time (Figure 4)
Figure 4: Step 1

2. Prepare The Daily Brew by double checking that a bowl is under


the filled cereal dispenser, a mug under the coffee pot with water
and grounds in the coffee pot. Preload a song onto the SD card and
insert it into the MP3 Shield (Figure 5).
3. Go to sleep

Figures 5: Step 2
Figure 6: Step 3

4. Wake up with a smile because your favorite song is playing, a hot mug of coffee
and a bowl of cereal are waiting for your indulgence (Figure 4). (The alarm will
turn off automatically within a minute.)

Figure 7: Step 4

The Design Expo experience was thrilling. Watching the reactions of the browsers
confirmed that our project was relatable and something people found useful. We had
interesting suggestions from the public, such as using the cereal dispenser as a cat food
dispenser. Most commonly, the first reaction was a chuckle and once the function of the
cereal compartment was revealed there seemed to be a reaction of surprise. One of the
best parts was being able to answer the question, Does it work? with Yes it does! The
judges had constructive feedback and agreed with what our future work would be. The

judges noticed our cohesive efforts as a team and suggested that our project could be
more integrated. Overall, the Design Expo was a success.
The team made significant progress in building stable relationships. With perfect
amounts of respect and creativity, we found a steady balance in discussions and
compromises putting us in the performing stage. The team could feel comfortable
openly suggesting ideas or contributing various solutions. Lauren kept a steady journal of
the teams budget and managed the finances to ensure that when each member bought an
item, it was documented so everyone would end up paying an equal amount of money.
Lauren also contributed to the PowerPoints and web-updates. Matt had plenty of skills
already acquired and was very generous in applying these skills and helping his peers
gain experience in these fields as well. We thank him for the CAD-Solidworks drawings
and for 3D printing and laser cutting of our materials. He also fixed our servo code so
that the servo could spin 360 degrees. Joseph was a huge help and always on top of
soldering our materials. He helped to create the alarm clock by working with the RTC
and started the formatting and beginning of the poster. Emily worked efficiently on all of
the write-ups and power-points, also finishing the poster. She contributed to
troubleshooting the MP3 player in the early stages. Devon was the main reason for the
success of the MP3 shield. He spent a lot of time with Dan1 and Conor2 troubleshooting
the speakers. Giordan was always present and contributing on every task. He seemed to
work productively on a little bit of everything. Each team member tried to be as flexible
as possible in order to meet up outside of class and help wherever was needed.
References
Dan Godrick
Conor Brennan
Not mentioned in the text but used as references:
Peter Mitrano
Alec Weiss
Vandana Duff
Tim May
Christine Buckler
Keshav Saharias Blog. Keshav Saharias Blog. N.p., n.d, Web. 21 Nov. 2015
(original Arduino coffee maker idea)
MotionClock. Github. N.p, n.d, Web. 30 Oct. 2015
<https://github.com/mikesoniat/MotionClock/blob/master/MotionClock.ino>
MP3 Player Shield Hookup. MP3 Player Shield Hookup. N.p., n.d, Web. 24 Nov. 2015
(MP3 Shield code)

Table of Parts and Materials: A table of parts and materials and the purpose,
including their costs and whether machined, programmed or purchased
Part

Purpose

Cost

Machined, Programmed
or Purchased?

Alarm Clock
(Figure 10)

Wake up user

Arduino

board and pins used to code alarm

(2)$15

purchased

LCD Screen

displays time and message when alarm


goes off

$17.95

programmed

RTC Chip

(real time clock) keeps the clock time

$20

purchased (and
implemented in Arduino
code)

Alarm Casing

ABS plastic 3D printed case to hold


LCD screen and Arduino

$10

machined

MP3 Shield
(Figure 11)

programmed into Arduino that allows


speakers to be plugged in and plays
music when alarm goes off

borrowed

purchased and
programmed

Speakers

plays music with help of mp3 shield

free

purchased

Coffee Maker
(Figure 9)

machine that brews and pours coffee

$10

purchased(and altered
for programming
purposes)

Relay

electromagnetic switch that turns coffee


maker on and off

$15.90

purchased (and
implemented in Arduino
code)

Cereal Pouring
Device (Figure 8)

Automatically pour a bowl of cereal

large PVC pipe

container that holds cereal inside of it

free(found in
ITLL)

purchased

Acrylic

makes dividers on inside of PVC and


openings that allow one section of
cereal to be poured at a time

$15

purchased to be
machined

Air Duct
Converter (metal
base)

holds the PVC and acrylic up to allow


cereal to be dumped into bowl

$14

purchased to be
machined

Servo

when programmed in an Arduino, it is


what rotates the acrylic to dump cereal

$5

purchased and
programmed

Expo Poster
(Figure 13)

explains project for Expo

$45

designed and purchased

Additional
Extraneous
Materials

coffee grounds, creamer, dixie cups,


cereal

$10

purchased

Nameplate
(Figure 12)

nameplate from beginning project

$20

purchased and
machined

Total Cost

much under budget

$222.85

Figure 8: Cereal Compartment

Figure 9: Coffee Maker

Figure 11: MP3 Shield and Speaker

Figure 10: Speaker and Alarm


Clock

Figure 12: Final Project

Figure 13: Expo Poster


Arduino Code: (//These are

comments)

Original Code from:


MotionClock. Github. N.p, n.d, Web. 30 Oct. 2015
<https://github.com/mikesoniat/MotionClock/blob/master/MotionClock.ino>
MP3 Player Shield Hookup. MP3 Player Shield Hookup. N.p., n.d, Web. 24 Nov. 2015
(MP3 Shield code)
//Libraries
#include "Wire.h"
#include <LiquidCrystal.h>
//LCD Screen
#include <Servo.h>
#define DS1307_I2C_ADDRESS 0x68
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
Servo myServo; //creates a servo object to control
int alarmS = 0 ; //set seconds for alarm time
int alarmM = 17; //set minutes for alarm time
int alarmH = 12; //set hours for alarm time
int day = 6; //monday = 1, tuesday = 2, wednesday = 3, thursday = 4, friday = 5, saturday = 6, sunday
= 7, empty = 8
const int relayPin = 8; //initializes the pin for the relay (coffee)
const int timeDelay = 5000; //time delay for relay
byte bcdToDec(byte val)
{
return ( (val/16*10) + (val%16) );
}
void getDateDs1307(byte *second,byte *minute,byte *hour,byte *dayOfWeek,byte *dayOfMonth,byte
*month,byte *year)
{
Wire.beginTransmission(DS1307_I2C_ADDRESS);
Wire.write(0);
Wire.endTransmission();
Wire.requestFrom(DS1307_I2C_ADDRESS, 7);
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour
= bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month
= bcdToDec(Wire.read());
*year
= bcdToDec(Wire.read());
}
void setup()
{
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
Wire.begin();
// AMEND IF YOUR USING A DIFFERENT LCD SCREEN //
lcd.begin(16, 4);
// Dimnesions of Screen
pinMode(relayPin, OUTPUT); //relay control pin
myServo.attach(7); //attaches the servo to pin 9
pinMode(13, OUTPUT); //Speaker MP3 Player Shield Pin

}
void loop()
{
myServo.writeMicroseconds(1625); //keeps servo off when alarm hasnt started
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
String s, m, d, mth, h;
getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year);
hour = (hour - 1); //accounts for daylight savings
if (second < 10) { s = "0" + String(second); } else { s = String(second); }
if (minute < 10) { m = "0" + String(minute); } else { m = String(minute); }
h = String(hour);
if (dayOfMonth < 10) { d = "0" + String(dayOfMonth); } else { d = String(dayOfMonth); }
if (month < 10) { mth = "0" + String(month); } else { mth = String(month); }
char* days[] = { "NA", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
lcd.clear();
// JUMP TO CENTER ON A 16X2 SCREEN //
lcd.setCursor(6,0);
// CHANGE THE FOLLOWING TO SET THE DATE IN TO YOUR PREFERED ORDER //
lcd.print(h + ":" + m + ":" + s);
// NEXT LINE, 1 SPACE IN FROM THE LEFT //
lcd.setCursor(3,1);
// PREFIX THE 20 AS THE RTC CHIP ONLY USES 2 DIGITS FOR THE YEAR //
lcd.print(String(days[dayOfWeek]) + " " + mth + "/" + d + "/20" + year);
delay(1000); // Wait 1 second
if (((int)second == (alarmS)) && ((int)minute == (alarmM - 1)) && ((int)hour == alarmH))
{ digitalWrite(relayPin, HIGH); // Turn relay on 1 min before alarm
}
else { }
if (second == alarmS && minute == alarmM && hour == alarmH)
{lcd.setCursor(5,3); lcd.print(String("Good Morning Judges!")); //prints a morning display message
digitalWrite(13, HIGH); //turns on speaker
delay(5000); //delays time for the message
}
else { }
if (((int)second == (alarmS)) && ((int)minute == (alarmM + 15)) && ((int)hour == alarmH))
{ digitalWrite(relayPin, LOW); //turns off coffee relay
digitalWrite(13,LOW); //turns off music
}
else{}
//Monday
if (second == alarmS && minute == alarmM && hour == alarmH && day == 1) {
myServo.writeMicroseconds(1600); //turns the servo
delay(950); //delay for turning time
myServo.writeMicroseconds(1625); //stop frequency for servo
}
//Tuesday
if (second == alarmS && minute == alarmM && hour == alarmH && day == 2) {
myServo.writeMicroseconds(1600);
delay(1000);
myServo.writeMicroseconds(1625);
}

//Wednesday
if (second == alarmS && minute == alarmM && hour == alarmH && day == 3) {
myServo.writeMicroseconds(1600);
delay(950);
myServo.writeMicroseconds(1625);
}
//Thursday
if (second == alarmS && minute == alarmM && hour == alarmH && day == 4) {
myServo.writeMicroseconds(1600);
delay(1100);
myServo.writeMicroseconds(1625);
}
//Friday
if (second == alarmS && minute == alarmM && hour == alarmH && day == 5) {
myServo.writeMicroseconds(1600);
delay(950);
myServo.writeMicroseconds(1625);
}
//Saturday
if (second == alarmS && minute == alarmM && hour == alarmH && day == 6) {
myServo.writeMicroseconds(1600);
delay(1450);
myServo.writeMicroseconds(1625);
}
//Sunday
if (second == alarmS && minute == alarmM && hour == alarmH && day == 7) {
myServo.writeMicroseconds(1600);
delay(1450);
myServo.writeMicroseconds(1625);
}
//Empty Cycle
if (second == alarmS && minute == alarmM && hour == alarmH && day == 8) {
myServo.writeMicroseconds(1600);
delay(1500);
myServo.writeMicroseconds(1625);
}
else{}
}

You might also like