(First ever) PCB Design Check (keyboard)

Thanks! Appreciate the feedback. So, let’s say I have an asymmetrical layout like the one I posted. I’d like to set a rectangular edge cut that is 3mm from the edges of the furthest N/E/S/W footprints. What’s the easiest way to do that?

And then I’m going to add a 2mm radius to each corner.

[…an hour and two dozen other, unrelated changes later…]

Now I think I probably want to scoot all four edges out 1mm further than where they are now. What’s the fewest number of steps needed to accomplish that?

Side note: Not sure where else to say this, but man—I’ve never encountered a pastime before that feels so gatekeep-y. Every other thing I’ve ever gotten into, people everywhere lend a helping hand: random video games, woodworking, gardening, whatever. But for noobs like me, it’s really hard to to learn board design, because simply asking for feedback on something you’re trying seems to be met with the equivalent of “get gud.” Anyhoo, this rant is really just for myself. I’ll show myself out.

If it was me, I’d change the grid to 2mm (both X & Y).
Next, I’d make a box selection of the whole board and move the whole board so it centres inside the 2mm grid (with a bit of luck your X & Y measurements of the layout are nearly a 2mm integer) so you have symmetry between the layout and the grid in all four directions.
Finally, I’d use the grid lines to form the 90deg. arcs and the lines between the arcs.

Yes, it’s a problem. Kicad forum is used by engineers with 40 years, or more, experience laying out boards, to brand new users with no experience with electronics.
A line has to be drawn somewhere with respect to asked questions otherwise the forum ceases to be a reasonable reference to Kicad usability. That line is between answering questions on how to use the functions of Kicad and designing circuits and PCBs.

To have rectangular PCB I add rectangle (using rectangular tool) at Edge.Cuts layer. Then selecting it you can use points in edge centers to shift each edge as you wish reaching 3mm distance from your elements.

I sow your question hours ago, but had to wait till I’m at PC with KiCad V8 (at home I have Win7, last KiCad version for Win7 was V5).
I have searched for you a function you are looking for.
When you have selected this Edge.Cuts rectangle and right-click to see context menu to find what you can do now, than among functions I found “Shape Modification” suggesting that it may be what we are looking for. The next action is to place cursor at it to see that it gives us two possibilities:

  • Fillet Lines…
  • Chamfer Lines…

Selecting first of them the dialog box opens asking to insert radius you want. Then you enter 2 and click [OK] button and done.

I didn’t know that this functionality is in KiCad (newer used rounded rectangle PCBs) and don’t know how long it is there, but when I could run KiCad it took me several seconds to find it.
If it was really difficult to find for you than you have to be used to some completely different User Interface. I know only Windows and such behavior seems for me typical. May be in other systems that I have never used such things like context menu just not exists.

This is tedious. Is there not a function like in normal CAD programs where one can dictate dimensions? If this were a CAD application, I’d type “d” (dimension) then click an edge of my rectangle, click the edge of the thing that I wanted to make it a set distance from, and then I’d type the number 3 (3mm). And it’d be done. (There’s also a GUI to do this.) Even better, I could define a variable, and then—if I wanted to change it—I could simply go to my variable and change it. Everything else would update as well (e.g. if I had a 2mm fillet, it would update as well).

. . . If it was really difficult to find for you than you have to be used to some completely different User Interface.

Appreciate you looking for that, but that was easy for me to find. The problem is that there doesn’t appear to be anything parametric about KiCad. Once I’ve defined a 2mm fillet, KiCad just makes a bunch of points in a curve. If I later decide that I want to change the fillet or change to rectangle that the fillet is attached to, the only way I’ve found to do it is to select each corner (meaning: select all of the tiny points in each corner), delete them, repeat for the other three corners, then select and delete the four lines for each side, and then start the whole thing all over again.

In short: while finding what tools are available is relatively intuitive, the actual tools available often simply don’t exist. Maybe I should be making feature requests? There need to be more tools in KiCad for defining dimensionality (it’s literally about 1/3 of the GUI menu bar in a CAD application).

Thanks again. Guess I’m just not lucky. My base unit is 19.05mm, which is why things aren’t as easy to just do a quick “divide by two.” But surely this isn’t uncommon? I guess in a lot of cases, you’re starting with edge cuts and trying to squeeze everything in. See my post above, but man—there seems to be room here for a massive increase of “forced” dimensional definition. It’s a really basic feature of just about every other design application out there, and unless I just haven’t been able to find it, it doesn’t seem like it exists in KiCad?

