Sunriser: a Completely Custom Keyboard With a Volume Knob!

by crashl1445 in Circuits > Electronics

4284 Views, 43 Favorites, 0 Comments

Sunriser: a Completely Custom Keyboard With a Volume Knob!

image2.jpeg
image0.jpeg
unnamed (14).jpg

I decided to completely custom keyboard for my SIDE project in my engineering class taught by Ms. Berbawy at Irvington High School. This board features a TKL minus F-row layout, rotary encoder that serves as a volume knob, and support for an OLED display.

The name "Sunriser" is a play on the name of the keyboard Sunsetter which was designed and manufactured by Charue Design [see pic 3], which was my first introduction into the hobby of custom keyboards. The board served as a huge inspiration for this project not only because of the name, but also because I wanted to be able to use the extra badges I owned from participating in their group buy for this project.

  • Shout out to Duv Basil for help with the code
  • Shout out to Ms. Berbawy for believing in me when no one else did and for supporting me through some rough times
  • AND CHARUE DESIGN (the team and community) for giving me the opportunity to enter this new hobby and for serving as the inspiration for this project

Supplies

unnamed (15).jpg
unnamed (16).jpg
unnamed (20).jpg
unnamed (21).jpg
unnamed (18).jpg
unnamed (19).jpg
unnamed (23).jpg
unnamed (24).jpg
unnamed (17).jpg

Materials you will need:

Tools you will need:

  • Soldering Iron
  • Solder
  • Screwdriver
  • M2 Allen key
  • Pliers
  • Flush cutters
  • 3D Printer
  • Laser Cutter
  • Super Glue

Software:

  • Fusion 360
  • Adobe Illustrator
  • KiCad
  • QMK
  • Respective Programs for 3D-Printer & Laser Cutter

The PCB!

unnamed (8).png
unnamed (7).png
Screenshot 2022-05-04 225903.png
unnamed (6).png
unnamed (25).jpg
F6B8PTZL2RLC78U.jpeg
F9FJKHHL2RLC78S.jpeg
  1. I Used KLE to plan and create the desired keyboard layout. I also added optional layouts and key layouts (color-coded).
  2. [pic 1]
  3. Then I moved over to KiCad, a PCB design software and through available keyboard libraries, I created my PCB schematic by using a switch matrix and diodes to optimize the number of rows and columns used and assigned those rows and columns to pins on the Elite-C microcontroller.
  4. [pic 2 and 3]
  5. I added the switch portion of the encoder to the matrix and assigned the two other pins to the MCU
  6. I also decided to add support for an OLED display, as shown here, but I decided not to use it for my first iteration of this project.
  7. [pic 5]
  8. Don't forget to create a circuit that uses a push-button switch to short the reset and ground pins on your MCU, without needing to manually do so
  9. The PCB was then created by placing the component footprints and using "Free Router" to route the traces
  10. [pic 4]
  11. Make sure to add stabilizer holes (if your footprint does not support it)
  12. I then created and added a custom anime japanese car weeb silkscreen that I made in Adobe Illustrator!
  13. [pic 6]
  14. Once I was ready to print the PCB I used JLCPCB to get my PCB manufactured.
  15. [pic 7]

The Case Design

