Skip to the content
PCBKitNew board
2 layers81.3 × 131.4 mmCalculator, the printed circuit board in 3D

A computer algebra system project written in C++, built for the i.MX RT1011 crossover MCU.

Size
81.3 × 131.4 mm
Copper layers
2
Thickness
1.6 mm
Parts
65
Nets
68
Pads
345
Tracks, vias
529, 74
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
20 Apr 2026
Updated
28 Aug 2026

Overview

Calculator is an open-source printed circuit board by hdkghc, from the hdkghc/calculator repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 81.3 × 131.4 mm with 65 parts on 68 nets, routed with 529 tracks and 74 vias.

It is built around the BC547 and S8550. Its parts include 37 switches, 14 resistors, 3 capacitors, 3 ICs and 2 transistors. It belongs with the RP2040, AVR (ATmega, ATtiny) and NXP (LPC, Kinetis, i.MX RT) boards of this library.

Main components

2

README

README.md

Calculator

中文

Calculator | Operator Lambda

A scientific/graphical calculator firmware for Raspberry Pi Pico, with CAS (Computer Algebra System) and graphical display support.

PCB Preview ---->

PCB Preview

Status: Under active development. Core CAS and display subsystem are partially implemented; basic arithmetic, expression parsing, and simplification are functional. Integration and matrix operations are in progress.


Features

  • CAS core: expression parsing, simplification, differentiation, integration (partial), rational arithmetic, symbolic manipulation.
  • Display: 1.8" ST7735 TFT (160×128) with custom font rendering (ClassWiz-style fonts included).
  • Input: 6×6 matrix keypad, debounced and mapped to mathematical operators.
  • Storage: SD card support (WIP) for program/data loading.
  • Modular design: separated CAS, display interface, input handling, and hardware abstraction.

Hardware Requirements

  • MCU: Raspberry Pi Pico (primary), Arduino Nano (power/control)
  • Display: ST7735-based 1.8" TFT (SPI, with optional SD slot)
  • Keypad: 6×6 matrix keypad (custom PCB – see hardware/kicad directory)
  • Optional: SD card module (SPI)

Refer to wiring.txt (deprecated) and hardware/kicad/ for schematics and PCB design. Gerber files are available in hardware/gerber*.zip.


Project Structure

text
calculator/
├── CMakeLists.txt          # Build configuration
├── build.sh                # Convenience build script
├── inc/                    # Header files
│   ├── cas/                # CAS core (parser, simplifier, integrator, etc.)
│   └── dispinterface/      # Display abstraction
├── src/                    # Source files
│   ├── main.cpp            # Entry point
│   └── cas/                # CAS implementation
├── fonts/                  # Generated font data (ClassWiz style)
├── font2h/                 # Font conversion tools (font2h, preview)
├── hardware/               # PCB design (KiCad, Fritzing(deprecated), Gerber)
├── test/                   # Unit tests (CAS functions)
├── resources/              # Images (logo, PCB preview)
└── LICENSE                 # GPLv3

Build Instructions

  1. Install the Raspberry Pi Pico SDK and toolchain (arm-none-eabi-g++, CMake).
  2. Clone this repository:
    text
    git clone https://github.com/hdkghc/calculator.git
    cd calculator
  3. Build:
    • Recommended: run ./build.sh (automates CMake configuration and build).
    • Manual:
      text
      mkdir build && cd build
      cmake ..
      make
  4. Flash: drag the generated .uf2 file to your Pico's mass storage device, or use picotool.

Dependencies

  • Raspberry Pi Pico SDK (required)
  • C++17 compiler (arm-none-eabi-g++)

License

This project is licensed under the GNU General Public License v3.0.
See LICENSE for details.


Disclaimer

This is an amateur, non-commercial open‑source project. All hardware and software are provided “as is”, without any warranty. The author assumes no liability for any damage or injury resulting from the use, assembly, or modification of this project.


Contributing

