OpenCalc - A cheaper and faster TI-84 style calculator

I’ve always been curious about computers but had only ever did firmware and never hardware, so I took it upon myself to self learn as much as I could about computer engineering and PCB design. Along with that, I noticed how ridiculously expensive the TI-84 calculators were and decided I could make a better, faster, cheaper one. So that’s what I did. This product is a proof of concept that a better and cheaper version of an overpriced produc can be made.


I wrote many thousands of lines of code and spent the last 3 months designing my first ever PCB. But when I went to order it, it was definitely outside of my price range. The whole project is open source on GitHub but I don’t currently have anywhere else to promote it. The project has also motivated me to take on an computer engineering minor at my university.


I decided to call it OpenCalc, since the whole thing is open sourced on github (https://github.com/CoryPearl/opencalc/tree/main), and the OpenCalc Os fully works (needs a few more tests) but is ready to be tested on really hardware not just a breadboard. I am hoping to be helped in the manufacturing of this project to get a start to my first ever finished computer engeneering project!


OpenCalc PCB — General Overview


A plain-language summary of what's actually on this board, based on the V4 pcb.


Brain


- ESP32-S3-WROOM-1-N16R8 (16 MB flash, 8 MB PSRAM), with standard decoupling

 capacitors.

- A power-on indicator LED (LED1) that's always lit whenever 3.3 V is present.

- Separate reset and boot buttons, each with its own pull-up resistor. Reset

 also has a 1 µF debounce cap; boot doesn't.


Power Path


USB-C receptacle → single polyfuse on VBUS → BQ24074 LiPo charger (charges

the battery and produces a VSYS rail) → TPS63802 buck-boost regulator →

regulated 3.3 V rail.


- Two status LEDs come off the charger: a green one for "charging" and a

 blue one for "power good," each with its own pull-up and series resistor.

- A simple resistor divider (two 1 MΩ resistors) halves the battery voltage

 so it can be read on an ESP32 ADC pin.


USB-C


- Standard CC1/CC2 5.1 kΩ pulldowns.

- A small ESD protection chip (TPD2E2U06DCKR) sits between the connector's

 D+/D− lines and the ESP32's native USB pins.

- Only VBUS is fused — D+/D− are not individually fused.


Display


- A 14-pin, 2.54 mm header wired for an ILI9341 SPI display: power, GND, CS,

 RST, DC, MOSI, SCLK, MISO, and a backlight line.

- The backlight is switched by a small load-switch IC (TPS22918) rather than

 a plain transistor, gated by a PWM signal from the ESP32 with a pulldown to

 keep it off by default.

- The last 5 pins on that header — the ones that would carry touchscreen

 signals — are left unconnected. As drawn, there's no touch support.


Keypad


- A 10-row × 5-column scan matrix, 50 keys total.

- Each key has its own series diode (anode toward the column, cathode toward

 the row) to prevent ghosting on multi-key presses.

- Each column has its own 10 kΩ pull-up to 3.3 V.

- The ON/HOME key sits in the matrix like any other key, on the column used

 for waking from sleep.


Battery


- 3.7 V 2000 mAh LiPo pack (103454 form factor), connecting through a 2-pin

 JST-PHR connector.

- No separate protection circuitry is shown on the board itself — that would

 need to live in the battery pack.


Test Points


Ten labeled probe pads: 3V3, GND, VBAT, USB_VBUS, RESET, BOOT, UART_TX,

UART_RX, USB_DP, and USB_DM.


Worth Flagging


There's no debug/expansion header, no power-hold/latch circuit, and no spare

GPIO breakout anywhere on this sheet. If these were expected from an earlier

version of the design, they've been dropped (or never made it into this

schematic).



Front of board:


Back of board:

Apply for sponsorship >>
13800+ Projects Sponsored
Aug 05,2026
18 viewsReport item
  • Comments(0)
  • Likes(0)
Upload photo
You can only upload 5 files in total. Each file cannot exceed 2MB. Supports JPG, JPEG, GIF, PNG, BMP
0 / 10000