Inspiration

We found this old beer tap from Imperial College Union lying around and what better way to prep it for use in the modern day than connecting it to the Internet of Things?

What it does

Open up the beautifully animated "Pints" iOS app and click pour! Our robotic beer tap will start pouring you a fresh, cold pint as soon as you get to the front of the queue. Here's a video of the iOS app – https://www.youtube.com/watch?v=heHkV7C_84o

How we built it

The iOS app is built using native Swift code and tapping the Pour button triggers a server endpoint hosted on Azure running a Go web server. The Go server triggers a push notification to Pusher (http://pusher.com), which sets off a Node.JS server running on the Raspberry Pi. The Node server passes the Pour request to a queue, with a single worker (our trusty beer tap!) completing jobs one at a time.

To actually pour the pint, we run a set of Python scripts that precisely control the movement of the beer tap using a single, powerful stepper motor.

Challenges we ran into

The beer tap requires a substantial amount of force to actually engage, and finding motors powerful enough to do the job was tough. We ended up using parts from an alumni's dissertation project, which were finicky and failed on us multiple times.

Accomplishments that we're proud of

We built a fully usable end-to-end solution, with beautiful animations in the iOS app to deliver a great user experience, a buffered backend that can reliably handle multiple concurrent requests, as well as all the electronics and engineering that went into making the pump move reliably.

What we learned

  • Hardware hacks are fun
  • Keep the number of components in your project to a minimum
  • Maybe think of an idea a little bit in advance so you can pick up parts?

What's next for Pint Pourer

  • A live feed from the beer tap to update the user's iOS app in realtime with the status of their pint
  • More powerful motors to allow for faster pouring
  • A pint glass placement solution (using a conveyor belt?)
Share this project:

Updates