Loading 3D model… large boards can take a moment.
A graphing calculator with a network sidecar.
An ESP32 speaks the TI link protocol, makes web requests, and sends text, programs, and 96×63 images back as calculator variables.
This is a hardware and protocol research project—not an exam aid. Follow your school’s device and academic-integrity rules.
TI-BASIC launcher
│ command + arguments as TI variables
▼
TI-84 link port ── TIP / RING ── ESP32
│
Wi-Fi / HTTPS / OTA
│
▼
GPT API · firmware · programs
The ESP32 uses CBL2, TICL, and TIVar to behave like another calculator. The launcher sends a command ID and arguments; firmware performs the network or local operation, then returns a TI string, number, picture, or program. The calculator never needs to understand HTTP.
| Layer | Responsibility |
|---|
programs/ANDYGPT.8xp | calculator menus and interaction |
esp32/esp32.ino | link protocol, Wi-Fi, commands, sleep, and OTA |
server/ | GPT, program, image, firmware, log, and request routes |
pcb/ | KiCad board, schematic, Gerbers, and build photos |
compile_launcher.py + scripts | prepare launcher and firmware assets |
The firmware currently points to https://api.andypandy.org.
calc from a phone or computer.192.168.4.1—to save network credentials.The ESP32 stores Wi-Fi credentials for later boots. For mixed-case input on the TI-84 keyboard, letters are lowercase by default and parentheses mark uppercase letters: (H)ELLO becomes Hello.
The KiCad sources, schematic, Gerbers, firmware, and calculator programs are included. A detailed assembly tutorial is intentionally out of scope: this build involves a custom PCB, fine-pitch hardware work, and a timing-sensitive calculator bus. It is not a first soldering project.
At the software level:
esp32/esp32.ino in Arduino IDE.TICL, CBL2, TIVar, and UrlEncode.programs/ANDYGPT.8xp to the TI-84, or use the launcher update path once the bridge is working.If you change hardware, verify the TIP and RING pin definitions before powering the interface.
The backend requires Node.js 18 or later, an OpenAI-compatible API, and S3-compatible object storage for chat and firmware state.
cd server
npm install
Create server/.env:
OPENAI_API_KEY=your-key
OPENAI_BASE_URL=
LLM_MODEL=gpt-5.4-nano
LLM_MODEL_MATH=
R2_ENDPOINT=https://your-account.r2.cloudflarestorage.com
R2_ACCESS_KEY_ID=your-access-key
R2_SECRET_ACCESS_KEY=your-secret-key
R2_BUCKET_NAME=your-bucket
OPENAI_BASE_URL and LLM_MODEL_MATH are optional. Keep .env out of version control.
Run locally:
npm start
The default local port is 8080. Change the SERVER definition near the top of esp32/esp32.ino to the HTTPS URL of your deployment, then reflash.
The launcher includes local reference branches for equations, derivations, field and circuit behavior, common graphs, and right-hand-rule mnemonics. These static references do not require Wi-Fi. The SOLVER branch sends numeric or free-form prompts to the configured model.
Use ◀/▶ to move through long pages and CLEAR to return. Type expressions in plain words when possible; many special TI math glyphs do not decode cleanly over the current link layer.
From Settings → UPDATE, the ESP32 checks the server’s firmware version, downloads a newer binary when available, reboots, and can push the updated launcher back to the calculator.
Firmware artifacts and launcher data are stored through the server’s S3-compatible storage layer. Protect upload routes if you deploy the backend publicly.
The concept was inspired by ChromaLock’s 2024 video. This reconstruction, firmware, PCB design, server, and launcher are maintained by Andy / ChinesePrince07.
Licensed under the GNU GPL v3.
Updated
No comments yet. Be the first to ask about this board.