How to Design Mechanical Keyboard PCBs with Kicad

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 พ.ค. 2024
  • Today we're going to be taking a look at just how simple it is to design your own mechanical keyboard PCB within Kicad. We will cover everything from setting up the program along with applicable symbol and footprint libraries, designing the schematic, laying out the PCB, and finally some information on the differences between HASL and ENIG when ordering.
    ~ Links ~
    • How a Mechanical Keybo...
    • How to Build a Handwir...
    • How to Design Mechanic...
    Kicad: kicad.org
    ScottoKicad: github.com/joe-scotto/scottok...
    Find out more about the project: scottokeebs.com
    Donations greatly appreciated: bit.ly/41odBEu
    Patreon: / joe_scotto
    ~ Handwiring Tools ~
    TS100 Soldering Iron: amzn.to/3LCsrkb
    D24 Chisel Tip: amzn.to/3VFxiES
    63/37 Solder: amzn.to/3uBlMPu
    ~ Handwiring Parts ~
    1N4148 Diodes: amzn.to/3Ccljbb
    16g Copper Wire: amzn.to/3xLDVvJ
    Raspberry Pi Pico: amzn.to/3HglCVb
    Arduino Pro Micro: amzn.to/3HkR9Fn
    Ethernet Cable: amzn.to/3uyaOKr
    M2x6mm Screws: amzn.to/3UI1bDH
    M2x8mm Spacer: amzn.to/3Y4KzJ3
    M2 Heat Set Insert: amzn.to/3WjklB9
    Durock Stabilizers: amzn.to/3FgcLQR
    ~ 3D Printing ~
    Ender-3 Pro: amzn.to/3VIWryL
    PEI Magnetic Bed: amzn.to/3Hi7URx
    Dual Z Upgrade: amzn.to/3h7DTJy
    BLTouch Auto-Leveling: amzn.to/3UGEBv8
    ~ Favorite Cheap Switches ~
    Gateron Milky Yellow: amzn.to/3Bk0Cci
    Akko Lavender Purple: amzn.to/3VJy440
    ~ Social ~
    / joe_scotto
    / joe_scotto
    ko-fi.com/joe_scotto
    ~ Community ~
    ScottoKeebs Discord: / discord
    Handwired Keyboards Reddit: / handwiredkeyboards
    ~ Timestamps ~
    0:00 - Intro
    0:22 - Setup
    2:48 - Schematic
    7:35 - Footprint Assignment
    8:43 - PCB Setup
    9:14 - Grid System
    10:04 - Positioning
    13:55 - Routing Traces
    15:37 - Vias
    16:17 - Controller Wiring
    16:46 - Design Rules Checker
    17:00 - Edge Cuts
    17:38 - Filled Zones
    18:45 - Exporting Gerbers
    18:56 - Ordering PCBs
    19:15 - HASL vs ENIG
    19:58 - Outro
    ~ Disclaimer ~
    Some links may be affiliate links where I will make a small commission. Nothing in this video was sponsored by any outside party and I wasn't paid for the content in this video.
    #mechanicalkeyboard #kicad #pcb
  • วิทยาศาสตร์และเทคโนโลยี

