I l put a ton of work into this one so definitely let me know what you think! You can find the ScottoKicad library here: github.com/joe-scotto/scottokeebs/tree/main/Extras/ScottoKicad If you have questions on anything feel free to ask down below or join my discord: discord.gg/ftAUApaQs4
Not interested in KBs, but your walkthrough on KiCAD is better than most dedicated tutorials. An in depth tutorial of kicad would be amazing with your style of to the point instruction.
EE and board designer here, you're style is pretty good but I have a few minor nitpicks. First, you're using global labels for your rows and columns. this isn't a huge deal, but net labels are preferred since they are just the scope of the page. You also directly connect two components together in the schematic, but best practice is to leave a grid unit of space and connect them with a wire so that it is clear that they are not one part. This also applies to wires coming out of any pin, so not connecting the labels straight to the MCU pins or running a wire straight across the switch pins.
@@thisyologuy2 layer boards are the standard for almost any manufacturer, so unless you're planning on producing hundreds of thousands of boards you're probably going to spend more money because single-layer boards are considered "unusual" options thus have to be in a separate production line. Ground planes should be stitched together as often as possible, to reduce return path lengths and impedances. I stand with what Zach said, although using global labels in single-schematic projects may make them kind of clearer to see in the global scope.
@@riccardoiacob4560 unless you have a cnc machine for prototypes then it makes sense to put components on the back plate for through hole components. i got this advice from a teacher along with the ground mask and making the traces as thick as you can to make for eazy soldering
As an avid UA-cam video consumer, this is now my favorite video on the entire platform. Thank you! I’ve been trying to teach myself KiCAD for a long time now so I can fabricate some more stable/professional boards for a few custom, Home Assistant-integrated sensors I created and hand wired on perf board, but I kept getting stuck. Your video has shown me how to properly get started, and planted the seeds of a desire to maybe design my own keeb in the future rather than using the (amazing) open source boards I’ve built to date. Maybe I can finally contribute back to the open source home automation and keeb communities with my own designs now. I cannot express how excited this video has left me, nor can I sufficiently convey my gratitude. Thank you again!
For the "Select item(s)" it mean you can select several items at once, if it is a capitalized letter inside a pair of round brackets with a space between the word and the brackets it is a hotkey. If you hover over the tenth icon from the bottom you will see that it has the S hotkey "Add a hierarchical sheet (S)". They are a bit indecisive in how they label buttons though. The last icon "Delete clicked items" do not use the "item(s)" notation. Not trying to sound ungrateful or rude, just giving the reason for why S doesn't work for select. I love the video, I wanted to get into this myself and this video is a great place to start. Thanks for taking the time to make this!
Great work. I was watching a few other peoples videos about how to do this and they didn't go into as much detail as you did on the routing. Very appreciated. Also thanks for making and sharing your kicad components list. You've almost taken all the guess work out of how to do this.
i wish i had this when starting out, I self-learned with ai03's old guides a few years back and still found a few neat tricks I haven't seen before. Thanks!
Thank you for sharing. I recently built a full keyboard for a project, which I designed with KiCad7. Might I suggest a couple of enhancements to your design? 1. You are connecting the rows and columns directly to your microcontroller. For a 3x3 grid not too much of a problem, but for mine there are 5 columns and 8 rows, so this could start eating up the GPIOs, and also need a lot of connection wires. I've used 1 74hc164 and 2 74hc165 shift registers. The 164 is used to one-at-a-time pull the (logic low) columns low, and the 165s are used to collect the button press data, serialize it, and send it back to the microcontroller. 2. In your design, the microcontroller needs to constantly monitor the state of the pins. I've used a 'trigger' pin which works like this: I've added 8 diodes, cathodes connected to each of the rows, anodes tied together and pulled high, which is effectively a cheap 8 input OR gate. The anode of the diodes is the trigger pin, which will go low if 'any' of the buttons are pressed and high if 'all' are released. This signal is used for 2 external interrupts on the microcontroller, one which fires on a falling edge, and the other on a rising edge. So, when a falling edge is detected an interrupt is triggered, which causes the microcontroller to send 5 bytes to the 164 in rapid succession with a short delay between them, causing one of the 5 columns to be pulled low for each. IFF the 'pressed' key is sitting on one of these columns, then the signal will be passed through to the corresponding row and is captured by the 165. The 165 is read after a short delay for each byte. The short delay allows for the detection of 'multi button' presses. I have 6 data wires plus VCC and GND, and the microcontroller need not constantly monitor the keyboard. The rising edge signals that the key(s) is(are) released, whereupon the microcontroller continues to monitor for 'double', 'triple' key presses etc.
@@gillsejusbates6938 1. I'm kind of a minimalist ... I mean why use a $5 uController when a $0.50 one will do just fine? I don't know what you mean by "duplex (my) matrix." As mentioned in my comment, my keyboard has 5 columns and 8 rows 'multiplexed' with one 74hc165 for the rows and one for the columns. 2. So, what I've achieved is a keyboard which allows both 'single/double/triple/quadruple' presses (where 1 or more keys are repeatedly pressed) and also 'multi-key' presses (where more than one key is pressed simultaneously), and/or a combination of these. This happens with frames as follows: - A frame is from the first detection of a rising edge (a key was pressed) until the falling edge is detected (all keys have been released.) - Any key press starts the frame which causes a timer to kick in and wait for a 'human' amount of time. - Typically, for 'multi-key' presses, the difference between 1 key being pressed and another will be ~10 to 20 ms. But a 'single/double/triple/quadruple' press (i.e. the amount of time the button is actually held down), will typically be 200+ ms. So, at ~80 to 100 ms I'm pretty much guaranteed to have a stable press, so I take a measurement at this point by polling with the 74hc164 (MUCH faster than 1 kHz) and reading the output of the 74hc165s. This also addresses your concern about debouncing ... which is 'unnecessary' because everything will have settled down by this point. - After measuring the keys at the 80 to 100 ms mark, I then wait for a falling edge to end the frame, and then repeat the process in case this is a 'multi-key' press, or a 'time out' of around ~300 to 500 ms ends the session. - Data is accumulated and at the end of the session, it is evaluated, and stuff is done about it. - In the meantime, the uController can wait for days or weeks if necessary, in sleep mode, consuming minimal power. I appreciate that beginners want things nice and simple ... but not everyone is a beginner. Some of us want things to actually happen.
Hey Joe, I just wanted to let you know you really helped me out with this video. A lot of the things you showed me, really made me have KiCAD click for me. Thanks!
Great guide Joe, I know kicad already but I watched it to see if it would be a good guide to recommend. I think you explained every step really well so I'll be recommending this guide moving forward. Thanks!
Very good, easy, and clear to follow tutorial. You couldn’t have done a better job! The only thing I would mention worth adding is the KLE placer plugin, which is pretty much necessary for getting the key footprints in the right location for full sized keyboards. But overall this is a brilliant intro video!
@@joe_scotto Noah Kiser does a really good job at explaining how to use it, I included the link that starts at him using the tool, but for install instructions go to ~1 : 05 ua-cam.com/video/6Z49bynRqj8/v-deo.htmlsi=2ZARvlQ_-5lMZ-w2&t=2556 Great work again! I think the software and case building episodes in this series are really going to be interesting! Can't wait!
Fantastic video! Great entry level explanation and guide for beginner keeb DIY:ers. Side note: Copper fills are usually used for grounding or EMI reduction, basically it only becomes necessary when antennas or high speed signals are involves. Completely unneccesary on boards like this where the MCU and USB is on a separate board, but yes it looks pretty :)
Yeah, the copper fill I kept simple because it's something that confused me when I first learned it. I want to do another video eventually covering on-board MCU circuits with direct wiring. That would allow me to show how you can use a filled zone in order to automatically connect all the direct pin switches to ground without having to run traces.
I highly recommend the excellent "Keyboard footprints placer" plugin for Kicad. It automatically places diodes, switches and stabs on the PCB according to the KLE json. Perhaps not that necessary for smaller projects like this pad, but will save a lot of elbow grease when designing 40%+ keyboards. Edit: grammar
I have been trying to design my own PCB for a 2key macro pad and this is exactly what I was looking for! Thank you, I found it so much easier to follow than all the other tutorials out there.
This is awesome work. I'm a complete novice to this field and was still able to follow along. Great job keeping it concise while still covering just about everything one could need to know. Now to figure out how to wire in some rotary encoders, can't be tooo complicated...
Thank you, Joe. A lot of coffee and not much sleep and i made a little test piece that i just sent off to be made to see i got it all right. I've never done anything like this before, so thank you lots and lots for taking the time to put all this together. This completely PCB/custom-keeb newb really appreciates all you do on this channel. 😀
Thanks for the really cool tutorial! I just Handwired my first keyboard not too long ago and thought that I had to try to do one with a PCB instead, and this really helped. Now I just need to find kicad files for rotary encoders
They seemed to have changed it in version 8 where s is no longer the grid origin hotkey for the PCB editor. Instead you have to go Toolbar -> Place -> Grid Origin
They did along with changing other hotkeys but luckily you can remap them in the settings. Version 8 also has a bunch of other issues and I've been telling people to avoid it for now until they're fixed.
nice,... i like how it's a short but concise video and easy to follow. I've been meaning to do this for quite a while, maybe i'll give it another shot now.
I was struggling so much trying to add footprints to ergogen that I ended up ordering an existing pcb design (corne to be specific), but you basically demystified kicad for me. If I had watched this video before I think I would stick to making my own design. Well, next time for sure!
Thanks for this vid. Your other vids on OLED and handwiring helped me build my own keeb from scratch (made a few vids on those). Your vids are always just nice to watch and very engaging. Do you think you'll make a PCB design video for your ergo scotto keebs? I'm just wondering how you'd make the screw holes, aligning rotated switches and making the casing and how the design from Kicad would be used in fusion360, or just use Kicad 100% for the case design, etc.
Glad you enjoy them! I don't think I'll make a video talking about my ergo boards as PCBs but I might do one using a tool that converts a KLE to Kicad that many have suggested. I'm currently working on a second PCB video that will go over some more advanced things, specifically for direct wiring but will include mounting holes in there to give people an idea.
Really great guide! I've been able to design a custom keyboard for the first time. Only thing missing is when a manufacturer is asking for a BOM (which I have) and a CPL file (Pick&Place File); I have no idea what the CPL file is but I'm sure google will help :)
Thank you very much for what your video contributes, but I am still pending the process of ordering the PCB, since I like the idea of designing and modifying, for example the Corne V3 and making a personalized version, but I am stopped when putting the order. I searched on the Internet and I have not been able to find the ideal one, for example, the thickness of the PCB, the amount of grams of copper (you explained the ideal termination for those of us who use a common soldering iron) and countless other options that JLC or PCB gives you at time to order. Thanks again for your content
@@joe_scotto I ask because I recently bought a Corne v3 kit to assemble and I made the orientation error when I soldered one of the LEDs, and when I desoldered the pad/track came out. Why does that occur? little grammage of copper? too 'cheap' termination of the pcb? Greetings
I am almost finished doing my first pcb keyboard board and when i try to finish it with the plugin it says this: 'FOOTPRINT; object has no attribute 'HasProperty'. Can anybody help me fix it?
This is caused by Kicad 8 and the author of the export plugin has fixed it but it's not implemented into the official plugin manager yet, that said you can do the following to fix the error: 1. Download this (V4.0.0 of the plugin): github.com/bennymeg/JLC-Plugin-for-KiCad/releases/download/4.0.0/JLC-Plugin-for-KiCad-4.0.0.zip 2. Open Kicad -> Plugin and Content Manager -> Installed -> Uninstall Fabrication Toolkit (If you installed it before) 3. Install from File -> Install the ZIP you downloaded 4. Should be fixed, try exporting again.
Joe, ive been wracking my head on this for 3 hours, whenever i go into 3D view all i see is the board/vias/traces, i dont see any other the actual components, (switches/diodes). i can see the CONN port i added for Dupont connectors that was baked in with the software but none of the 3D files are there
I followed the setup exactly but when I press A to open symbol library all of the Placeholder symbols are missing, only Placeholder _TRRS is there, anyone have an idea how to fix this?
I'm really looking forward to the firmware part as that's what I'm the most uncertain about. I'm building a custom keypad for gaming and trying to figure out what microcontroller I should use so hopefully you will touch on that as well on that video.
Great Video Scott. Always appreciated your detailed videos. You have really helped me on the software side of things i.e. setting up vial for custom boards. And Now that you have delved into the cad side of things i am quite thrilled tbh. Would love to see an onboard chip design guide for atmega32u4 with type-C port integration. I know its very handy to have a swappable pro micro but an onboard mcu is quite professional as well 😊 Keep up the good work. Cheers.
That’s one of those things you need to decide based on your design and controller choice. You need enough pins on your controller for each column and row, so 6 for a 3x3 matrix (3 columns and 3 rows). The traces then need to be ran to where you defined them in your schematic but you can choose which pins as long as they’re GPIO.
Hey Joe! Just had a few questions: I downloaded the GitHub but the files inside it are completely different! So, I used OctoPart to download the first result for "Mx Switch" It worked great and I completed ergogen and schematic with 0 electrical rules check violations. In PCB Editor, I get the layout down and everything wired up.. Then it says the switches aren't connected. So I checked the schematic and my best guess is that the Green Dots on the wires (junctions) are ruining the connections? Thanks for any help!!
Does anyone know of a video like this but for backlit mechanical keyboards? They make "rgb" switches. They make backlight compatible keycaps. It should be possible to make one. Would be nice to see if someone else has figured out all the details on building one of those. It seems like the led would go under the key switch. On a g910 keyboard, the leds are directly under each switch and the metal sheet that the switches snap into is raised up just far enough for there to be room under each switch for an led. Individually addressable led lights seem to be too hard to get in quantity (your only choice is to desolder them from light strips and they aren't even on mouser) but I just want to find a way to home build a solid color backlit mechanical keyboard.
Thanks for the effort but it seems the symbols are not compatible with KiCAD 7 and 8. The error massage is this: "Expecting '(' in ....ScottoKeebs_sym', line 7, offset 1." I opened this file and compared it with a standard symbol files from KiCAD and I noticed your file is in a totally different format that those standard ones. So I can't import your libraries. Am I doing something wrong? Thanks anyway for your great job and sharing it.
I’m not sure what’s going wrong but I and others are using them in both Kicad 7 and 8. I would recommend joining my Discord and seeing if anyone there knows: scottokeebs.com/discord
@@joe_scotto I tried but I can't manage to create an account on Discord. Your Sym file is in HTML but standard ones are not. I expect KiCAD to do required conversions but it fails. By the way, I just installed KiCAD. Shall I do anything else before importing your library?
@manouchehrmail Oh, you’re downloading the files wrong. Go to the link below, click the green “Code” button, and download it as a ZIP. Then find the ScottoKicad folder and use that. scottokeebs.com/github
This is a fantastic video, it's clear you put a lot of work and effort into it and for that, many thanks. Learned how to properly place elements in the PCB editor (finally!). I cloned your repo for the footprints and 3d models and have a quick question: how do you get to preview the mx switches in the 3d preview? I selected the same footprint as you did in the video and when I toggle the throughhole components on and off, nothing shows. Are those something extra? Quick note, not sure if you're aware, but you can do basic math inside KiCad, like 9 / 4 in the custom grid layout dialog box instead of using spotlight and copy pasting solutions.
Glad it's helpful! It sounds to me like your path isn't configured properly. You need to make sure that the "SCOTTOKEEBS_KICAD" path is set to the root folder where "ScottoKicad" is. If that's not configured properly, the library won't know where to look. It's also possible the footprint you chose doesn't have them but it sounds like you're using the same as me. Specifically, hotswap only has the SMD sockets and not the switches.
i don't think there is a hotkey for select. when it say item(s) i think it's saying you can select plural. note the rest of the hotkeys are noted with a space and then a capital letter in parenthesis
@@mysterd.60 Thanks for that. I was able to figure out how to add one through trial and error, but the video you've shared explains what I was doing lol.
The plated ones have copper so both the hotswap pad and hole connect making it easier to route the traces. The non plated just have copper on the pad but not the hole.
Whenever using the Arduino, when running the design rule checker I always get 50-ish errors consisting of "Silkscreen clipped by board edge" and "Silkscreen clipped by solder mask". I looked it up and some sources said that it should still be fine im still uneasy about it. Thoughts?
I pick a different controller but a Raspberry Pi Pico for example should have more than enough pins for most designs. There are also more advanced matrix designs such as the Japanese Duplex but I haven't tried it before.
I l put a ton of work into this one so definitely let me know what you think! You can find the ScottoKicad library here: github.com/joe-scotto/scottokeebs/tree/main/Extras/ScottoKicad
If you have questions on anything feel free to ask down below or join my discord: discord.gg/ftAUApaQs4
thanks for sharing this and making it accessible for lot of the ones just getting into this hobby.
Fantastic! I didn't know I wanted to even build a keyboard until this channel popped up.
How did you set the dark theme?
Anyway nice tutorial! Keep going :)
Search up “Dracula Kicad”
Next video link please
Man, this walkthrough has been so helpful with a recent project. I've been back here probably like 50 times by now. Thank you so much for this.
Glad it’s helpful :)
Not interested in KBs, but your walkthrough on KiCAD is better than most dedicated tutorials.
An in depth tutorial of kicad would be amazing with your style of to the point instruction.
I'm glad it was helpful! I plan on making more Kicad videos in the future that might be of interest to you :)
EE and board designer here, you're style is pretty good but I have a few minor nitpicks. First, you're using global labels for your rows and columns. this isn't a huge deal, but net labels are preferred since they are just the scope of the page. You also directly connect two components together in the schematic, but best practice is to leave a grid unit of space and connect them with a wire so that it is clear that they are not one part. This also applies to wires coming out of any pin, so not connecting the labels straight to the MCU pins or running a wire straight across the switch pins.
@@thisyologuy2 layer boards are the standard for almost any manufacturer, so unless you're planning on producing hundreds of thousands of boards you're probably going to spend more money because single-layer boards are considered "unusual" options thus have to be in a separate production line. Ground planes should be stitched together as often as possible, to reduce return path lengths and impedances.
I stand with what Zach said, although using global labels in single-schematic projects may make them kind of clearer to see in the global scope.
@@riccardoiacob4560 unless you have a cnc machine for prototypes then it makes sense to put components on the back plate for through hole components. i got this advice from a teacher along with the ground mask and making the traces as thick as you can to make for eazy soldering
I need help with finishing my pcb for a hs keyboard
As an avid UA-cam video consumer, this is now my favorite video on the entire platform. Thank you!
I’ve been trying to teach myself KiCAD for a long time now so I can fabricate some more stable/professional boards for a few custom, Home Assistant-integrated sensors I created and hand wired on perf board, but I kept getting stuck.
Your video has shown me how to properly get started, and planted the seeds of a desire to maybe design my own keeb in the future rather than using the (amazing) open source boards I’ve built to date. Maybe I can finally contribute back to the open source home automation and keeb communities with my own designs now.
I cannot express how excited this video has left me, nor can I sufficiently convey my gratitude. Thank you again!
hey how to add rotary encoder on pcb
For the "Select item(s)" it mean you can select several items at once, if it is a capitalized letter inside a pair of round brackets with a space between the word and the brackets it is a hotkey.
If you hover over the tenth icon from the bottom you will see that it has the S hotkey "Add a hierarchical sheet (S)". They are a bit indecisive in how they label buttons though. The last icon "Delete clicked items" do not use the "item(s)" notation.
Not trying to sound ungrateful or rude, just giving the reason for why S doesn't work for select.
I love the video, I wanted to get into this myself and this video is a great place to start.
Thanks for taking the time to make this!
Just wanted to say your channel is a godsend. Recently got into this stuff not too long ago and your channel is a phenomenal resource
Great work. I was watching a few other peoples videos about how to do this and they didn't go into as much detail as you did on the routing. Very appreciated. Also thanks for making and sharing your kicad components list. You've almost taken all the guess work out of how to do this.
i wish i had this when starting out, I self-learned with ai03's old guides a few years back and still found a few neat tricks I haven't seen before. Thanks!
Thank you for sharing.
I recently built a full keyboard for a project, which I designed with KiCad7. Might I suggest a couple of enhancements to your design?
1. You are connecting the rows and columns directly to your microcontroller. For a 3x3 grid not too much of a problem, but for mine there are 5 columns and 8 rows, so this could start eating up the GPIOs, and also need a lot of connection wires. I've used 1 74hc164 and 2 74hc165 shift registers. The 164 is used to one-at-a-time pull the (logic low) columns low, and the 165s are used to collect the button press data, serialize it, and send it back to the microcontroller.
2. In your design, the microcontroller needs to constantly monitor the state of the pins. I've used a 'trigger' pin which works like this: I've added 8 diodes, cathodes connected to each of the rows, anodes tied together and pulled high, which is effectively a cheap 8 input OR gate. The anode of the diodes is the trigger pin, which will go low if 'any' of the buttons are pressed and high if 'all' are released. This signal is used for 2 external interrupts on the microcontroller, one which fires on a falling edge, and the other on a rising edge.
So, when a falling edge is detected an interrupt is triggered, which causes the microcontroller to send 5 bytes to the 164 in rapid succession with a short delay between them, causing one of the 5 columns to be pulled low for each. IFF the 'pressed' key is sitting on one of these columns, then the signal will be passed through to the corresponding row and is captured by the 165. The 165 is read after a short delay for each byte. The short delay allows for the detection of 'multi button' presses. I have 6 data wires plus VCC and GND, and the microcontroller need not constantly monitor the keyboard. The rising edge signals that the key(s) is(are) released, whereupon the microcontroller continues to monitor for 'double', 'triple' key presses etc.
@@gillsejusbates6938 1. I'm kind of a minimalist ... I mean why use a $5 uController when a $0.50 one will do just fine? I don't know what you mean by "duplex (my) matrix." As mentioned in my comment, my keyboard has 5 columns and 8 rows 'multiplexed' with one 74hc165 for the rows and one for the columns.
2. So, what I've achieved is a keyboard which allows both 'single/double/triple/quadruple' presses (where 1 or more keys are repeatedly pressed) and also 'multi-key' presses (where more than one key is pressed simultaneously), and/or a combination of these. This happens with frames as follows:
- A frame is from the first detection of a rising edge (a key was pressed) until the falling edge is detected (all keys have been released.)
- Any key press starts the frame which causes a timer to kick in and wait for a 'human' amount of time.
- Typically, for 'multi-key' presses, the difference between 1 key being pressed and another will be ~10 to 20 ms. But a 'single/double/triple/quadruple' press (i.e. the amount of time the button is actually held down), will typically be 200+ ms. So, at ~80 to 100 ms I'm pretty much guaranteed to have a stable press, so I take a measurement at this point by polling with the 74hc164 (MUCH faster than 1 kHz) and reading the output of the 74hc165s. This also addresses your concern about debouncing ... which is 'unnecessary' because everything will have settled down by this point.
- After measuring the keys at the 80 to 100 ms mark, I then wait for a falling edge to end the frame, and then repeat the process in case this is a 'multi-key' press, or a 'time out' of around ~300 to 500 ms ends the session.
- Data is accumulated and at the end of the session, it is evaluated, and stuff is done about it.
- In the meantime, the uController can wait for days or weeks if necessary, in sleep mode, consuming minimal power.
I appreciate that beginners want things nice and simple ... but not everyone is a beginner. Some of us want things to actually happen.
Hey Joe, I just wanted to let you know you really helped me out with this video. A lot of the things you showed me, really made me have KiCAD click for me. Thanks!
Glad it helped :)
Great guide Joe, I know kicad already but I watched it to see if it would be a good guide to recommend. I think you explained every step really well so I'll be recommending this guide moving forward. Thanks!
Very good, easy, and clear to follow tutorial. You couldn’t have done a better job!
The only thing I would mention worth adding is the KLE placer plugin, which is pretty much necessary for getting the key footprints in the right location for full sized keyboards.
But overall this is a brilliant intro video!
I’ll have to look into that plugin. I’ve started designing my handwired boards with Kicad but a tool to convert KLE would be awesome!
@@joe_scotto Noah Kiser does a really good job at explaining how to use it, I included the link that starts at him using the tool, but for install instructions go to ~1 : 05
ua-cam.com/video/6Z49bynRqj8/v-deo.htmlsi=2ZARvlQ_-5lMZ-w2&t=2556
Great work again! I think the software and case building episodes in this series are really going to be interesting! Can't wait!
Thanks
You can directly type "19.05 / 8" in the grid settings and it will update the correct number
Oh wow… I’m fairly certain I tried this before and it didn’t work but just now I tried it and success!
Thank you!
you files and linked 3d files are really helping me set up kicad for keyboards. i looks like it was a lot of work and thank you for it!
Fantastic video! Great entry level explanation and guide for beginner keeb DIY:ers. Side note: Copper fills are usually used for grounding or EMI reduction, basically it only becomes necessary when antennas or high speed signals are involves. Completely unneccesary on boards like this where the MCU and USB is on a separate board, but yes it looks pretty :)
Yeah, the copper fill I kept simple because it's something that confused me when I first learned it. I want to do another video eventually covering on-board MCU circuits with direct wiring. That would allow me to show how you can use a filled zone in order to automatically connect all the direct pin switches to ground without having to run traces.
@@joe_scotto That would be awesome to see!
yup thats correct. it would have worked really well for an example with a direct wired macropad vs row col.
I highly recommend the excellent "Keyboard footprints placer" plugin for Kicad. It automatically places diodes, switches and stabs on the PCB according to the KLE json. Perhaps not that necessary for smaller projects like this pad, but will save a lot of elbow grease when designing 40%+ keyboards.
Edit: grammar
thanks for sharing this will surely check it out.
I'm the author, glad you liked it
@@_adamws thank you for this plugin! This is golden!
@@_adamws thank you for this.
This literally came out exactly when I needed an easy Kicad guide, thanks a million! Loved the video and found it supremely helpful:)
I wish this existed when I first started designing keyboards. This is extremely straight forward. I learned everything the hard way. Trail by fire.
Thank you for sharing your Kicad Libairy. It was a massive help in designing my first PCB
I have been trying to design my own PCB for a 2key macro pad and this is exactly what I was looking for! Thank you, I found it so much easier to follow than all the other tutorials out there.
Glad I could help!
This is such a niche video but at the same time so unbelievably targeted to me. I cannot thank you enough for your effort!
You’re welcome, glad I could help!
This is awesome work. I'm a complete novice to this field and was still able to follow along. Great job keeping it concise while still covering just about everything one could need to know. Now to figure out how to wire in some rotary encoders, can't be tooo complicated...
I love the pace that this video is at. Thanks for the work!
Thanks!
Thank you, Joe. A lot of coffee and not much sleep and i made a little test piece that i just sent off to be made to see i got it all right.
I've never done anything like this before, so thank you lots and lots for taking the time to put all this together. This completely PCB/custom-keeb newb really appreciates all you do on this channel. 😀
This was extremely useful and helpful for me. I would love to see a more in depth video with a larger/more complex board if possible. Thanks
Much easier than i was anticipating. Of course thanks to your provided libraries and helpful tips. Probably something ill try out in the future.
I have no words... This is just amazing and simple! Thank you so much!!!!
Thanks for the really cool tutorial!
I just Handwired my first keyboard not too long ago and thought that I had to try to do one with a PCB instead, and this really helped.
Now I just need to find kicad files for rotary encoders
quality series of videos!
i am tuned in and look forward to seeing another part.
They seemed to have changed it in version 8 where s is no longer the grid origin hotkey for the PCB editor. Instead you have to go Toolbar -> Place -> Grid Origin
They did along with changing other hotkeys but luckily you can remap them in the settings. Version 8 also has a bunch of other issues and I've been telling people to avoid it for now until they're fixed.
Excellent and informative video as always, Joe! Very well done. I am looking forward to electrostatic capacitive keyboard PCB design video 😅
Honestly
THANK YOU 🙏
nice,... i like how it's a short but concise video and easy to follow. I've been meaning to do this for quite a while, maybe i'll give it another shot now.
I was struggling so much trying to add footprints to ergogen that I ended up ordering an existing pcb design (corne to be specific), but you basically demystified kicad for me. If I had watched this video before I think I would stick to making my own design. Well, next time for sure!
How to include a volume knob?
Or even a mini display?
This video is awesome, it gave me all I needed to design my first pcb, thanks man!
Very high quality video. Seeing you explain it is empowering. Thank you very much!
Loved the tutorial, I had no idea on how to use KiCAD
This is an amazing tutorial, so clear and such great quality
Thanks for this vid. Your other vids on OLED and handwiring helped me build my own keeb from scratch (made a few vids on those). Your vids are always just nice to watch and very engaging.
Do you think you'll make a PCB design video for your ergo scotto keebs? I'm just wondering how you'd make the screw holes, aligning rotated switches and making the casing and how the design from Kicad would be used in fusion360, or just use Kicad 100% for the case design, etc.
Glad you enjoy them!
I don't think I'll make a video talking about my ergo boards as PCBs but I might do one using a tool that converts a KLE to Kicad that many have suggested. I'm currently working on a second PCB video that will go over some more advanced things, specifically for direct wiring but will include mounting holes in there to give people an idea.
This is super concise and well structured tutorial, thank you so much for your time spent on making this video!!!
Best video ever! Makes me really excited to design my own keyboard, thank you so much!
Glad it was helpful!
another way to save costs is by panelize the pcb especially for smaller pcbs and you could also build reversible pcbs if its a split keyboard.
Really loved the video and thanks!
What are the odds for future one with optical switches?
Really great guide! I've been able to design a custom keyboard for the first time. Only thing missing is when a manufacturer is asking for a BOM (which I have) and a CPL file (Pick&Place File); I have no idea what the CPL file is but I'm sure google will help :)
what if we use shift register to make the keyboard truly nkey?
Thx for amazing tutorial
I followed your video
But i can't see the component in3d viwer TT
Only thing i can see is pcb with holes can you help?
12:29
Amazing video for a mech eng learning trying to learn pcb design, whens the next video coming?
13:26 How do you rotate the D9 with finer angle step?
Thank you very much for what your video contributes, but I am still pending the process of ordering the PCB, since I like the idea of designing and modifying, for example the Corne V3 and making a personalized version, but I am stopped when putting the order.
I searched on the Internet and I have not been able to find the ideal one, for example, the thickness of the PCB, the amount of grams of copper (you explained the ideal termination for those of us who use a common soldering iron) and countless other options that JLC or PCB gives you at time to order.
Thanks again for your content
1.6mm for the PCB thickness and the lowest copper grams will be fine for most boards.
@@joe_scotto I ask because I recently bought a Corne v3 kit to assemble and I made the orientation error when I soldered one of the LEDs, and when I desoldered the pad/track came out.
Why does that occur? little grammage of copper? too 'cheap' termination of the pcb?
Greetings
@@pcarmonac most likely poor soldering technique. If you use too much heat or apply it for too long, you can damage the pads.
I am almost finished doing my first pcb keyboard board and when i try to finish it with the plugin it says this: 'FOOTPRINT; object has no attribute 'HasProperty'. Can anybody help me fix it?
This is caused by Kicad 8 and the author of the export plugin has fixed it but it's not implemented into the official plugin manager yet, that said you can do the following to fix the error:
1. Download this (V4.0.0 of the plugin): github.com/bennymeg/JLC-Plugin-for-KiCad/releases/download/4.0.0/JLC-Plugin-for-KiCad-4.0.0.zip
2. Open Kicad -> Plugin and Content Manager -> Installed -> Uninstall Fabrication Toolkit (If you installed it before)
3. Install from File -> Install the ZIP you downloaded
4. Should be fixed, try exporting again.
I'm trying to view the pcb in the 3D viewer and none of the footprint models are showing up in it.
This is great, thank you. Any chance you will be putting the KB2040 into the Scottokeebs libraries?
Thank you for sharing this! Fantastic job and hope to learn more!
Thanks for the guide! It's really helpful. I was wondering, what if I run out of pins on the board in the schematic?
You’ll need to use a different controller then. Basically your controller needs to have enough pins to support your matrix.
great video, thanks! it seems like the 3d models for the diodes and switches are missing, though :/
That's Kicad 8 being dumb. Don't search for them when trying to add, manually scroll to the ScottoKeebs library and expand it.
Great walkthrough. Thanks.
Joe, ive been wracking my head on this for 3 hours, whenever i go into 3D view all i see is the board/vias/traces, i dont see any other the actual components, (switches/diodes). i can see the CONN port i added for Dupont connectors that was baked in with the software but none of the 3D files are there
I followed the setup exactly but when I press A to open symbol library all of the Placeholder symbols are missing, only Placeholder _TRRS is there, anyone have an idea how to fix this?
Don’t use the search function, manually scroll to the library. Kicad broke search in the recent updates.
@@joe_scotto Sadly, alot what you have taught us in the video is broken now. Great tutorial, just KiCad is broke af.
@@mreyn17 It’s still the same, only thing that is broken is the search function. Just scroll manually to the library.
@@joe_scotto Yeah I was able to find it by scrolling down. Just wish they hadn't changed that.
@@mreyn17 they didn’t change anything, they broke Kicad somehow lol
Hi joe, choc V1 not previewed in 3d preview. Could you check.
for me the footprints do not appear is it common problem or not
For grid sizes, is it by switch size or keycap size? I was planning on using Work Louder caps on a macropad, which are choc with MX spacing.
I'm really looking forward to the firmware part as that's what I'm the most uncertain about. I'm building a custom keypad for gaming and trying to figure out what microcontroller I should use so hopefully you will touch on that as well on that video.
im having an issue where not all of the library is showing up, anyone know why that is? I literally cant place diodes of keys on my schematic.
Great Video Scott. Always appreciated your detailed videos. You have really helped me on the software side of things i.e. setting up vial for custom boards.
And Now that you have delved into the cad side of things i am quite thrilled tbh. Would love to see an onboard chip design guide for atmega32u4 with type-C port integration. I know its very handy to have a swappable pro micro but an onboard mcu is quite professional as well 😊
Keep up the good work. Cheers.
Would you mind if I were to borrow some assets from the library for some future program development?
7:16 When we have the keyboard larger than 3x3, how do we wire to the pin? Is there any specific reasons the traces to be put on those specific pins?
That’s one of those things you need to decide based on your design and controller choice. You need enough pins on your controller for each column and row, so 6 for a 3x3 matrix (3 columns and 3 rows).
The traces then need to be ran to where you defined them in your schematic but you can choose which pins as long as they’re GPIO.
what about software how you connecte keyboard to PC ?
I think that (s) in "Select item(s)" is just a parenthetical plural verb. BTW great video as always. Next video idea: Adding RGB matrix to a PCB.
Maybe, but it would not make sense since all the other tools have the same thing… Wire tool (W), Add Tracks (X)
thank you so much I really love your videos
I’m glad you enjoy them :)
Hey Joe!
Just had a few questions:
I downloaded the GitHub but the files inside it are completely different!
So, I used OctoPart to download the first result for "Mx Switch"
It worked great and I completed ergogen and schematic with 0 electrical rules check violations.
In PCB Editor, I get the layout down and everything wired up..
Then it says the switches aren't connected.
So I checked the schematic and my best guess is that the Green Dots on the wires (junctions) are ruining the connections?
Thanks for any help!!
Can you plz make a kmk tutorial for creating custom firmware
I'm following this guide and so far so good except for some reason the 3d files aren't rendering in the 3d model
Never mind. Apparently had to relink all the 3d model locations manually in the footprint properties.
You could also use the draw bus tool instead of the labels
Hi, how did you flip the PCB for right side in kicad?
Do you have the seed studio controller in kicad
How did you get your color scheme like that? Those are awesome colors
Noah Kiser did a tkl build that's worth checking out
Super helpful tutorial. KiCad isn't showing any of my components in 3d viewer, just the board itself. Any idea why?
Not all components have 3D models but you can double check by making sure the 3D viewer has them toggled on with the controls on the top
Mine is doing this as well.
Amazing content. Thank you so much!
Does anyone know of a video like this but for backlit mechanical keyboards? They make "rgb" switches. They make backlight compatible keycaps. It should be possible to make one. Would be nice to see if someone else has figured out all the details on building one of those. It seems like the led would go under the key switch. On a g910 keyboard, the leds are directly under each switch and the metal sheet that the switches snap into is raised up just far enough for there to be room under each switch for an led.
Individually addressable led lights seem to be too hard to get in quantity (your only choice is to desolder them from light strips and they aren't even on mouser) but I just want to find a way to home build a solid color backlit mechanical keyboard.
i cant get past the symbols step. i check that it went in but it's empty in the next step. im just plain stuck
Thanks for the effort but it seems the symbols are not compatible with KiCAD 7 and 8. The error massage is this: "Expecting '(' in ....ScottoKeebs_sym', line 7, offset 1."
I opened this file and compared it with a standard symbol files from KiCAD and I noticed your file is in a totally different format that those standard ones. So I can't import your libraries. Am I doing something wrong?
Thanks anyway for your great job and sharing it.
I’m not sure what’s going wrong but I and others are using them in both Kicad 7 and 8. I would recommend joining my Discord and seeing if anyone there knows: scottokeebs.com/discord
@@joe_scotto I tried but I can't manage to create an account on Discord. Your Sym file is in HTML but standard ones are not. I expect KiCAD to do required conversions but it fails. By the way, I just installed KiCAD. Shall I do anything else before importing your library?
@manouchehrmail Oh, you’re downloading the files wrong. Go to the link below, click the green “Code” button, and download it as a ZIP. Then find the ScottoKicad folder and use that.
scottokeebs.com/github
@@joe_scotto Thank you so much. Now it works :)
Thank you! i was waiting for your giude.
Tremendously helpful!
This is a fantastic video, it's clear you put a lot of work and effort into it and for that, many thanks. Learned how to properly place elements in the PCB editor (finally!).
I cloned your repo for the footprints and 3d models and have a quick question: how do you get to preview the mx switches in the 3d preview? I selected the same footprint as you did in the video and when I toggle the throughhole components on and off, nothing shows. Are those something extra?
Quick note, not sure if you're aware, but you can do basic math inside KiCad, like 9 / 4 in the custom grid layout dialog box instead of using spotlight and copy pasting solutions.
Glad it's helpful!
It sounds to me like your path isn't configured properly. You need to make sure that the "SCOTTOKEEBS_KICAD" path is set to the root folder where "ScottoKicad" is. If that's not configured properly, the library won't know where to look. It's also possible the footprint you chose doesn't have them but it sounds like you're using the same as me. Specifically, hotswap only has the SMD sockets and not the switches.
Thank you so so much Joe 🙏🙏
i don't think there is a hotkey for select. when it say item(s) i think it's saying you can select plural. note the rest of the hotkeys are noted with a space and then a capital letter in parenthesis
Does a 3x3 component need diodes?
What happened to the next tutorial in the series? Did you ever make it?
I am stumped on the grid part, the window that popped up for you doesn't show up for me and it just throws everything off.
The grid system changed in Kicad 8 where you can setup multiple grid pitches. ua-cam.com/video/DiEWYnrcKds/v-deo.html
@@mysterd.60 Thanks for that. I was able to figure out how to add one through trial and error, but the video you've shared explains what I was doing lol.
How are RGB LEDs connected to a printed circuit board?
Great video and important tips. Thanks
What is the differences between the plate and non plate I'm new to this stuff
The plated ones have copper so both the hotswap pad and hole connect making it easier to route the traces. The non plated just have copper on the pad but not the hole.
Thank you for the video. I want you to make a video about KMK firmware.
Whenever using the Arduino, when running the design rule checker I always get 50-ish errors consisting of "Silkscreen clipped by board edge" and "Silkscreen clipped by solder mask". I looked it up and some sources said that it should still be fine im still uneasy about it. Thoughts?
You can ignore those
what do you do when your microcontroller doesn't have enough pins for all your columns and rows?
I pick a different controller but a Raspberry Pi Pico for example should have more than enough pins for most designs. There are also more advanced matrix designs such as the Japanese Duplex but I haven't tried it before.