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.
Will Parkinson, TA
Jim Feher, Instructor
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
- 3D printing
Design specific dimensions
Build models using Solidworks and 3D print them.
Learn Arduino programming language.
Implementing the Arduino code with distance sensor and valve/pump.
Debugging code and adjusting parameters to control the measurements.
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.
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.
Arduino ~ $19.80
Weight Sensor ~$9.54
2 X Drivers ~$16.99
2mm Silicone Tubes ~$7.79
Silicone tape  ~$6.77
5 X Diodes ~$0.15
Attachment Cables ~$6.95
Sunfounder 4 channel 5V DC relay ~$6.99
3D Printed Parts
RGB LCD Shield ~$7.99
Power Supply ~$6.49
Hinges ~ $6.99
Silicone Sealent  ~ $5
Design and Solution
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.
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.
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.
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.
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.
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.
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.
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.
For Drink Codes:
For Overall basis:
For LCD Display:
For Weight Sensor