TERMINUS: A Terminal-Style Phone For The Geek
WHO I AM
Hello, I'm Bolan. I'm a high school student who spends my free time building things, mostly hardware/software projects that that I find interesting. I've always been drawn to projects where the software and hardware have to work together in cool ways. I like figuring out how devices actually communicate at a low level, UART protocols, memory constraints, display rendering. The stuff that doesn't have a clean tutorial.
Outside of building, I'm into music. I play the cello and guitar.
PROJECT DESCRIPTION
Terminus is a custom handheld SMS communicator built entirely from scratch: hardware, firmware, and backend all designed and written by me. The idea is simple: a physical device with a real keyboard that sends and receives messages, with a web interface for people to talk with it. No app, no phone required. Just a little terminal you type on.
Hardware
The main brain is an ESP8266 with built-in WiFi driving a KMR-1.8 SPI TFT display 128x160 pixels. Small screen, perfect for a terminal aesthetic. Text fits well, scrolling is smooth, and it feels responsive.
The keyboard is one of the more interesting parts of the build. A STC15W204S microcontroller acts as a keyboard driver, handling the entire 36 key matrix independently and sending finished keypresses to the ESP8266 over UART. This keeps the main processor completely free and makes the keyboard totally self-contained. It supports Shift and Ctrl modifiers in both held and latched modes, hold Shift for one character, or tap it to lock it on.
Firmware
The ESP8266 firmware is written in C++ using the Arduino framework. The Terminal class handles all text rendering, scrolling buffer, character drawing, cursor positioning, and a blinking cursor. The Chat class builds the full messaging UI on top with conversation history, an info bar at the top, and a text input bar at the bottom. The Communication module handles all HTTP requests to the Flask backend, polling for new messages, sending outgoing ones, and syncing contacts.
Backend
The backend is a Flask web app written in Python, hosted on PythonAnywhere. It uses a multi-file architecture with SQLite for storage and a clean chat interface
Features include full two-way texting, contact management, a conversation view, and an admin dashboard. There's a web chat interface that can be used to send messages to the device. The whole system is built around a single owner model. The device is always "me," contacts are everyone else, and the website is a bridge. The UI uses a dark terminal aesthetic, monospace fonts, minimal chrome, matching the vibe of the physical hardware.
Keyboard MCU Firmware
The STC15W204S firmware is written in C for the SDCC compiler targeting MCS-51 architecture. It runs a scanning loop over the keyboard matrix, handles debounce, handles Shift and Ctrl modifier state, and sends the final character over UART.
Summary
A fully custom messaging terminal with a real keyboard, real display, real texting. Every layer, hardware, keyboard firmware, device firmware, web backend are designed and written from scratch to work together as one cohesive thing. The goal is a device that's actually usable, not just a demo. And it's getting there.
WORDS TO PCBWAY
PCBWay, this project is a TON of custom hardware coming together - a custom keyboard PCB for the STC15W204S matrix scanner, and a main board tying the ESP8266, display, and everything else into one clean package. Right now I'm building on perfboard and jumper wires, which works fine but is not permanent and does not look cool.
Sponsorship from PCBWay would let me actually finish this thing. Real PCBs mean a reliable build I can document, share, and improve on. This isn't a school project, it's something I'm genuinely building because I want it to exist. Every design decision has a reason behind it, from the dual-MCU keyboard setup to the heap-aware firmware architecture.
I'd love to show what this looks like with proper boards. Thanks for considering it.
Apply for sponsorship >>- Comments(0)
- Likes(1)