Open Gadgetoid opened 8 months ago
How is this going.
Wondering if I should try this, or just use the RPI.GPIO 'shim'.
As far as I'm aware the RPi.GPIO shim has the same limitations that are currently preventing any progress here- lack of pulse counting and PWM. Feel free to test but, uh, run your pumps dry!
The biggest blocker right now is arbitrary PWM support on pins- I need to wait for the people writing/testing/approving the kernel module. I have a janky software solution that I could roll out, but I'm apprehensive to half bake anything involving water.
TODO
PWM
Since Grow assumes we can PWM any pin- because RPi.GPIO had a software kludge to let us do so - we're in a bit of a predicament porting this to Bookworm / gpiod. I've experimented with pure Python PWM and it works, but it's thoroughly irredeemably terrible. When dealing with pumps that involve water- I don't want to invite the risk of a software failure causing a flood.
There's a patch floating about for software PWM at the kernel level, so we should be switching to standard PWM interfaces (see: https://lore.kernel.org/linux-pwm/20240204220851.4783-1-wahrenst@gmx.net/) with the hope that the Pi 5 will eventually get PIO PWM support on arbitrary pins.
Until the PWM issue is resolved, then Pi 5 support for Grow is blocked.
UPDATE: GPIO PWM is now merged into mainline Linux, Kernel 6.11, we're now waiting for it to make it into a Raspberry Pi OS release: https://github.com/torvalds/linux/commit/7f61257cd6e1ad4769b4b819668cab00f68f2556
Testing
If you're a Bookworm / Pi 5 user running into virtual environment issues, you can try this library like so:
The
./install.sh
script will create apimoroni
virtual environment that's shared between our products. (or use your existing venv if you've already activated one.)For the reasons behind these changes and other information, see: