How do you get an ATtiny85 onto the internet when it has 8 KB of flash, 512 bytes of RAM, and no radio anywhere on the board?
Adam Kumpf's answer is Upline, an open source serial protocol that skips the Wi-Fi module completely. Rather than soldering an ESP8266 onto your project and opening an account with Adafruit IO, Blynk, or Particle, the chip talks over the serial link it already has. A companion program called Seamside sits on your computer, picks up that stream, and hands the device a URL. The Arduino stays exactly as you built it: one USB cable, no radio, no third-party service in the middle.
What it costs you in memory
A complete Upline implementation on an Arduino UNO occupies 4,060 bytes of flash and 358 bytes of SRAM, which is why it still fits on the ATtiny85. Messages are human-readable and caret-framed, so a board reporting three values sends a line like ^tempf~78.35^rgb~16711680^servo~90.00^. Staying that lean meant cutting things: no floating point (fixed-point fixN types instead), no dynamic memory allocation, no libc dependency. Binary payloads travel as base64url. The Arduino side is header-only, so you drop upline.hpp into the sketch folder and the linker strips out whatever features you never call. The protocol itself covers framing, escaping, reads, writes, commands, error handling, and a heartbeat so the host knows when a device has gone quiet.
The device describes itself
Send ^?^ down the wire and the board replies with its identity, its limits, and a description of every value it exposes. A thermistor reading can declare itself read-only; a servo channel can declare read/write with minimum and maximum bounds attached. Host software builds a working interface straight from that reply, with no device-specific code written ahead of time. Kumpf has compiled the library on parts from the ATmega8 up through SAMD21, SAMD51, RP2040, RP2350, ESP32 variants, and the Teensy 4.1, and it runs over UART, USB serial, Bluetooth serial, RS-232, point-to-point RS-485, TCP, and plain pipes.
Try it on a board you already own
Pull an UNO or a Nano out of your parts bin, wire a DHT22 to a GPIO pin on a breadboard with a 10k pull-up on the data line, and expose tempf and humidity as read-only entries. One gotcha to plan for: the Arduino IDE serial monitor and Seamside cannot hold the same port at the same time, so close the monitor first and keep the baud rate matched on both ends. Upline and its Arduino implementation ship under CC0, which means a capstone team can fold the code into a thesis build with zero license paperwork. Full writeup and links to the code are on Hackster.io.
Originally published on blog.circuit.rocks.
Top comments (0)