NumOS
- 2 Devlogs
- 25 Total hours
An open-source scientific graphing calculator with custom ESP32 hardware, NumOS firmware, a math renderer, and a hackable calculator app ecosystem.
An open-source scientific graphing calculator with custom ESP32 hardware, NumOS firmware, a math renderer, and a hackable calculator app ecosystem.
I’m building NumOS, a free/open-source embedded calculator OS for NeoCalculator, my open-source scientific graphing calculator.
The goal is to make a real handheld calculator that students and makers can study, modify, and improve, instead of using a fully closed device. NumOS targets ESP32-S3 hardware with a 320×240 color display, physical keyboard input, calculator apps, graphing, math rendering, and eventually a custom PCB.
This Stardance project is focused on the software/firmware: the OS, UI, apps, input handling, math features, and hardware integration code.
I started NeoCalculator / NumOS because graphing calculators are expensive, closed, and hard to modify. I wanted to build something affordable, hackable, educational, and physically real.
The project started around mid-February 2026, and I’ve been building it in my free time while still in school.
I set up the firmware for an ESP32-S3 N16R8 target using C++17, PlatformIO, Arduino, LVGL 9.x, TFT display support, PSRAM configuration, and serial debugging.
Early work included getting the project to compile and run reliably on embedded hardware, fixing display/LVGL issues, configuring flash/PSRAM correctly, and organizing the code into modules instead of one giant file.
I built the first main launcher for NumOS, shown in the screenshot above.
It is inspired by modern calculator UIs, but it is not meant to be a clone. It has an app grid, app cards/icons, keyboard focus, navigation logic, a status bar, visual styling, and basic app launching.
This is the “home screen” of the calculator OS.
I worked on making NumOS modular. Apps like Calculation, Grapher, Equations, Settings, and future apps can each have their own code and lifecycle.
The architecture includes a central SystemApp dispatcher, individual app modules, input routing, display/UI handling, app switching, and serial control for development.
I started building the math side of NumOS: expression parsing, calculator input, natural display / math rendering experiments, graphing work, equation solving experiments, and early CAS / symbolic math experiments.
Some parts are stable and others are still experimental, but the long-term goal is serious calculator functionality on embedded hardware.
Because NumOS is meant for a real calculator, I also worked on display integration, LVGL flushing, keyboard matrix planning, serial keyboard control, and hardware abstraction.
Serial input is useful because I can control the calculator from a PC before the final physical keyboard exists.
Since the project existed before June 1, my recent work has focused on:
NumOS is still a work in progress, but it already has an embedded firmware structure, a main launcher UI, LVGL interface work, calculator app experiments, math/parser/CAS experiments, hardware integration planning, and a path toward custom PCB hardware.
Next I want to improve the launcher, stabilize the calculation app, improve graphing, clean up documentation, prepare a better demo, and test NumOS on the first real NeoCalculator PCB prototypes.
This is still early, but it is already much more than an idea: I’m trying to turn NumOS into a real, hackable calculator operating system.