ความคิดเห็น • 182

  • @joe_scotto
    @joe_scotto  8 หลายเดือนก่อน +47

    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

    • @sanketss84
      @sanketss84 8 หลายเดือนก่อน +5

      thanks for sharing this and making it accessible for lot of the ones just getting into this hobby.

    • @agatasoda
      @agatasoda 8 หลายเดือนก่อน +1

      Fantastic! I didn't know I wanted to even build a keyboard until this channel popped up.

    • @zamp-skateboarding
      @zamp-skateboarding 2 หลายเดือนก่อน

      How did you set the dark theme?
      Anyway nice tutorial! Keep going :)

    • @joe_scotto
      @joe_scotto  2 หลายเดือนก่อน

      Search up “Dracula Kicad”

    • @gonthyalavishalchandan1193
      @gonthyalavishalchandan1193 หลายเดือนก่อน

      Next video link please

  • @zachbrown7272
    @zachbrown7272 3 หลายเดือนก่อน +32

    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.

    • @thisyologuy
      @thisyologuy 2 หลายเดือนก่อน +1

      If I may add more to that. Firstly two layer boards are costly and in there is no need for that in such simple design. All traces can be routed on the top layer. Secondly if you are doing infill, use is. Good practice is to connect it to the ground (GND pin) of the MCU.

    • @riccardoiacob4560
      @riccardoiacob4560 2 หลายเดือนก่อน +5

      ​@@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.

    • @nickklaver11
      @nickklaver11 7 วันที่ผ่านมา

      @@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

  • @aaronacj
    @aaronacj หลายเดือนก่อน +7

    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.

    • @joe_scotto
      @joe_scotto  หลายเดือนก่อน

      I'm glad it was helpful! I plan on making more Kicad videos in the future that might be of interest to you :)

  • @user-ch9iz3ib4i
    @user-ch9iz3ib4i 8 หลายเดือนก่อน

    This literally came out exactly when I needed an easy Kicad guide, thanks a million! Loved the video and found it supremely helpful:)

  • @throughtheglasseye6678
    @throughtheglasseye6678 8 หลายเดือนก่อน

    quality series of videos!
    i am tuned in and look forward to seeing another part.

  • @MrEdwardSP
    @MrEdwardSP 8 หลายเดือนก่อน

    This is super concise and well structured tutorial, thank you so much for your time spent on making this video!!!

  • @rakibshahid7913
    @rakibshahid7913 7 หลายเดือนก่อน +2

    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

  • @ajoo0h
    @ajoo0h 8 หลายเดือนก่อน

    Thank you for sharing this! Fantastic job and hope to learn more!

  • @SpeedyPotato_
    @SpeedyPotato_ 8 หลายเดือนก่อน +2

    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!

  • @Bobbakerfield
    @Bobbakerfield 3 หลายเดือนก่อน +1

    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.

  • @KyekOfficial
    @KyekOfficial 8 หลายเดือนก่อน +4

    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!

  • @alexmiller7879
    @alexmiller7879 8 หลายเดือนก่อน +4

    I wish this existed when I first started designing keyboards. This is extremely straight forward. I learned everything the hard way. Trail by fire.

  • @katpuz01
    @katpuz01 2 หลายเดือนก่อน +1

    Thank you for sharing your Kicad Libairy. It was a massive help in designing my first PCB

  • @MrJibJub13
    @MrJibJub13 3 หลายเดือนก่อน +3

    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!

  • @oaledo
    @oaledo 6 หลายเดือนก่อน +2

    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...

  • @sergeikrivtcov9518
    @sergeikrivtcov9518 8 หลายเดือนก่อน +1

    Excellent and informative video as always, Joe! Very well done. I am looking forward to electrostatic capacitive keyboard PCB design video 😅

  • @sonicase
    @sonicase 7 หลายเดือนก่อน

    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.

  • @iwantpig
    @iwantpig 6 หลายเดือนก่อน

    Much easier than i was anticipating. Of course thanks to your provided libraries and helpful tips. Probably something ill try out in the future.

  • @jenniehan5871
    @jenniehan5871 7 หลายเดือนก่อน

    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.

    • @joe_scotto
      @joe_scotto  7 หลายเดือนก่อน

      Glad I could help!

  • @bencunningham-walker493
    @bencunningham-walker493 5 หลายเดือนก่อน

    This is an amazing tutorial, so clear and such great quality

  • @alexbalanovsky4708
    @alexbalanovsky4708 8 หลายเดือนก่อน

    Great video and important tips. Thanks

  • @nutellanutella
    @nutellanutella 8 หลายเดือนก่อน +9

    You can directly type "19.05 / 8" in the grid settings and it will update the correct number

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน +3

      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!

  • @SanderMakes
    @SanderMakes 7 หลายเดือนก่อน +2

    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!

    • @joe_scotto
      @joe_scotto  7 หลายเดือนก่อน

      Glad it helped :)

  • @endriuk02
    @endriuk02 27 วันที่ผ่านมา

    This video is awesome, it gave me all I needed to design my first pcb, thanks man!

  • @pudgey952
    @pudgey952 2 หลายเดือนก่อน

    Very high quality video. Seeing you explain it is empowering. Thank you very much!

  • @alexmelillo1247
    @alexmelillo1247 8 หลายเดือนก่อน

    Tremendously helpful!

  • @Back-Air
    @Back-Air 6 หลายเดือนก่อน

    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

  • @lpanebr
    @lpanebr 3 หลายเดือนก่อน

    Amazing content. Thank you so much!

  • @vladventura1928
    @vladventura1928 2 หลายเดือนก่อน

    Loved the tutorial, I had no idea on how to use KiCAD

  • @gunjja13
    @gunjja13 8 หลายเดือนก่อน

    Thank you so so much Joe 🙏🙏

  • @ultrahalf
    @ultrahalf 8 หลายเดือนก่อน +2

    Honestly
    THANK YOU 🙏

  • @aaulia
    @aaulia 8 หลายเดือนก่อน

    Thank you, this is awesome.

  • @WulffDen
    @WulffDen หลายเดือนก่อน

    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.

    • @joe_scotto
      @joe_scotto  หลายเดือนก่อน

      Glad it’s helpful :)

  • @joostul
    @joostul 8 หลายเดือนก่อน

    Best video ever! Makes me really excited to design my own keyboard, thank you so much!

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน

      Glad it was helpful!

  • @saidyeter
    @saidyeter 8 หลายเดือนก่อน

    Man, this is awesome

  • @sergeikrivtcov9518
    @sergeikrivtcov9518 8 หลายเดือนก่อน +6

    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

    • @sanketss84
      @sanketss84 8 หลายเดือนก่อน

      thanks for sharing this will surely check it out.

    • @_adamws
      @_adamws 7 หลายเดือนก่อน +2

      I'm the author, glad you liked it

    • @sergeikrivtcov9518
      @sergeikrivtcov9518 7 หลายเดือนก่อน

      @@_adamws thank you for this plugin! This is golden!

    • @sanketss84
      @sanketss84 7 หลายเดือนก่อน

      @@_adamws thank you for this.

  • @compfixer87
    @compfixer87 8 หลายเดือนก่อน +18

    As an avid TH-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!

    • @ChaitanyaDankhade
      @ChaitanyaDankhade 4 หลายเดือนก่อน

      hey how to add rotary encoder on pcb

  • @user-he5ht7kk2z
    @user-he5ht7kk2z 7 หลายเดือนก่อน

    great video much appreciate.

  • @Aliens400
    @Aliens400 8 หลายเดือนก่อน +17

    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
      @joe_scotto  8 หลายเดือนก่อน +2

      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!

    • @Aliens400
      @Aliens400 8 หลายเดือนก่อน +2

      @@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
      th-cam.com/video/6Z49bynRqj8/w-d-xo.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!

  • @codexrat
    @codexrat 6 หลายเดือนก่อน

    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.

  • @Abu-Ubayda
    @Abu-Ubayda 8 หลายเดือนก่อน

    Thank you! i was waiting for your giude.

  • @alexandrecosta2567
    @alexandrecosta2567 5 หลายเดือนก่อน

    This is such a niche video but at the same time so unbelievably targeted to me. I cannot thank you enough for your effort!

    • @joe_scotto
      @joe_scotto  5 หลายเดือนก่อน

      You’re welcome, glad I could help!

  • @Bianchi77
    @Bianchi77 7 หลายเดือนก่อน

    Nice video, thanks for sharing, well done :)

  • @5t4n5
    @5t4n5 5 หลายเดือนก่อน +1

    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. 😀

  • @raidboy7858
    @raidboy7858 8 หลายเดือนก่อน +1

    thank you so much I really love your videos

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน

      I’m glad you enjoy them :)

  • @sameesyed6507
    @sameesyed6507 2 หลายเดือนก่อน

    Amazing video for a mech eng learning trying to learn pcb design, whens the next video coming?

  • @overvoltagestudio
    @overvoltagestudio 8 หลายเดือนก่อน +7

    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 :)

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน +1

      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.

    • @overvoltagestudio
      @overvoltagestudio 8 หลายเดือนก่อน

      @@joe_scotto That would be awesome to see!

    • @sanketss84
      @sanketss84 8 หลายเดือนก่อน

      yup thats correct. it would have worked really well for an example with a direct wired macropad vs row col.

  • @josed2828
    @josed2828 2 หลายเดือนก่อน

    I loved the video I learned a lot really thanks you

  • @brdevll
    @brdevll 2 หลายเดือนก่อน

    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!

  • @mattaaron4383
    @mattaaron4383 7 หลายเดือนก่อน

    Thanks!

  • @kwahlman
    @kwahlman 6 หลายเดือนก่อน +1

    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!

  • @Dave-gj7ss
    @Dave-gj7ss หลายเดือนก่อน

    Thank you so much dude

    • @joe_scotto
      @joe_scotto  หลายเดือนก่อน +1

      No problem 🙂

  • @anaplayz9534
    @anaplayz9534 6 หลายเดือนก่อน

    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.

  • @BlueOctopusDev
    @BlueOctopusDev 5 หลายเดือนก่อน

    i love this video, it's my dream to live doing this

  • @Qw3r3wQ
    @Qw3r3wQ 8 หลายเดือนก่อน +1

    Thanks

  • @crevm6888
    @crevm6888 8 หลายเดือนก่อน

    Nice vid :)

  • @sanketss84
    @sanketss84 8 หลายเดือนก่อน +1

    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.

  • @jjang_won
    @jjang_won 7 หลายเดือนก่อน

    Thank you for the video. I want you to make a video about KMK firmware.

  • @tylergubala7355
    @tylergubala7355 2 หลายเดือนก่อน

    This is great, thank you. Any chance you will be putting the KB2040 into the Scottokeebs libraries?

  • @nemtudom5074
    @nemtudom5074 29 วันที่ผ่านมา

    Damn. I didnt know it was this easy to make PCB's!
    Very educational video!
    Now to just figure out which of the three controllers i fried on my keyboard now that two columns dont work. The one for F3 3 E D C and space and the F4 4 R F V and alt gr column. I really dont know why my keyboard has three damn controllers, but its probably the LED's.... Wish i still had my multimeter....

  • @FringanSthlm
    @FringanSthlm หลายเดือนก่อน

    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 :)

  • @semputs
    @semputs 8 หลายเดือนก่อน

    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.

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน +1

      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.

  • @Antebios
    @Antebios 4 หลายเดือนก่อน

    Holy shit!! This video was great!!!!!!!!

    • @joe_scotto
      @joe_scotto  4 หลายเดือนก่อน

      Glad you enjoyed!

  • @kyu_273
    @kyu_273 4 หลายเดือนก่อน

    Thanks for the guide! It's really helpful. I was wondering, what if I run out of pins on the board in the schematic?

    • @joe_scotto
      @joe_scotto  4 หลายเดือนก่อน +1

      You’ll need to use a different controller then. Basically your controller needs to have enough pins to support your matrix.

  • @riccardoiacob4560
    @riccardoiacob4560 2 หลายเดือนก่อน

    You could also use the draw bus tool instead of the labels

  • @whereIsJerome
    @whereIsJerome 8 หลายเดือนก่อน

    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.

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน

      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.

  • @ismailsalih1299
    @ismailsalih1299 7 หลายเดือนก่อน

    Can you plz make a kmk tutorial for creating custom firmware

  • @YoutubeBorkedMyOldHandle_why
    @YoutubeBorkedMyOldHandle_why 5 หลายเดือนก่อน +1

    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
      @gillsejusbates6938 2 หลายเดือนก่อน

      1) Just use a bigger microcontroller, or duplex your matrix.
      2) its not like constant matrix scanning puts any strain on the chip or slows down registration, since USB polling is at 1000hz. This also requires custom QMK matrix scanning and debouncing.
      I think a better way to put your suggestions are complications, not enhancements, especially for a beginners tutorial.

    • @YoutubeBorkedMyOldHandle_why
      @YoutubeBorkedMyOldHandle_why 2 หลายเดือนก่อน

      @@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.

  • @numtostr
    @numtostr 8 หลายเดือนก่อน +2

    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.

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน +4

      Maybe, but it would not make sense since all the other tools have the same thing… Wire tool (W), Add Tracks (X)

  • @aaronstone628
    @aaronstone628 3 หลายเดือนก่อน

    How did you get your color scheme like that? Those are awesome colors

  • @nbredia
    @nbredia หลายเดือนก่อน

    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.

  • @vzx
    @vzx 7 หลายเดือนก่อน

    13:26 How do you rotate the D9 with finer angle step?

  • @lpanebr
    @lpanebr 3 หลายเดือนก่อน

    I just discovered that in the user grid you can just type 18/4 and it will do the math for you!

  • @lophixarts
    @lophixarts 4 หลายเดือนก่อน +1

    How to include a volume knob?
    Or even a mini display?

  • @Poide_Leather
    @Poide_Leather 5 หลายเดือนก่อน

    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

  • @madhunugg
    @madhunugg 23 วันที่ผ่านมา

    Instead of using a calculator, you can actually do the fourth or eighth grid settings in the kicad dialog box directly.

  • @CreamyCheese_
    @CreamyCheese_ 4 หลายเดือนก่อน

    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!!

  • @ruairihair
    @ruairihair 8 หลายเดือนก่อน +5

    Noah Kiser did a tkl build that's worth checking out

  • @shaybcakes6309
    @shaybcakes6309 7 หลายเดือนก่อน

    Super helpful tutorial. KiCad isn't showing any of my components in 3d viewer, just the board itself. Any idea why?

    • @joe_scotto
      @joe_scotto  7 หลายเดือนก่อน

      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

    • @jamesonwallace4558
      @jamesonwallace4558 5 หลายเดือนก่อน

      Mine is doing this as well.

  • @theresaapocalypse5893
    @theresaapocalypse5893 5 หลายเดือนก่อน

    Would you mind if I were to borrow some assets from the library for some future program development?

  • @therick0996
    @therick0996 8 หลายเดือนก่อน

    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

  • @ahmedmamdouh523
    @ahmedmamdouh523 5 หลายเดือนก่อน

    Hi joe, choc V1 not previewed in 3d preview. Could you check.

  • @vzx
    @vzx 7 หลายเดือนก่อน

    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?

    • @joe_scotto
      @joe_scotto  7 หลายเดือนก่อน +1

      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.

  • @thanhanle3879
    @thanhanle3879 5 หลายเดือนก่อน

    I'm still waiting for the firmware video tho 😅, hope you could release that soon

  • @AmazingSpanoMan
    @AmazingSpanoMan 2 หลายเดือนก่อน

    I'm following this guide and so far so good except for some reason the 3d files aren't rendering in the 3d model

    • @AmazingSpanoMan
      @AmazingSpanoMan 2 หลายเดือนก่อน

      Never mind. Apparently had to relink all the 3d model locations manually in the footprint properties.

  • @Amir-zi1hj
    @Amir-zi1hj 4 หลายเดือนก่อน

    Hi, how did you flip the PCB for right side in kicad?

  • @tylergubala7355
    @tylergubala7355 หลายเดือนก่อน +1

    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

    • @joe_scotto
      @joe_scotto  หลายเดือนก่อน

      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.

  • @samxu7183
    @samxu7183 2 หลายเดือนก่อน

    KEE CAD, It's French.
    Love the video, very informative.

  • @cxvcnxbzfdhjlaks
    @cxvcnxbzfdhjlaks 3 หลายเดือนก่อน

    Does this accommodate rgb lcds?

  • @slabua
    @slabua 8 หลายเดือนก่อน

    You can use the fill zone as a global ground trace.

    • @joe_scotto
      @joe_scotto  8 หลายเดือนก่อน +1

      Yup, I didn’t want to go too in depth on this first video as that’s something that could confuse a beginner. I’m going to do another video talking about direct wiring with a filled zone as ground.

    • @slabua
      @slabua 8 หลายเดือนก่อน

      @@joe_scotto that would be nice to see, thanks!

  • @lpanebr
    @lpanebr 3 หลายเดือนก่อน

    Does a 3x3 component need diodes?

  • @randallnorwood6803
    @randallnorwood6803 7 หลายเดือนก่อน

    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

  • @ItsEwan
    @ItsEwan หลายเดือนก่อน

    By chance is there a way that you can add hotswap sockets in the designer (btw your videos are really helpful)

    • @joe_scotto
      @joe_scotto  17 วันที่ผ่านมา

      If you use the hotswap footprints, they'll have hotswap sockets.

    • @ItsEwan
      @ItsEwan 17 วันที่ผ่านมา

      @@joe_scotto I just gave up with pcb rout and went for a matrix design 40%

  • @efadsheikh4921
    @efadsheikh4921 7 หลายเดือนก่อน

    Where is the firmware video?

  • @stoodent1975
    @stoodent1975 3 หลายเดือนก่อน

    How do I program the board

  • @scotts-tech
    @scotts-tech 2 หลายเดือนก่อน

    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.

  • @RennanMendesSerenzaRennan
    @RennanMendesSerenzaRennan หลายเดือนก่อน

    How are RGB LEDs connected to a printed circuit board?

  • @owen-nd9eb
    @owen-nd9eb 2 หลายเดือนก่อน

    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?

    • @joe_scotto
      @joe_scotto  2 หลายเดือนก่อน

      You can ignore those

  • @marty_m211
    @marty_m211 2 หลายเดือนก่อน +2

    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?

    • @joe_scotto
      @joe_scotto  2 หลายเดือนก่อน +1

      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.

  • @thewolfsshadow6702
    @thewolfsshadow6702 หลายเดือนก่อน

    what do you do when your microcontroller doesn't have enough pins for all your columns and rows?

    • @joe_scotto
      @joe_scotto  หลายเดือนก่อน

      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.