Instrument x Seth Akkerman
Projects Internet-Connected Thermal Desk Printer

Internet-Connected Thermal Desk Printer

A Raspberry Pi-powered thermal receipt printer that sits on my desk and prints on demand — triggered by a button, a web form, or an SMS from anyone in the world. Built as both a personal curiosity and a direct prototype for a client project about physical workout receipts.

There’s something genuinely delightful about a piece of the internet becoming physical. This project is a thermal receipt printer sitting on my desk, powered by a Raspberry Pi 5, that anyone can print to — from a web form, an SMS, or a curl command. Push the button and it spits out the current time, local weather, a dad joke, and a random cat picture. Send a message through the web interface and it prints seconds later, right next to my keyboard.

The build

The stack is deliberately simple but required real hardware problem-solving to get right. The Pi polls ntfy.sh as a lightweight message broker — no complex websocket infrastructure, just a listening script that wakes up when a notification arrives. A Netlify Function sits in front, handling both web form submissions and Twilio SMS webhooks, then forwards everything to the ntfy topic. The Pi runs the listener as a systemd service so it survives reboots without any intervention.

The trickiest part was a power issue that took some diagnosis: the original kit design feeds the Pi’s GPIO 5V rail from the same DC barrel jack as the printer. That works fine for older Pi models, but the Pi 5 draws enough current that the thermal head’s spikes during large or bold print jobs were sagging the shared rail below brownout threshold — the Pi would just cut out mid-print. The fix was simple once diagnosed: disconnect the two jumper wires feeding the Pi from the shared jack and power it separately via USB-C. Two supplies, no more mystery shutdowns.

The prototype connection

The reason I built this isn’t purely novelty — it maps directly to a client project I was working on around athlete workout logging. The idea: an athlete completes a session, logs it digitally, and walks away with a printed receipt of their workout — sets, reps, PRs, the whole thing. A physical artifact of effort. When I showed up to that client meeting having already prototyped the thermal printing mechanism on my own desk, the conversation shifted from “is this feasible” to “how do we design the receipt layout.” Having a working physical prototype changes the room.

What this unlocks

The pattern here — web/SMS input → serverless function → message broker → always-on Pi listener → physical output — is reusable for a lot of interesting scenarios. Retail activations where customers text a number and receive a printed coupon or personalized message. Event installations where attendees submit questions that print on stage. Team dashboards that print a daily standup summary at 9am. The thermal printer is almost incidental; it’s the architecture of bridging digital input to a physical, located output that’s the interesting part. Once you have that pipeline, the output could be anything the Pi can drive.

Role
Creative Technologist
Tools
Raspberry Pi 5 Python Netlify Functions Twilio ntfy.sh Open-Meteo API CUPS Systemd ZJ-58 Thermal Printer
URL
https://printer-netlify.netlify.app
Video thumbnail for Internet-Connected Thermal Desk Printer