I’m Valeria and I’m designing a custom keyboard and I’ve created the PCB using KiCad. I’m planning to send it to production as soon as possible, but before doing that I’d really appreciate if some experienced eyes could review my work.
I’ve uploaded all the pictures of the relevant files (schematic, PCB layout and the resulting 3D model) at the following link: GitHub - Stighiz/Keyboard-for-production
I’m mainly looking for general feedback on the PCB layout, potential electrical or design issues, suggestions for improving trace routing or component placement, and anything else that could cause problems once the board goes into production (or hopefully, confirmation that the board should function correctly as it is once manufactured).
This is my first keyboard PCB, so any advice or correction is very welcome!
Thanks in advance <3
PS: I’m aware that the GPIO assignments might not be the most logical or optimized. There are specific reasons behind those choices, which I won’t go into here, but I thought it was worth mentioning
Data is (I assume) going over WiFi.
Looks like no GND plane at all. this probably is good enough for a DIY / one off Keyboard, but as you get two layers for free these days, it’s much better to put all tracks on one layer (Front is traditional) and put a nice big uninterrupted GND plane on the back of the PCB.
Antenna for the ESP does need a cutout though.
For the rest, there is not much to see on a few small screenshots. It’s much simpler if you just put the whole KiCad project on github. Do note there are .gitignore files for use with KiCad. You don’t have to put KiCad’s own backups into GIT.
Thanks a lot for your feedback, I really appreciated!
To answer your questions:
This is just a personal prototype project for now.
The board is powered via USB, and data is also transmitted through USB (via the microcontroller). I’m using an ESP32-S3-N8R8, which I will be soldering directly onto the PCB, and for now, WiFi isn’t being used at all (though I might experiment with it later). So at the moment, it’s a USB-only keyboard.
Interestingly, in both those tutorials, the GND lines are not connected anywhere on the PCB: they only route the rows and columns to the GPIO pins. Since those designs seem to work, I’m wondering why proper ground connections are skipped. What would you recommend for a design like mine?
I wasn’t asking anyone to watch the videos, I just shared them as context in case someone wondered where my approach came from.
I’m not defending any bad practices; I’m trying to understand why so much projects do things that way (not connecting gnd). I want to learn what the right approach should be but also why. Why so many people are following these bad practices?