Project tutorial

Cheap portable Cocktail maker Barbot with App! © GPL3+

Grate to have and envoy with friends. Made compact so you take it with you on the go.

  • 17,768 views
  • 44 comments
  • 54 respects

Components and supplies

Necessary tools and machines

Apps and online services

About this project

I was inspired to make a barbot after seeing some similar projects on Youtube. The skill level and the amount of parts of most barbots made me think I could simplify this by using pumps. Other design using pumps are pumping very slowly (over a minute to mix a small drink) and the pumps I use are great for the application.

Here is a video to show my progress on the project:

Making this project I also kept in mind the need of solid code and good comments so you can change the project to mix the drinks you want.

So I first started out by making a frame out of some wood panels that I had laying around. I cut 4 pieces of 16, 5cm x 33cm (6, 5 inch x 13 inch) and connected two of them with screws together like you see in the picture below:

Then I cut a another piece of wood to the dimension of the inner side of the square when you would connect all plates together we cut previously. And drilled some holes in it with the 28mm drillbit. Make sure the centre of the holes are 5cm (2 inches) spaced out so you have enough room for the pumps there.

I screwed together the plates like you can see in the picture. Make sure you use a small drill to predrill the holes for the screws. This will help stop the wood from splitting.

Then it was time for connecting the Arduino Uno with the Bluetooth module and the relay board. You don't have to connect the pumps. Use the wire schematic to do so.

We wan't to check if the circuit of the relay board, Bluetooth module and the Arduino Uno work. So after this download the code to the Arduino Uno.

So now I should recommend testing the circuit. First you should download the app and connect the Bluetooth module. Make sure the Bluetooth module is powered on and is blinking.

Then follow this video guide:

Pleas note that I made the app so that you have to press for a longer time on a button to make sure accidents stay at a minimum. So push the buttons for 2-3 seconds.

So when pressing a cocktail you should hear the relays turn on and off. You can also check the lamps on the relay board. A good way to test all pumps is to run the cleaning program. Each relay should be activated for 5 seconds each one by one.

You should solder on the capacitor of 1qF. You have to do this because otherwise the radio frequency noise of brushes of the DC motor will cause the Bluetooth module to disconnect and other stuff you do not want.

After this you can connect the power supply and the pump. Put the pumps in the holes we drilled earlier. To do so you have to remove the extra round shielding component. This snaps of easy. Keep one aside because we gone use it later.

No you can connect the power supply, relay board and pumps together using the wiring diagram. After this you can check with the app if the pumps are working. If you have problems with the Bluetooth communication you should check if any of the capacitors is came loose.

Then you can start setting things up to make real drinks. First I suggest to clean all the pumps. You should get a large pitcher or a a bucket with clean water and put all the suction hoses in the bucket. On the pressure side of the hoses (where later the cocktail glasses go) you should also put an empty pitcher or bucket. Now you can run the cleaning program and check if all pumps work.

After this you can set things up to make your first cocktails. You should put the hoses in the correct bottle. If you wired everything according to the wiring diagram Pump 1 (connected to relay 1 and pin2) is vodka. Pump 2 is cranberry juice and so on...

//defining the pins used for each drink, you can changes this depending how you connect the pumps and the drinks.
int Vodka = 2;
int Cointreau = 3;
int CranberryJuice = 4;
int Sprite = 5;
int LemonJuice = 6;
int SugarWater = 7;
int BlueCur = 8;
int Gin = 9;

If you changed something you can correct the pin numbers in the code.

There is a button named "Set-up all" and this button will activate all the pumps for a brief second to fill up the hoses and the pumps. For the first time I should suggest to set each pump up individual so you are sure it is connected to the wright bottle.

Start with "Set-up vodka" and work you way true all of the bottles so you know it is okay.

If this is all okay you can start by making your first cocktail. I programmed it for large glasses so make sure you use a large glass ;-).

If you find the proportions of the drinks not to your liking then you can change them in the code:

// Cosmo
if (state == 'c') {
 Serial.println("Cosmo in the making");
 Mix(2500,1500,3800,0,1200,1200,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
}

This is the code for a Cosmo. The values in the brackets are the times each pump works in milliseconds. For example if you want to change the quantity of sugar water in your drink from 1,2 seconds to 2 seconds you can change Mix(2500,1500,3800,0,1200,1200,0,0) to Mix(2500,1500,3800,0,1200,2000,0,0)

You can do this with all the values and so fine tune it to your taste.

If you have any questions please leave a comment.

UPDATE => I made an other one with a slightly different Lay-out:

Support my work by buying me a coffee.

Code

Arduino cocktailmaker with BluetoothC/C++
To connect over bluetooth and let the cocktailmaker make you drinks.
// created by Seafoxc
//#include <SoftwareSerial.h>
//SoftwareSerial EEBlue(0, 1); // RX | TX

//defining the pins used for each drink, you can changes this depending how you connect the pumps and the drinks.

int Vodka = 2;
int Cointreau = 3;
int CranberryJuice = 4;
int Sprite = 5;
int LemonJuice = 6;
int SugarWater = 7;
int BlueCur = 8;
int Gin = 9;



int state = 0;
// how much time there is between switching to the next pump.
int TimeBetweenPours = 500;


void setup()
{
 
  Serial.begin(9600); 
  Serial.println("The bluetooth gates are open.\n Connect to HC-05 from any other bluetooth device with 1234 as pairing key!");

  // Set pin 2-9 to output pins to drive the relay board
  pinMode(2, OUTPUT); 
  pinMode(3, OUTPUT); 
  pinMode(4, OUTPUT); 
  pinMode(5, OUTPUT); 
  pinMode(6, OUTPUT); 
  pinMode(7, OUTPUT); 
  pinMode(8, OUTPUT); 
  pinMode(9, OUTPUT); 


// My relayboard is a "low true" board. So setting the output to low energize the relay's. You don't want that yhey all switch on when powering on the cocktailmaker...

  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,HIGH);
  digitalWrite(9,HIGH);

  
}
 
void loop()

