Hi everyone! It's finally time for my first project log. I hope you find it interesting. I have started with mechanical keyboards couple of years ago, moving from keyboard to keyboard, layout to layout until I started wanting an ErgoDox. Example ErgoDox: Picture from https://ergodox-ez.com/products/ergodox-ez-original-standalone?variant=40172496259 I looked at what's available but I didn't like any of the existing options, so the solution was only one - make my own from scratch. I started by writing down what I wanted from an ErgoDox. - The switches must be soldered to the PCB as opposed to being hot-swapable. - The PCB must support only Cherry MX compatible switches and only the regular ErgoDox layout as I don't like PCBs that support multiple layouts and switch types (I can see how they can be useful in the mass market but I am making a custom keyboard for myself and I know what I like) - It must use QMK as its firmware as it gives you tons of options and it's the most popular and widely used open source keyboard firmware. - There must be per key RGB backlight for all the keys, not just under some - The switch plate mount style must be sandwitch mount, top mount, bottom mount, gasket mount or integrated plate, but I am definitely not going plateless or using a tray mount (You can find out more about that, here: https://thomasbaart.nl/2019/04/07/cheat-sheet-custom-keyboard-mounting-styles/) With that knowledge in mind, I had to choose the electronics components. I knew I wanted to use an ARM microcontroller for the higher clock speeds and generally more space available as I wanted to be able to enable all QMK features I want without having to worry about filling up all the space. I had to also take into consideration what features QMK supports on which architecture and which components, so I went to QMK's website (https://qmk.fm/) and started digging. Ok, so now I knew what my limitations were and my chosen components were as follows: - STM32F303xC for the microcontroller - IS31FL3737 for the LED driver - SMD5050 for the LEDs (might change them later) I decided to go for a package that has separate pins for the red, green and blue as to be able to easily connect them according to the LED driver datasheet example schematic (although I am not sure if I can in-fact connect LEDs in a different package to this LED Driver) - the switches didn't really matter as all Cherry MX compatible switches use the same pinout and relatively the same footprint. - I knew I definitely wanted USB Type C for both connecting the keyboard to the PC and for connecting the two halves together I will post full parts list/bill of materials when the schematic is finish enough and I am about to order it to get printed. So I fired up KiCAD and started designing the PCB. Being unable to find all the schematic symbols I needed in a single place, with the schematic symbols not being designed the way I want them and being a bit of a control freak, I started by designing the important things myself, while consulting their datasheets: The simple symbols such as a 5V or a capacitor, I have reused from the libraries that come with KiCAD. So, I started slowly designing the schematic. First, I started with the switch matrix: Then the LED matrix: Then I slowly, (because I have no idea what I am doing and while I went to school for electronics, I am pretty much reteaching myself now and we never did work with microcontrollers and datasheets in school ) started building the rest of the schematic: It isn't fully finished yet. I still have to connect the I2C on the microcontroller for the two halves to communicate with one another and also connect the USB receptacle, also fix the wiring of the BOOT0 pin. While getting frustrated with the schematic and wanting a break from it, I still wanted to work on the keyboard but I needed a distraction, so I fired up FreeCAD and started working on the case, which unfortunately, I will have to show you, next time. Everything was created with Free & Open Source Software: - Created on Linux - Schematic done in KiCAD - Notes taken in the Termite terminal with VIM - Screenshots taken with scrot - Images cropped with GIMP - Case done in FreeCAD - Project log written and posted from Firefox. I hope you enjoy it. Let me know what you think!