I really like the aesthetic of three colour e-inks and the idea of low power single purpose displays or indicators. They seem to have become far more accessible than previously and in a strange way it’s harder to think of a suitable application for them than it is to actually use them. A moon phase display seems a good use to me, we get really bad weather in the North of England and looking up at the sky of a night will more likely reveal a blanket of grey cloud than the shining lunar orb!
The main inspiration for the project was this cool blogpost from NASA, a goldmine of data and knowledge that just cries out to be used. It’s very slick and I guess you could just have a display with that page on a browser window but where would the fun in that?
So the brief I set myself was:
- Design a simple and elegant display that updates in the morning to show the moon as you will see it that evening.
- It has to be battery powered and last for at least a week.
Ok so I’m a novice at coding and am most familiar with python. I’ve tried battery powered raspberry pi projects in the past and know that they would not be as compact or long lasting as I require. That left me with Micropython or CircuitPython, I chose the latter because of the focus on beginners and the well documented hardware available from Adafruit.
The next decision was whether to access the data live or not. A little experimentation showed that the current CircuitPython strategy of ESP32 wifi coprocessors have high power requirements, not a great start. NASA offers a download of the moon phases hourly for an entire year so instead I decided to put all the data on the board ahead of time and just have it parse the correct data for each day.
The micro controller has all the data it needs and can write to the display, but does it know what day it is? I guessed it could keep time for short periods but I only wanted to have to charge it weekly, not plug it in to a computer to adjust the time, so I also needed an RTC.
With that I ordered all the components and got designing.