It started with an old Kindle
I have an old kindle that doesn't hold a charge anymore. I thought to myself, "What if I could turn this into a calendar where my roommate and I can keep track of what we have going on each week?"
Long story short, that didn't work (for a number of reasons). I gave the kindle away to someone who didn't mind charging it daily, and moved on.
A nagging idea
The idea wouldn't go away though, and as we started to get more plants around the apartment, I thought keeping a reminder on our calendar would be helpful to keep a watering schedule.
I dug around my old project parts and came across an Arduino Nano 33 IoT, which has a SAMD processor, so lots of memory, and a wifi chip onboard. Now all I needed was an epaper display and a plan.
Looking around on the internet, I came across this project and thought that looked great, so I pretty much took the design and the frame and went in my own direction. I wanted to use the Arduino because not only did I already have it, but Arduinos have the ability to go into deep sleep which the RPi is not set up to do, meaning I could run this system on next to no power.
How it works
- Google Apps Script has access to the Google calendar, and outputs a json file that's easy for the arduino to read without much extra interpretation. Here's an example output:
{
"date": "Sat Dec 13",
"today": [
"11:00 Water plants"
],
"next": {
"16 Tue": [
"08:00 Close windows"
],
"18 Thu": [
"08:00 Move trash up alley"
],
"20 Sat": [
"11:00 Water plants",
"13:00 class"
]
}
}
Note: This is not a secure solution! If you care about your privacy, you should change this method since theoretically anyone could find my deployed app script and see what I'm doing over the next two weeks. I decided to use this method because its simple and I'm lazy, I currently don't mind if others see my calendar (it's already visible to anyone who looks through my kitchen window), and I didn't want to pay Google Cloud to get remote authenticated access to calendar.
- Arduino, once every hour, will wake up, connect to wifi, read the latest version of the json file and check for changes, and if any changes exist it will redraw the epaper screen accordingly, then go back to sleep. So the screen will redraw at minimum once a day, as well as if anyone has made changes to the calendar in the past hour.
Make another one
To duplicate this project, the code is available on Github with instructions for setting it up and connecting the parts. The original instructable by D_NL goes through putting it in the Ikea frame.