unnamed (16).png
unnamed (13).png
unnamed (14).png
unnamed (12).png
unnamed (27).jpg
unnamed (15).png
unnamed (9).png
unnamed (10).png
unnamed (11).png
  1. I created the case in Fusion 360
  2. pink- top case
  3. green- bottom case
  4. red- PCB
  5. translucent dark- acrylic plates
  6. [pic 1] overall view
  7. [pic 2] bottom view of the top case
  8. [pic 3] top view of the bottom case
  9. [pic 4] bottom view of the bottom case
  10. I put the source information of the layout from KLE into a plate generator to create SVG files to create a compatible plate for the layout I chose
  11. (don't forget to overlap the optional layouts over the main part off the layout before you put it into the plate generator)
  12. I imported this SVG into Fusion and created a 1.5mm thick plate.
  13. I edited the plate to include tabs, that will eventually serve as gaskets for a softer typing feel as well as to suspend the plate and PCB between the top and bottom case
  14. [pic 5] (from keyboard university)
  15. Receiving/Female tabs were designed as a part of the case that has spacing to accommodate the thickness of the plate due to both the top and bottom gaskets made from the silicone rubber sheets
  16. [pic 2 and 6]
  17. I used the dimensions from the finished PCB to size the case to my liking
  18. I made sure the holes for the knob, USB port, badge slot, navigation cluster, arrow keys, alphas/modifiers, and keycaps were given attention.
  19. [pic 7 and 8]
  20. A chamfer was added under the nav cluster due to the lack of clearance from the case being too close to the keycaps
  21. This is also where I created a slot similar to the one from the "Sunsetter" to accept the badges from my other board.
  22. The case was also split, with male and female tabs to connect the two halves
  23. [pic 9]
  24. Due to the size of the keyboard, I was unable to fit the entire case on the build plate of a Prusa Mk3+
  25. I also designed access to the bottom of the board with an acrylic plate. It is meant to a be pleasant and aesthetic window to be able to view the solder job, components, and PCB silkscreen from underneath
  26. [pic 4]
  27. I also designed an accent plate, where I would be able to offset a thin acrylic plate over the diodes that I'd be able to engrave with my designs!

Acrylic Plates

unnamed (17).png
unnamed (29).jpg
unnamed (32).jpg
unnamed (4).jpg
IMG_2014.jpg
  1. To create the plates I downloaded the plates I had already designed in Fusion 360 as an SVG file.
  2. Next, I headed to Adobe Illustrator to edit/add graphics that will be engraved or rastered including my name, contact info, keyboard name, and sun graphic to go along with the name.
  3. [pic 1] the completed adobe illustrator file ready to cut
  4. red- cut lines
  5. blue- engrave lines
  6. black- raster lines
  7. Then, I tested the graphics by cutting the plates out of wood
  8. [pic 2] wooden test cut for the bottom plate
  9. [pic 3] wooden test cut for the switch plate
  10. After I was happy with the results, I laser cut them out of 1.5mm thick acrylic sheets
  11. CAUTION
  12. [pic 5] (thin acrylic can be fragile and crack)
  13. 2+ mm acrylic is way too thick for the stabs to fit with no issue
  14. Then I assembled the switch and accent plate with M2 screws and standoffs
  15. [pic 6]

3D Printing the Case

Layer 1.png
Layer 2.png
Layer 3.png
unnamed (3).jpg
IMG_2007.jpg
IMG_2008.jpg
  1. 3D Print the Case in PETG for extra strength or PLA for better color options, I chose PETG
  2. Open the STL files in the slicer. I used the settings below which might change depending on your printerfo1':
  3. 20 % infill (may vary)
  4. Supports everywhere
  5. CAUTION: Note the orientation of each print
  6. [pic 2, 4, and 6]
  7. I used the Prusa Mk3+ and so, had to print in 3 batches
  8. [pic 1] both bottom halves
  9. [pic 3] left top half
  10. [pic 5] right top half
  11. Final Prints!!
  12. [pic 6]


  • BONUS [pic 8 and 9] Badge test fits!
  • LOVE YOU CD community

Stabilizers!

unnamed (26).jpg
  1. Here I followed the stabilizer's included instructions to lube and install the stabilizers into the PCB
  2. more advanced tutorial for lubing and tuning stabs

Soldering

IMG_2010.jpg
unnamed (28).jpg
unnamed (30).jpg
Inked66673403125__D972F67E-FE7A-41E2-8AAC-A73E7AF1EE46_LI.jpg
IMG_2011.jpg
IMG_2012.jpg
  1. Through-hole solder the MCU sockets (NOT THE MCU) into the PCB while it is facing down
  2. [pic 3]
  3. (make sure you clip the protruding ends that face up) this is necessary for the switch above it to have enough clearance to sit flush onto the PCB)
  4. SMT solder the diodes onto the top half of the PCB
  5. [pic 4]
  6. SMT solder the reset switch
  7. Then with the acrylic plate above the PCB click in all the switches through the plate (in your desired layout) and make sure the legs fit into the PCB.
  8. [pic 5]
  9. When you have all of your switches in, through-hole solder every switch on the board
  10. Next, solder in the rotary encoder
  11. Don't forget to solder resistors, headers, and/or wires for the OLED if applicable
  12. Finish off the board by soldering the Elite-C to the microcontroller sockets you soldered in step 1
  13. [pic 2] is me :)
  14. [pic 1, 6, and 7] finished (PCB plate switch combo) product

