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)
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.
Other Components
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”.