Building a pocket calculator from scratch

Cover Image for Building a pocket calculator from scratch
Max Scheffler
Max Scheffler

The Plan

I'm planning on building a pocket calculator from scratch. I always wanted a powerful calculator that is open source and extensible. Something I can have on my desk and use when working on my projects. There is something oddly satisfying of having a dedicated device that does one job well. I usually use a calculator app on my phone and in most cases that's perfectly fine. But every now and then I'm looking back to my time at uni when I had a Ti Voyage 200. In particular it's symbolic math functionality which allowed you to solve equations and it's large display that allowed you to keep track of previous calculations.

Random screen from the manual.

The Voyage was huge but packed almost no computational power by today's standards. According to Wikipedia, it had a 12MHz Motorola 68000, 256kB RAM and a whopping 4MB flash. The display, although much better in my memory, had a meager 240x128 pixel resolution.

I'd like to improve on those capabilities as part of this project. It all began when I discovered this YouTube video of the simpy Python library which allows you to express equations and solve them symbolically and not just calculate their approximate solution. Somewhere in the comments of that very video I then read about Sage.

I'd like to create a PCB with a decent micro controller, wifi a touch display and a keyboard. Software wise, I’d like to try to use Python and achieve something similar to what the screenshot shows above.

But first I need to figure out a number of things, amongst them:

  • Micro controller: Maybe something similar to the Teensy 4 together with an ESP32 for WiFi.
  • Display: Most likely something that connects with a ribbon cable so that it can be slightly angled.
  • Buttons: I want something nice to use. I’d love to find something like a mechanical switch but that's unlikely to work with the space available.
  • Button layout: The aim is to make it compact but handy to use.
  • Software: CircuitPython or MicroPython? And is it possible to load arbitrary libraries onto an MCU?

I’m going to update this article once I made progress on any of these items.