Yes, it’s a problem. Kicad forum is used by engineers with 40 years, or more, experience laying out boards, to brand new users with no experience with electronics.
A line has to be drawn somewhere with respect to asked questions otherwise the forum ceases to be a reasonable reference to Kicad usability. That line is between answering questions on how to use the functions of Kicad and designing circuits and PCBs.

I appreciate you stating this so clearly. Funnily enough, the reason I started posting here was because the KiCad subreddit strongly urges people to come over here to post KiCad questions. That seems like it might be the wrong approach, if this is more specifically devoted to discussing the software itself and not “the things created via the software.“ Of course, now I feel like maybe I should spend a little more time here and discuss some feature requests! :wink:

By all means do . . . but before that you might find some useful info here . . .

1 Like

You don’t seem to realize that drawing the PCB outline is maybe one millionth of the PCB design process so proportional part of GUI should be destined for it.
My first PCB I have designed using squared paper and pencil around 1970. My entire professional life revolves around electronics (and therefore PCBs also).
From my point of view it would be a waste of resources for designers to spend time developing tools for sophisticated methods of creating a board outline. There are hundreds of more important things in a board design than a stupid outline, which I have never seen a problem drawing. If you need some unusual board shape, you can draw it in your favorite graphics program and import it into KiCad.

1 Like

Understood. My (admittedly naive!) thank was that, broadly speaking, the concept of parametric design, dimensional references, and usage of user-defined variables seems “easier” to me than the code required to route traces or run DRC. The link provided by @RaptorUK tells me that my view of what is and isn’t “easy” is likely far off base.

Another question: Let’s say that I’m designing a board for a consumer electronics device: a mobile phone. The phone is offered in two sizes: a small (72mm x 148mm) and a large (78mm x 161mm). The board will have all of the same components (the only difference between the two is the screen and battery sizes). Obviously, the more difficult one is the smaller one, so you design that one first, and then you tackle the larger one. Is there currently a way to simply “scale up” from the smaller to the larger?

Maybe there is, and I just haven’t found it yet, but with CAD modeling software (and, much like with KiCad: I’m a hobbyist, not a pro–self-taught and fairly recently), one learns to set up variables, and then adjust those variables as desired to accomplish things. What I’ve found so far with KiCad (and I’ve literally taken a stab at designing a single board–multiple attempts/versions/starting from scratch) is that, when I get a ways into things and determine that I may need to move in a different direction, there is a great deal that I have to unwind and then re-do to make a fairly simple change. With a pencil drawing on grid paper, you can erase a thing and redraw the affected area. With KiCad, a small change can blow up a lot of things, perhaps I need to “erase” a very large area.

I know that my issues are in large part due to my being still quite clumsy with things, but I’m politely suggesting that perhaps there are some aspects of CAD modeling applications that could be considered as value adds for future work on KiCad.

