A small e-Paper device that shows your Zermelo schedule.
- Raspberry Pi Zero 2WH
- The original Zero W should also work, however I opted for the Zero 2 W to get better performance
- Waveshare 2.13inch E-Paper HAT (G), 250x122, Red/Yellow/Black/White, SPI Interface
- Micro SD card
- I recommend to get a fast one
- Size doesn't really matter, 32GB is more than enough
- Micro SD card reader
- Micro USB cable
- USB Power supply / charger
- 3D Printed case - STL files in the latest release
- 4x M2.5 x 6 screw - (I bought this kit)
- 4x M2.5 nut - (Also from this kit)
- Any SFTP client, I use FileZilla
- Any SSH client, I use the
ssh
command from PowerShell
- Download and install Raspberry Pi Imager
- Insert the Micro SD card and run Raspberry Pi Imager
- Under
Raspberry Pi Device
selectRaspberry Pi Zero 2 W
- Under
Operating System
selectRaspberry Pi OS (other)
and thenRaspberry Pi OS Lite (64-bit)
- Under
Storage
select your Micro SD card - Click
NEXT
- Click
EDIT SETTINGS
- Check
Set hostname
and enter a hostname, I set it torooster-epd
- Remember this as you will need it later on!
- Also note that the final hostname will be what you set +
.local
, so in my case it will berooster-epd.local
- Check
Set username and password
and enter a username and password- Remember these as you will need them later on!
- Check
Configure wireless LAN
and enter your Wi-Fi credentials- Don't forget to set the
Wireless LAN country
to your country
- Don't forget to set the
- Check
Set locale settings
and select the right time zone- The keyboard layout doesn't matter as we won't be connecting a keyboard.
- Go to the
SERVICES
tab - Check
Enable SSH
and selectUse password authentication
- You can set the settings on the
OPTIONS
tab to whatever you like, I disabled telemetry, but that isn't required - Click
SAVE
,YES
,YES
and wait for the Imager to finish - Once it's finished you can take the Micro SD card out and put it in the Rasberry Pi
- Plug the Micro USB cable into the
PWR IN
port on the Raspberry Pi and plug it into your USB power supply and wait for it to boot and set itself up- You can check if it is done by entering
ping HOSTNAME
whereHOSTNAME
is the hostname you set earlier, so in my caseping rooster-epd.local
. If you get succesful ping results it's done and online
- You can check if it is done by entering
- Connect to the Pi using your SSH client
- If you are using PowerShell like me enter
ssh USERNAME@HOSTNAME
whereUSERNAME
is the username you set earlier andHOSTNAME
is the hostname you set earlier, in my casessh [email protected]
. After that enter the password you set earlier
- If you are using PowerShell like me enter
- Make sure the Pi is up to date by running
sudo apt update
and thensudo apt upgrade
- Now install the required packages using the following commands:
sudo apt install python3-pip
sudo apt install python3-pil
sudo apt install python3-numpy
sudo apt install python3-spidev
sudo apt install python3-gpiozero
sudo apt install python3-packaging
sudo pip3 install nicegui zermelo.py --break-system-packages
- Note:
--break-system-packages
hasn't broken anything as far as I've seen with these two packages
- Note:
Enable the SPI interface of the pi using sudo raspi-config
and then choose Interfacing Options
-> SPI
-> Yes
- Connect to the Pi using your SFTP client
- If you are using FileZilla like me enter the hostname in the
Host
field, your username and password in their respective fields, enter22
in thePort
field and clickQuickconnect
, then checkAlways trust this host, add this key to the cache
and clickOk
- If you are using FileZilla like me enter the hostname in the
- Create a new directory in the home directory of your user called
rooster-epd
, so the full path will be/home/USER/rooster-epd
whereUSER
is your username - Download the
Source code (zip)
from the latest release - Unzip it and copy the contents of the
rpi_zero_code
directory into therooster-epd
directory you just created on the Pi
Create the following 2 files and replace USER
with your username of the Raspberry Pi Zero:
-
/etc/systemd/system/rooster-epd-main.service
[Unit] Description=Runs the Rooster-EPD main.py at startup After=rooster-epd-screen-refresh.service [Service] ExecStart=python3 /home/USER/rooster-epd/main.py WorkingDirectory=/home/USER/rooster-epd Restart=on-failure User=USER [Install] WantedBy=multi-user.target
-
/etc/systemd/system/rooster-epd-screen-refresh.service
[Unit] Description=Runs the Rooster-EPD screen_refresh.py at startup After=network-online.target time-sync.target Wants=network-online.target time-sync.target [Service] ExecStart=python3 /home/USER/rooster-epd/screen_refresh.py WorkingDirectory=/home/USER/rooster-epd Restart=on-failure User=USER [Install] WantedBy=multi-user.target
Then enable them with the following commands in this order:
sudo systemctl daemon-reload
sudo systemctl enable rooster-epd-main.service
sudo systemctl enable rooster-epd-screen-refresh.service
- Run
sudo nmtui
- Select
Edit a connection
- Select
<Add>
- Enter the
SSID
of the Wi-Fi network - Select the right
Security
- Most home Wi-Fi networks are
WPA & WPA2 Personal
- Then enter the
Password
- Then enter the
- Most school networks are
WPA & WPA2 Enterprise
- Then you must also select the right
Authentication
, in most casesPEAP
, if not contact your school's network administrators to ask what security is used- In the case of
PEAP
enter theAnoymous identity
,Username
andPassword
- In the case of
- Then you must also select the right
- Most home Wi-Fi networks are
- Select
<Ok>
- Press escape twice to exit nmtui
After completing all steps listed above reboot the Pi by running sudo reboot
via your SSH client. Connect the E-Paper HAT as well if you haven't already.