Difference between revisions of "Cocktail Maker"

From ESE205 Wiki
Jump to navigation Jump to search
m (Protected "Cocktail Maker" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
 
(46 intermediate revisions by 3 users not shown)
Line 2: Line 2:
 
[[Cocktail_Maker_Log]]
 
[[Cocktail_Maker_Log]]
  
Trello
+
[https://trello.com/b/PGXoSe85/cocktail-maker Trello]
https://trello.com/b/PGXoSe85/cocktail-maker
+
 
 +
[https://docs.google.com/presentation/d/1wvD-Vv2zkGxKf8o0o-m6AQHFxp5VEK0lzLrEisa3AAA/edit#slide=id.g4f760b305c_0_1245 Proposal Presentation]
 +
 
 +
[https://github.com/ESE205/cocktail-maker GitHub]
 +
 
 +
[[Photoresitor Level Detection]]
 +
 
 +
[[File:Final poster for engineering design 2.JPG|800px]]
 +
 
 
==Overview==
 
==Overview==
 
Ever hosted a party and had to play bartender the entire time? Well, we have your solution! We have created an easy to use cocktail maker. This cocktail maker will be able to make at least 2 mix drinks at the click of a button! This guarantees a delicious cocktail every time. We will do this by coding an Arduino to control pumps/valves that are attached to the ingredients. Our machine is based off of a weighted plate. Once you have selected their drink, the machine will zero the scale and start pouring the beverage. We will ensure that each drink will have the proper proportions by zeroing the scale after each ingredient is added.
 
Ever hosted a party and had to play bartender the entire time? Well, we have your solution! We have created an easy to use cocktail maker. This cocktail maker will be able to make at least 2 mix drinks at the click of a button! This guarantees a delicious cocktail every time. We will do this by coding an Arduino to control pumps/valves that are attached to the ingredients. Our machine is based off of a weighted plate. Once you have selected their drink, the machine will zero the scale and start pouring the beverage. We will ensure that each drink will have the proper proportions by zeroing the scale after each ingredient is added.
Line 28: Line 36:
 
* User ability to choose strength of beverage from three options (non-alcoholic, regular, strong)
 
* User ability to choose strength of beverage from three options (non-alcoholic, regular, strong)
 
* Full automation in dispensing all ingredients of cocktail.
 
* Full automation in dispensing all ingredients of cocktail.
 +
*Use a photosensor to detect empty bottles
  
 
==Challenges==
 
==Challenges==
Line 62: Line 71:
 
Arduino [https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=arduino]~ $19.80
 
Arduino [https://www.amazon.com/s/ref=nb_sb_noss_1?url=search-alias%3Daps&field-keywords=arduino]~ $19.80
  
Weight Sensor [https://www.amazon.com/SENSING-RESISTOR-SQUARE-1oz-22LBS-SPACING/dp/B00B887DBC/ref=sr_1_4?ie=UTF8&qid=1548956663&sr=8-4&keywords=weight+sensor]~$14.99
+
Weight Sensor [https://www.amazon.com/Geekstory-Weight-Electronic-Kitchen-Weighing/dp/B079FQNJJH/ref=sr_1_2_sspa?keywords=weight+sensor&qid=1554139074&s=gateway&sr=8-2-spons&psc=1]~$9.54
  
 
3X Pumps[https://www.amazon.com/Gikfun-Peristaltic-Connector-Aquarium-Analytic/dp/B01IUVHB8E/ref=sr_1_1?ie=UTF8&qid=1548956854&sr=8-1&keywords=pumps+arduino]~$12.69
 
3X Pumps[https://www.amazon.com/Gikfun-Peristaltic-Connector-Aquarium-Analytic/dp/B01IUVHB8E/ref=sr_1_1?ie=UTF8&qid=1548956854&sr=8-1&keywords=pumps+arduino]~$12.69
  
3 X Valves [https://www.bc-robotics.com/shop/plastic-water-solenoid-valve-12v-12-nominal/]~$9.95
+
2 X Drivers [https://www.amazon.com/DROK-Controller-Regulator-Industrial-Optocoupler/dp/B06XGD5SCB/ref=sr_1_1_sspa?keywords=12v+dc+motor+driver&qid=1550255528&s=gateway&sr=8-1-spons&psc=1]~$16.99
  
2mm Silicone Tubes [https://www.amazon.com/uxcell-Silicone-Flexible-Translucent-Transfer/dp/B078RNCY8M/ref=pd_bxgy_147_img_2?_encoding=UTF8&pd_rd_i=B078RNCY8M&pd_rd_r=5baf56a3-2580-11e9-afa8-81715460dc49&pd_rd_w=tfVOQ&pd_rd_wg=8Rg4g&pf_rd_p=3f9889ac-6c45-46e8-b515-3af650557207&pf_rd_r=GJ8NKWAXGFXG1N30M4W4&psc=1&refRID=GJ8NKWAXGFXG1N30M4W4]~$6.28
+
2mm Silicone Tubes [https://www.amazon.com/gp/product/B01MXJHJ6E/ref=ox_sc_act_title_1?smid=A1THAZDOWP300U&psc=1]~$7.79
  
 
Silicone tape [https://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=silicon+tape&rh=i%3Aaps%2Ck%3Asilicon+tape] ~$6.77
 
Silicone tape [https://www.amazon.com/s/ref=nb_sb_noss_2?url=search-alias%3Daps&field-keywords=silicon+tape&rh=i%3Aaps%2Ck%3Asilicon+tape] ~$6.77
Line 75: Line 84:
  
 
Attachment Cables [https://www.bc-robotics.com/shop/premium-malemale-jumper-wires-40-x-6″/]~$6.95
 
Attachment Cables [https://www.bc-robotics.com/shop/premium-malemale-jumper-wires-40-x-6″/]~$6.95
 +
 +
Sunfounder 4 channel 5V DC relay [https://www.amazon.com/JBtek-Channel-Module-Arduino-Raspberry/dp/B00KTEN3TM/ref=sr_1_5?crid=24PFE3OLYI3W4&keywords=sunfounder+relay+module&qid=1554139257&s=gateway&sprefix=sun+founder+re%2Caps%2C143&sr=8-5]~$6.99
  
 
3D Printed Parts
 
3D Printed Parts
Line 94: Line 105:
 
[[Category:Projects]]
 
[[Category:Projects]]
 
[[Category:Spring 2019 Projects]]
 
[[Category:Spring 2019 Projects]]
[[File:"Screen Shot 2019-02-01 at 7.23.58 PM".png | 800px]]
+
[[File:Gantt_Chart_2.PNG|1000px]]
 +
==Design and Solution==
 +
 
 +
<big>'''Enclosure'''</big>
 +
 
 +
[[File:design2.PNG|650px]]<br />
 +
 
 +
This is the basic look that we are going for. You will put your drink into the cubby onto the weight plate and the drink will be made.
 +
 
 +
[[File:BIB Front.JPG|400px]]
 +
 
 +
 
 +
<big>'''Electornics'''</big>
 +
 
 +
'''Relay'''
 +
 
 +
We have implemented a relay to control the motors with the following set up. This will help us control when and how long the motors will run. We decided to implement a relay because then we would be able to use less pins on the Arduino, and also we would only need to use one driver to control all of the motors instead of two drivers. This will also simplify the code for our machine.
 +
 
 +
[[File: Relay_schematic.JPG|600px]]
 +
 
 +
'''Arduino'''
 +
 
 +
We decided to use an Arduino because an Arduino board is best used for simple repetitive tasks. A raspberry pi is more of a full blown computer and is more complex then we need it to be. We chose the arduino Uno because it was proved for us and had the correct amount of analog pins we needed.
 +
 
 +
'''Weight Sensor'''
 +
 
 +
We implemented a standard weight sensor. this is how we controlled the motors. This weight sensor was attached to an HX711 chip. Once attached to the chip[ the chip went to power ground and then two digital pins. This then would provide us a consistent readout of the scale when called.This weight sensor is what the user will put their drink on. The scale will zero once the user has confirmed the drink that they want. Then the scale will constantly readout weights to the Arduino.
 +
 
 +
[[File:Weight sensor.JPG|400px]]
 +
 
 +
''' Motors '''
 +
 
 +
With the motors we are using a two way motor attached to food friendly tubes. This will take the liquids out of the bottles and into the cup that has been placed on the weight sensor.This weight sensor will then give continuous readout to the Arduino. Each time the readout from the scale hit a certain number it will turn on or off the corresponding motors.
 +
 
 +
[[File:Motor Picture.jpeg|400px]]
 +
[[File:Motor video.mp4|800px]]
 +
 
 +
'''Photoresistors and LED Lights'''
 +
 
 +
 
 +
Once these bottles start to run low on ingredients we have implemented a photoresistor to detect the low liquid levels. To see how that works please refer to the tutorial. [[Photoresitor Level Detection]] We implemented it so when you turn on the machine it will take an initial reading of the bottles that are inside of the containers. Then after each drin kis poured it will see if the level has dropped below the photo resistor. If the readout is 80% less than the initially reading of the bottles than the LCD Screen will display CHECK BOTTLES. This will stay on the screen until you check the bottles and click the correct button.
 +
 
 +
[[File:Photo resistor and LED Setup.JPG|400px]]
 +
 
 +
'''Overall Circuitry'''
 +
 
 +
The internal circuitry will look similarly to what is below:
 +
 
 +
[[File:Actual overall circuit.JPG|800px]]
 +
 
 +
Instead of using a bread board we decided to use a perf board. The layout of our perf board is below. This will secure the wires and shrinks the size.
 +
 
 +
[[File:PerfBoard Layout.JPG|800px]]
 +
 
 +
 
 +
'''Software'''
 +
 
 +
[[File:Screen_Shot_2019-02-25_at_12.44.56_PM.png|600px]]
 +
 
 +
 
 +
This is the basic flow of how our machine will work. The user will start by selecting which drink they want. After this it will take you to a menu that will have you pick the strength of your drink. Once you do this the machine will clarify that you have selected to correct choice. Once you agree to that drink then it will send the drink order to the Arduino. Once the Arduino receives the code it will run the premade code for that drink order. This code is based on the weight sensor. Once you confirm your drink selection the weight sensor will zero the scale. It then will run the correct ingredients until they reach a certain weight on the scale. Once it reaches a certain weight, the Arduino will tell the Relay to switch which motor is running. This process repeats until the drink reaches the final weight of 320g. Once this happens all the motors will turn off and the drink will be made.
 +
[[File:IMG_5305.MOV|400px]]
 +
 
 +
==Results and Further Steps==
 +
[[File:Final Video it works.mp4|800px]]
 +
 
 +
This video shows our final project running through making a singular drink.
 +
 
 +
'''<big>Employing and Arduino</big>'''
 +
 
 +
We successfully employed an Arduino to automate the creation of a cocktail of your choice. This involved controlling a weight sensor, motors, relays, photo resistors, LCD Screen and LED lights. We originally had our arduino powered by the relay that was down stepping a 12 volt power supply. This unfortunately did not end up being the case. We ended up separating the Arduino from the relay and adding a 5V power supply. We correctly coding our program to run consistently and effectively.
 +
 
 +
'''<big>Supply Replacement Notification</big>'''
 +
 
 +
We also were successful in implementing a method to tell if the bottle was empty. Instead of a light signaling an empty bottle we had it notify the user on the LCD screen. This stalling the progress of the machine until you dealt with the empty supplies. Here is an explanation of how we created this. [[Photoresitor Level Detection]]
 +
 
 +
'''<big>Options for Drinks</big>'''
 +
 
 +
We successfully made it possible for 9 drinks to be created. This was all done by modifying the proportion of each ingredient per drink selection. we accomplished this by using the weight sensor that would zero the scale each time a cup was placed on it. Therefore the same proportions were delivered each time independent on the type of cup. We also implemented a check method so if you selected the wrong button it was possible for you to go back and change your order before sending it off to make.
 +
 
 +
'''<big>Full automation in dispensing all ingredients of the cocktail</big>'''
 +
 
 +
We did not have to make any adjustments once you confirmed the drink was correct. Unfortunately the tubes we had were rather slow. Therefore it took a long time for the drinks to be poured. In the future we will increase the tube size and potentially upgrade the motors to a stronger version. This would provide a quicker pour and More efficiency.
 +
 
 +
We also had to change our circuit from one power supply to two. This occurred because the relay was providing to much noise that it caused our whole program to crash. Therefore it then took up two plugs instead of the one we originally planned it to.
 +
 
 +
'''<big>Elegant look</big>'''
 +
 
 +
This is one objective we did not quite yet complete. We did successfully create a box made out of wood. Due to the type of wood we chose they ended up not being the same color. Our dimensions also were rather large. In future we could optimize the space in the box more efficiently and make the presentation of the box crisper. The inside of our box ended up being very crowded in some areas, whereas in others it was very spacious. We also did not incorporate the funnel for all the tubes to go in. Our Next step would be to smooth out the edges of our box and stain it. We also would add a patch of blackboard paint or a whiteboard so we could display what drink one drink two and drink three correlated to. We also would 3D print a cover for our LCD screen. This then will prevent the risk of someone spilling liquid directly onto or circuit.
 +
 
 +
==References==
 +
For Drink Codes:
 +
 
 +
https://makezine.com/projects/build-cocktail-drinkbot/
 +
 
 +
For Overall basis:
 +
 
 +
https://www.youtube.com/watch?v=Z7GkGeZrb2Y&t=275s
 +
 
 +
For LCD Display:
 +
 
 +
https://learn.adafruit.com/rgb-lcd-shield/using-the-rgb-lcd-shield
 +
 
 +
For Weight Sensor
 +
 
 +
https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide/all

Latest revision as of 11:46, 2 May 2019

Links

Cocktail_Maker_Log

Trello

Proposal Presentation

GitHub

Photoresitor Level Detection

Final poster for engineering design 2.JPG

Overview

Ever hosted a party and had to play bartender the entire time? Well, we have your solution! We have created an easy to use cocktail maker. This cocktail maker will be able to make at least 2 mix drinks at the click of a button! This guarantees a delicious cocktail every time. We will do this by coding an Arduino to control pumps/valves that are attached to the ingredients. Our machine is based off of a weighted plate. Once you have selected their drink, the machine will zero the scale and start pouring the beverage. We will ensure that each drink will have the proper proportions by zeroing the scale after each ingredient is added.

Team Members

Cj Wilson

Tom Fare

Weronika Pach

Will Parkinson, TA

Jim Feher, Instructor

Objectives

Our objective is to create a machine that will generate at least one mixed drink, with correct ratios, at the push of a button.

Using a YouTube video detailing the construction of a similar project, we:

  • Modify the design of this crude cocktail maker to allow for more features and a more elegant look.
  • Employ an Arduino program to automate the composition of a cocktail, as well as a force sensor to measure changes in weight as the glass is filled.

Modifications to the original design include:

  • A light indicating a need for supply replacement
  • User ability to choose strength of beverage from three options (non-alcoholic, regular, strong)
  • Full automation in dispensing all ingredients of cocktail.
  • Use a photosensor to detect empty bottles

Challenges

  • 3D printing

Learn Solidworks.

Design specific dimensions

Build models using Solidworks and 3D print them.

  • Arduino

Learn Arduino programming language.

Implementing the Arduino code with distance sensor and valve/pump.

Debugging code and adjusting parameters to control the measurements.

  • Hardware

Design a circuit that connects the pump and valves, push button and weight sensor to the Arduino.

Assuring the pumps dispense the correct amount of liquid.

  • Safety

Electricity hazard when circuit interacts with liquids

Leakage from the tubes.

Use of food-safe materials.

Age restriction on alcohol pertaining to demonstration and audience.

Budget

Arduino [1]~ $19.80

Weight Sensor [2]~$9.54

3X Pumps[3]~$12.69

2 X Drivers [4]~$16.99

2mm Silicone Tubes [5]~$7.79

Silicone tape [6] ~$6.77

5 X Diodes [7]~$0.15

Attachment Cables [8]~$6.95

Sunfounder 4 channel 5V DC relay [9]~$6.99

3D Printed Parts

RGB LCD Shield [10]~$7.99

Power Supply [11]~$6.49

Hinges [12]~ $6.99

Wood~$20.00

Silicone Sealent [13] ~ $5

Ingredients~$20

Gantt Chart

https://docs.google.com/spreadsheets/d/1q1E3sI778M7ZXhlYbw2UPR73MOPXUoJnK3tvqi86UJ0/edit#gid=0 Gantt Chart 2.PNG

Design and Solution

Enclosure

Design2.PNG

This is the basic look that we are going for. You will put your drink into the cubby onto the weight plate and the drink will be made.

BIB Front.JPG


Electornics

Relay

We have implemented a relay to control the motors with the following set up. This will help us control when and how long the motors will run. We decided to implement a relay because then we would be able to use less pins on the Arduino, and also we would only need to use one driver to control all of the motors instead of two drivers. This will also simplify the code for our machine.

Relay schematic.JPG

Arduino

We decided to use an Arduino because an Arduino board is best used for simple repetitive tasks. A raspberry pi is more of a full blown computer and is more complex then we need it to be. We chose the arduino Uno because it was proved for us and had the correct amount of analog pins we needed.

Weight Sensor

We implemented a standard weight sensor. this is how we controlled the motors. This weight sensor was attached to an HX711 chip. Once attached to the chip[ the chip went to power ground and then two digital pins. This then would provide us a consistent readout of the scale when called.This weight sensor is what the user will put their drink on. The scale will zero once the user has confirmed the drink that they want. Then the scale will constantly readout weights to the Arduino.

Weight sensor.JPG

Motors

With the motors we are using a two way motor attached to food friendly tubes. This will take the liquids out of the bottles and into the cup that has been placed on the weight sensor.This weight sensor will then give continuous readout to the Arduino. Each time the readout from the scale hit a certain number it will turn on or off the corresponding motors.

Motor Picture.jpeg

Photoresistors and LED Lights


Once these bottles start to run low on ingredients we have implemented a photoresistor to detect the low liquid levels. To see how that works please refer to the tutorial. Photoresitor Level Detection We implemented it so when you turn on the machine it will take an initial reading of the bottles that are inside of the containers. Then after each drin kis poured it will see if the level has dropped below the photo resistor. If the readout is 80% less than the initially reading of the bottles than the LCD Screen will display CHECK BOTTLES. This will stay on the screen until you check the bottles and click the correct button.

Photo resistor and LED Setup.JPG

Overall Circuitry

The internal circuitry will look similarly to what is below:

Actual overall circuit.JPG

Instead of using a bread board we decided to use a perf board. The layout of our perf board is below. This will secure the wires and shrinks the size.

PerfBoard Layout.JPG


Software

Screen Shot 2019-02-25 at 12.44.56 PM.png


This is the basic flow of how our machine will work. The user will start by selecting which drink they want. After this it will take you to a menu that will have you pick the strength of your drink. Once you do this the machine will clarify that you have selected to correct choice. Once you agree to that drink then it will send the drink order to the Arduino. Once the Arduino receives the code it will run the premade code for that drink order. This code is based on the weight sensor. Once you confirm your drink selection the weight sensor will zero the scale. It then will run the correct ingredients until they reach a certain weight on the scale. Once it reaches a certain weight, the Arduino will tell the Relay to switch which motor is running. This process repeats until the drink reaches the final weight of 320g. Once this happens all the motors will turn off and the drink will be made.

Results and Further Steps

This video shows our final project running through making a singular drink.

Employing and Arduino

We successfully employed an Arduino to automate the creation of a cocktail of your choice. This involved controlling a weight sensor, motors, relays, photo resistors, LCD Screen and LED lights. We originally had our arduino powered by the relay that was down stepping a 12 volt power supply. This unfortunately did not end up being the case. We ended up separating the Arduino from the relay and adding a 5V power supply. We correctly coding our program to run consistently and effectively.

Supply Replacement Notification

We also were successful in implementing a method to tell if the bottle was empty. Instead of a light signaling an empty bottle we had it notify the user on the LCD screen. This stalling the progress of the machine until you dealt with the empty supplies. Here is an explanation of how we created this. Photoresitor Level Detection

Options for Drinks

We successfully made it possible for 9 drinks to be created. This was all done by modifying the proportion of each ingredient per drink selection. we accomplished this by using the weight sensor that would zero the scale each time a cup was placed on it. Therefore the same proportions were delivered each time independent on the type of cup. We also implemented a check method so if you selected the wrong button it was possible for you to go back and change your order before sending it off to make.

Full automation in dispensing all ingredients of the cocktail

We did not have to make any adjustments once you confirmed the drink was correct. Unfortunately the tubes we had were rather slow. Therefore it took a long time for the drinks to be poured. In the future we will increase the tube size and potentially upgrade the motors to a stronger version. This would provide a quicker pour and More efficiency.

We also had to change our circuit from one power supply to two. This occurred because the relay was providing to much noise that it caused our whole program to crash. Therefore it then took up two plugs instead of the one we originally planned it to.

Elegant look

This is one objective we did not quite yet complete. We did successfully create a box made out of wood. Due to the type of wood we chose they ended up not being the same color. Our dimensions also were rather large. In future we could optimize the space in the box more efficiently and make the presentation of the box crisper. The inside of our box ended up being very crowded in some areas, whereas in others it was very spacious. We also did not incorporate the funnel for all the tubes to go in. Our Next step would be to smooth out the edges of our box and stain it. We also would add a patch of blackboard paint or a whiteboard so we could display what drink one drink two and drink three correlated to. We also would 3D print a cover for our LCD screen. This then will prevent the risk of someone spilling liquid directly onto or circuit.

References

For Drink Codes:

https://makezine.com/projects/build-cocktail-drinkbot/

For Overall basis:

https://www.youtube.com/watch?v=Z7GkGeZrb2Y&t=275s

For LCD Display:

https://learn.adafruit.com/rgb-lcd-shield/using-the-rgb-lcd-shield

For Weight Sensor

https://learn.sparkfun.com/tutorials/load-cell-amplifier-hx711-breakout-hookup-guide/all