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
sshcommand from PowerShell
- Download and install Raspberry Pi Imager
- Insert the Micro SD card and run Raspberry Pi Imager
- Under
Raspberry Pi DeviceselectRaspberry Pi Zero 2 W - Under
Operating SystemselectRaspberry Pi OS (other)and thenRaspberry Pi OS Lite (64-bit) - Under
Storageselect your Micro SD card - Click
NEXT - Click
EDIT SETTINGS - Check
Set hostnameand 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 passwordand enter a username and password- Remember these as you will need them later on!
- Check
Configure wireless LANand enter your Wi-Fi credentials- Don't forget to set the
Wireless LAN countryto your country
- Don't forget to set the
- Check
Set locale settingsand select the right time zone- The keyboard layout doesn't matter as we won't be connecting a keyboard.
- Go to the
SERVICEStab - Check
Enable SSHand selectUse password authentication - You can set the settings on the
OPTIONStab to whatever you like, I disabled telemetry, but that isn't required - Click
SAVE,YES,YESand 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 INport 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 HOSTNAMEwhereHOSTNAMEis 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@HOSTNAMEwhereUSERNAMEis the username you set earlier andHOSTNAMEis the hostname you set earlier, in my casessh thomas@rooster-epd.local. 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 updateand thensudo apt upgrade - Now install the required packages using the following commands:
sudo apt install python3-pipsudo apt install python3-pilsudo apt install python3-numpysudo apt install python3-spidevsudo apt install python3-gpiozerosudo apt install python3-packagingsudo pip3 install nicegui zermelo.py --break-system-packages- Note:
--break-system-packageshasn'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
Hostfield, your username and password in their respective fields, enter22in thePortfield and clickQuickconnect, then checkAlways trust this host, add this key to the cacheand 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-epdwhereUSERis your username - Download the
Source code (zip)from the latest release - Unzip it and copy the contents of the
rpi_zero_codedirectory into therooster-epddirectory 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-reloadsudo systemctl enable rooster-epd-main.servicesudo systemctl enable rooster-epd-screen-refresh.service
- Run
sudo nmtui - Select
Edit a connection - Select
<Add> - Enter the
SSIDof 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
PEAPenter theAnoymous identity,UsernameandPassword
- 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.