{
if(Serial.available() > 0){ // Checks whether data is comming from the serial port
    state = Serial.read(); // Reads the data from the serial port
    Serial.println(state);
}

// Cocktails:


//Vodka sprite
if (state == 'a') {
  Serial.println("Vodka Sprite in the making");
  Mix(3000,0,0,0,5000,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin 
 }

// Blue Lagoon
if (state == 'b') {
  Serial.println("Blue Lagoon in the making");
  Mix(2000,0,0,5000,1800,1000,1800,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin  
 }
  

// Cosmo
if (state == 'c') {
  Serial.println("Cosmo in the making");
  Mix(2500,1500,3800,0,1200,1200,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Lemon drop
if (state == 'd') {
  Serial.println("Lemon drop in the making");
  Mix(1500,1500,0,0,1800,1200,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Blue Moon
if (state == 'e') {
  Serial.println("Blue Moon in the making");
  Mix(2000,0,3000,0,1800,1200,1200,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Blue Gin Moon
if (state == 'f') {
  Serial.println("Blue Gin Moon in the making");
  Mix(0,0,3000,0,1800,1200,1200,2000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Double Strike
if (state == 'i') {
  Serial.println("Double Strike in the making");
  Mix(2000,0,3000,0,1800,0,1200,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Tom Collins
if (state == 'h') {
  Serial.println("Tom Collins in the making");
  Mix(0,0,0,4000,1800,1800,0,2200); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Flying Dutchman
if (state == 'g') {
  Serial.println("Flying Dutchman in the making");
  Mix(0,2000,0,0,1200,1000,0,2000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// London Cosmo
if (state == 'j') {
  Serial.println("London Cosmo in the making");
  Mix(0,2000,5000,1800,0,0,0,2000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }
    

// Vodka Cranberry 
if (state == 'k') {
  Serial.println("Vodka Cranberry in the making");
  Mix(2000,0,5000,0,0,1200,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Cranberry Gin   
if (state == 'l') {
  Serial.println("Cranberry Gin in the making");
  Mix(0,0,5000,0,2000,0,0,2200); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Testin and maintenance options

// Set-up Vodka
if (state == 'm') {
  Serial.println("Set-up Vodka");
  Mix(1100,0,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up Tripple Sec
if (state == 'n') {
  Serial.println("Set-up Tripple Sec");
  Mix(0,1100,0,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up Cranberry juice
if (state == 'o') {
  Serial.println("Set-up Cranberry juice");
  Mix(0,0,1000,0,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up Sprite
if (state == 'p') {
  Serial.println("Set-up Sprite");
  Mix(0,0,0,1000,0,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up Lime juice
if (state == 'q') {
  Serial.println("Set-up Lime juice");
  Mix(0,0,0,0,1100,0,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up Sugar water
if (state == 'v') {
  Serial.println("Set-up Sugar water");
  Mix(0,0,0,0,0,1200,0,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up Blue curacao
if (state == 'r') {
  Serial.println("Set-up Blue curacao");
  Mix(0,0,0,0,0,0,800,0); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up Gin
if (state == 's') {
  Serial.println("Set-up Gin");
  Mix(0,0,0,0,0,0,0,1000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Cleaning
if (state == 't') {
  Serial.println("Set-up Gin");
  Mix(4000,4000,4000,4000,4000,4000,4000,4000); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }

// Set-up all (intial first time after cleaning)
if (state == 'u') {
  Serial.println("Set-up All");
  Mix(800,800,800,800,1000,1600,800,800); // Vodka, Triple Sec, Cranberry juice, Sprite, Lime juice, Sugar water, Blue Curacao, Gin
 }
    
}

void Mix(int DelayTimeVodka, int DelayTimeCointreau, int DelayTimeCranberryJuice, int DelayTimeSprite, int DelayTimeLemonJuice, int DelayTimeSugarWater, int DelayTimeBlueCur, int DelayTimeGin ) {
  
  state = 0;
  delay(800);
  digitalWrite(Vodka, LOW);   
  delay(DelayTimeVodka);            
  digitalWrite(Vodka, HIGH); 
  delay(TimeBetweenPours);    

  digitalWrite(Cointreau, LOW);   
  delay(DelayTimeCointreau);            
  digitalWrite(Cointreau, HIGH); 
  delay(TimeBetweenPours); 

  digitalWrite(CranberryJuice, LOW);   
  delay(DelayTimeCranberryJuice);            
  digitalWrite(CranberryJuice, HIGH); 
  delay(TimeBetweenPours);

  digitalWrite(Sprite, LOW);   
  delay(DelayTimeSprite);            
  digitalWrite(Sprite, HIGH); 
  delay(TimeBetweenPours);
  
  digitalWrite(LemonJuice, LOW);   
  delay(DelayTimeLemonJuice);            
  digitalWrite(LemonJuice, HIGH); 
  delay(TimeBetweenPours); 

  digitalWrite(SugarWater, LOW);   
  delay(DelayTimeSugarWater);            
  digitalWrite(SugarWater, HIGH); 
  delay(TimeBetweenPours); 

  digitalWrite(BlueCur, LOW);   
  delay(DelayTimeBlueCur);            
  digitalWrite(BlueCur, HIGH); 
  delay(TimeBetweenPours);

  digitalWrite(Gin, LOW);   
  delay(DelayTimeGin);            
  digitalWrite(Gin, HIGH); 
  delay(TimeBetweenPours); 


  Serial.println("Drink is done!"); 
  state = 0;
}
App source file (not needed for build)YAML
This is an AIA file that you can upload in MIT app inventor. Please note that I'm new to app inventor so maybe some things are not that well written but it work :-).
No preview (download only).

Schematics

Schematic Cocktailmaker 8 pumps
Use this to solder/connect the wires
Cocktailmakercircuit jbljcewz3q
App made wit MIT app inventor 2
You have to install this on your phone to connect the cocktailmaker and send commands to make drinks.
cocktailmaker_JLYQqbd2dT.apk

Comments

Similar projects you might like

Infrared Remote in a USB Cable

Project tutorial by goranv

  • 2,961 views
  • 0 comments
  • 5 respects

Home Automation with Arduino Uno and SmartEdge Agile

Project tutorial by AYUSHMAN SAHA

  • 3,429 views
  • 0 comments
  • 4 respects

Android App-Based Home Automation System Using IOT

Project tutorial by Team Autoshack

  • 77,631 views
  • 23 comments
  • 179 respects

IoT Using ESP8266-01 and Arduino

Project tutorial by Ahmed Ibrahim Ahmed

  • 60,991 views
  • 25 comments
  • 70 respects

RFID Based Smart Attendance System

Project showcase by team_chkr

  • 26,846 views
  • 3 comments
  • 20 respects

Arduino-ESP WiFi Integration

Project in progress by Turai Botond

  • 18,628 views
  • 11 comments
  • 61 respects
Add projectSign up / Login