In terms of concrete feature requests, what you are discussing sounds a lot like parametric design used widely in mechanical CAD software. There is an existing feature request here: Parametric design / geometric constraints (lp:#1813239) (#2329) · Issues · KiCad / KiCad Source Code / kicad · GitLab with the more general “CAD drafting” system request here: adopt cad drafting methods (lp:#1812204) (#2324) · Issues · KiCad / KiCad Source Code / kicad · GitLab

If either or both of these seem like what you would like to see in KiCad, you can give them a “thumbs up” on Gitlab to show support.

1 Like

Thank you for doing the research, @scandey !

From what you have written previously I imagine that you think of it like for example specifying that you want PCB size just having 3mm margin around all elements and whenever you modify something in circuit PCB size just adopts to it.
It can be usable for amateur PCBs that need not to fit in any already ready case with fixed (not by you) dimensions. In practical life in most cases you have a PCB exact shape imposed from above.
When in 2012 we selected a DIN-rail mount cases family to be used I have draw a PCB rectangles for 3 segment, 4 segment and 6 segment cases and if I am designing new device for one of them I just start from ready empty PCB shape and need not to draw anything at Edge.Cuts layer.
The situation when you design PCB and then also the case for it is rather rare, I think. Mobile phone is first that came to mind but it is out of KiCad scope, so you have to search other example (more below).

I don’t believe KiCad will be used for such task in near 10 years. In such device you have so many electromagnetic emitting antennas (cell-phone, Wi-Fi, Bluetooth, NFC) that you have to design it with software that can accurately simulate all the interactions between them and the influence of every piece of copper on the board. I believe such software exists, but its price is probably related to the profits you can make from selling mobile phones.
I was struggling with a much, much and once more much simpler problem of having RFID reader and touch keyboard in front of it. Everything worked until we started to read mifare Desfire cards. Problem was that Eddy currents generated in the keyboard keys absorb so much energy from the RFID antenna field that there is no longer enough energy for the card to perform the necessary cryptographic calculations and the card just doesn’t work.
And these are only two different functions to be working together - no comparison to the complexity of a mobile phone.
If KiCad developers had some free time I think it is more valuable for example to improve differential pair routing than PCB shape drawing. I’m not sure but I think differential pair work from pads to pads now and not from pads through other pads to end pads. In my case it is connection from Ethernet socket to Ethernet IC but through ESD protection. But, as I didn’t redesigned it recently I didn’t checked if it was improved in V8 or not.

I was using Protel 3 (some about it here: KiCad 7.0.2 is arriving - #13 by Piotr ) for 20 years and there it worked like you write - to do any change you deleted everything around and did it once more. I moved to KiCad just because KiCad allows you to route tracks in the mode that other tracks that are on your way are automatically shifted making you a room for your track.

How you pose the questions makes a difference. A “review my design” request will not elicit as much response as “what is the problem here, here and here” or “what should I be doing to solve this, this and this”. You need to be specific and show that you have made an attempt yourself. There are many noobs who toss together a design that contains fundamental electronics design errors. One can easily foresee that it will take a lot of hand-holding to elevate their electronics design even before the PCB design.

Oh for sure! In my case, I felt like my design was pretty simple, and truthfully: I was looking for someone to “check my math.” I realize that’s a tall ask, but it’s the sort of thing I’ve done across a variety of different interests and which I’ve generally felt supported by that community (and something I’ve supported other noobs on in areas in which I’ve acquired proficiency). But maybe circuitry doesn’t led itself well to that.

Or maybe I should just trust the DRC to check my math. :grin:

We tend to get a lot of noobs with an abundance of “optimism”. You probably have an excess of caution.

1 Like

If you draw a schematic with footprints allocated (which you have done) then “Tools > Update PCB from Schematic”, you will get all the footprints dumped on the previously empty PCB, together with “Ratlines” joining the footprint pads exactly as the symbols have been joined by wires on the Schematic.

To then create the PCB, you shuffle the footprints around to your satisfaction and replace all the ratlines with tracks. If you stuff something up, DRC will complain.
Was this your procedure?
I’m not seeing Refs and Footprint descriptions on your PCB.

What you want is rather ‘electronic design question’ than ‘KiCad use problems question’. In past I sometimes get into such discussions here but later found it is not welcome. Forum mainteiners want it to be good place for people searching solutions with KiCad software use so as much as possible it should not be cluttered with other discussions. Good place for electronic questions is probably EEVblog.
With your design several separate discussions could arise, like:

  • how to ESD protect keyboard,
  • how to protect your circuit against other external disturbances,
  • why you should add GND plane to your PCB and why it should be continuous,
  • what for are decoupling capacitors (and where and why to place them),
  • what supply regulator to use (if low-drop than how to ensure it being stable),
  • do you have to use filter at supply,
  • what you plan to do with read keys (external interface?).

All of them are electronic, and not KiCad related.

If you want to learn about PCB design I recommend articles I mentioned here 4 years ago:

1 Like

That’s the procedure I followed. The Refs/Footprint descriptions didn’t transfer because (surprise!) I’m still learning how to use GitHub too, and didn’t understand that the libs I was using needed to be re-added to each project, (I had to manually “point” KiCad to their location) so they show up on my end, but not when being viewed externally.

Great suggestions here. And of course; I have no idea what all of this means yet, but now I’ve got some reading to do. :kissing_closed_eyes:

This is the sort of info I was looking for elsewhere (keyboard subreddits, etc) which seems to be heavily populated by either people who know a lot about electronics and people who know nothing about electronics. There is a lot of discussion that glosses over some basic elements, which I think likely leaves the less informed more likely to make errors.

The conclusion that I had ultimately drawn (which may be way off base!) is that the use of hobbyist MCUs (Promicro; RP Pico) negates the need to concern oneself with some of these items. I’m hoping that, after reading through the links that you provided, and researching The topics you brought up, I’ll have a better overall understanding for future design.

What has that got do with anything ? If you want to learn how to use MCUs (Arduino) there is a lifetime of videos, demos and full on tutorials for free. Same goes for electronics too just as easy to get going. Or get ‘The Art of Electronics’ read thru that ! :nerd_face: I think maybe you are trying to run before you can walk. Back to my point, none of the above needs you to go near ‘Github’ hell I looked at Git once and thought " Nah" I’ve got a life to lead. Anyway designing PCBs and designing circuits are two seperate things and you will need skills so start straight away. Tip of the day :drum: don’t buy cheap Breadboards.
:mouse:

LOL

Sometimes you need to use someone else’s footprints, clone or submodule their repos, etc.