Framed Utopia is an art prototype that displays bright glimpses of impossible happiness on a 64x64 LED matrix display. In a world often dominated by negative news, this digital picture frame offers a moment of respite through playful, uplifting messages about imaginary utopias.
Eternal summer, never too hot - Smiling trees, talking flowers - Coffee rains in the morning - Time travel for everyone - Cats understand humans - Instant healing through hugs - Pizza is healthy - Flying without airplanes - World peace, guaranteed - Hologram pets - Zero traffic jams - Share thoughts with a glance - Robots do household chores - Smiling extends life - Everyone is an artist - All-knowing libraries for everyone - Dogs can fly - Dancing makes you invisible - Healthy chocolate - Singing umbrellas - Telepathic pizza ordering - Fortune cookies guess the future - Self-cleaning clothing - Understand all languages - Music in the air - Laughter as currency - Gravity on demand - Mind-controlled TV remote - Environmentally friendly unicorn farms - Cuddly robots as therapists - Food that never gets cold - Islands made of chocolate - Sofas that adapt - Plants dance at sunset - Teleportation to the moon - Happy clouds - Water slides in the office - Forgetfulness heals pain - Clothes change with your mood - Musical instruments play themselves - Children explain the world - Smiling traffic signs - Zero calories on weekends - Animals speak English - Sunglasses for dreams - Coffee brings world peace - Yoga makes you invulnerable - Trampoline floors in the office - Telepathic hugs - Floating libraries - Quantum computers for everyone - Rain of chocolate - Spontaneous dance parties worldwide - Bees speak Esperanto - Every day is a holiday - Chocolate lowers blood pressure - Peace through cooking together - Insects as pets - Robots as best friends - Sports make you smart - Teleportation instead of commuting - Environmentally friendly flying cars - Honest politicians - Robot-cat combinations - Language lessons through sleeping - Free energy from laughter - Islands float in the air - Trampoline floors in the supermarket - Dancing stars at night - Chocolate that loses weight - Virtual reality in your sleep - Flying bicycles - Good news as the standard - Peaceful robot revolution - Music in every raindrop - Science as entertainment - Flying houses - Underwater cities - Robots as artists - Invisible libraries - Air conditioning through laughter - Self-cleaning windows - Food grows in every corner - Moon as a vacation destination - Color-changing hair - Cars that tell stories - Infinite strawberries - Everyone is neighbors - Robots as teachers - Happiness is contagious - Water as a sparkling beverage - Friendship heals all wounds - Books that read minds - Rainbow roads instead of gray - Chocolate makes you smart - Travel without packing - Flashes of thought at sunset - Clouds as soft beds - Light speed for breakfast - Robots as brilliant chefs - Animals speak poetry slam - Drinking coffee on the moon - Environmentally friendly jetpacks for everyone - Infinite strawberry jam - Giant trampoline floors worldwide - Hologram concerts in the living room - Flying ice cream vendors - Dancing Northern Lights - Language of love on the radio - Free energy from laughter - Cuddling robots as therapists - Magical bridges to every island - Telepathy as a universal language - Color-changing hair in the wind - Automatic feel-good music - Invisible bags containing everything - Trees that tell stories - Self-healing flowerbeds - Coffee plantations on every balcony - Healthy chocolate for breakfast - Air conditioning through laughter in offices - Create travel destinations on demand - Living paintings on all walls - Children invent the future - Friendly robots in every workplace - Boundless creativity for everyone - Flying bookshelves with stories - Birdsong as background music - Rain of flower petals in spring - Self-cooking pots - Butterflies as flying letters - Islands made of marshmallows in the ocean - Laughing sun in the morning - Automatic compliments in the air - Musical instruments that play themselves in the park - Virtual reality that creates dreams - Cats as flying companions - Peaceful robot revolution worldwide - A future with free access to everything - Hovering coffee cups - Bananas bring happiness - Dancing unicorns - Sparkling rainbow beams - Chocolate as medicine - Talking with plants - Pillows that tell stories - Joy in raindrops - Flying donuts - Smiling as a sport - Cloud surfing in the evening - Automatic hugs - Floating books - Laughter heals time travel - Singing makes you invisible - A cuddling robot army - A sky made of marshmallows - Ice cream for everyone - Magical sunsets - Sunshine in the rain - Pizza teleports itself - Rainbow-colored cats - Flying gummy bears - Endless roller coasters - Singing refrigerators - Clouds as bounce cushions - Weddings with confetti - Automatic moments of happiness - Dancing in slow motion - Coffee chat with aliens - Balloons instead of cars - Love in every blossom - A spray of perfume as rain - Sunny snowflakes - Bees as mail carriers - Laughing flowerbeds - Enchanting water slides - Chocolate fountains in the park - Sofas that tell stories - Peaceful robot oceans - Self-cooking gourmet kitchen - Coffee trees along the roadside - Rain of happy moments - Eternal carnival atmosphere - Joy in every cloud - Stories in sand dunes - Hologram umbrellas - Smiling lunar landscape - Cocoa flows in streams - Singing mountaintops
Utopias as an Anchor in an Increasingly Dystopian World
Much like my previous project, Das Buch, this art endeavor serves as a commentary on a society that, in light of political, social, and environmental upheavals, finds it ever more challenging to maintain a positive outlook on the future. Many young people — coming of age in a world where climate change appears unstoppable and societal divides run deep — feel resignation or even powerlessness in the face of seemingly insurmountable obstacles. Every glance at the news is overshadowed by dystopian developments. We are missing the guiding light of utopias that, like a lighthouse, can point us toward a more hopeful horizon.
I am myself the father of a teenager, an age when the playful, childlike perspective on life collides with the stark realities of adulthood. The confident proclamation “I want to be an astronaut and explore the galaxy!” all too easily fades into “I have no idea what I’m going to do.”
Framed Utopia offers a childlike, creative, and optimistic lens on the world and our shared future. It aims to spark small moments of joy through absurd and delightful possibilities. This is not about turning a blind eye to reality; rather, it’s about remembering that imagination and whimsy have a rightful place in making each day a little brighter.
How It Works
An ESP32 microcontroller is used to query an API once an hour, retrieving a new “utopia” in the form of a text string. This text is then displayed on a 64×64 dot matrix screen in random colors. To create the impression of an everyday item, the display is mounted in a wooden picture frame and powered by a high-capacity power bank. To conserve energy, both the display and the ESP32 enter sleep mode overnight.
Hardware
The setup includes a 64Ă—64 dot matrix display, an ESP32 microcontroller, and a 20,000mAh power bank.
Bill Of Materials
As with many of my projects, this one was born out of a desire to experiment with intriguing hardware — in this case, the dot matrix display. I had three of them in my lab, waiting for a purpose. The wooden frame was an ideal match, offering a more domestic, less technological look. Everything else was just miscellaneous equipment I already had on hand.
Part | Info | Where to get | Cost |
---|---|---|---|
64x64 Dot Matrix Display | Lots of different brands sell these, they are mostly identical | Amazon | 39 EUR |
ESP32 | Any ESP32 will do | Amazon | 8 EUR |
20,000mAh power bank | Any brand and size will do | Amazon | 15 EUR |
PLA Filament | Used to fit the frame and add a stand | Amazon | 1 EUR |
Picture Frame | 20x20 cm | Amazon | 8 EUR |
Total cost | 71 EUR |
Software
I can’t emphasize enough how remarkable Large Language Models (LLMs) are for rapid prototyping. You may prefer to write your own code when you want a project that’s fully reliable and understandable to other developers. However, for creative, exploratory projects, having AI assist in the process is incredibly liberating. It significantly speeds up the journey from idea to implementation and spares you hours of trawling the internet for solutions or debugging.
If you’re intrigued by projects like this but hesitate because you think you need stronger development skills, I highly recommend trying out chat models like GPT-4o or Claude 3.5. You’ll be amazed at how much you can achieve with them.
That said, most of the code for this project was generated by AI, and I added refinements for smaller details that can be tricky to explain to a language model — like fine-tuning text sizes and colors for aesthetic appeal. You can find the Arduino code, along with some setup instructions, on my GitHub page: esp32-dotmatrix-utopia.
Here’s a high-level overview of the program (summarized—yes, again—by a Large Language Model, which is pretty fantastic):
-
The program controls an LED matrix display that shows text messages which are fetched from a server. When it starts up, it displays “utopia” as an initial message.
-
Upon startup, it attempts to connect to WiFi and synchronize its time with an internet time server. If either of these fails, it shows an error message and restarts.
-
The display only operates during “active hours” (7 AM to 10 PM). Outside these hours, it goes into a power-saving sleep mode and wakes up periodically to check if it’s time to become active again.
-
During active hours, the program fetches a new message from a server once every hour. Each new message is displayed in a randomly selected color.
-
If a message is too long to fit on one line, the program automatically splits it into multiple lines, with longer words getting more vertical space.
-
The display has a brightness setting and will completely turn off when entering sleep mode to save power.
-
If there are any errors (like WiFi connection issues or problems fetching messages), the program displays error messages in red to help with troubleshooting.
-
Every time the display updates with a new message, it logs information to a serial console for debugging purposes.
Generating the messages
When I first developed this project, I didn’t have a local LLM running on my machine, so I used ChatGPT to generate the messages. Since the ChatGPT API has a small cost (though still quite affordable), I decided to generate all messages in one go. It required some careful prompt tuning to get the messages exactly right: they had to be funny, positive, creative, short enough to fit on the dot matrix, and include proper hyphenation for longer words, especially important for German, where words can be very long. For instance, consider the actual German word: Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz (“Beef Labeling Regulation Supervision Task Transfer Act”). Yes, we Germans are extremely efficient, even if it hurts. ChatGPT added the required hyphenation when prompted, saving me a great deal of manual work. Finally, since the text display library doesn’t handle umlauts (ä, ö, ü, ß, etc.) very well, I had to convert them. The end result was an array of several hundred messages.
const utopias = [
"Ewiger Sommer, niemals zu heiss",
"Laechelnde Baeume, sprechende Blumen",
"Kaffee regnet in der Frueh",
"Zeitreisen fuer alle",
"Katzen verstehen Menschen",
"Instant- Heilung durch Umarmungen",
"Pizza ist gesund",
"Fliegen ohne Flugzeug",
"Welt- frieden, garantiert",
"Hologramm- Haustiere",
"Null Verkehrs- staus",
"Gedanken teilen per Blick",
"Roboter erledigen Hausarbeit",
"Laecheln verlaengert das Leben",
"Jeder ist Kuenstler",
"All- wissende Biblio- theken fuer alle",
...
Node.JS API endpoint
Although I could have embedded these messages directly into the Arduino code and chosen one at random, I decided to set up an API endpoint on my Raspberry Pi instead. This approach introduces a bit more complexity, but it lets me tweak the message list on the fly without having to remove the frame from the shelf to reflash the code.
When the Raspberry Pi API is called with the right endpoint, it returns a random preformatted message as JSON:
http://192.168.178.107:1337/utopia
{
"msg": "Wasser- rutschen im Buero"
}
With the hardware assembled and the ESP32 frontend and the Raspberry PI backend up and running, the prototype is finished:
A Note on Power Consumption
A fully charged 20,000mAh power bank can power the ESP32 and dot matrix display for roughly a week, with the display consuming the lion’s share of energy. While sleep mode at night helps, it would still require periodic recharging or swapping of the power bank. On top of that, I wasn’t too thrilled about the constant energy draw.
My solution (which I also use for various household appliances) is to connect the power bank to a smart plug that’s controlled by Home Assistant. I created an automation that only switches on the smart plug once our home’s solar battery is sufficiently charged. This gives us “free” energy from the sun. The smart plug charges the power bank, which in turn supplies power to the display.
Final Thoughts
Framed Utopia turned out quite nicely. It often draws a smile from my family and sometimes prompts a brief conversation about the displayed message. That said, it’s not perfect: an unreliable Wi-Fi connection can lead to timeouts, restarts, or error messages.
If I were to iterate further, I’d either switch to an endpoint that generates messages on-the-fly using a locally hosted LLM, or simply bundle all messages into the ESP32 code, which would eliminate the need for Wi-Fi entirely. Instead of querying the time every hour, I could just power up the display in the morning and let it sleep for extended periods afterward.
Thank you for reading!