[00:12.640 --> 00:19.240] My name is Ask, Ask at the Info. I answer questions here at DEF CON. I've been Goonan [00:19.240 --> 00:25.100] for four years, and I've been a maker in our community for eight. And this year, for one [00:25.100 --> 00:30.900] of the events that I was hosting with my friends, RentAnAssassin.com, we were throwing a client [00:30.900 --> 00:37.200] acquisition party, and I was commissioned to create some drink robots. One of my friends, [00:37.400 --> 00:43.400] a fellow Goon, not going to dox him, asked me if I could use peristaltic pumps and put [00:43.400 --> 00:46.980] together a bar robot. So I was like, I can do that. That sounds like it would be a fun [00:46.980 --> 00:53.560] challenge for me. And I had recently been practicing using OpenSCAD, which is a programming [00:53.560 --> 01:00.100] language for 3D modeling, to create 3D parts. So I wanted to challenge myself to create [01:00.100 --> 01:06.080] something new that would solve the problem using parts off the shelf. Because circuit [01:06.080 --> 01:10.860] board design is something I'm getting into right now. I'm a novice at it. But being able [01:10.860 --> 01:15.260] to hook together all sorts of random kits of things, I am really good at just building [01:15.260 --> 01:20.720] one-off, two-off projects for people. So when my friend challenged me to do this, I said, [01:20.720 --> 01:24.420] yeah, I will totally get that taken care of for you. And so I actually started with figuring [01:24.420 --> 01:28.420] out what the circuit was going to be, what the main circuit chip was going to be. And [01:28.420 --> 01:35.440] recently we had this device come out that all of us are using, called the Pi Pico. And [01:35.440 --> 01:40.100] it's a $4 chip from Raspberry Pi, and it allows you to load a programming language called [01:40.100 --> 01:47.000] CircuitPython on it. And I had recently been using CircuitPython for my friend DBSAU's [01:47.000 --> 01:51.180] PicoDucky, and I even designed a 3D printed case for that and everything. So I had just [01:51.180 --> 01:54.560] gotten a lot of experience on this platform. And I said, well, I've gotten a lot of experience [01:54.560 --> 02:00.360] with object-oriented Python at work recently. And I have gotten a lot of work with 3D printing [02:00.360 --> 02:06.160] recently. Let's put this to work. So I ordered a bunch of parts. I got a bunch of relays. [02:06.160 --> 02:12.140] We got the power rails and everything. And I actually designed a circuit board that I [02:12.140 --> 02:16.680] 3D printed. So we went through multiple iterations of this circuit board, where we could actually [02:17.280 --> 02:22.200] put all of these maker parts on there. And we ended up with 12 relays, six on each side, [02:22.200 --> 02:28.820] with PyPico in the middle, 12-volt power source, and a 5-volt and a 3-volt buck converter [02:28.820 --> 02:35.000] to allow it to power the relays and to power the Pico. Because the Pico actually will run [02:35.000 --> 02:38.340] off a 5-volt, and then the relays that we got were 3-volt, and then they were switching [02:38.460 --> 02:43.100] a 12-volt rail. Which actually ended up being a cog in the works that went away as soon [02:43.100 --> 02:48.080] as I stopped touching the robots. So I built up the entire base platform where I could [02:48.080 --> 02:51.840] play with the relays on a button board. So I would put buttons out there and play with [02:51.840 --> 02:54.980] the relays, and then I was trying to figure out how do I want to kit this together. And [02:54.980 --> 03:00.320] originally we wanted to put this in a custom 3D printed housing. So I actually did the [03:00.320 --> 03:05.460] full 3D modeling for a self-contained housing that this all would be mounted into. But in [03:05.460 --> 03:09.120] the end, that ended up being too long of a print, and the printers that we had just were [03:09.120 --> 03:14.260] not up to par, and I don't want to go buy more tools. My lab already has enough tools [03:14.260 --> 03:18.240] in it. So we went with what we had, and I looked around, and I saw an old milk crate [03:18.240 --> 03:23.160] that I had had from when I previously had worked in maintenance at my alma mater. So [03:23.160 --> 03:26.680] I just went and I grabbed the milk crate, and I was like, how does this all fit in here? [03:26.680 --> 03:31.260] And I designed a board for the perisaltic pumps to all mount into. I designed a face [03:31.260 --> 03:36.080] plate for the screen to mount into. I designed a face plate for the buttons to mount into. [03:36.320 --> 03:40.940] And then all that wiring and everything is open in there with a splash guard for the [03:40.940 --> 03:46.140] pour nozzles. And actually that pour nozzle really showed how far I've come with OpenSCAD [03:46.140 --> 03:49.720] because I was challenged by my friend to get that done right before DEF CON, and I [03:49.720 --> 03:53.420] got that done in about an hour and a half. I was able to write all the programming in [03:53.420 --> 03:56.800] about half an hour and get a prototype printed, because I've actually learned how to print [03:56.800 --> 04:00.380] prototypes really fast, too, by taking out the parts you don't need and only printing [04:00.380 --> 04:04.840] the parts you really are caring about measuring. And I was able to successfully last minute [04:04.840 --> 04:09.500] get the whole nozzle system going. So in the end, we ended up with a pair of [04:09.500 --> 04:14.980] senior Drinkenstein robots or Dr. McGillicuddy's magic drink elixir mixer running on Circuit [04:14.980 --> 04:19.720] Python serving eight different drinks from nine different liquid sources. And back to [04:19.720 --> 04:23.720] that problem that we had, we actually have a problem with EMI, electromagnetic interference, [04:23.720 --> 04:27.960] where our 12-volt lines, when switched on, would interfere on the three-volt pull-up [04:27.960 --> 04:32.880] or pull-down buttons and cause the whole thing to lock up completely. We were able to partially [04:32.880 --> 04:37.240] solve that, and what we actually found was as soon as I left tending the robots and left [04:37.240 --> 04:41.620] them to Bonwit to manage the robots, they didn't break at all. They didn't reboot at [04:41.620 --> 04:45.620] all. So we actually think the robots gained sentience and hate their creator. [04:45.620 --> 04:53.800] It can only be attributable to human error. This conversation can serve no purpose anymore. Goodbye.