Stampy Usage Guide
Last updated
Last updated
is a controller board meant to assist with the construction of a handwired keyboard. Instead of using some other daughterboard like the Pro Micro, Elite-C, etc., Stampy gets soldered directly to 3 switches, meaning that no extra space below the controller is needed.
RP2040 Microcontroller
Compatible with both Cherry MX style switches.
26 I/O pins available for your rows and columns, or other IO functions such as LEDs and RGB strips
3 pins are preset for columns, and 1 pin is preset for a row
Can cover well over 100 switches
USB Type-C connector
QMK-compatible
Rev. 1 Prototype #1
Black PCB
16Mbit (2MB) of flash memory
No VBUS detection circuit
Has access to GPIO9 (production version loses this pin due to it being used for VBUS detection)
Lack breakout pin for RST (Reset)
Rev. 1 Prototype #2
Purple PCB marked with X3
on top-side of PCB without Elephant logo
8Mbit (1MB) of flash memory
Has VBUS detection pin on GPIO9
3.3V breakout pad is not connected to anything
Rev. 1 Production
Purple PCB marked with X3
on top-side of PCB with Elephant logo
16Mbit (2MB) of flash memory
Has VBUS detection pin on GPIO9
Stampy has the following GPIO pins available: 0-8, 10, 11, 14-28.
4 of the pins are connected to the 3 switch locations in the following way:
Row 0 - GPIO14 (All 3 switches are connected to Row 0)
Column 0 - GPIO11 (Left switch)
Column 1 - GPIO10 (Center switch)
Column 2 - GPIO15 (Right switch)
The reset button is connected to RST and 3.3V (not GND)
GPIO9 is used for VBUS detection, so if you are using QMK, make sure you add the following line to your keyboard's config.h
:
The rest of the pins (0-8, 16-28) can be used in whatever manner you'd like, such as additional rows/columns or devices like OLED screens and pointing devices.
To enter flash mode:
Short the two pins RST
and 3.3V
or hold reset button for at least one second before release.
Alternatively, if QMK has been loaded, double tap the reset button.
The soft reset QK_BOOT
in QMK works as usual.
In QMK, RP2040 requires extra configuration for audio:
In the HAL configuration halconf.h
, enable the use of PWM: #define HAL_USE_PWM TRUE
.
In the MCU configuration mcuconf.h
, enable the use of corresponding PWM peripherial #define RP_PWM_USE_PWM<peripheral_number> TRUE
.
In the firmware configuration config.h
enable AUDIO_PIN
, AUDIO_PWM_DRIVER
, and AUDIO_PWM_CHANNEL
accordingly.
For example, if the pin GPIO7 (which uses PWM3 B
) is chosen to be used to connect a piezoeletric buzzer, then these are the configurations:
Due to the tight spacing of components, if you are using 5-pin switches, you will need to clip both of the plastic pins for the Center switch and the left plastic pin for the Right switch.
Do consult the to enable the correct peripheral and channel for the chosen pin.
The is an example of working audio for RP2040.