Skip to the content
2 layers90 × 155 mmGraphical calculator, the printed circuit board in 3D

Software and hardware for my custom-built graphical calculator

Size
90 × 155 mm
Copper layers
2
Thickness
1.6 mm
Parts
82
Nets
160
Pads
287
Tracks, vias
621, 25
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
9 Jun 2025
Updated
29 Mar 2026

Overview

Graphical calculator is an open-source printed circuit board by LayanJethwa, from the LayanJethwa/graphical-calculator repository on GitHub. It is a 2-layer board of 90 × 155 mm with 82 parts on 160 nets, routed with 621 tracks and 25 vias.

It is built around the RASPBERRY PI ZERO 2 W, B3F-1050 and JS102011CQN. Its parts include 40 diodes, 40 switches and 1 IC. It belongs with the Raspberry Pi (Linux) boards of this library.

Main components

3

README

README.md

Graphical calculator

This design is for a graphical calculator that I am making, which will be able to plot graphs on a screen provided in human-readable infix notation.

I decided to make this as a fun maths-based project for my Computer Science NEA.

Introduction

Graphical calculators and software are widely used in advanced mathematics. They are an easy way to visualise and analyse graphs and are useful in a classroom setting as well as to verify solutions to problems. Free digital softwares such as Desmos and Geogebra are used extensively, but they work best on computers, and it is not desirable to have them on phones either in a lesson. Physical graphical calculators are therefore used, created by companies such as Casio and Texas Instruments.

However, these physical calculators are very expensive. The Casio fx-CG50, one of the leading devices in the field, costs £140 from the manufacturer. These calculators are very good, with a multitude of features, but a lot of these features are very rarely used, adding to the price point unnecessarily. Additionally, these calculators function as scientific calculators as well, but people that own them generally also own a scientific calculator anyway that they use mainly for calculations.

I aim to create a physical calculator that is only for plotting graphs. This will be less costly to build and produce, and I will be able to tailor it to the end user. The hardware will be specialised, having a screen with a higher resolution than the CG50, and I will 3D print parts specifically for ergonomics.

Features

  • Explicitly defined graphs
    • Polynomials
    • Radicals
    • Exponentials
    • Reciprocals
    • Logarithmic graphs
    • Trigonometric graphs (sin, cos, tan and reciprocals)
    • Parametric graphs
    • Differential equations
    • Indefinite integrals
    • Combinations of the above
    • x = f(y) graphs
  • Implicitly defined graphs
    • Circles
    • Ellipses
    • Parabolas
    • Horizontal parabolas
    • Hyperbolas
    • Multiple graphs simultaneously
  • Graph manipulation
    • Pan
    • Zoom
    • View window
      • Axis bounds
      • Axis scaling
    • Graph colouring
  • Buttons
    • Golden button
    • Degrees-radians rocker switch toggle switch
    • Zoom momentary toggle switch tactile switches
  • Other features
    • Auto power-off

Demo

You can see a software demo at the website: https://layanjethwa.github.io/graphical-calculator/code/build/web/

Currently it is not complete and I have only implemented methods for a few functions. As they will be triggered by physical switches on the calculator, they are triggered by keys currently:

Keyboard keyCalculator function
SHIFT + =+ (addition)
SHIFT + 9( (left bracket)
SHIFT + 0) (right bracket)
SHIFT + 8* (multiplication)
qsquared
wcubed
xvariable letter x
/divide
ppi
llog
ssin
ccos
ttan
rcsc
ysec
ucot

The syntax of the log function is [base]log([value]), e.g. 2log(x) means log base 2 of x. Implicit multiplication is not currently defined for all functions.

You can use the arrow keys to pan around the graph, n to zoom in, and m to zoom out. When you enter the function, press enter to confirm, and then enter again to go to the graph page. You can also use the arrow keys on the input page to add more graphs to the display.

Hardware

The PCB will be shaped like the calculator, and the switches for the buttons will be mounted to it directly. It will have connectors for the screen, CPU, and battery as well.

The CPU I will be using is the Raspberry Pi Zero 2 W. It is 65mm x 30mm, so fairly small and will fit nicely in the calculator. It has 512 MB of RAM, and a clock speed of 1GHz, so it will not be able to handle more intensive computations. It has WiFi and Bluetooth connectivity, although I am not planning to use them, as well as a USB 2.0 port, a microSD card slot, a mini HDMI port, and a 40 pin I/O header. I will have to install an operating system on it, probably Raspbian, to run Python code.

