Raspberry Pi Pico 4x4 Macropad

Raspberry Pi Pico 4x4 Macropad

As seen on the Tindie Blog! as well as on the Adafruit Blog

Buy it on Tindie

Description

This is a 4x4 Keyboard/keypad/macropad kit for you to build a 16 key macropad with a Raspberry Pi Pico. All you need are 16 MX mechanical switches and keycaps and about an hour for assembly.

Entering the Bootloader & flashing CircuitPython

Firmware

Libraries needed

You need to download the Adafruit CircuitPython Bundle 7.x from the CircuitPython Libraries page.

Uncompress it and copy the library called adafruit_hid to the lib folder of your macropad.

Code

Copy the following to code.py

# SPDX-FileCopyrightText: 2021 Pierre Constantineau
# SPDX-License-Identifier: MIT
# Raspberry Pi Pico 4x4 Macropad
"""
Code adapted from the following sources:
MACROPAD Hotkey (https://learn.adafruit.com/macropad-hotkeys/project-code)
Pico Four Keypad (https://learn.adafruit.com/pico-four-key-macropad/code-the-four-keypad)
"""
import board
import keypad
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
from adafruit_hid.keyboard_layout_us import KeyboardLayoutUS
kpd = Keyboard(usb_hid.devices)
keyboard_layout = KeyboardLayoutUS(kpd)
# define keys for 4x4 v1
keys = keypad.KeyMatrix(
row_pins=(board.GP0, board.GP1, board.GP2, board.GP3),
column_pins=(board.GP4, board.GP5, board.GP6, board.GP7),
columns_to_anodes=True,
)
keymap = [
("Select all", [Keycode.LEFT_CONTROL, Keycode.A]),
("Cut", [Keycode.LEFT_CONTROL, Keycode.X]),
("Copy", [Keycode.LEFT_CONTROL, Keycode.C]),
("Paste", [Keycode.LEFT_CONTROL, Keycode.V]),
("Hello World", "Hello World"),
("Cut", [Keycode.LEFT_CONTROL, Keycode.X]),
("Copy", [Keycode.LEFT_CONTROL, Keycode.C]),
("Paste", [Keycode.LEFT_CONTROL, Keycode.V]),
("Select all", [Keycode.LEFT_CONTROL, Keycode.A]),
("Cut", [Keycode.LEFT_CONTROL, Keycode.X]),
("Copy", [Keycode.LEFT_CONTROL, Keycode.C]),
("Paste", [Keycode.LEFT_CONTROL, Keycode.V]),
("Select all", [Keycode.LEFT_CONTROL, Keycode.A]),
("Cut", [Keycode.LEFT_CONTROL, Keycode.X]),
("Copy", [Keycode.LEFT_CONTROL, Keycode.C]),
("Paste", [Keycode.LEFT_CONTROL, Keycode.V])
]
print("keymap:")
for key in keymap:
print("\t", key[0])
while True:
key_event = keys.events.get()
if key_event:
if key_event.pressed:
print(keymap[key_event.key_number][0])
sequence = keymap[key_event.key_number][1]
for item in sequence:
if isinstance(item, int):
if item >= 0:
kpd.press(item)
else:
kpdrelease(-item)
else:
keyboard_layout.write(item)
else:
# Release any still-pressed modifier keys
for item in sequence:
if isinstance(item, int) and item >= 0:
kpd.release(item)

Schematic

schematic

PCB

Top of PCB

Bottom of PCB

Build Instructions - Summarized

Bottom PCB

  • Solder RPI Pico on bottom plate

Top PCB

  • Solder Diodes on Top Plate - make sure that the band on the diode is near the heavier line of on the silkscreen - or the square pad (depends on the top plate)

diodes

Join Top/Bottom PCB

  • Cut the headers and sockets in group of 4.
  • Join/connect the Header and Socket groups together
  • Line up the top/bottom PCB so that the sockets are all on the same side (top or bottom - I usually have the pins at the bottom)
  • make sure that the top plate can be read and has the same orientation as the bottom plate (Need pictures)
  • Solder the Sockets
  • Solder the pins

Solder Switches

  • Disconnect the top/bottom PCB making sure to pull straight not to bend the pins
  • Install the switches through the PCB. If you have a switch plate (a grid) push the switches through the switch plate as you install them on the PCB
  • Inspect that all switch pins go through the PCB.
  • Solder the switches
  • Reconnect the Top/Bottom PCB
  • Install keycaps

I sell on Tindie