Cyberdeck
A tiny WiFi-connected desk info screen.
- Status
- complete
- Role
- author
- Year
- 2024

Context
A WiFi-connected desk companion built with an ESP8266 and a 16×2 LCD, bringing weather, exchange rates, and device health to a single-button interface.
I built cyberdeck as a desk companion and a hands-on way to learn embedded programming. It combines a Wemos D1 Mini (ESP8266), a 16×2 I2C character LCD, and a single button that cycles through three information screens. The firmware is written in C++ and built with PlatformIO.
Three screens, one button
- Weather: conditions from wttr.in on the first row, with temperature, local time, and a short date on the second. The default location is Skopje. Weather refreshes every ten minutes while this screen is active; the displayed time is captured at that refresh.
- Currency: a configurable currency pair and exchange rate from Revolut’s public quote API, followed by the update time. The default pair is USD/EUR, with a two-minute refresh interval.
- System health: free heap memory and uptime, refreshed every second while visible.
Working within 32 characters
Each screen owns its data refresh logic, while a shared screen class handles timing, cached text, and redraws. Switching screens immediately displays the cached content, fetching new data when it is due. The button uses edge detection and a short debounce interval.
The display layer pads or truncates every row to exactly 16 characters and overwrites it without clearing the LCD. This removes leftover characters and avoids the flicker caused by clearing between frames. Unchanged content does not trigger another display write.
A small, configurable firmware
WiFiManager provides a setup portal for connecting to WiFi. NTP supplies time with a configurable timezone offset. Location, currency pair, and refresh intervals can be overridden in a local configuration file without editing the defaults.
On the ESP8266, memory limits shape the implementation: reduced TLS buffers and filtered JSON parsing keep the network integrations compact. New screens can extend the same base class with their own refresh interval and two lines of output.
Delivered scope
- weather and local time
- currency rates
- device health and uptime