top of page

Robotic Bartender

Robotic Bartender: Photo Gallery

Robotic Bartender

Duration: 5 weeks (200+ hours)

Approximate cost: $210

Construction: Polyamide, Brass, Stainless fasteners and brackets, Silicone tubing. Machined and fabricated using only a lathe, drill-press and power tools.

Operation: Arduino Mega board with HC-05 Bluetooth unit, NEMA 17 stepper motors, 0.4L/min peristaltic pump, L298N drivers, physical and optical switches. 12V 36W DC outlet power supply. User interface with BT serial connection, custom app approaching completion (using Thunkable for IOS and MIT App Inventor 2 for Android)

Key themes and skills developed:

  • DFMA and packaging-oriented design approach

  • Developing and troubleshooting robust mechanisms

  • Expanding understanding of Arduino-C programming and ancillary hardware incorporation

  • Concurrent design of systems/mechanisms with interdependencies

  • Efficient use of, and design around standardized/constrained materials


This project was inspired by suggestion from a friend in fraternity (no surprises there) after first floating the idea of making an espresso machine for my dormitory apartment. The operation of the device can be described like so: After a BT connection from a PC or smartphone (with a serial communications app) is established with the BT unit, beverage compositions and volumes are specified and sent to the Arduino. These request strings queue up and are executed once the “I’m finished ordering” command is received. The cup separation mechanism pushes a SOLO cup off the bottom of a stack, it lands just in front of a pushing mechanism that advances the cup along the bottom ‘deck’ to a ledge. The cup is then at the front of the machine, where it may easily be picked up. An optical sensor determines whether a cup is positioned properly on the ledge under the tap, after which pouring commences. A stepper motor that controls a selection valve opens one of the 8 normally closed inputs (where silicone tubes are attached, and terminate inside fluid containers stored nearby), then the peristaltic pump is run for a period proportional to the volume specified in the order, for that fluid. The fluids specified in the order are sequentially pumped this way until the order is complete. The optical sensor prevents the pump from running if the cup is prematurely removed, or never arrives, sending the person who ordered the drink an error message (via BT serial) and flashing an LED. Once an order is complete, the valve is sequenced to the water input and it flushes the common side of the valve with 14ml of water (which ends up in the finished drink), so that the next order is not contaminated.


This project was challenging in myriad ways. The biggest constraints were the product of limited manufacturing capabilities, materials availability and low budget. Developing reliable mechanisms, dependable sensing techniques and robust code to run the device took about 70 hours, the rest was sunk into manufacturing.

The selection valve, with 101 individual parts, was the result of considered analysis of manufacturing procedures and experimentation. What made the design such a challenge was the fact that my only machine tool is a lathe (without many extra features, either), I had a single stepper motor assigned to valve operation, packaging, and my only possessing a small amount of 100mm Nylon round bar from which to construct it. These constraints informed the geometries, manufacturing procedures and tolerances required for good functionality. Much simpler designs were initially created, but they had necessary tolerances and geometries beyond my manufacturing capabilities. The selection valve operates like so: Stainless tangs clamp shut silicone tubes (making them normally-closed). Each tube is opened by an eccentrically located bearing on a central shaft rolling against a ‘shoe’ connected to the end of each tang, pushing the tang outwards and allowing the tube that was clamped shut to become an open passage. When the pump creates a negative pressure on the common output, fluid flows through whatever tube is currently unclamped. The shaft with the bearing on is rotated via a belt and pulley connected to a stepper motor. The valve, which took about 70 hours to model and manufacture, works well. The only modification made after completion was the addition of a small ramp and rolling switch. This was necessary because very slight deviation in the diameters of the pulleys on the belt meant that the ratio was minutely different, causing the bearing to become out of sync with the shoes after a few tens of rotations. So, before advancing to the next valve position, it spins until the limit switch is triggered, which recalibrates its home position. This resolved the syncing issue without the need for complicated positional encoding. The valve was designed to have a small volume on the common side, so the amount of flushing water needed is minimal, also the water input was placed at the furthest point in the valve from the output, so that the flush passes through the entire common side volume.

Another significant design challenge was the cup dispensing mechanism. SOLO cups are light and surprisingly bouncy, which causes a great deal of instability and variation when they are only handled at a small number of points (as opposed to being gripped all around). I had very little space to pack in this mechanism, because of the discrete lengths that brass bar (used to stand decks off from each other) could be obtained in. This limited the distance between decks that the mechanism could reside in. I developed multiple designs and opted for the one most promising in testing. The mechanism uses stiff rubber tubes to hold up a stack of cups, with the bottom cup’s rim in contact with the tubes. A steel rod is advanced and retracted into the gap between the rims of the bottom two cups, causing them to separate and then for the bottom cup to ‘pop’ past the tubes and land on the bottom deck. The rod is moved by a stepper motor with an eccentric cam on it. Determining stroke length, geometries and tuning involved a blend of imagination, intuition and experimental testing. I had many issues with cup stack weight altering functionality, but I was able to resolve these issues by placing a spring in-between the rubber tubes and constraining the direction they may move in to be only in the plane of the deck. The resulting design is elegant and reliable, with adjustability built in. I did things like making use of already present bolt holes and brackets, also utilizing the fact that the deck had to be cut in half in order for the hole for the cup stack to be bored to inform geometries. I am especially proud of this neat little mechanism.

Admittedly, there wasn’t much original design work involved in developing the device ‘firmware’. Arduino is open source and so there is a wealth of useful example material online, which I made good use of. Nonetheless, it was a challenge to adapt others’ code for my purposes. I had never used BT connections before, or even motor drivers, nor had I needed to do things like string manipulation in C before. I learned a lot, not only C skills, but also new methods for browsing and filtering for helpful material online. The app is still in development, it has been a steep learning curve!

I could go on for quite some time about the minutiae of this project, congratulations if you made it this far! I hope that I have still instilled some notion of just how finnicky and complex these projects are – I don’t just buy and assemble things – I cycle through an engineering process that cultures my sense of creativity, ability to navigate constraints and to troubleshoot for quality, robust designs.

Robotic Bartender: Projects
bottom of page