ECE497 Project Not Your Average Cup of Joe
Embedded Linux Class by Mark A. Yoder
I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!
00 Executive Summary 00 Installation Instructions 00 User Instructions 00 Highlights 00 Theory of Operation 00 Work Breakdown 00 Future Work 00 Conclusions 00 Demo 00 Late Comments: I'm looking forward to seeing this. Score: 10/100
Coffee lovers all over the world deal with the never ending struggle of having to make their own coffee. This usually results in them waking up earlier than they need to or causing them to be late for work because they got caught in the Starbucks rush. Our product is a web application that allows users to remotely schedule and have their coffee brewed from afar via an internet connected coffee maker. Our coffee maker will be linked to user accounts and will allow the user to access the machine's settings. Instead of scheduling your life around coffee, you can now schedule coffee around your life.
For the final product, our team has the BeagleBone connected to the coffee maker and to the computer. This way, the BeagleBone will not overheat when the coffee maker runs and it will be visible to the user for easy debugging. The BeagleBone is connected to the laptop since the Wi-Fi capabilities of the BeagleBone were not able to be accomplished due to network security restrictions.
1: Obtain a BeagleBone Black 
2: Obtain a Black and Decker 12 Cup Programmable Coffee Maker 
3: Unscrew the bottom of the coffee maker and unscrew the programmable board from the coffee maker.
4: On the programmable board, cut the RLY wire
5: Solder/connect another wire extending the cut RLY wire in order to connect it to a GPIO pin on the beagleboard.
6: Solder an additional wire onto the GND terminal on the green part of the programmable board.
7: Connect these two pins to the GND on the BeagleBone Black and a GPIO pin on the BeagleBone Black (We used P9_12)
8: Take a look at our GitHub page: 
9: Plug in the BeagleBone to give it power, and use the website to schedule/make coffee!
- Plug in the BeagleBone to your computer and in a linux terminal, run the script controlCoffeMaker.py
- Plug in the coffee maker to a wall outlet.
- Go to the website, 
- Login with your email and password.
- You will see a list of coffee makers that you have added, go to your desired coffee maker and set your desired brew time or simply hit the button to brew a cup of coffee now.
Here is a list of the extensive features of our smart coffee maker:
- Turn the coffee maker on and off.
- Start brewing a cup of coffee.
- Stop brewing a cup of coffee.
- Schedule a brew at a certain time.
- Cancel a scheduled brew.
- Create an account on the website.
- Customize various items based on your web account.
Include a YouTube demo the audio description.
Theory of Operation
The website connects to the firebase and sends its data to the firebase, which stores that information to the firebase. The BeagleBone checks the values that the firebase stores, then the code on the BeagleBone executes the operation that corresponds with the data stored. The BeagleBone can also update the data stored in the firebase. For example, if the start brewing button is pressed on the website, firebase stores the button press. When the program runs, it checks that status of the brew coffee button, executes the commands for making the coffee, then sets it back to false.
- Hannah: Built the website and connected it to the firebase.
- Rahul: Created the python code for the BeagleBone.
- Maddy: Created the wiki page, posted to hackster.io, and wired the coffee maker.
All of the team's work is completed.
Some additional things our group could do:
- Voice recognition brewing: The user can speak a command to the coffee maker and it will pick up the command and do the action. For example, the user could say, "brew a cup of coffee" and the coffee maker will automatically start making the coffee as long as the water and coffee grinds are inside of the machine.
- Temperature sensing function: This will allow the coffee maker to brew the coffee at a certain temperature or hold the coffee pot at a certain temperature. This hold function is especially handy if the scheduled brew occurs and you are not able to get to your cup of coffee within 5-10 minutes of the brew, where the coffee pot will cool down too much. Additionally, the temperature sensing function will be able to report on the website the temperature that the coffee is being made at and the current temperature of the coffee pot.
- Water level sensor: This sensor will allow the coffee maker to report to the user via the website that the water level is low. This is useful because the user will be able to know when he/she needs to refill the coffee maker with water in order to carry out the brewing.
Our group is very pleased with the outcome of this project. Given the short period of time we had to complete the project and juggling many other courses, we feel that we accomplished the main goal of our project. The group found that the easiest part of the coffee maker system was rerouting the hardware so that we could control the coffee maker through the GPIO pins on the BeagleBone. The most difficult part of the project has been interfacing with the website. If our group had more time, we would have looked into the internet restrictions that halted us from using a wireless connection to the BeagleBone. Additionally, if we had more time, we would make the website able to add more coffee makers and integrate it with social media through an app. Overall, our group was very pleased with the features of our coffee maker project and we are confident in the embedded work that we did.
Embedded Linux Class by Mark A. Yoder