Schematics, design files and source code are available in the project's Github repository.
Meet Window Squatter and Desktop Crawler
The creatures come in two shapes, but their circuitry and programming is identical. The window squatter (which less generous souls have also called the beach chair) reaches up to catch the sunlight if your window has a thicker frame. The desktop crawler's natural habitat is a desk or shelf that gets a lot of direct sunlight. Here you can see them side-by-side at the pier on a recent sunny day.

Built of circuit boards and acrylic
- The blue circuit board is the centerpiece of both creatures, because, hey, technology is beautiful! The PCB is particularly pronounced in the window squatter, where it goes wild with a sun & moon cutout.
- The frame is laser-cut from 3mm orange acrylic. The desktop crawler adds a top+bottom cover cut from 1mm blue-ish transparent acrylic.
- Both creatures are accessible for hacking and repair! The squatter exposes pins to measure voltage or reset the ATtiny. The chip itself can be removed from a socket so new firmware can be flashed onto it. The desktop crawler's covers are not glued in place but tied together with a fine fishing line. At one point the capacitors will die, but this way it's possible to go in, unsolder them and put in a new pair.
- The solar cell is a 30x70mm 5V or 6V piece.
- The LCD... Oh, the LCD from AliExpress with the weird segment-to-memory mapping! Read the build log for the juicy details.
Conway's Game of Life on a 7-segment LCD
Here's the Desktop Crawler playing an adapted version of Conway's Game of Life. The neighborhood rules create an infinite playing field that wraps around at the edges. Perhaps because of this, the simulation often reaches cycles that can be anywhere from 2 to 10 steps long. Up to a length of 4 the Creature detects loops and invokes the Chaos Monkey to randomly flip two positions. Usually this nudges the simulation towards a different stable state.
Euclidean rhythms
Here's a Creature playing a Euclidean rhytm for four voices. The rhythm's parameters are randomized every time a new animation starts.
Status report
In between animations, the Creatures give a quick update about themselves. How many days have they been alive? What's the current voltage of the supercaps? How long have they been awake today? How long they were awake yesterday, and the day before, and the one before that?
A beacon at night
Come night, the capacitors slowly drain. When the voltage drops below 3.3V, the LCD switches off and the Creature goes into ultra-low-power mode. Only the strong red LED blinks out a rhythm a few times a minute. The rhythm changes from night to night.
A tribute to classic solar circuits

- The 1N60 Germanium diode, the 5V Zener and the small resistor are standard fare for solar projects with a supercap. The 1N60 has a low forward voltage and it makes sure the solar cell doesn't discharge the capacitor when it's dark. The Zener protects the capacitor from overvoltage.
- The rest of the circuit is behind an MCP1700-3302E LDO voltage regulator, so it never runs at more than 3.3V. That is part of how the creature saves power: the ATtiny's current draw is much less at lower voltages.
- R2+R1 divides the capacitor's voltage down so the ATtiny can measure it against its internal 1.1V reference voltage.
A program that spends (almost) all its life asleep
- The creatures spend most of their life sleeping. They have a faithful watchdog timer to wake them up regularly, so they can update the ongoing animation.
- There are different programs active depending on the voltage level. Above 4.1V it's all lively animations with Euclidean rhythms or an adaptation of Conway's Game of Life. Between 3.3V and 4.1 it's just a smiley face, and a quick status report about days alive, voltage level, hours awake, and hours awake in the past three days.
- Under 3.3V, till shutdown, it's a flashing light. Yes, the flashes are also guided by a Euclidean rhythm that changes every night! In this mode, sleeping periods are long, and even the voltage level is only measured every 10 minutes.
- All of this fits (but only just barely) in the ATtiny85's 8192 bytes of programmable memory.
Power calculations
I didn't directly measure the current draw of the Creatures in their final assembled form because there's no non-intrusive way to hook into their circuit then. Instead I measured the voltage drop of the supercaps over a period of time and calculated the approximate current draw from the cap's power curve.
My first measurement was when the Creature is in its most active mode, at voltage levels above 4.1V. I observed that over 20 minutes the voltage dropped from 4.51V to 4.31V, a delta of 0.2V. I make the reasonable assumption that the current draw stayed constant over this range, because the MCU is operating at a stable 3.3V behind the the LDO regulator.
The capacitor's energy is E=C*V^2/2, in this case, 0.06J. The mAh equivalent of that is E/(V*3.6), but of course V is not constant. In this short time period I'm approximating the cap's discharge curve with a linear function and calculate with the average voltage: (4.51+4.31)/2. This gives me an equivalent of 0.003779 mAh. Because this was burnt in 20 minutes, i.e., 1/3 hour, the current draw is 0.003779*3 = 0.01137mAh, or approximately 11.4μA.
In the middle range of 3.3V to 4.1V the Creature keeps the LCD on but transitions to a slower program, waking up fewer times per second. Here I measured a drop from 3.895V to 3.713V in 30 minutes. The same calculation as above yields a current draw of approximately 7.3μA here.
In the low voltage range the Creature turns off the LCD and measures the capacitor's voltage only every 10 minutes, but it periodically beams out a sequence of high-power LED flashes. The number of flashes in a sequence, and the period spent sleeping between them, varies from night to night. When I measured, it was playing a 3-flash sequence. I observed a drop from 2.476V to 2.342V in 20 minutes, yielding an average current draw of approximately 6.2μA. This value is definitely not fixed, not only because the LED flash sequence can vary, but also because in this range the ATtiny85's current draw sinks as its operating voltage goes from 3.3V to the 1.8V cutoff point.
Inspiration
This is where my inspiration came from for the Solar Creatures:
- BEAM circuits (from biology, electronics, aesthetics and mechanics). Wonderfully detailed on Solarbotics and SMFR, also with a lot of useful schematics.
- Mohit Bhoite's circuit sculptures
- Joey Castillo's Sensor Watch