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

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

A program that spends (almost) all its life asleep

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: