Skip to the content
2 layers76.2 × 132.3 mmStm32 calc, the printed circuit board in 3D

A mechanical-key calculator that also works as a numpad, designed and sold as a kit.

Size
76.2 × 132.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
85
Nets
101
Pads
357
Tracks, vias
575, 41
Pours
3
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
2 Dec 2023
Updated
13 Aug 2026

Overview

Stm32 calc is an open-source printed circuit board by georgsnarbuts, from the georgsnarbuts/kalkulators repository on GitHub. It is a 2-layer board of 76.2 × 132.3 mm with 85 parts on 101 nets, routed with 575 tracks and 41 vias.

It is built around the STM32F072CBT6, TM1638 and USBLC6-2SC6, with the XC6206P332MR, HC-TYPE-C-16P-CH2.58-3A-02 and SS-1290 among its other parts. Its parts include 19 diodes, 16 capacitors, 10 resistors, 6 ICs and 3 connectors. It belongs with the STM32 boards of this library.

Main components

6

README

README.md

Kalkulators

A mechanical-key calculator that also works as a numpad, designed and sold as a kit.

The finished calculator held in one hand, seven-segment display lit The back plate, embossed with a scattered pattern of maths symbols

It runs standalone off a single AA cell as an eight-digit calculator. Plug it into USB-C and it enumerates as a keyboard instead, working as a numpad or macropad with every key remappable through VIA. The firmware watches VBUS to decide which of the two it should be.

Specification

MCUSTM32F072
Bootloaderstm32-dfu
DisplayTwo 4-digit 7-segment modules on a TM1638
Matrix4 x 5, 17 keys, COL2ROW
SwitchesMX-compatible
PowerOne AA cell, or bus power over USB-C
FirmwareQMK, with VIA support

Repository layout

text
firmware/            QMK keyboard definition: calculator logic, TM1638 driver, keymaps
hardware/
  pcb/               Main PCB, KiCad project plus fab package
  switch-plate/      Switch plate
  back-plate/        Back plate, embossed with maths symbols
  graphics/          Artwork used on the plates
docs/images/         Renders and assembly views

Firmware

firmware/ is a QMK keyboard definition, not a standalone project. Drop it into a QMK checkout before building:

sh
git clone https://github.com/qmk/qmk_firmware.git
cp -r firmware qmk_firmware/keyboards/kalkulators
cd qmk_firmware

There are two keymaps, default and via:

sh
make kalkulators:default
make kalkulators:via
make kalkulators:via:flash

The board uses the STM32 DFU bootloader, so put it in bootloader mode before flashing rather than expecting a reset key to work from the calculator side.

New to QMK? Start with the build environment setup and the make guide.

How the two modes work

VBUS_CHECK_PIN is wired to B5, and NO_USB_STARTUP_CHECK is set so the firmware will boot without a USB host present. On battery it stays in calculator mode and drives the TM1638 display directly. On USB it comes up as a keyboard. calc.c holds the arithmetic and the display formatting, tm1638.c the display driver.

Hardware

Three separate KiCad projects, each with a JLCPCB package ready to order.

BoardKiCad projectFab package
Main PCBhardware/pcb/stm32_calc.kicad_pcbhardware/pcb/jlcpcb/production_files/
Switch platehardware/switch-plate/calc_plate.kicad_pcbhardware/switch-plate/jlcpcb/production_files/
Back platehardware/back-plate/back_plate.kicad_pcbhardware/back-plate/jlcpcb/production_files/

Each production_files/ folder holds the gerber archive, the BOM and the pick-and-place CSV. STEP exports of the final revision sit alongside each project for mechanical fit checks.

The populated PCB with switches and both display modules fitted, before the case went on The bare PCB from the back, next to a pair of calipers

Licence

See LICENSE.

Parts

