BarBot 

 Status: In Progress, On Hiatus 

Like many of my projects, it started with a stupid joke…

I thought it’d be funny if I, as a college student, combined my passion for robotics with my budding appreciation for exploring new cocktails with my friends. And honestly, what better way can you do that than by building a robotic bartender?

Designed a Custom PCB

When a favorite professor of mine challenged our Microcontroller Programming Projects class to design custom circuit boards, many of my peers went for simple LED-focused projects. Driven by a desire to move my personal project forward, I chose to take a stab at the BarBot motherboard as my first-ever custom PCB.

It consisted of:

  • 1 Raspberry Pi Pico (the central microprocessor; the brain)

  • 4 TB6612FNG Motor Drivers (to control 8 pumps)

  • 9 Pairs of Screw Terminals (1 for each pump motor and 1 for the power in)

  • 1 LD33CV Voltage Regulator (to step down the voltage from the power supply’s 12V to the required 3.3V logic power)

  • JST Connectors ( to attach an encoder for input and communicate with a display over I²C for the GUI)

  • Capacitors, Resistors, Diodes (as needed)

PCB Schematic (Front)

Populating the Board

When I received my PCB order from JLC, the boards had no components installed yet. I ordered the electronics components separately, then soldered them in place by hand. This was another bold choice I made for the project, and it proved to be the most difficult solder job I’ve done to date. Much of it had to be done under a microscope, and some of the gaps between pads were only ~0.5mm. Assembling one board took me about 4 hours.

500mL rectangular glass ingredient reservoirs

Other Components

AC power switch

Additional parts employed in this design include:

  • INTLLAB 12V peristaltic pumps for dispensing

  • AC switch for cutting wall power as needed

  • 500mL rectangular glass liquid reservoirs

  • Sealed 12V 5A DC power supply

Touchscreen

After soldering the board, I was given an expensive touchscreen. It didn’t strictly work with my custom board, as touchscreens combine user input and output into one peripheral rather than the separate rotary encoder and LCD I’d planned for. However, it had an onboard microprocessor and would lend itself to much more advanced UX design. It also seemed like a great opportunity to familiarize myself with new hardware, so I decided to pivot, acknowledging that this might mean I’d need to design and order a second iteration of my custom board.

GUI

So here’s where things went wrong…

The 4D Systems screens are unfortunately only programmable in a proprietary language, 4DGL, which is not remarkably easy to use. The IDE provides users with a graphics-based editor as well. Between the two, I was able to construct the above GUI (Graphical User Interface). I was proud of how it came out visually but wasn’t able to successfully collect information from the user’s touch input. Despite the similarity of the language to C, the functions are limited and documentation is scarce. Because of these roadblocks, I’ve put the project on hold until I have more time to sink into programming the screen, setting up a robust UART connection between the screen and the Pico, and fixing the power management for the augmented “hardware stack”.

I hope to return to this project soon!

Next
Next

Senior Design Project