Final Paper
Final Paper
The Avengineers
The Daily Brew
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.
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
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
(2)$15
purchased
LCD Screen
$17.95
programmed
RTC Chip
$20
purchased (and
implemented in Arduino
code)
Alarm Casing
$10
machined
MP3 Shield
(Figure 11)
borrowed
purchased and
programmed
Speakers
free
purchased
Coffee Maker
(Figure 9)
$10
purchased(and altered
for programming
purposes)
Relay
$15.90
purchased (and
implemented in Arduino
code)
Cereal Pouring
Device (Figure 8)
free(found in
ITLL)
purchased
Acrylic
$15
purchased to be
machined
Air Duct
Converter (metal
base)
$14
purchased to be
machined
Servo
$5
purchased and
programmed
Expo Poster
(Figure 13)
$45
Additional
Extraneous
Materials
$10
purchased
Nameplate
(Figure 12)
$20
purchased and
machined
Total Cost
$222.85
comments)
}
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{}
}