A Minimal ESP8266 Digital Picture Frame

Over the last few years, the price of a good digital picture frame has dropped to the point that we don’t often see DIY versions anymore. As much as we might hate to admit it, it’s hard to justify building something yourself when the economies of scale have made it so you can buy the final product for less than the cost of the parts themselves. But of course, there are always fringe cases where building it might be the only way to get what you need.

Granted we’re not sure that [Tony Liu] actually needs a 1.8-inch digital picture frame, but we’re sure somebody out there does. The ST7735R display used in this project is a real TFT, so the color and refresh rate is pretty good; but with a resolution of just 128×160, we’d recommend keeping your expectations low in regards to visual fidelity.

What’s really interesting about this project is how low the part count is. All you need is the ST7735R display and the ESP8266 itself (or the development board of your choice, naturally). Even the 3D printed frame is technically optional. The display is driven by SPI, so with the power added in, that’s only eight wires that need to be soldered between the two devices. If you’re looking for an easy way to add a photo slideshow to a small device, say a conference badge, this is about as easy as it gets.

But where are the images coming from? You might think SPIFFS, but in this case [Tony] has converted the images to bitmaps and is loading them into the Arduino Sketch as a header file with PROGMEM. Helpfully, he provides the link for the tool he uses to convert the images into an array the graphics library can understand. This makes adding new images slightly time consuming, but we imagine if you have the need for something like this, it’s probably only showing a pretty specific set of images anyway.

If you’re looking for something bigger, or maybe just an excuse to put that dusty Raspberry Pi to use, you might be interested in one of the more substantial builds we’ve seen over the years.

Continue reading “A Minimal ESP8266 Digital Picture Frame”


When [sticilface] started using the Arduino IDE to program an ESP8266, he found he was running out of RAM quickly. The culprit? Strings. That’s not surprising. Strings can be long and many strings like prompts and the like don’t ever change. There is a way to tell the compiler you’d like to store data that won’t change in program storage instead of RAM. They still eat up memory, of course, but you have a lot more program storage than you do RAM on a typical device. He posted his results on a Gist.

On the face of it, it is simple enough to define a memory allocation with the PROGMEM keyword. There’s also macros that make things easier and a host of functions for dealing with strings in program space (basically, the standard C library calls with a _P suffix).

Continue reading “Save ESP8266 RAM With PROGMEM”

What’s In A Name?

Take thirty seconds out of your day and try to make fun of the last name of the person who wrote this post. Go ahead, it’s okay. You probably won’t need more than ten seconds to come up with something that uses the same first, middle, and last letter. While nothing can be done to prevent last name-based harassment in the schoolyard, first names are another matter. [Ranthalion] recently dined with friends who are expecting twins and have yet to decide on names for them. It’s difficult enough to name one child, and we can imagine ourselves spending an entire day or two getting funny name pairs for twins out of our systems (Flora and Fauna, Scylla and Charybdis, &c). With the baby shower two weeks away, [Ranthalion] had to act fast in creating his Baby Namer.

It needed to be something he could make relatively cheaply with parts on hand. Although he made a prototype with an Arduino, he wasn’t about to just give one away. [Ranthalion]’s Baby Namer uses two arrays, one with awesome names like, well, Sharktooth Chompenstein, and one with regular names from census data such as Bob, Carol, Ted, and Alice. Things got a bit hairy with the volume of names he got from census data and he learned the value of PROGMEM for storing things.

On startup, it displays four names from the Awesome pile as a gag and then pulls from the Ho-Hum group. However, each time it pulls a regular name, there’s a 25% chance that part of an Awesome name will be included. Get thee to the gits and have a laugh at other names on the Awesome list.