I had an eInk screen for a while with the intention of turning it into a birthday calendar. Now there are projects that can take a list of birthdays from Google Calendar and display them on an eInk screen, but I decided to do something different.
The advantage of an eInk screen is that it only consumes power when the image changes. Because a birthday calendar only needs to be adjusted once a day, the screen does not need to be powered all day. But of course the screen must also be controlled. For this I use a Raspberry Pi Zero W. Technically, its WiFi or Bluetooth connection is not necessary for my solution, but I still had it lying around.
The Pi is connected to the WaveShare 7.5” eInk display via a Pi Hat that I can put on the Raspberry Pi Zero. At midnight a cron job starts that starts a Python script. That script reads the list of birth dates and names from a CSV file. Based on the current date, it determines the fourteen upcoming birthdays. If there is a birthday on the current date, it will be printed in bold, so that it stands out even more. By using birth dates I don’t have to generate data for the near future and it is only necessary to adjust the list to add or remove a birth date. Based on the same date of birth, the age of the birthday person is also shown.
After adjusting the screen for the day, the Pi goes into sleep mode and doesn’t wake up until midnight. As a result, less power is used. To ensure that the Pi is woken up on time, a Real Time Clock (RTC) is connected to it. This ensures that the time continues to run smoothly.
Of course I could have done this with an ESP8266 or ESP32, but the eInk controller I used wouldn’t connect to my WiFi network and that’s useful if I want to change the firmware. Still, I would like to try this again in the future, so that I can power the birthday calendar with a battery.
To place the screen neatly in the interior, I built everything into an Ikea Ribba photo frame. The dimensions of the frame correspond to the eInk screen and the frame is thick enough to also hide the Pi behind. I had already prepared the cable for the power supply, so it was a matter of pulling a USB cable to supply everything with power.