A small desk-calendar with the theme of a portal chamber info.
It displays the current date, the next few events in your calendar and whether a person in your contact list has a birthday (inc. their name).
Table of Contents
The finished project on my desk:
The pie is displayed when a person in your contacts has a birthday (along with the name below it). The other three icons are currently displayed randomly.
This repo includes the software (100% python) and the STLs of the frame.
I used the following hardware:
- Waveshare 800×480, 7.5inch E-Ink display (13505)
- Raspberry Pi 3b
(The Raspi is a bit overkill if you only want to update the calendar. But since it's powered on anyways, I use it to host many other things as well. If you only want to use it for the calendar, you should take a look at the Raspberry Pi Zero series)
The prerequisites are based on this waveshare instruction to get your rapi ready for the display:
- Enable the SPI interface on your raspi
sudo raspi-config # Choose Interfacing Options -> SPI -> Yes to enable SPI interface
- Install BCM2835 libraries
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz tar zxvf bcm2835-1.60.tar.gz cd bcm2835-1.60/ sudo ./configure sudo make sudo make check sudo make install
- Install wiringPi libraries
sudo apt-get install wiringpi #For Pi 4, you need to update it: cd /tmp wget https://project-downloads.drogon.net/wiringpi-latest.deb sudo dpkg -i wiringpi-latest.deb
-
Clone the repo
git clone https://github.com/13Bytes/eInkCalendar cd eInkCalendar
-
Install requirements
sudo apt-get update # requirements by waveshare sudo apt-get install python3-pip python3-pil python3-numpy RPi.GPIO python-spidev # requirements by this repo sudo python3 -m pip install -r requirements.txt
-
Create config-file
cp settings.py.sample settings.py
Now edit
settings.py
and set all your settings:LOCALE: "en_US"
(or e.g.en-GB.UTF-8
) Select your desired format and language. It needs to be installed on your device (which 95% of time is already the case - as it's you system-language. You can list all installed local-packages withlocale -a
. If the desired one is missing, add it in this menusudo dpkg-reconfigure locales
(for Raspberry Pis) or take a look at the general Debian Wiki).WEBDAV_CALENDAR_URL = "webcal://p32-caldav.icloud.com/published/2/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
The address of your shared wabdav calendar. (It needs to be publicly accessible by this URL)WEBDAV_IS_APPLE = True
Is the calendar hosted on icloud?CALDAV_CONTACT_USER = "louis"
Username for logging into your CALDAV contact-list.CALDAV_CONTACT_PWD = "secret"
Password for logging into your CALDAV contact-list.ROTATE_IMAGE = True
This will rotate the image 180° before printing it to the calendar.True
is required if you use my STL, as the dipay is mounted upside-down. -
Add the start-script to your boot-process:
(You might need to adapt the path/home/pi/eInkCalendar/run_calendar.sh
acordingly)Make
run_calendar.sh
executablechmod +x /home/pi/eInkCalendar/run_calendar.sh
and add it to crontab, as follows:
crontab -e
and add following line:
@reboot sleep 60 && /home/pi/eInkCalendar/run_calendar.sh
The STLs of the frame can be found in hardware. It's designed for 3D-printing. The two parts can be screwed together in three of the four corners.
The raspi is held in place by threaded heat set inserts.
Stuck somewhere?
You can contact me, or create a issue.
Louis - @Louis_D_ - coding@13bytes.de
- I got the idea from following reddit-post.
- This readme-page uses this template.