
ESP32 Transmitter and Receiver
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

A 12 pad USB MIDI controller with 6 rotary encoders and a TFT screen!
HEXAD is an open-source printed circuit board by sudo-apt-install-tap, from the sudo-apt-install-tap/HEXAD repository on GitHub. It is a 2-layer board of 130 × 120 mm with 48 parts on 73 nets, routed with 668 tracks and 115 vias.
Its parts include 18 switches, 12 diodes, 8 resistors, 2 capacitors and 2 connectors. It belongs with the RP2040 boards of this library.
A USB MIDI controller built around a Raspberry Pi Pico (RP2040) with:
I wanted a proper MIDI controller with real pads, real knobs and a screen that tells me what is going on, instead of guessing which knob does what. It also gave me a reason to design a board with a GPIO expander for the first time.
also because KNOBS.
The firmware is in firmware. It is written with the Arduino-Pico core and TinyUSB MIDI. Core 0 scans the pads, the encoders and sends the MIDI. Core 1 only draws the display, so a screen refresh never makes the knobs lag.
The pads are plain switches, so they send a fixed velocity of 100.
| Control | Message | Notes |
|---|---|---|
| Pads (bottom row, left to right) | Note 36 to 39 | Channel 1 |
| Pads (middle row) | Note 40 to 43 | Channel 1 |
| Pads (top row) | Note 44 to 47 | Channel 1 |
| Encoders 1 to 6 | CC 20 to 25 | Absolute value, starts at 64, steps of 2 |
| Encoder buttons 1 to 6 | CC 30 to 35 | 127 when pressed, 0 when released |
| Function | Pins |
|---|---|
| Pad matrix columns | GPIO0 to GPIO3 |
| Pad matrix rows | GPIO4 to GPIO6 |
| Encoder buttons | GPIO7, 10, 11, 12, 16, 17 |
| I2C (MCP23017 at 0x27) | SDA GPIO8, SCL GPIO9 |
| TFT (SPI0) | SCK GPIO18, MOSI GPIO19, CS GPIO14, DC GPIO13, RST GPIO15 |
The MCP23017 runs on 3.3V with 4.7k pull-ups on SDA and SCL. Its address pins are pulled high with solder jumpers to ground, so you can change the I2C address without touching the firmware wiring. The spare GPB4 to GPB7 pins are broken out on a 4 pin header.
CAD files are available at /CAD.
Full render
PCB
Sch
| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | D | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12 |
| 12 | SW_Push | KEYS:SW_Cherry_MX_PCB_1.00u | SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SW10, SW11, SW12 |
| 6 | 10k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R1, R2, R3, R4, R5, R6 |
| 6 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm_CircularMountingHoles | SW13, SW14, SW15, SW16, SW17, SW18 |
| 3 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1, JP2, JP3 |
| 2 | 4.7k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R7, R8 |
| 1 | 100nf | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C2 |
| 1 | 10uf | Capacitor_THT:CP_Radial_D5.0mm_P2.00mm | C1 |
| 1 | Conn_01x04_Socket | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | Conn_01x08_Pin | JLCImport:1_8INCH_LCD_MODULE | J1 |
| 1 | LOGO | LOGO | G*** |
| 1 | MCP23017x-x-SO | Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm | U1 |
| 1 | RaspberryPi_Pico | Module:RaspberryPi_Pico_Common_Unspecified | A1 |
It measures 130 × 120 mm and has 2 copper layers, 1.6 mm thick.
48 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the sudo-apt-install-tap/HEXAD repository on GitHub, at the commit this page was made from: the board is PCB/PCB.kicad_pcb and its schematic PCB/PCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask sudo-apt-install-tap before reusing the design.

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

adamws/kicad-kbplacer
KiCad plugin for automatic keyboard's key placement and routing



softerhardware/Hermes-Lite2
A second generation low-cost amateur HF software defined radio transceiver.

CRImier/MyKiCad
My KiCad boards. Can't be bothered uploading individually anymore, so here you go.

loxodes/vna
Under development open hardware microwave vector network analyzer

fellesverkstedet/fabricatable-machines
Motion systems for flexible digital fabrication and research. Easy to fabricate and customize. Documentation: https://github.com/fellesverkstedet/fabricatable-machines/wiki