GitHunt
MA

mawaeg/Sharkropad

Sharkropad is an open-source hotswappable macropad supporting QMK.

Sharkropad

Sharkropad is an open-source hotswappable macropad supporting QMK/VIA.

This repository includes a custom pcb design, a 3d printed case and QMK/VIA firmware.

Sharkropad Logo

Features

  • USB-C with ESD Protection
  • Rotary Encoder
  • OLED Display
  • Customizable RGB Lighting
  • Customizable keymap using VIA
  • Hot-Swappable Switches
  • Powered by a STM32L432 MCU

Getting Started

Pcb

The Sharkropad is based on a custom pcb. You can find the manufacturing files in the latest release.

I got my pcb manufactured and assembled from JLCPCB.

In case you want to assemble the pcb yourself you can find all the needed parts in the bom in the latest release.

Other needed parts

Part Quantity Link (recommendation) Note
filament of your choice 50g 3djake.de For the top parts (I used a matte black PLA filament)
transparent filament 30g redline-filament.com Transparent bottom parts for the underglow
M2.5 Heat Inserts 4 cnckitchen.store
M2.5 x 12 Screws 4 cnckitchen.store
Protective buffer 4 amazon.de
Keycaps 12 aliexpress.com
Stranded wire 10cm tbd Currently there is a problem with the pcb when using the underglow leds where a cable needs to be soldered
Rotary Encoder 1 42keebs.eu This particular one works with the case and the knob
OLED display 1 42keebs.eu
OLED socket (low profile) 1 42keebs.eu
Hotswap sockets 12 42keebs.eu (2 x 10 sockets) !Cherry MX-style!
Switches 12 candykeys.com Any MX compatible switch is fine

3d printed case

The case consists of 4 3d printed parts:

  • Bottom part of the case
  • Top part of the case
  • Plate for the switches
  • Rotary encoder knob

The stl files for the 3d printed parts can be found under cad/stl/.

The parts are created with OpenSCAD and the source code is stored at cad/.

For the bottom part of the case I used transparent PLA to make the underglow leds shine through.

For the top part of the case, the plate and the rotary encoder knob I used matte black PLA.

I printed the case and the plate with default print settings with a layer height of .2mm.

NOTE: For the top and bottom case you will need some supports for the cutouts for the encoder and the screw heads. Default support settings should work just fine. (I like to use organic supports.)

The rotary encoder knob should be printed with a layer height of .2mm and at least 3 solid bottom layers.

Building the Sharkropad

  1. Get a PCB and prepare it by soldering the components onto it (if not already done through SMT assembly)

  2. Assemble the rotary encoder, the oled socket and the hotswap sockets (if not already done)

  3. Fix the issue with the pcb as shown in this chapter

    Heat inserts Heat inserts
  4. Place a foam (as shown) to support the OLED and mount the oled:

    Heat inserts
  5. Assemble the switches (put the plate between pcb and switches) and the keycaps

  6. Insert the heat inserts into the holes provided in the top part:

    Heat inserts
  7. Put the protective buffers on the bottom case to prevent the macropad from sliding around:

    Heat inserts
  8. Screw the case together with the pcb in between and put the knob on the rotary encoder

Flashing the firmware

NOTE: Once the firmware has been flashed the first time, you can enter bootloader mode by disconnecting the macropad, pressing and holding the encoder knob while plugging it back in. Then the macropad is in bootloader mode and you can connect to it and program it using the STM32 CubeProgrammer or flash using QMK.

There are two ways to flash the firmware onto the Sharkropad:

  1. Use the official QMK repository to build and flash the firmware
    • This is the easier way, as QMK installs all the needed tools
  2. Download the firmware from the latest release and flash it with the STM32 CubeProgrammer
    • In case firmware updates are not yet merged to the QMK repository, the firmware provided by the latest release of this repository might be more up to date

Flash using QMK

  • Install QMK as described in the official installation documentation provided here

  • After installing you need to navigate into the qmk repository which was cloned by the setup and checkout the develop branch, as the firmware is not yet on the master branch:

    git switch develop
  • You can then compile and flash using qmk:

    qmk compile -kb mawaeg/sharkropad -km default
    qmk flash -kb mawaeg/sharkropad -km default

    or for the via compatible firmware:

    qmk compile -kb mawaeg/sharkropad -km via
    qmk flash -kb mawaeg/sharkropad -km via

IMPORTANT: As the via json and keymap are not included in the QMK repository, you need to copy them, in case you want to compile the via keymap.
You need to copy firmware/via.json and firmware/keymaps/via to <path_to_qmk>/keyboards/mawaeg/sharkropad and <path_to_qmk>/keyboards/mawaeg/sharkropad/keymaps

Flash using STM32 Cube Programmer

  1. Get the provided firmware in the latest release

    • If you want to be able to use VIA to modify the keymap you should use sharkropad_via.bin
    • If you only need QMK functionality you can also use sharkropad_default.bin
  2. Flash the firmware using the STM32 CubeProgrammer as shown below:

Cube Programmer connecting

Cube Programmer flashing

Fixing the pcb

In the current design of the pcb, the rgb underglow and the rgb matrix for the keys are connected to different Output pins of the STM32.
However that is not supported by QMK. Therefore a cable needs to be manually soldered to also make the rgb underglow working:

  • Remove the resistor R10

  • Solder a cable from the left contact of R10 to the bottom contact of R13

    Pcb fix

Customize the keymap using VIA

VIA is a tool that allows you to customize the keymap of your keyboard.

As the configuration for this macropad is not yet added to the via repository a manual step is needed to customize using VIA.

  1. Open the VIA web app at https://usevia.app/

  2. Navigate to the settings and ensure the Show Design tab option is enabled

    Enable Design Tab
  3. Open the design tab and press Load (Draft Definition)

    Load definition
  4. Select the via.json provided in this release. You should now see a model of the macropad:

    Design Tab Overview
  5. You can now open the Customize window where you need to click Authorize device +

    Authorize device
  6. Select the device with Sharkropad in its name

You can now customize the individual keys and also customize the RGB Lighting:

Customize keymap

Customize lighting

License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.

This project includes third-party components (libraries and fonts) that are licensed under their respective terms. These components are not covered by the GPLv3 license of this project. Users must adhere to the specific licenses provided in the respective directories.

Libraries used for the pcb

For the creation of the pcb various libraries where used.

A copy of most of them are included in this project to make the kicad project work without manually installing those libraries.

Those libraries are stored under /electronics/lib/.

The libraries are licensed under their respective license. Please be aware of the README.md and LICENSE.md files in the lib folder.

Font used on the pcb

The font used under the logo on the pcb is Cherry Bomb One.

A copy of the font is kept under _assets/Cherry_Bomb_One.
To make the font display correctly in KiCad you need to install it on your OS.

This font itself is licensed under the original OFL-1.1 License.
Please be aware of the License: OFL.txt

mawaeg/Sharkropad | GitHunt