Updated source code for the 52Pi EP-0152 Raspberry Pi Fan Expansion Board, sold on Amazon as GeeekPi Fan Hat for Raspberry Pi 4 Model B, PWM Fan GPIO Expansion Board with 0.91inch OLED Display for Raspberry Pi 4B/3B+/3B/2B.
The original code listed for the fan hat is woefully out of date, as it won't work for the Raspberry Pi 5 and doesn't use the PEP 668 specification, which is now required for Rasberry Pi OS.
This repository is compatible with the following Raspberry Pi versions on Raspberry Pi OS (64-bit) / Debian GNU/Linux 12 (bookworm):
- Raspberry Pi 5B ( ✅ - Tested)
- Raspberry Pi 4B ( ✅ - Tested)
- Raspberry Pi 3B+/3B ( ❓ - Untested)
- Raspberry Pi 2B ( ❓ - Untested)
-
Create a Python Virtual Environment to install
pippackages.sudo -i python3 -m venv /opt/EP-0152 source /opt/EP-0152/bin/activate -
Install
pip3packages:pip3 install board pillow adafruit_circuitPython_ssd1306
-
For Raspbery Pi 5:
pip3 uninstall RPI.GPIO pip3 install rpi-lgpio
-
-
Remember to exit from
sudo -i:exit
I've added @franganghi's version of Raspberry-Pi5-PWM-Fan-Control as a submodule to this repository. To pull the submodule after cloning this repository, run:
cd EP-0152
git submodule update --init --recursiveAfter doing so, follow the instructions listed in the README to install as a Linux service.
cd EP-0152/LEDs sudo mkdir /opt/EP-0152/LEDs sudo cp ep0152ledpwm.service /lib/systemd/system/ep0152ledpwm.service sudo cp LEDsV2.* /opt/EP-0152/LEDs/. sudo chmod 644 /lib/systemd/system/ep0152ledpwm.service sudo chmod +x /opt/EP-0152/LEDs/LEDsV2.py sudo chmod +x /opt/EP-0152/LEDs/LEDsV2.sh sudo systemctl daemon-reload sudo systemctl enable --now ep0152ledpwm.service
$ sudo systemctl status ep0152ledpwm.service ●くろまる ep0152ledpwm.service - EP-0152 LEDs PWM Pulse Loaded: loaded (/lib/systemd/system/ep0152ledpwm.service; enabled; preset: enabled) Active: active (running) since Fri 2024年06月21日 10:34:34 PDT; 1h 13min ago Main PID: 2701 (LEDsV2.sh) Tasks: 5 (limit: 9248) CPU: 3.627s CGroup: /system.slice/ep0152ledpwm.service ├─2701 /bin/bash /opt/EP-0152/LEDs/LEDsV2.sh └─2710 python3 /opt/EP-0152/LEDs/LEDsV2.py Jun 21 10:34:34 host systemd[1]: Started ep0152ledpwm.service - EP-0152 LEDs PWM Pulse.
sudo systemctl stop ep0152ledpwm.service sudo systemctl disable ep0152ledpwm.service sudo systemctl daemon-reload sudo rm /lib/systemd/system/ep0152ledpwm.service sudo rm -rf /opt/EP-0152/LEDs
Credit to @AmazonShopper for providing the edits to the original code.
cd EP-0152/OLED sudo mkdir /opt/EP-0152/OLED sudo cp ep0152oled.service /lib/systemd/system/ep0152oled.service sudo cp oledV2.py /opt/EP-0152/OLED/. sudo cp OLED.sh /opt/EP-0152/OLED/. sudo chmod 644 /lib/systemd/system/ep0152oled.service sudo chmod +x /opt/EP-0152/LEDs/oledV2.py sudo chmod +x /opt/EP-0152/LEDs/OLED.sh sudo systemctl daemon-reload sudo systemctl enable --now ep0152oled.service
$ sudo systemctl status ep0152oled.service ●くろまる ep0152oled.service - EP-0152 OLED Monitor Loaded: loaded (/lib/systemd/system/ep0152oled.service; enabled; preset: enabled) Active: active (running) since Fri 2024年06月21日 10:34:34 PDT; 1h 18min ago Main PID: 2703 (OLED.sh) Tasks: 2 (limit: 9248) CPU: 1min 729ms CGroup: /system.slice/ep0152oled.service ├─2703 /bin/bash /opt/EP-0152/OLED/OLED.sh └─2711 python3 /opt/EP-0152/OLED/oledV2.py Jun 21 10:34:34 host systemd[1]: Started ep0152oled.service - EP-0152 OLED Monitor.
sudo systemctl stop ep0152oled.service sudo systemctl disable ep0152oled.service sudo systemctl daemon-reload sudo rm /lib/systemd/system/ep0152oled.service sudo rm -rf /opt/EP-0152/OLED
sudo rm -rf /opt/EP-0152