Difference between revisions of "Cocktail Maker"
(→Budget) |
m (Protected "Cocktail Maker" ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))) |
||
(34 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
[https://github.com/ESE205/cocktail-maker GitHub] | [https://github.com/ESE205/cocktail-maker GitHub] | ||
+ | |||
+ | [[Photoresitor Level Detection]] | ||
+ | |||
+ | [[File:Final poster for engineering design 2.JPG|800px]] | ||
==Overview== | ==Overview== | ||
Line 67: | 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/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]~$ | + | 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 | ||
Line 80: | 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 100: | Line 106: | ||
[[Category:Spring 2019 Projects]] | [[Category:Spring 2019 Projects]] | ||
[[File:Gantt_Chart_2.PNG|1000px]] | [[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== | ==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
Contents
Links
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
Design and Solution
Enclosure
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.
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.
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.
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.
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.
Overall Circuitry
The internal circuitry will look similarly to what is below:
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.
Software
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