Programming

  1. The easiest way to create the program for this keyboard is to use QMK
  2. (QMK is the easiest and most widely used keyboard software)
  3. I used the website "Keyboard Firmware Builder" to start building the basics of the firmware
  4. This website takes a layout combined with some settings to create a QMK program for any custom keyboard. Even though the website is outdated, it can still work.
  5. The website asks to input:
  6. a switch layout imported from KLE
  7. a wiring diagram of my switch matrix
  8. the assigned pins to each row
  9. diode direction
  10. MCU selection
  11. the keymap itself
  12. Next, I had to download the source files because the website is outdated and was based on older QMK builds. This meant that I had to edit each individual file to the standard formatting used by recent QMK builds by referencing default keymaps and files of current keyboards on the market as well as the QMK docs.
  13. Not to mention, I had to also add in support for the rotary encoder as explained by this part of the QMK write-up.
  14. Then using the QMK environment, I compiled the newly adjusted files and flashed them to the MCU using the QMK bootloader.
  15. I continued to edit, refine, and tweak the firmware to my liking using features such as unique keycodes, layers, and much more, all available in the vast library of QMK support.

Assembling the Case Pieces

unnamed (7).jpg
unnamed (9).jpg
unnamed (5).jpg
unnamed (6).jpg
unnamed (10).jpg
  1. Clean up and remove the supports fro the prints
  2. Re-drill the standoff holes if necessary
  3. Sand down and clean up edges
  4. Fit the halves into each other (Dremel/Sand if needed)
  5. Install the M2 inserts into the top and bottom case (method based on tolerances)
  6. [pic 1]
  7. Method 1 (If tighter)
  8. Heat the inserts via a heat gun and
  9. Press fit the hot inserts into the holes
  10. Method 2 (If looser)
  11. Put a drop of super glue in the standoff hole
  12. Use pliers to push the standoff into the hole
  13. If necessary use liquid super glue around the edge of the standoff/hole
  14. Cut out the silicone pieces into gasket tabs sized by the indents in the case
  15. Install gaskets
  16. Set up the bottom half facing up
  17. add super glue to each tab indent
  18. Apply the silicone gaskets to each indent
  19. [pic 2]
  20. Place the acrylic switch plate facing up
  21. Add super glue to each of the tabs
  22. Apply the silicone gaskets to each tab,
  23. [pic 3]
  24. make sure there is no overhanging silicone
  25. Let them dry
  26. Test fit the top and bottom halves with the plate ONCE DRY
  27. [pic 4]
  28. Fit in and screw the "Sunsetter" badge in
  29. [pic 5]

Final Assembly

unnamed.jpg
F5QSILFL2RLC7YC.jpeg
FXWYNDPL2RLC84Z.jpeg
  1. Place the PCB plate switch assembly into the bottom case making sure:
  2. the tabs fit into the indents and each one makes contact with the silicone gaskets
  3. the USB port from the microcontroller fits into the USB slot in the case
  4. Fit the top case over the PCB, sandwiching the plate.
  5. Screw in the bottom case into the top case from the bottom using, appropriately sized M2 screws
  6. Then with the board flipped over, screw the bottom acrylic panel into the bottom case
  7. Then dress up your keyboard with your favorite keycaps
  8. Done :)

Conclusion

unnamed (11).jpg
unnamed (12).jpg

This project taught me the basics of programming, 3D printing, laser cutting, and appropriate software. This keyboard, hobby, and class pushed me through some tough times, taught me new skills, and showed me a creative side of myself that I never knew existed! Thank you to everyone who helped me! Until my next project or post, peace everyone. ✌️

P.S. Message me on discord "Crash#8751" if any of you need help on a similar project :)