Contributions are welcome! Please read CONTRIBUTING.md for guidelines.

Parts

65
QtyValueFootprintReferences
36SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW10, SW11, SW12, SW13, SW14, SW15, SW16, SW17, SW18, SW19, SW20, SW21, SW22, SW23 +20
54k7Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR3, R4, R5, R6, R14
4, , ,
4100kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR7, R8, R12, R13
2330RResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2
1100nFCapacitor_THT:C_Disc_D7.0mm_W2.5mm_P5.00mmC3
1100nFCapacitor_THT:C_Disc_D6.0mm_W2.5mm_P5.00mmC1
110kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR11
11MResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR9
125V 100uFCapacitor_THT:CP_Radial_D8.0mm_P3.50mmC2
1470kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR10
1Arduino_Nano_v2.xModule:Arduino_NanoU2
1AudioJack3_SwitchTRConnector_Audio:Jack_3.5mm_CUI_SJ1-3525N_HorizontalJ2
1BC547Package_TO_SOT_THT:TO-92_Inline_WideQ1
1Jack-DCConnector_BarrelJack:BarrelJack_Kycon_KLDX-0202-xC_HorizontalJ1
1PicoMCU_RaspberryPi_and_Boards:RPi_Pico_SMD_THU1
1S8550Package_TO_SOT_THT:TO-92_Inline_WideQ2
1SW_DIP_x04Button_Switch_THT:SW_DIP_SPSTx04_Slide_6.7x11.72mm_W7.62mm_P2.54mm_LowProfileSW37
1TFTMSP1803_TFT_12pin_Library:MSP1803_TFT_12pinU3

Questions

How big is the Calculator PCB?

It measures 81.3 × 131.4 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Calculator use?

65 parts, built around the BC547 and S8550. 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 Calculator KiCad files?

From the hdkghc/calculator repository on GitHub, at the commit this page was made from: the board is hardware/kicad/calculator.kicad_pcb and its schematic hardware/kicad/calculator.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Calculator design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

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

    Fluxgate

    yjmwxwx/stm32asm

    122 parts16GPL-3.0
  • 2 layers128 × 77 mmScale, the printed circuit board in 3D

    Scale

    Jana-Marie/lab-balance

    https://twitter.com/_Jana_Marie/status/1270040286710968321

    59 parts34
  • 2 layersIEC-62056-21-Optical Probe, the printed circuit board in 3D

    IEC-62056-21-Optical Probe

    twam/IEC-62056-21-Optical-Probe

    Optical-Probe for reading out power meters supporting IEC 62056-21 via USB

    38 parts33
  • 2 layers60 × 40 mmForcegauge, the printed circuit board in 3D

    Forcegauge

    szbeni/forcegauge

    Traning for climbing. Load cell with HX711 and real time plotting,

    77 parts18GPL-3.0
  • 2 layers60 × 40 mmTouch n drink, the printed circuit board in 3D

    Touch n drink

    zargony/touch-n-drink

    Hardware and firmware for cashless payment device for cold drinks at the aeroclub at EDLH

    13 parts14EUPL-1.2
  • 2 layers71.1 × 50.8 mmPower supply and amplifier, the printed circuit board in 3D

    Power supply and amplifier

    roybaer/sound_source

    Design documents for Disney Sound Source (DSS) compatible hardware

    34 parts9
  • 2 layers121 × 75.5 mmJlctest, the printed circuit board in 3D

    Jlctest

    cjheath/jlcbasic

    JLC Basic parts library for Kicad fetched and converted from EasyEDA

    46 parts5
  • 2 layers81.2 × 40 mmSingle scale v3 kicad, the printed circuit board in 3D

    Single scale v3 kicad

    IoTReady/esp32-wifi-ble-weighing-scale

    This is a weighing scale designed to share data over Wi-Fi using esp32 WROOM32 module. For the weighing scale we are using a load cell and measuring the output using a HX711 24-bit ADC designed for weigh scales and…

    59 parts5