 So, it's me, John Park, and this is John Park's workshop, and you're just in time. Me too. We're all just in time, and that's fantastic. We can do this. Let's do this together, shall we? Hey, everyone, over in Discord. Hello. Hey, Gary Z, Andy Callaway. Mr. Certainly. Okay, you're on. Who else we have in here? And also, I saw some people over in YouTube. Hello, Dave Odessa. If you are watching over on Twitch and wondering where the chat is, hi, Adam. It's happening in Discord. So, go to Discord. Adafruit's got a Discord server. It's at adafruit.it slash discord. You'll get a free invite, and you're off to the races. The channel is the live broadcast channel, but we have a whole bunch of other channels. Look, here's the Discord right there, and if I make that crop a little wider, hold on, you're going to see, right before your very eyes, wait for it, the channel listing. There it is. So, you can see we have the live broadcast chat. That's where we're at. Hey, the cron job. Hi, Ken Santema. We also have pet photos off topic, help with big chunk of different help with topics including CircuitPython, Arduino, 3D printing, Adafruit I.O., hey, any SKU7. We have audio, radio, Raspberry Pi, wearables, robotics, projects, help with Git. I need help with Git. Help with RP2040PIO for people who are diving into the more advanced side of the Pico. And then there's the CircuitPython topic. That channel is where a lot of the CircuitPython developers hang out, TinyUSB. And thank you again, TinyUSB, for making all of this cool USB-HID stuff possible that I'm going to be doing today on the show with the MEK keyboard, the mechanical keyboard. That's all thanks to the TinyUSB effort that's available. And on and on and on. So, that's the Discord. Go there. Hang out. That's where we tend to chat all day long. And I do see a couple more people who've shown up over in the YouTube. Hey, Charles Burniford, hey, Montague Monroe, and Todd Bot. asks, what's a Pico MEK? That would be fun, a little Pico MEK robot. All right, so let's get to some stuff, shall we? By the way, I apologize. I hope that there isn't too much AC, HVAC noise in the background. You probably don't hear it. I always do. It bugs me. But the temperature here is getting warm enough that one of my cameras starts to shut down if I don't have the AC running in the workshop. So it's running. Yeah, Todd says, thanks to Ha Thatch and others for TinyUSB. TinyUSB is amazing. All right, let's see. The first thing I wanted to mention is our jobs board. We do have a jobs board where you can go and find a job if you're looking for one. It's at jobs.aidafruit.com. It is a free site. You can go check out job listings and you can post your info if you're looking for work. I just realized I don't have a browser window shared right now, but I might not need it. I could regret that later. Let's build one. Hold on one second. Let me not blow up the live stream, but I do want to add a window here. So let's see. Do I have, yeah, there's a Chrome window. I just didn't share it. This one. Oh wait. Do I? Hey, I do. I fooled myself. Yeah, so there's the jobs board and you can see these are some of the positions that are available. Good. Well, I'm glad I do have that window saved and up. Okay, so let's see. Next up, I'll mention Product of the Week. I do a show every Tuesday. That is at this very time except on a Tuesday. It's one o'clock Pacific time. It's four o'clock Eastern time and it looks sort of like this. This week's Product of the Week was the TMP 117 temperature sensor and I'll, I do about a 15 minute show on Tuesdays to take you through the product and a demo and some code, usually share the datasheet on it and talk about some of its pros and cons. And I also make a little one minute recap video, so let's share that. Have a look. It's the TMP 117. It's a high accuracy, high precision temperature sensor. Right here in the center of the breakout board is the sensor itself and you can see it's got that little cut out there to lower the thermal mass around it so it doesn't hang on to temperatures as long. Watch that display there and I set my little ice pack on hinge from both ambient temperature. It was at like around 70 Fahrenheit and now I'm going to touch it and press my finger up against that there and we should see that climb pretty rapidly. So now we're going up to 70, 72. You can also do some ill-advised things like stick it in your mouth. You shouldn't do this. Okay, it's definitely warmer inside of me than outside of me. So that's science in action. That's the science fact that you can take to the bank. That's our product pick of the week. It's the TMP 117 high accuracy, high precision temperature sensor. Hey, yeah, all right. So that was the product of the week. Go check it out. And by the way, those are on discount during the show. So if you watch it during the live stream, there's usually a 50% discount. So that's, it's not insignificant. All right. Let's see. What else have I got? I'm going to jump into some follow up from last week and then we'll keep this project going forward. So last week I built the PCB design, which I printed out for my mechanical keyboard that uses the Raspberry Pi Pico on it. I sent off to JLCPCB, not a sponsor, they're super fast, that's who I used, sent off and got some PCBs made and they've arrived already. So check them out. This is our PCB and it has, as you can see, space here for the surface mount footprint of the Pico. So the Pico being, let me grab one. Where'd you go? Pico? There you are. Pico being a cast-alated pad board, it's got these little notches in the side and the copper runs all the way through that space there. It means that you can mount it like a surface mount part just by butting it up against these pads and heating up some solder, flowing it across those and off you go. It's like a really big SMD part, which is terrific because it means that we're not dealing with a row of header pins to solder in first, so it's a lot quicker because you're not soldering twice as many solder joints basically when you have to solder pins in and then pins on the bottom. And we saved some space. You can see this thing is going to be super thin due to the lack of any kind of header spacers on there, which is really nice. Also you'll notice this is a really thin board. This one I think is 1.6 millimeters, the one that I had made. And look at the Pico itself, I haven't measured it, but it's maybe a millimeter. It's almost half the size of that, or like three quarters the size of that, so it's a pretty thin board. So you solder that down on there and you've got a pretty neat little package. So you can see here I've got, grab some tweezers to point with, I've got a hook up here for my reset switch, and that is running between some pins here. I just have it running between these and over. Actually, don't remember what that via is for. I think that that's an accidental via, doesn't need to be there, I'm not going under the board, but that runs to this pin 30, which is the run slash reset pin on the Pico. So that allows me to do a reset, also allows you to get to boot loader mode by double clicking. Otherwise, you have, I think you've got to unplug it to reset it, and you've got to hold this button and plug it back in to get to boot loader, I think. I'm not even sure how you get to boot loader without a reset button on this one, now that I think about it. And then you can see we've got a few of our key switches running down here on the bottom row. I'm running from the top side of the board, and then the rest of these connections are all on the bottom side of the board. You'll also see we have a big copper ground plane under here. So you see the dark green solder mask, that's where there isn't copper, and the brighter green, there is copper under there. So less stuff is milled away in the process of making the board. And that's where all my ground connections go to. And if you look closely, let's see, can we, I can't detect them. I guess they're a little hard to see. There are these little sort of crosses or plus signs around the ground pads that just connect them to the ground plane on the bottom side there. So the next step with this, of course, is to put it together, test it out, build an enclosure. So let me jump over to the workbench for a second here. And I think I'm going to turn off this AC, and it's cooled off a good bit in here. So it'll be a little less noisy for me, at least I can't think with all that noise. So let's head over and head over to the workbench here. And yeah, that view should work. So you'll see I've got things in a few different states of build here now. The first thing I did when I got these in was jump for joy because it came so early. Try to focus there, looks roughly in focus. And then the next thing I did was went and tested a bunch of the traces. And actually, this is a good idea when you first get your board in, is grab a multimeter that has a continuity sensor, set it into beep mode, beep, and then you want to do some things like, look at, if you need to, you can look at your Raspberry Pi Pico reference, pin reference. And first of all, just check to make sure that you don't have the ground plane and the power connected. So this one, this black lead I have here is on a ground pin. And so these are power buss, these four that surround it. So that's good, that didn't beep. Then you want it, you can check and see if your grounds, let's see. This one's three down, and then we go one, two, three, four. That's another one. Are you gonna beep for me? Am I not on the ground? I'm on, yeah, I am, all right, why are the grounds not? Is that ground not connected? That is possible. Let's see, where is another ground? This is a ground here, are you connected? Well, I know this works on the board that I put together, because it's actually running. Let me see, one, two, three down. Why are those? Yeah, I guess I didn't connect some of those to the ground plane. That's bad, and let's figure out who is connected to the ground plane. So I think, let's see. So this is the ground pin on my switches. So let's see which ground pin beeps. One, two, three, one, two, three, four, one, two. It's probably on this side. One, two, three. All right, now I'm checking them all. Who's gonna be, oh, that's the one I have connected. Huh, I guess I only connected one of these. Yeah, because there's the via running down there. Okay, maybe this one too. Okay, so I connected some of the grounds and not all of them, that was a bad idea. So that'll be something I fix. And then the next thing we can do, hopefully you can see that, that's not super bright. Sorry about that. Let me grab, I'm gonna grab a little work light here. Unfortunately, I don't have a wall adapter for these. I can only use camcorder batteries on some of these little panel lights that I've got. So I can't use them all the time, but they're really effective for this. So I'm gonna set this on a little tripod. Some behind the scenes action here for you. Spread the tripod legs out a little bit. That'll hold. That should help, huh? Let's dial that in. Yes, sure, that looks good. Okay, so the next thing I wanna do on these, and I can probably get even closer. Yeah, there we go. I'm not using autofocus on this one anymore because it tends to flip out about some high contrast stuff that I show, so I'm manually focusing on. So if I can get my multimeter leads off of there, there we go. So the next thing you wanna do is check the, you can check all the grounds. So we should get every switch's ground, which I went and checked on the other board. And then we wanna check each of these pins. So for example, this is what I'm calling switch one and the leg of that key switch. So one of these guys right here, when that gets pressed that closes the contact internally. I'm going to check that against pin one. That's the pin, or actually it's pin GPIO zero on the PICO is the one connected to that. You can also go and check that it's not connected to anyone else, it shouldn't be. And then you can move your way down the board. So that's pin two. Then I think we skip this one cause it's ground. So the fourth pin here, that's GPIO one and so on. So you can work your way across the board and make sure that things are connected the way you wanted them to be connected. I can turn this off now. So, you know what? I'm just gonna check my chat cause I can't see the Discord chat from over there. I need to set up my iPad. Adam says, why buy lights when you can make your own using only Adafruit parts? Yeah, you'd think I'd have some Neopixel lighting going on here. So, let's see. The next step, you can, even before soldering these you can check continuity of the switch in here. You know, you can just kind of jam it against there. And so that's actually what I did at first. I took my PICO and soldered it down. And unfortunately I'm running really low on PICOs. Cause I've used them in a few projects now and they're hard to get at the moment. So I'm gonna, I don't think I'm gonna solder this one down cause I've got another round of boards coming that are the Oshpark After Dark in the very cool black. And I kind of wanna wait for those to do my second one. But I will show you, I've got a board built. We'll take it apart and take a look. So what I did though is I soldered the PICO down and I put my code on there that I have for just checking the key switches. And then you can place it in here and it will, it'll function. It's gonna touch enough copper there if you're pressing it before you even solder it down, you can test it. So I did that in a couple of spots just to get a reality check. And then I went ahead and prepared to solder all this down. Now something, zoom out just a little bit, something that is really helpful with mechanical keyboards is having a switch plate. So you'll see here that there isn't a lot of contact between, let me take this out of here. There isn't a lot of contact between the key switch and the PCB. There's this little peg, this is a plate mount key switch. So it only has the one registration peg. Some of them are made for PCB mount and those have two side pegs and you'd put two corresponding holes in the PCB. So those are a little more stable but to keep it from wiggling around cause it's really only connected by these tiny little copper pins and solder. So to keep the keys from wiggling around, you kind of wanna constrain them somehow and traditionally the way that's done is with a switch plate. So what I did is I designed one, I can't remember, I may have shown this last week, but I designed a switch plate and cut it out of paper to test it out. I think I showed a different one last week. I think I put that one away. But this allowed me to set these in and check my placement against the holes. This should all align cause I designed them in the same piece of software, the same view. So this is sort of another reality check we wanna do before we get too far is do the switches align with the PCB with the switch plate in place. And then what happens is you get way more stability because the switches can't wiggle this plate and this plate can be screwed down or even just it being connected to all those switches which are interns are to the PCB will keep things pretty nicely stabilized. So what I did after verifying that was a decent design as I went and laser cut one out of some pretty thin acrylic. I believe this is one and a half millimeter, which is about the right size for these to click into place. It also means this is kind of flimsy. And I think you can get away with thicker material. You won't have the little ear clips on your switch pop out and snap into place, but it will hold them stable and since they're soldered down to the board unless you're using the sort of quick reuse. Oh, one of my views got screwed up. Sorry about that. Let's see, is this thing connected? Hey, it is. Huh, I had the wrong view that whole time. Hello. So these will I think press down into a thicker piece but this seems like about the right size. So you can see here, if I press this down into place we'll get a nice little satisfying click, click and there it is. So what you want to do is align this with your PCB. You want to straighten out all of your legs on the switches. They should be straight anyway, but if they've gotten bent you're gonna have a really hard time. In this case there's gonna be 42 of those pins that all have to align when you press it down into the plate. One other option is to leave the plate all the way down, press the switches through, solder them and then lift the plate up, but this acrylic I cut is so thin and fragile that I don't think that's such a good idea. So clicking them into place carefully and then there's just a little bit of a dance that you'll do. I actually had to get in there with a little dental pick probe to nudge a couple of them into place to then finally get the whole thing to sandwich down. And I'll show you that when we do the take apart on the other one. But this is a good idea. What I'm doing right now is actually, I'm gonna show you the design I made using a laser cut, mostly laser cut parts and standoffs and screws. And then I'll also show you, I'm working on a 3D printed design. Just a lot more people have access to a 3D printer and both are valid. You can also mix and match. So I've mixed and matched with one of the versions that I have. So that aligns all these switches. You see the Pico is so thin and it just lives nicely under here. And then for my reset switch, I was gonna use one of these typical little itty bitty clicky switches. And then while I was looking for one, I came across one of these long stemmed fellows. So this long stemmed reset switch is kind of great because it pokes up way higher so you can access it since we're gonna have a bunch of case between the PCB and the top, getting something that's closer in height to a key switch, one of the mechanical key switches, is a good idea. So it'll sit there, hold it in place, and give us a lot more height on this. Whoops. And so I had to make sure I left some space in everything to allow that to poke up and through. So designing the case came next. So I had, and you know what, these are easier to look at, so I'll show you these pieces. So what we've got is our switch plate, our PCB, then I designed using, again the same dimensions as everything. I designed this, let me zoom out a little more. I designed this as the bottom. And the reason it's got these funky cutouts is that there's gonna be a bunch of soldered legs poking out in those little plastic bottoms of the key switches. And so I can't go flat against something. This isn't, these aren't surface mount, right? These are through-hole switches. So I needed a little bit of space to clear all that stuff. So that's what this provides. If you look when we flip this upside down and align the mounting holes, we're gonna have space for, I'm only using, let me grab something to point with, I'm only using these two solder holes. These I left in the footprint, but I'm not using those I think are for an LED up there. And I'm not using an LED, or sometimes they might be used for a diode, but I only am using these two. So we don't need to worry about covering some of those spots up there, but if you're using a different type of switch and adjust the circuit, you may. So that's the bottom and it'll have a little bit of thickness to it. I'm using three millimeter acrylic and I've made a 3D printed model that has about the same dimensions as that. But that'll sit there like that and give us clearance. And then we'll have the switch play that I'm using some standoffs. These are I think 16 millimeter tall M2.5 screw standoffs. So those will go into these corner holes. Zoom back in a little bit and move some things over. Sorry. I should move my main down shooter over here while I'm doing this. Sorry about that. So there we go. That's a little bit of a review. So these standoffs will sit in the corners. And then on top of that, we'll go the top of the keyboard faceplate or top plate. And this height here I measured so that it'll work well with the key switches. So we have rather the key cap. So we've got our key switches and then they have these key caps on top of them. And I wanted to get the height so that we were just a little proud of the bottom of those so that they don't float. You don't see a big gap there but they're not hidden too far down below. So again, these are all essentially things I do using my trusty calipers, digital calipers, your best friend for this because you really just want to get exact dimensions of things, check the depths of things and then design your curves and surfaces to match. So that's what I'm going to do now. So that's what I did. Let me show you how I did it. So I want to jump into some CAD software here and we'll take a look at how I put this together. So first of all, a word about CAD software. You can do this type of work in a lot of different software. And in fact, a lot of people will use their PCB fabrication and design software to make cases. It's not uncommon to find stuff where face plates, especially I find this in the Eurorack synthesizer world, you can build your designs the same way you're building your circuit and have PCBs cut to be panels. But in some cases, you may want to use something like Fusion 360, something like SketchUp or Tinkercad would work well. I will show you what I use, which happens to be expensive professional design software just because I've used it for like 20-something years and it's hard for me to not use it. It's Rhino. It's good for both the 2D design types of things that a lot of people will use Inkscape or Fritzing or rather Inkscape or Illustrator for, but it's also a very powerful NURBS and now subdivision surface modeler. So I use it for 3D design as well. So this is not me saying you should run out and learn Rhino, but it's what I use and a lot of the things I'm doing will apply. So just wanted to give that little caveat there. So the first thing that's going on here is I went to the Raspberry Pi site, downloaded the 3D model that they have for the Pico, and then I also verified it with my calipers just because you don't want to start with a model that's in inches and you're in metric or is 10 times bigger or 10 times smaller than you expect. So I checked those dimensions in the real world and then you can either dimension it or just ask for distances so I can say, tell me in millimeters or inches, let's say decimal inches, what's the width here and I'll snap to a couple of points and down at the bottom here, you might not be able to see it says 0.826 inches. So verify that with the calipers and we know we have a solid starting point. Same thing goes for switches. So I went online, went to GrabCAD, got some 3D model of a, excuse me, of a Cherry MX switch, verified when I brought it into this software that it was still in the correct scale and units and then I was able to build a lot of stuff off of those things. I also, if you remember in Fritzing I had designed the PCB and the traces. So what I did was I brought those curves in. So this you may recognize from this right here, that's the, I believe PDF, you can export or, no SVG, I exported the SVG file, which is a scalable vector graphic. You can use that in most any design software. So I brought that in, aligned things, again, made sure that this was gonna really fit my PCB. So the next thing I did was I took those curves and I made a piece of geometry out of it. And so, let me switch views here. So you can see here now I've got a proper thickness, I think it was 1.6 millimeter board that I made. I used, I got fancy and used my rendering that came from JLPCB's website when I uploaded it, JLPCPCB, I used that rendering as a texture map for the top and the bottom of this so that I can feel confident that things are aligned well. And I also double checked that texture map against the 3D curves to make sure that, or the 2D curves that I got out of my Fritzing, just to, again, be super sure that everything is lined up well. So the next thing I did was I said I brought in keys. And so these are a bunch of instances of the one single key. I got fancy and made a sort of clear, you can barely see it there, I put a clear plastic top on it just cause I was so impressed that someone went to the trouble of modeling the interior of the key switch that I wanted to honor that and look at the cool guts of the switch. Cause come on, that's just cool looking, right? So with that, I was able to go in and design the cutouts that I want for that switch plate that's gonna hold things in place. So you can see here, I'll hide the keys for a second, you'll see, so that I made those by snapping to points on the actual key and then giving it just a little bit of extra clearance so things would fit. And again, if you go in and look, this stuff might be hard to see online on the internet here but if I bring on my keys layer here and I take one of these curves, whoops, who we have here. Sorry, I don't have any layers locked so things are gonna be difficult to pick in the way that I'm using this right now. Are you locked layer? I think you are. Yeah, the one thing I wanna pick is locked. Come on, little curve, switch plate curve, you're no longer locked. All right, let me go to wireframe view, sorry. There you are. So this, let me turn on. Gum ball is off, gum ball is on. Okay, so if we go to like a shaded view here, rendered view is a little tough to look at at the moment. So if we go here, you can see this is the curve that I snapped around the perimeter of this, including, oh, I think I have this rotated. Yeah, my switches are rotated because these little guys snap into those cutouts. So using that, I made this 3D model of the switch plate. So that's what those little guys snap into. I looked online and actually there's some debate about how necessary these little T-shaped cutouts are. Tabletronics asked what CAD packages this is. Rhino, Rhino NURBS modeler that I'm using. But this would work, the approach I'm taking would work in anything. I was actually having this discussion with Todd Bott, who's in our chat here. There's a lot of things I like about Rhino. One thing is it's not procedural and parametric on its own in the way that something like Fusion 360 is. You have to use Grasshopper alongside of it, which is a companion program also for McNeil. Without using that, the way I'm doing it, this is very straight ahead. I'm just making stuff and if I have to fix it, I have to fix it. I don't have dimensioned stuff. I don't have constraints and things like that. So if suddenly I found out I wanted to use a key switch with a different dimension, it would be a lot of work. It wouldn't be just like type in one number and things build from there. So again, I'm not promoting this as what you should be using. You should use Fusion 360, go learn that. But I love Rhino, so I'm not leaving it alone. So let's take those keys out of there. So you can see that's now building up what I'm actually gonna, that's the first thing that I'm actually making. So this I'm gonna convert into, I'm gonna make some adjustments and make it a 3D printer model. I've used it so far as a laser cutting model. So that's where I came up with, let me turn this light off back here. That's where I came up with this guy. So that's the laser cut acrylic version of that model there that you're looking at. And then the next thing I did, sorry, check on my mic. Next thing I did was let's go to a top view. Here's a sort of wireframe curve view of what we're building so far. And I'll bring in these curves. So this was my first thoughts, it's actually what I ended up on. My first thoughts was I'm just gonna put a sort of offset rectangle with a little extra clearance on the top and bottom for the keys to sit in. If we turn on those, let's turn on these key caps. So again, I modeled some key caps which are these here and you may recognize these from the ones that I've got on my actual keyboard if you've seen pictures of those online. So these are the key caps that I'm using. So I went in again, took my multimeter, took some dimensions, made a 3D model. But this is how I arrived at this. So I wanted to have a top plate and a bottom plate of the same size, got my dimensions off of there, figured out some clearance so that I could put some hex standoffs without bumping into the PCB here. I know I'm gonna need a hole right here in those four corners of the PCB to connect it to the bottom plate. And I also want that switch plate that holds the switch is stable to connect into those holes there. And I also wanted, if you take a look here and hide the, let's go back to wireframe, and I'll hide those key caps there. So this curve here that I've selected, I'm hoping you can see that, I hope the resolution's high enough. That is gonna be the window that kinda cut out so that my key caps nestle nicely in there without bumping into things but without having too much of a gap. So taking those curves, I essentially extruded those and capped them and ended up with that. So that's my top plate that's gonna sit on top and you can see it gives us, just like a window down into the Pico. That's way down there, but I didn't wanna hide it. I think it's a cool new board so I wanna show it off. And then if we look at that with keys or key caps, like the teletype ones, you can see there we have just a little smidge of clearance enough to allow those keys to travel without bumping into anything but hopefully keep some of the bigger crumbs out, I don't know. The bottom plate was very similar. So again, I created some curves and made a little extrusion there. And this is where I went and created that spacing so that we would have not just one big cutout because I wanna have, I don't want to flex too much. So I wanted to give it some sort of a structure. So that's why I have those columns and rows that are still intact but they allow for clearance for these parts and allow you to show off some of your PCB there which is cool too. One thing I think I don't have them accurate in this one is I also went and grabbed some 3D models of my fasteners and a great way to do this is on McMaster car. So if you, in fact, let me show this real quick. I think we have time. Let's go to this browser window real quick. If you go to McMaster car and click on screws and bolts, socket head screws, metric, M2.5 and then the length I want for these ones. Oh, these are the ones going into the hexes so that let's say like eight millimeters or something like that. You can then pick any of these products and hit product details. And in almost all cases there will be 3D models available. So if we go a 3D step file as a format that's fairly simple, NURBS planes often that you can bring in and they're dimensioned properly, super accurate. So I went and grabbed those to pull in unless there was something I couldn't find and then I modeled it. But that gives you a really nice reality check. Let me move, yeah, there was my fake standoff but you can see this thing is really modeled. Like heck yeah, it's very long. It doesn't need to be that long. It won't actually work with this hex standoff. I have some different ones that I'm using. But you can grab very accurate models of your fasteners which helps a lot when you're building. So then what I didn't want was a bare, I didn't like the standoffs with a big gap in the middle kind of look for this keyboard. I wanted it to be a very sort of solid, rectilinear, Deeder Rams kind of look. And so I experimented with a couple of ideas on sides. The first thing I did was this idea here. And yeah, actually this was at a previous height so you can see the gap there. These are not what I went with. But the idea here was still laser cut stuff so you can recognize the sort of telltale sign of flat pack design. It's got these little t-slot joints. They would have butted up with these here. There would be a little notch cut out of this piece and things would kind of, but the problem is you end up with, we can get flush on not all sides. You can get flush here, but you can't get flush here. You have a little lip hanging over. I didn't want that overhang. And so I abandoned a laser cut acrylic side entirely. By mixing the media instead and jumping into a 3D printed model, you can do different things. So this is able to instead have screw holes or just kind of wedge in between there. It can have three dimensional cutouts which you can't really do with your laser cut stuff unless you stack a lot of pieces up which is definitely one way to do it and a cool way to do it. But I decided just 3D print a part. So you'll see, I don't think I have an extra one. I just have the one that's built into here. But you'll see what I've got and I'll show this in greater detail. But what I've got there is laser cut, laser cut and then a sandwiched piece of 3D printing in the middle there. So the other thing I did was I messed around with the other key caps that I have which are a lower profile, these DSA key caps. So I decided to make a shorter case for this and this is where I'm experimenting with doing a 3D printed, entirely 3D printed case. So let's hide our existing model and bring in a 3D printed bottom which is this piece here. And so this, you can see it'll just grow from the build plate up, no overhangs. Just has some holes for some screws. And right now I added, you can see these ribs here to give it some strength. The one that I made is very flexy. This one, how do I show you that? This is very flexy in the middle, that's no good. So I added some ribs here which give it some lateral structural stability there. Kind of like bosses. And they also wedge the board in kind of nicely. I was able to butt those with the PCB so it should just drop in. And I'm also getting rid of, I don't think I show it in this version. Let's see, 3D printed bottom nubs. Yeah, so on this version, I'm gonna have little nubs that I can just slot my PCB down onto and my switch plate down onto instead of needing screws there. That means I don't have any screws coming up from the bottom. In fact, those are gonna go away. Go away fasteners. And those holes go away or can go away because I'm gonna just screw them in from the top only and tap them with long M25 screws. So that's the bottom half, here's the top half. And you can see I'm thinking of either doing these kind of alignment nubs here. I don't know the word for that. Sorry, I didn't go to industrial design school. These are little cutouts. These will be connected to this top piece here when I'm done. Or I may just do like a lip so that it just has a inner lip that is offset from the bottom. And so they just into each other, almost like snap fit, but it'll be just the whole way around and then with some screws on top. And I like the screws on top. They give you some oomph rather than just trying to press fit it. Also, I'm nowhere near as skilled as the Reuse brothers are at snap fit stuff. They do amazing snap fit designs. I'm not as skilled at that. So that's what mine's gonna look like with the screws in there. So let's take a look at, that's how I built it. Let's take a look at a couple of the results here. And also I'll take this one apart so you can see inside everything. So let's go back to our down camera. So this is the first one. This is the one that I built. I've soldered these guys down. I've got my cool key caps in there. And the idea for me for this one is it's not a tiny, it's not like a 28% keyboard or something that I'll type on. It is all controls for video editing or 3D or color correction stuff where you wanna like switch between which color channel you're looking at, adjust the value, maybe gamma is being boosted up and down. Maybe this is kind of imaginary at this point. I haven't mapped it all out but you might be doing things on three axes. You might wanna use an alt key to adjust things or some other modifier key input and in point and out point on a video clip when you're editing is something I use a lot. Who knows what this blank row is for but I had seven blank keys. So I put them up there, they look cool. And you can see also right there is my reset switch. It does not reach all the way up to the top. So you are still gonna have to find something like maybe an LED and click it. That works really well. Click, click, click, click. And maybe I don't need to reset that often so I probably don't need to add like a little inner switch button extender thing. So let's take this apart so that we can see inside those layers and I'm gonna just zoom out and refocus this camera. Unplug that there. And let me check it. Any questions in the chat? I've been talking and talking. Let's see. Hellweaver666 showed their keyboard which is made of three layers of PCB. He said it's the opposite of what JP is building. It's good looking keyboard though. Some people loving on McMaster car, heck yes. Adam says, I don't know why the round caps make me think of music popcorn. Wow, I love that, that's evocative. All right, so what I have going on right now is some hex standoffs. So I'm gonna hold the nut here. This is one long standoff. Pull that out and let me get all four of those out of there. This is the opposite of a build. I lied in the advertising. I said we were gonna do a keyboard build. We're actually doing a keyboard take apart of a keyboard I already built. But I figured that has a much higher odds of success. Oh, I should probably have tested this as is but we'll do that once it's open so you can see it working. So there we've got the top plate. I actually made this of some diffused LED acrylic even though I'm not trying to shine LEDs through. I just like the matte finish of it there. Here is the simple version, the first version I made which I said is a little too flexy for my liking so I made some of those adjustments. But that's just that creamy center part that keeps it from being all open to the elements. And there is the beast itself. And you can see these are some of actually these nice brass standoffs that we sell in the Adafruit store that are I think originally for Raspberry Pi hats or something like that but they work pretty well in this case. And you can also see I just put down six of these nice rubber bumper feet so it doesn't slide around and it doesn't flex. It's very stable. And I think a lot of the stability also of this solid feel comes from having that switch plate there. So I can't emphasize enough how nice it is to have that switch plate in there. So let me bring up, excuse me, and Adam, I'm gonna have to fix something here real quick. By the way, if Scott Tan Newt is in the chat are you going after this? Cause I might go long. Let me know if you're running your show it too cause I'll wrap it up quicker but I can't remember if you were going today. So let me fix this, cause you don't want that black hole. And let me make that be this Adam view. Yes, window configure, Adam, that's my text editor. There we go. So this is the code we looked at this I believe to some degree last week, a simple version. What I've done actually is just taken my, let me bring me into view here. I've taken my code I wrote for the Itzy Bitsy Keybow project. I don't have it here. Actually my daughter has stolen it. She uses it as a media input device on her computer. She's gotten bitten by the keyboard bug too. She's got a really cool sort of 10 keyless small keyboard mechanical keyboard and doesn't have media keys for the Mac on it. So we turned the little Itzy Bitsy Keybow into her media thing. So it pauses and mutes and plays and all that. So this code is very, very similar. Really, all I'm doing is bringing in digital IO library. This is circuit Python. Digital IO library reads the pins like buttons, reads the digital inputs as inputs with a pull up resistor. And I have 21 switches on the, there are 27 possible IO digital IO ports that you can use or pins that you can use on the Pico. And then I'm importing the USB HID as well as the Adafruit HID stuff. This is all the stuff that Dan Halbert made to make our lives easy which allow us to do HID keyboard things, USB MIDI things. We can do the consumer control stuff which is like the media, play, pause, mute, volume, all that. And I turn on my LED. Let's plug this in in fact. Are you, let me find a cable. Here's a USB cable, this will work. Plug this in. You'll see the Pico, when I plug it in it'll light up its little onboard LED. That's just because I like to know that it's on. That doesn't go on by default as a power thing. It's, you have to tell it to. And I don't think I'm using this blink thing actually. I can get rid of that. I was blinking the LED when I pressed stuff but I don't need it now. Then I'm setting up the keyboard and the consumer control devices. I have a list of pins. So basically zero through 21 minus pin 15. I'm not using pin 15 because that one can be flaky so it's okay to just avoid it for now. Then I have a big dictionary here of each of the keys and what they do when they get pressed. So are they key or CC mode? So a key or media mode. Adam asks, can we get the PCB files? Heck yes. Thanks for asking. I'm gonna be writing a guide about this build and hold on, I'm gonna turn on the AC. It's gotten hot in here again. I'm gonna write up a guide on the build and I will be using it as an excuse to show how to make your PCB in fritzing. You'll have all the files and that means you could also make a four key thing or a eight key thing or a nine key, whatever you want. You'll be able to adjust those files or you can just get one made. If you don't wanna mess with a file you can just submit it to your favorite PCB house. So here you can see I've set up the top row here to be one through seven. So if I go into my little terminal view down here you can see these are just gonna type one, two, three, four, five, six, seven. We also have, and this is actually something I'm looking for some thoughts on from other people. The Pico can read all 21 buttons simultaneously. So we can press them all down or so quickly it might as well be simultaneous. And in fact if I show TTY.USB, if I show what, oh I have too many things connected, hold on. All serial ports at once. If I show what's going on in here I am not, so this is the serial output. Whenever I press a key I kind of report it. So you can see here if I press all seven of those we get zero through six, so that's seven keys. If I mash them all zero through 20. So it knows they're all pressed and it knows when they're all released. But USB, HID is only doing six key rollover which is fine for my needs. I'm not using this like in heavy gaming mode where I have a multi key. But I'm kind of curious if that's something that can be improved on. Can we do N key rollover and essentially allow unlimited keys to be registered by the USB HID at once. So if anyone has expertise in that please discuss in the chat, I'm kind of curious. And then you'll see here if we, hey how do I get out of you? A, K, kill, yes. Hey, A, K, yes. I've broken that thing. Okay I'll just type up here. Just not gonna let me type, let me put that away. So if you see down at the bottom here, actually I'll leave this open so you can see. I'm just gonna put in a comment. So here's the other keys. Oh I've broken things, hold on. Maybe, there we go. Okay so now it's working. So here's the other stuff, RGB. This is actually acting like the up arrow. Put that in view. This is acting like the down. This is acting like the right. This is acting like the left. So the way that's done is this code right here. I'm pressing a key and what it is in the key map is keycode.backspace, keycode.space, left arrow and so on. If you wanted to do let's say a control C, that's this, keycode.gui and keycode C. So it'll send multiple things. That's how you do like shift if you want an uppercase. You can do really big macro things. If you're using some software that allows you to have control, alt, shift, meta, thingy, you can do that. You can send a big string of these all at once. Oh there was talk about NQ roll over in the YouTube chat. Sorry, hey YouTube chat, I have abandoned you. Let's see, I'm gonna catch up real quick. Hello from the British Canals. Hello. Leah, Leaf Marusin asked what CAD software? That's Rhino, someone answered Adam Rhino. Yes, thank you. USB Mechanical Keyboard, the N key roll over. Does it do N keys connected over USB? Okay, so someone is doing that, that's great. Cause I know that at one point that was the sort of thing you could do with a PS2 keyboard that you couldn't do over USB. But it sounds like that's solved in some ways. So that's cool, good to hear. What else, that is, that's my key map. And then I just have my array of switches so I can scan through that list. I set all the switches to be not pressed at the beginning so I can remember that state. And that's how I can send an up or a down if you wanted to do something different when you release. Yeah, Adam says button for taking screenshots on Mac. Yeah, I use command shift four a lot which gives you a drag window for making screenshots. So this could be a nice, in fact you could find your print screen key and use it like a real modern print key. Print key. Print screen, print screen, print screen key. So easy to say. And then this is what actually happens during the main loop of the program. So for button in range 21, I have 21 keys so I scan through that list and you could make this a variable if you were a good programmer and thoughtful. And then I'm checking the switch state. If the switch button is zero, that means it's not been pressed. It's that state that I stored up here. Then we're gonna press it. And when we press it, it's checking that the value is, you've pressed it. So this is the pull up resistor. Means that it knows that you've pressed it when it goes low, pull goes down. And then we check the key in this array and we press either key if it's gonna be a key or consumer control if it's not. So we'll either send a keyboard press from the key map or a send from for CC. And that, I think the reason I had to do that is they were just a little different because of this star here. And I honestly don't remember why. This was something I had to solve back on the Itzy Bitsy Keybow. I don't remember why anymore. I should figure out why that was. Here I tell myself in just in the serial output what I've pressed and then we change the state so that it knows when you lift it again. And that's what allows you to press one key. Let's see, is this thing active? Yeah, so I don't know what that junk is at the bottom there, but if I press zero and then I press one and then I release zero and I release one, it knows the state of those guys. That's how that works. Okay, so that's the code that's running on there. And then I didn't hear if Scott was coming on or not. He must be going tomorrow, so that's good. So we have a little extra time. What I wanted to do is show the 3D model version of this that I've made. So this is the sort of mixed laser cut acrylic plus 3D printed creamy center plus laser cut acrylic. Scott's tomorrow this week. Thank you, Mr. Certainly. Thursday next week, okay, good, I won't go long next week. The thing is a lot of people would rather do a 3D printed version because it's much more common to have 3D printers than it is to have laser cutters. And you can send off for laser cut stuff if you use like Pinoco, a design house that'll laser cut your stuff for you or if you can go to a space that has one, like a maker space, hacker space. But 3D printing, very popular for this kind of stuff. So I've got this one going as well. So you can see here, as I mentioned, this drops in. This is not the version with the nubs. Oh man, I love that purple against the green. By the way, speaking of color stuff, I had this thought that I was gonna use some pink acrylic that would look real cool and pastel. And I knew I had some pink acrylic that I got for a project a while ago and didn't use. I broke it out. And I don't know if the color will translate. This is not quite accurate. On camera, it's looking a little better than it is. In real life, it looks like a medical device. It's like this very gross, fleshy pink. I'm not okay with it. So I'm not doing the pink laser cut acrylic. But it's purple, I love. Purple's looking rad. So next step on this will be the key switches, switch plate, solder down, everything. And then it just has, it's a two-piece construction. So this will go on top. The fact, let's see, can I pull? What can I pull in for that? I can at least drop in this paper switch plate that I started putting together so you can see a key switch or two on top of there. So it'll look like that. So you can see much lower. So we get much prouder keys from the surface. I might raise that up a little bit. I don't know if I love that. I think I kind of want it there. So I've got like a millimeter and a half to raise that up. So you can see this actually, right now, I have the PCB screwed in from the bottom. I'm gonna try to eliminate that with those pegs. And then the way that this will go together, the way I have it planned is I'm gonna create some of those internal registrations, like I mentioned, or just a full lip or a snap fit rim, something like that. So that'll click in real nice. You're always gonna have that seen, but then I'm gonna screw in some of these nice, actually these ones might be too long. No, these are perfect. Okay, so I've got, let me hold that up where you can see it. Those are too long. Okay, let me get the other ones. So those are 20 millimeter. I have some 16 millimeter M2.5 socket head. Screws and they are pretty much exactly those ones I was just showing you on McMaster car. You could also, if you wanted to, you could get, you could use some of the heat set inserts. Thought I had one right there. I don't, let me grab it over here. So if you get a matching heat set insert, you would make this hole a little bigger. I forget what the size is on this, like three and a half millimeters or something like that. And those with your soldering iron, you can press that down in there and it stays nice and secure. It gives you something to thread into. I'm actually doing just the sort of old school, if you make the hole exactly the size of the screw without any extra clearance, you get, you get to tap. This way you can see it. You essentially get to tap the PLA plastic with the screw. It works pretty well. It's one of the shorter ones, yeah. So if we like that, get out of the camera's way. And so I just made that a, that's not just a hole at the top just so that this would be a little stronger. That's a solid, or not solid, I've got like 10% gyroid infill I think. But that'll work pretty well. And it's again, it's just gonna tap into the matching hole down at the bottom. So let me screw, I'll screw one of these in. I won't screw them all in on camera because that'll be like watching paint dry. As you can see there, this will work pretty well. It's not something you'd wanna screw and unscrew a million times, but a few times is fine. And like that. Mm-hmm, mm-hmm, mm-hmm, mm-hmm, mm-hmm, mm-hmm. Don't break it, so be gentle when you get to, there we go. So you can see, oh, I got a little further to go. This is where I'm gonna crack it probably. I should have held that down tight. Yeah, I should have held this down tight. I don't wanna break it by trying to force that right now. Let's watch it closely and see if we can get it in. Yeah, there we go. So that works pretty well. You know, it might even be worth putting one in. Putting one in the middle because that would really seal up that seam pretty well. No gaps, be nice. And that's roughly what it's gonna look like. For this one, I think I'm gonna, by the way, people care a lot about key switches. I'm using Cherry MX Black on this button box guy here just because the black ones are pretty stiff. And if you're clicking a definitive button press I just need to set an endpoint, boom. Those work pretty well. I didn't feel like putting clicky keys in because my regular keyboard is MX blues, very clicky. I got some reds in there just because that's what I was goofing around with. But I think for this next one, I'm gonna do super with these DSA key caps. I'm gonna do super light, fast silvers, Cherry MX silvers. So just a little, that's a little bit of love for all the key heads out there who love their key switches. They're all into much fancier things than I'm not gonna take them apart. I'm not gonna lube them up or anything like that. Anyway, that's the design. I also adjusted this a little bit so that we'll fit USB cables up to a pretty beefy size. Should fit pretty well. And I think that'll give us pretty good stability. Having, again, this grid down here gives us some freedom there. Let's see, any other questions that anyone has? This has been really fun putting this together. And I look forward to seeing what people make. I'll put some links in the guide to where you can get your key switches, where you can get some key caps if you're not familiar with that whole world. Some info on getting your PCBs made. Oshpark and JLCPCB and PCBWay are all some good places to do that. I was also thinking of making a little four key one that'll use, let's see, I don't have any designs of it, that'll use the Pico sideways with three keys under it and a two U key next to it, like a big, you know, enter key kind of sideways. So that one, I may make it single-sided so that you could etch it if you want or you could mill it if you have PCB mill. So I may just put all the traces on the bottom so you would use through-hole version of the footprint for the Pico and through-hole the switches and then all the soldering takes place on one side. Hugo says, links to where to find Pico RP2040s these days? I don't know, in fact, I'm gonna pretty soon have to dig the one out of the cover of the HackSpace magazine that I got because I'm running out of Picos. I'm now regretting some of my experiments with adding header pins like this one here, which is nice for trying stuff out but now I wanna use it on a keyboard. So let's see, I should get back over to YouTube. Any questions there? Oh yeah, someone asked, I wanna make a custom mechanical keyboard using the Pi so I wanna know if the N-key roller was possible in this. Theoretically, it's possible to emulate a complete keyboard with a Pico or the microcontroller. Yeah, so one issue is that, I mentioned this last week, I am using the fact that the Pico has 26 or 27 available pins so that this PCB I made, you'll notice it has no diodes on it. There's no diode matrix. It's not a scanning column and row matrix. It is purely direct reading of those pins, which is impractical for any more than 27 keys because we just don't have enough GPIO. So you would, even on very small microcontrollers, you can do full keyboards, 100 keys if you want by using a scanning diode matrix. And so I am not doing that here. I'm keeping this one dead simple because I was doing a macro pad. You could do a number pad. You could do a little two-button mute switch thingy. All of those things are easy to do with direct pins not using a matrix. Also, question about keycaps. So these ones are from Devlin, DEV-LIN in the UK. They're called Z-Series. Someone else sells them called UK keycaps and they call them teletype, or they put that word in there. They're not available right now from what I can tell, but they do small batches. And if you keep an eye out, they might come back into production. And these ones are DSA profile keycaps and they're just some generic inexpensive ones that I got pretty cheaply on eBay, on Amazon, rather. So I'll put links in the guide to where to find stuff. But I think that's gonna do it. If there aren't any other questions, we're about 10 minutes over, so I should probably get going, but I'm so excited about this project. Can you tell? Adam Bright says you could also hack a controller from an existing keyboard for sure if you wanted to do different things, but I already like the key switches and all that that's in there. Yes. Yeah, Adam has seen a lot at mega keyboard kits, so there's a firmware for doing keyboards on like a Arduino micros, I think, a really popular one for this, and QMK is the firmware. There's also a firmware for Python-based boards called KMK, and that should run on this, but I don't know. I think there are examples of people who've been doing it on the Pico, but I don't know if it's happy with the direct pins. It may require the scan matrix. I'm not sure. I'll look into it. The only thing I was thinking with my software here, it's super simple, but the one thing that might be fun is to make the key mapping an external text file so that it's already so easy to just edit the Python file that I probably won't do that, but it would be kind of neat for me, learning experience-wise, just to make a little sidecar file there that just shows key zero does this, key one and so on to abstract it a little bit. Yeah, Hellweaver666 says KMK does run on Pico, very cool, and good. All right, that's all I've got then. Thank you for stopping by and watching the show. I'm gonna be doing another episode next week. Who knows on what? I'm gonna be doing a product pick of the week on Tuesday, so stop by for that. And that's gonna do it. So afraid of food industries, I'm John Park. This has been John Park's workshop. I'm gonna go play around with my keyboard now. Bye, everyone.