The screen I have decided to use is a 3.5 inch LCD screen, intended for a display for a Raspberry Pi. It has a 320x480 pixel resolution, and also features resistive touch control, though I probably will not be utilizing that feature of it. The resolution is higher than the Casio fx-CG50, one of the leading graphical calculators, so it should be more than enough for my purposes. The screen is £24 directly from the manufacturer. The screen connects via HDMI TFT, and is powered by a micro USB connection.

I have decided to use tactile switches with attached shafts, which, as mentioned, will be soldered directly to the PCB. I plan on using the Omron B3F-1050 switches, which I can get from DigiKey, at around 12.5p each for the number I will require. They have dimensions of 6 x 6 mm with a height of 7.3 mm, which should be suitable for my purposes. I can buy keycaps for these switches, or 3D print them myself. I found many sites selling caps - there are some round ones on AliExpress for £2.79 per 100 caps, and also some square ones for £2.47 per 50 caps. I also found a model that I can 3D print, although this is for the larger 12x12x7.3 mm switches, but I can scale it down.

Pictures

Schematic 3D model PCB CAD case

BOM

Parts

82
QtyValueFootprintReferences
40B3F-1050B3F-1050:SW_B3F-1050_OMRSW0, SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8, SW9, SWAC1, SWCOS1, SWDEL1, SWDIV1, SWDOT1, SWDOWN1 +24
40D1N4148 _DO-35_:DIOAD1300W80L670D310D1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +24
1JS102011CQNJS102011CQN:JS102011CQNSWRAD1
1RASPBERRY_PI_ZERO_2_WRPI-Zero-2W:MODULE_RASPBERRY_PI_ZERO_2_WU2

Similar boards

  • 2 layers38 × 38 mmUWB Fly, the printed circuit board in 3D

    UWB Fly

    DynamicWhiteHat/Orbit

    An ESP-32 powered drone that follows you

    19 parts4
  • 2 layers25.7 × 37 mmCAN Hub Real, the printed circuit board in 3D

    CAN Hub Real

    frc971/electrical

    This repo contains the electrical files for the 971 FRC team. The files include PCBs and the electrical system diagrams. The PCBs are created using KiCad.

    13 parts3Apache-2.0
  • 2 layers57.3 × 105 mmM4, the printed circuit board in 3D

    M4

    minisystem/M4

    Eurorack MIDI Processing Unit

    182 parts1
  • 2 layers64.5 × 53.5 mmController pcb, the printed circuit board in 3D

    Controller pcb

    meyerAurelius/controller-pcb

    Controller PCB for the Digital Dash on the UCalgary BAJA Student design team

    29 parts
  • 2 layers170 × 105 mmSsio check, the printed circuit board in 3D

    Ssio check

    paulbruneau/ssio-check

    A bench tester for the Bally/Midway MCR Sound I/O family: the 90908 Sound I/O and the 90913 / 91483 / 91657 Super Sound I/O (Z80, two AY-3-8910s, and all of the game's input ports).

    72 parts
  • 2 layers40 × 86.5 mmFlicker lamp, the printed circuit board in 3D

    Flicker lamp

    swarren/sca-making

    SCA making/manufacturing projects (those driven by modern witchcraft tools like electronics, LASER cutters, CNC, etc.)

    29 parts
  • 2 layers40.3 × 42.6 mmButton 60mm, the printed circuit board in 3D

    Button 60mm

    synthesissolutions/geeksforkids

    11 parts2
  • 2 layers87.6 × 100.8 mmEtherKraken, the printed circuit board in 3D

    EtherKraken

    karmakrafts/EtherKraken

    A RP3A0 SiP based controller with 34 programmable IOs, Cortex M0 co-processor, 2MB of flash, SPI, I²C, UART and 100Base-T connectivity.

    84 parts3Apache-2.0

Questions

How big is the Graphical calculator PCB?

It measures 90 × 155 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Graphical calculator use?

82 parts, built around the RASPBERRY PI ZERO 2 W, B3F-1050 and JS102011CQN. 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 Graphical calculator KiCad files?

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

Can I use the Graphical calculator design in my own project?

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