Introduction: BotTender

BotTender, a bartender assistant that pours the perfect shot!

BotTender is an autonomous robot that is designed with the aim of automatising bars. It is placed on top of the bar and detects the shot glasses in front of it. Once the glasses are detected, it approaches to the glass and asks for the customers to place their glasses on the robot. Then the perfect shot is waiting to be taken! When pouring is done, BotTender continues navigating along the bar until it detects the next customer with a glass.

The project conducted as part of the Computational Design and Digital Fabrication seminar in the ITECH masters program.

Step 1: List of Parts


1. Navigation:

2. Measuring Weight:

3. Displaying:

4. Pouring:

5. Other:

  • Arduino UNO R3 Controller Board

  • Mini Breadboard

  • Battery Pack

  • Jumper Wires (M/M, F/F, F/M)

  • Soldering Iron


6. Off-the-shelf:

    • (2) Wheels + Universal Wheel
    • Glass Jar (8cm diameter)
    • Shot Glass (3.5cm diameter)
    • 9mm Water Tube
    • (30) M3x16 bolts
    • (15) M3x16 nuts
    • (4) M3x50 bolts
    • (5) M3x5 bolts
    • (2) M5x16 bolts

    7. Custom parts:

    • Laser cut on Plexiglass 3.0mm (25cm x 50cm): robot chassis top and bottom platforms, Arduino and breadboard platform, LDC holder, ultrasonic sensor holder, scale top and bottom platforms, Jar cap.
    • 3D printed parts: Power bank holder



    Step 2: Logic and Setup

    1. Navigation:

    Navigation of the BotTender is controlled by the data taken from the ultrasonic sensor that is placed in front of the robot. As soon as the robot is plugged into the power source, the robot starts reading the distance to the shot glass and starts approaching towards it. When it reaches to a certain distance, it stops and waits for the customer to put the glass on the load cell plate.

    The communication between the DC motors and the Arduino is achieved by using L293D Motor Driver IC. This module helps us to control the speed and the rotation direction of two DC motors. While the speed can be controlled using the PWM (Pulse Width Modulation) technique, the direction is controlled by using an H-Bridge.

    If the frequency of the pulses increase, the voltage applied to the motors also increase, resulting with the motors rotating the wheels faster.

    More detailed information on using the H Bridge to control DC motors can be found here.

    2. Measuring weight:

    Logic and circuit: Use a Straight Bar Type Load Cell and an HX711ADC converter board to amplify the signal received form the weight sensor. Connect these to the Arduino and breadboard as indicated in the circuit diagram.

    The HX711 is connected to:

    • GND: Breadboard (-)
    • DATA: pin 6 CLOCK: pin 2
    • VCC: Breadboard (+)
    • E+ : Connected to RED of the Load Cell
    • E- : Connected to BLUE
    • A- : Connected to WHITE
    • A+ : Connected to BLACK
    • B- : no connections
    • B+ : no connections

    The amplifier enables the Arduino to detect the changes in resistance from the Load cell. When pressure is applied, the electrical resistance will change in response to the applied pressure.

    Setup: In our case, we are using a micro load cell (5KG). The load cell has 2 holes on the top and bottom and an arrow indicating the direction of deflection. With the arrow pointing down, attach the bottom of the scale to the robot’s top platform. Attach the opposite hole of the top of the load cell to the top piece of the scale.

    Once connected to the Arduino, download the library for the HX711 amplifier at the bottom of this page and calibrate the load cell using the Calibration sketch provided below.

    Download the HX711 library:

    Calibration sketch:

    3. Displaying:

    Logic and circuit: Connect the LCD Screen (4x20) to the I2C interface. If separated, soldering needs to be done. The I2C interphase consists of two signals: SCL and SDA. SCL is the clock signal, and SDA is the data signal. The I2C is connected to:

    • GND: Breadboard (-)
    • VCC: Breadboard (+)
    • SDA: pin A4
    • SCL: pin A5

    Download the IC2 library:

    4. Pouring:

    You’ll need a transistor, a 1K resistor and a Diode to connect the water pump to the Arduino. (Refer to the circuit diagram below). The water pump is activated when the load cell reads the weight of an empty glass. Once the glass is full, the load cell reads the weight and turns off the water pump.

    Step 3: Circuit Diagram

    Step 4: Code

    Step 5: Design

    Design Intent

    The main design intent was to use a transparent material and enhance the presence of electronics. This not only helps us with determining the problems in the circuit quicker, but also eases the disassembly in case repair is needed. Since we are working with alcohol, it was crucial for our design to keep the electronics and alcohol as separate as possible in a compact manner. In order to achieve this, we integrated off the shelf products to our customized design. As a result, we came up with a multi-layered system that keeps the electronics at the bottom layer and elevates the shot serving area to the top layer.

    Custom parts: Laser cut

    1. Body

    BotTender consists of two main layers stacked upon each other with just enough distance to allow wires to be plugged into the arduino and breadboard. While the bottom layer is mainly used for attaching the motors, rear wheel, the electronics platform and the battery holder to the body, as well as serving as a base for the bottle, the top layer accommodates a hole to stabilize the bottle and sufficient space for load cell and its plates.

    2. Load Cell Plates

    The load cell plates are designed taking into account a kitchen scale's working principle. Load cell is attached to a top and a bottom layer from it's bolt holes. Over the top layer, another layer is placed in order to indicate the precise slot to put the shot glass and keep it in place.

    3. LCD and Ultrasonic Sensor Holder

    LCD support is designed to keep the screen 45 degrees rotated from the ground plane, while the Ultrasonic sensor holder keeps the sensor perpendicular and as close to the ground as possible for detecting the shot glass easily.

    4. Bottle Cap

    We designed a bottle cap that would keep the drink in a closed environment but still allow thetube and water pump cables to come out of the bottle. The cap has 2 layers: Top layer to keep the tube in place and the bottom layer to lock the cap onto the bottle and provide the water pump cables access to arduino. These two layers are then attached to each other by using the corresponding small holes on the sides to insert bolts.

    Custom Parts: 3D printed

    5. Power Bank Holder
    For our BotTender we decided to use an external power source: a power bank. Therefore we needed a customized battery holder for the dimensions of the power bank we chose. After designing the piece in Rhinoceros, we 3D printed it using black PLA. The bolt holes were then opened using a drill.

    Step 6: Fabrication and Assembly

    The majority of the custom parts in our design are achieved by laser cutting (1) 3mm plexiglass sheet (25cmx50cm) . Only the power bank holders were 3D printed, but those could replaced by laser cutting pieces if desired.

    A couple of things need to be soldered. The 16 pins of the I2C interface to the LCD screen, the water pump ground and power cables to male jumper wires, the HX711 amplifier to the load cell and the gear motors to jumper wires.

    Once the pieces have been laser cut, the electronics have been soldered, and the circuit has been assembled on the Arduino and breadboard, start assembling the robot as follows:

    Step-by-step Assembly:

    1. Take the bottom platform and attach the back wheel using bolts.
    2. Attach the gear motors to the wheels, and then to the bottom of the platform using the attachments provided.
    3. Using the 3D printed battery holders, attach the power bank to bottom of the platform.
    4. Mount the small base plate to the bottom platform with 4 bolts.
    5. Mount the Arduino and breadboard. Make sure the Arduino is on the right hand side to allow an easier connection to the power bank below. At this point, your circuit needs to be finalized in place.
    6. Assemble the load cell with the top and bottom base plates. The arrow indicating the weight capacity needs to be pointing down.
    7. Mount the load cell setup to the top platform and attach the platform to the bottom piece of the body of the robot.
    8. Mount the ultrasonic sensor and LCD with the holders. These could be glued if necessary.
    9. Attach the water tube to the water pump and introduce the pump inside the glass jar. Make sure the cables go in between the holes provided.
    10. Place the glass jar in place as well as the shot glass.
    11. Pour alcohol in the glass jar and you are ready to use your BotTender!


    Arduino Contest 2019

    Participated in the
    Arduino Contest 2019