
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].

A mechanical-key calculator that also works as a numpad, designed and sold as a kit.
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.
A mechanical-key calculator that also works as a numpad, designed and sold as a kit.
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.
| MCU | STM32F072 |
| Bootloader | stm32-dfu |
| Display | Two 4-digit 7-segment modules on a TM1638 |
| Matrix | 4 x 5, 17 keys, COL2ROW |
| Switches | MX-compatible |
| Power | One AA cell, or bus power over USB-C |
| Firmware | QMK, with VIA support |
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 viewsfirmware/ is a QMK keyboard definition, not a standalone project. Drop it into
a QMK checkout before building:
git clone https://github.com/qmk/qmk_firmware.git
cp -r firmware qmk_firmware/keyboards/kalkulators
cd qmk_firmwareThere are two keymaps, default and via:
make kalkulators:default
make kalkulators:via
make kalkulators:via:flashThe 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.
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.
Three separate KiCad projects, each with a JLCPCB package ready to order.
| Board | KiCad project | Fab package |
|---|---|---|
| Main PCB | hardware/pcb/stm32_calc.kicad_pcb | hardware/pcb/jlcpcb/production_files/ |
| Switch plate | hardware/switch-plate/calc_plate.kicad_pcb | hardware/switch-plate/jlcpcb/production_files/ |
| Back plate | hardware/back-plate/back_plate.kicad_pcb | hardware/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.
See LICENSE.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 17 | 1N4148 | Diode_SMD:D_SOD-123 | D3, D4, D5, D6, D7, D8, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19 +1 |
| 14 | SW_SPST | georgs_lib:geo1.00u_PCB | SW_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 |
| 7 | MountingHole_Pad | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad | H1, H2, H3, H4, H5, H6, H7 |
| 5 | 100n | Capacitor_SMD:C_0402_1005Metric | C1, C3, C6, C9, C11 |
| 3 | 100pF | Capacitor_SMD:C_0402_1005Metric | C15, C16, C17 |
| 3 | 10K | Resistor_SMD:R_0402_1005Metric | R5, R6, R7 |
| 2 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C8, C10 |
| 2 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R8 |
| 2 | 1u | Capacitor_SMD:C_0805_2012Metric | C19, C20 |
| 2 | 4.7u | Capacitor_SMD:C_0402_1005Metric | C2, C7 |
| 2 | 5k1 | Resistor_SMD:R_0402_1005Metric | R10, R13 |
| 2 | CC56-12GWA | georgs_lib:7seg_sr410361n | U3, U4 |
| 2 | SW_SPST | georgs_lib:geo2.00u_Vertical_PCB | SW_equals1, SW_plus1 |
| 1 | 100 | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 10n | Capacitor_SMD:C_0402_1005Metric | C5 |
| 1 | 1k | Resistor_SMD:R_0402_1005Metric | R12 |
| 1 | 1n4148 | Diode_SMD:D_SOD-123 | D2 |
| 1 | 1u | Capacitor_SMD:C_0402_1005Metric | C4 |
| 1 | 2k | Resistor_SMD:R_0402_1005Metric | R11 |
| 1 | Battery_Cell | Battery:BatteryHolder_Keystone_2460_1xAA | BT1 |
| 1 | C5307759 | Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J3 |
| 1 | Conn_01x03 | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J2 |
| 1 | Conn_02x03_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J4 |
| 1 | LOGO | georgs_lib:logo_w65 | G*** |
| 1 | LOGO | georgs_lib:soy | G*** |
| 1 | Reset | Button_Switch_SMD:SW_SPST_TL3342 | SW3 |
| 1 | SS-1290 | georgs_lib:ss-1290 | SW2 |
| 1 | STM32F072CBT6 | Package_QFP:LQFP-48_7x7mm_P0.5mm | U1 |
| 1 | SW_SPST | georgs_lib:geo2.00u_PCB | SW_zero1 |
| 1 | TM1638 | georgs_lib:SOP28 tm1638 | IC1 |
| 1 | USBLC6-2SC6 | Package_TO_SOT_SMD:SOT-23-6 | U2 |
| 1 | XC6206P332MR | Package_TO_SOT_SMD:SOT-23 | U5 |
| 1 | batter_switch | georgs_lib:SK12D07VG4_slider | SW1 |
| 1 | p channel mosfet sot 23 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | schottky diode | Diode_SMD:D_SOD-123 | D1 |

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].





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

vuckale/takt11800
Replacement PCB for Cherry G80 11800/Compaq MX 11800 keyboard using QMK firmware and VIA
It measures 76.2 × 132.3 mm and has 2 copper layers, 1.6 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask georgsnarbuts before reusing the design.