Bitcalc is an ARM-based, open-source graphing calculator. It was designed during the Spring 2018 semester as a project for the University of Southern Maine's Ci2 lab.
This project had three main goals:
- To learn about ARM and STM32 programming/architecture
- To learn how to make a complete device: processor, display, buttons, and storage
- To attempt to create a calculator that's less expensive and more functional than calculators on the market
By the end of the semester, a somewhat capable prototype was made. It included a basic operating system and support for script files in a custom language to be loaded from an SD card and parsed. Bitcalc supports basic math operations, tables, and graphics.
The main GitHub repository for bitcalc is here. The custom-made scripting language and parser can be found here.
Here is the bitcalc prototype. Bitcalc is powered by an STM microcontroller; specifically, the one included on the NUCLEO-L476RG development board. It runs at up to 80MHz, has 128kB of RAM, and has hardware floating-point (decimal arithmetic) support. Stacked on top of the Nucleo board is a 4.3" 480x320 display with a microSD card slot underneath. The small DIP chip on the breadboard is a 128kB flash for storing font data. The keypad was self-made and soldered, with a total of 30 buttons.
Bitcalc boots to a main menu that displays available RAM, then lists all (script) files in the SD card's root directory. Free memory is important because the script files use up RAM dynamically, releasing it back to the operating system after execution. Also, 32kB of the microcontroller's RAM has special features and must be separately enabled, so bitcalc only sees and uses a total of 96kB of RAM. Bitcalc does a decent job at making sure no memory is claimed then never released.
This is one of bitcalc's applications, "GRAPH". It graphs lines of the given equation, in the form y = x. The screen can be cleared between graphs.