85
QtyValueFootprintReferences
171N4148Diode_SMD:D_SOD-123D3, D4, D5, D6, D7, D8, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19 +1
14SW_SPSTgeorgs_lib:geo1.00u_PCBSW_clear1, SW_divide1, SW_eight1, SW_five1, SW_four1, SW_minus1, SW_mutiplicate1, SW_nine1, SW_one1, SW_point1, SW_seven1, SW_six1, SW_three1, SW_two1
7MountingHole_PadMountingHole:MountingHole_2.2mm_M2_DIN965_PadH1, H2, H3, H4, H5, H6, H7
5100nCapacitor_SMD:C_0402_1005MetricC1, C3, C6, C9, C11
3100pFCapacitor_SMD:C_0402_1005MetricC15, C16, C17
310KResistor_SMD:R_0402_1005MetricR5, R6, R7
20.1uFCapacitor_SMD:C_0402_1005MetricC8, C10
210kResistor_SMD:R_0402_1005MetricR1, R8
21uCapacitor_SMD:C_0805_2012MetricC19, C20
24.7uCapacitor_SMD:C_0402_1005MetricC2, C7
25k1Resistor_SMD:R_0402_1005MetricR10, R13
2CC56-12GWAgeorgs_lib:7seg_sr410361nU3, U4
2SW_SPSTgeorgs_lib:geo2.00u_Vertical_PCBSW_equals1, SW_plus1
1100Resistor_SMD:R_0402_1005MetricR2
110nCapacitor_SMD:C_0402_1005MetricC5
11kResistor_SMD:R_0402_1005MetricR12
11n4148Diode_SMD:D_SOD-123D2
11uCapacitor_SMD:C_0402_1005MetricC4
12kResistor_SMD:R_0402_1005MetricR11
1Battery_CellBattery:BatteryHolder_Keystone_2460_1xAABT1
1C5307759Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J3
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ2
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ4
1LOGOgeorgs_lib:logo_w65G***
1LOGOgeorgs_lib:soyG***
1ResetButton_Switch_SMD:SW_SPST_TL3342SW3
1SS-1290georgs_lib:ss-1290SW2
1STM32F072CBT6Package_QFP:LQFP-48_7x7mm_P0.5mmU1
1SW_SPSTgeorgs_lib:geo2.00u_PCBSW_zero1
1TM1638georgs_lib:SOP28 tm1638IC1
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U2
1XC6206P332MR Package_TO_SOT_SMD:SOT-23U5
1batter_switchgeorgs_lib:SK12D07VG4_sliderSW1
1p channel mosfet sot 23Package_TO_SOT_SMD:SOT-23Q1
1schottky diode Diode_SMD:D_SOD-123D1

Similar boards

  • 2 layers100 × 100 mmMcu, the printed circuit board in 3D

    Mcu

    cs2dsb/coffee_assistant

    Free and open source software distributed under the terms of both the [MIT License][lm] and the [Apache License 2.0][la].

    168 parts10Apache-2.0
  • 2 layers100 × 100 mmTouchtron, the printed circuit board in 3D

    Touchtron

    lynaghk/touchtron

    Rust touchpad / usb experiments

    120 parts21
  • 2 layers276.9 × 142.2 mmBeat707, the printed circuit board in 3D

    Beat707

    FrankBuss/beat707

    A MIDI sequencer

    276 parts11
  • 2 layers170 × 45 mmRadio panel, the printed circuit board in 3D

    Radio panel

    jaxsonpd/trimware-hw

    A radio panel for use in flight simulators

    28 parts
  • 2 layers450 × 120 mmTraintracker, the printed circuit board in 3D

    Traintracker

    nik0sc/mrtracker-board-dev_v1

    MRTracker PCB design

    354 parts
  • 2 layers205.4 × 88.6 mmKeymini, the printed circuit board in 3D

    Keymini

    TeXitoi/keymini

    Keymini, a minimalist ergonomic keyboard.

    85 parts25MIT
  • 2 layers171 × 50.5 mmCtrl M, the printed circuit board in 3D

    Ctrl M

    nuess0r/ctrl-M

    Replacement controller for the famous IBM Model M keyboard based on the STM32F072 microcontroller. Supported by QMK.

    39 parts20
  • 2 layers391.2 × 166.5 mmTakt11800, the printed circuit board in 3D

    Takt11800

    vuckale/takt11800

    Replacement PCB for Cherry G80 11800/Compaq MX 11800 keyboard using QMK firmware and VIA

    284 parts12CERN-OHL-S-2.0

Questions

How big is the Stm32 calc PCB?

It measures 76.2 × 132.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Stm32 calc use?

85 parts, built around the STM32F072CBT6, TM1638, USBLC6-2SC6 and XC6206P332MR. 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.

Where can I download the Stm32 calc KiCad files?

From the georgsnarbuts/kalkulators repository on GitHub, at the commit this page was made from: the board is hardware/pcb/stm32_calc.kicad_pcb and its schematic hardware/back-plate/back_plate.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Stm32 calc design in my own project?

Its repository states no licence, so its author keeps all rights: ask georgsnarbuts before reusing the design.