AVR-Laptop
💻 This is a laptop built on an Arduino-compatible board based on the ATmega2560.
⚙️ AVR is usually associated with simple things: relays, sensors, LEDs. Multitasking, UI, video playback — not what you'd expect from it. AVR-Laptop is an attempt to do exactly that on it, to show what such a device would look like.
📐 The device measures 12×11×3.4 cm, with a 3D-printed case. Inside there's a homemade QWERTY keyboard, a monochrome 128×64 LCD, a VS1053 with speakers, a microSD, an RTC, and an 18650 battery. The firmware is based on FreeRTOS.
What it can do:
🧵 Multitasking. Real multitasking, with Alt-Tab switching. Start a video, minimize it — the sound keeps playing while you play Sokoban.
🪟 UI engine. Forms, buttons, checkboxes, lists, input fields, dialogs. Handling key presses, tabbing, redrawing, events dispatched to the owner task.
🧰 A set of tasks. File manager, video player, music player, clock, calculator, Sokoban, Snake, Game of Life.
🎬 Video player. Comfortably handles 24 fps video (and more) with sound. A custom format: XBM stream + MP3 in a single file.
🧠 All of this runs on 8 KB of RAM, half of which is already taken up by global variables (the video buffer, the SD buffer, FreeRTOS itself, and other service variables). Free memory is very scarce, and this defines the architecture entirely — from how data is laid out to how the tasks are structured.
🧩 But at the same time, the architecture is open for extension. A new task is a class with setup and loop, like in a regular Arduino sketch, plus a couple of methods for the menu and an icon. Everything else — registration, stack, switching, events — is handled by the shell. Tasks don't know about each other: they receive events and draw through the UI engine. So a new task can be added without touching the others.
📝 This is only the top layer — there are a lot of interesting details accumulated, and I'll describe some of them in the logs. If there's something you're particularly interested in — ask in the comments, I'll try to answer. And below is a short demonstration of it working.
🚧 I'm currently making the final edits before publishing on GitHub — polishing the text editor, finalizing the schematics and documentation.
Vladimir Tsibrov











Mars
Samuel A. Falvo II
Andrei Mehiläinen
Christoph