WEBVTT

00:12.640 --> 00:16.560
My name is Ask, Ask at the Info.

00:16.560 --> 00:18.440
I answer questions here at DEF CON.

00:18.440 --> 00:23.520
I've been Goonan for four years, and I've been a maker in our community for eight.

00:23.520 --> 00:35.860
And this year, for one of the events that I was hosting with my friends, RentAnAssassin.com, we were throwing a client acquisition party, and I was commissioned to create some drink robots.

00:35.920 --> 00:44.340
One of my friends, a fellow Goon, not going to dox him, asked me if I could use peristaltic pumps and put together a bar robot.

00:44.340 --> 00:45.980
So I was like, I can do that.

00:45.980 --> 00:48.240
That sounds like it would be a fun challenge for me.

00:48.240 --> 00:56.760
And I had recently been practicing using OpenSCAD, which is a programming language for 3D modeling, to create 3D parts.

00:56.760 --> 01:05.460
So I wanted to challenge myself to create something new that would solve the problem using parts off the shelf.

01:05.480 --> 01:08.440
Because circuit board design is something I'm getting into right now.

01:08.440 --> 01:09.880
I'm a novice at it.

01:09.880 --> 01:17.720
But being able to hook together all sorts of random kits of things, I am really good at just building one-off, two-off projects for people.

01:18.340 --> 01:22.680
So when my friend challenged me to do this, I said, yeah, I will totally get that taken care of for you.

01:22.680 --> 01:28.180
And so I actually started with figuring out what the circuit was going to be, what the main circuit chip was going to be.

01:28.180 --> 01:35.340
And recently we had this device come out that all of us are using, called the Pi Pico.

01:35.340 --> 01:41.560
And it's a $4 chip from Raspberry Pi, and it allows you to load a programming language called CircuitPython on it.

01:41.600 --> 01:50.820
And I had recently been using CircuitPython for my friend DBSAU's PicoDucky, and I even designed a 3D printed case for that and everything.

01:50.820 --> 01:52.800
So I had just gotten a lot of experience on this platform.

01:52.800 --> 01:56.820
And I said, well, I've gotten a lot of experience with object-oriented Python at work recently.

01:57.360 --> 02:01.340
And I have gotten a lot of work with 3D printing recently.

02:01.400 --> 02:02.600
Let's put this to work.

02:02.600 --> 02:04.820
So I ordered a bunch of parts.

02:04.820 --> 02:06.160
I got a bunch of relays.

02:06.160 --> 02:07.840
We got the power rails and everything.

02:07.840 --> 02:13.160
And I actually designed a circuit board that I 3D printed.

02:13.160 --> 02:19.680
So we went through multiple iterations of this circuit board, where we could actually put all of these maker parts on there.

02:19.680 --> 02:33.980
And we ended up with 12 relays, six on each side, with PyPico in the middle, 12-volt power source, and a 5-volt and a 3-volt buck converter to allow it to power the relays and to power the Pico.

02:33.980 --> 02:39.180
Because the Pico actually will run off a 5-volt, and then the relays that we got were 3-volt, and then they were switching a 12-volt rail.

02:39.180 --> 02:44.540
Which actually ended up being a cog in the works that went away as soon as I stopped touching the robots.

02:44.820 --> 02:50.000
So I built up the entire base platform where I could play with the relays on a button board.

02:50.000 --> 02:54.760
So I would put buttons out there and play with the relays, and then I was trying to figure out how do I want to kit this together.

02:54.900 --> 02:59.420
And originally we wanted to put this in a custom 3D printed housing.

02:59.420 --> 03:04.700
So I actually did the full 3D modeling for a self-contained housing that this all would be mounted into.

03:05.120 --> 03:12.760
But in the end, that ended up being too long of a print, and the printers that we had just were not up to par, and I don't want to go buy more tools.

03:12.760 --> 03:14.900
My lab already has enough tools in it.

03:15.200 --> 03:23.060
So we went with what we had, and I looked around, and I saw an old milk crate that I had had from when I previously had worked in maintenance at my alma mater.

03:23.060 --> 03:26.680
So I just went and I grabbed the milk crate, and I was like, how does this all fit in here?

03:26.680 --> 03:29.880
And I designed a board for the perisaltic pumps to all mount into.

03:29.880 --> 03:33.020
I designed a face plate for the screen to mount into.

03:33.020 --> 03:36.080
I designed a face plate for the buttons to mount into.

03:36.320 --> 03:41.740
And then all that wiring and everything is open in there with a splash guard for the pour nozzles.

03:41.740 --> 03:51.820
And actually that pour nozzle really showed how far I've come with OpenSCAD because I was challenged by my friend to get that done right before DEF CON, and I got that done in about an hour and a half.

03:51.820 --> 04:02.500
I was able to write all the programming in about half an hour and get a prototype printed, because I've actually learned how to print prototypes really fast, too, by taking out the parts you don't need and only printing the parts you really are caring about measuring.

04:03.020 --> 04:06.660
And I was able to successfully last minute get the whole nozzle system going.

04:06.660 --> 04:11.860
So in the end, we ended up with a pair of senior Drinkenstein robots or Dr.

04:12.040 --> 04:18.760
McGillicuddy's magic drink elixir mixer running on Circuit Python serving eight different drinks from nine different liquid sources.

04:19.360 --> 04:32.000
And back to that problem that we had, we actually have a problem with EMI, electromagnetic interference, where our 12-volt lines, when switched on, would interfere on the three-volt pull-up or pull-down buttons and cause the whole thing to lock up completely.

04:32.000 --> 04:41.000
We were able to partially solve that, and what we actually found was as soon as I left tending the robots and left them to Bonwit to manage the robots, they didn't break at all.

04:41.000 --> 04:41.820
They didn't reboot at all.

04:41.820 --> 04:45.620
So we actually think the robots gained sentience and hate their creator.

04:45.620 --> 04:49.200
It can only be attributable to human error.

04:49.200 --> 04:52.800
This conversation can serve no purpose anymore.

04:53.080 --> 04:53.800
Goodbye.

