Jason's notes


A digital camera designed under the philosophy of Polaroid. It utilized solar power and displays the photo permanently on its e-paper screen.

Solaroid demo


I was originally inspired by Cyanotype. It is a photographic printing process related to exposing under the sun for minutes(very like a solar panel) that creates a bluish copy of a photo. However, later I found that there is no blue-colored e-paper screen in the market and I don’t have the budget to buy a big enough screen to support the large-format-like feeling.

Cyanotype photo demo

So I turned my direction to small handheld camera, and finally decided to make it a ‘Polaroid’. E-paper is like the digital representation of the Polaroid. The displayed image stays permanently, just as a printed photo.

Shoot and Display

This part took me way longer time than I expected. I had a set up of an ESP32-Cam capturing the photo. It was connected to the Seeeduino XIAO (the main control board) which will then talk to the e-paper and display the photo.

Memory Issue

The e-paper I was using is 4.2 inches with 400x300 B&W pixels. It needs 400 x 300 x 1 = 120,000 bits = 15,000 bytes = 15 KB for one single photo. The SAMD21 chip on the XIAO have only 32KB SRAM, and I got RAM overflow (with just a little bit) error when compiling. This was the first time I encounter this.

region `RAM' overflowed by 976 bytes

Luckily it was later resolved by abandoning the community epaper library I was initially using to just do it manually following the official code.

Photo Algorithm

Debuging hardware is so hard. I wish I realize earlier that I should make the camera transmit the photo to my computer and display first.

Processing code

To make it display on the epaper, I wrote a simple threshold code in the following which made it to store 8 B&W pixels in a byte.

int origin = y * W + x;
int pos = origin % 8;
int index = (origin - pos) / 8;

if (pixel > 127) {
  frame_buffer[index] += (0x80 >> pos);

I was so happy to see the first photo.

First photo display in treshold

To make it more realistic, I translate the code from the Coding Train to C language and it turned out pretty good.

Dithering result

Powering the thing

To lower the power consumption and make it last longer, I have done some research and made the circuit perform better, see the full description here.

In the following video & graph, you can see it goes up to more than 100mA when work and cost only 2.5mA during sleep. It’s pretty sad that I am not able to make the e-paper sleep. It should have cost less than 1mA.

Power consumption graph

Super Capacitor Charging/Discharging

Unlike lithium battery, super capacitors are not that fragile. So there isn’t many power management board for it. I did find one (This is great!), but its output is rated for less than 100mA which I exceed a little bit.

Learned from this video, I only added a diode to protect reverse charging the solar panel and a DC-DC for better usage of the capacitor.

I am using a 6V 10F super capacitor which can support taking more than 10 photos when charge to 5.5V. The solar panel is rated 6V as well, but with the diode voltage drop, it may not be a problem.

(Full circuit is Listed below)

whole circuit


The making of the enclosure is my favorite part. I soldered the whole circuit on protoboards and test it well. A better-looking red shutter button is added to replace the original push button.

Circuit on protoboards

I then designed and laser cut a box.

Circuit in box

And connect everything together

Connected the solar panel & screen

And its done!

Solaroid - how it look

Code & Resources

All the resources can be find here including Arduino & Processing codes, circuit diagram and laser cut design file.

Bill of Material