GPIO Zero allows you to create objects representing GPIO devices. As well as running it on a Raspberry Pi, you can also install GPIO Zero on a PC and create objects referencing GPIO pins on a Pi over the network.
To do this, you'll need to do a few things to get set up:
-
Enable Remote GPIO on the Pi in the Raspberry Pi Configuration Tool.
-
Run the pigpio daemon on the Pi:
sudo pigpiod
-
Get the Pi's IP address:
hostname -I
-
Install gpiozero and pigpio on your host machine (not necessary on Raspbian or x86 PIXEL):
- Install
pip:sudo apt install python3-pip - Install gpiozero and pigpio:
sudo pip3 install gpiozero pigpio
- Install
-
Run your Python environment with the
PIGPIO_ADDRenvironment variable set, e.g one of the following:PIGPIO_ADDR=192.168.1.4 ipython3PIGPIO_ADDR=192.168.1.4 python3PIGPIO_ADDR=192.168.1.4 idle3 &
If running on a Raspberry Pi, you also need to set the pin factory to
PiGPIOPin:GPIOZERO_PIN_FACTORY=PiGPIOPin PIGPIO_ADDR=192.168.1.4 ipython3GPIOZERO_PIN_FACTORY=PiGPIOPin PIGPIO_ADDR=192.168.1.4 python3GPIOZERO_PIN_FACTORY=PiGPIOPin PIGPIO_ADDR=192.168.1.4 idle3 &
-
Now use GPIO Zero like normal, and the devices will be controlled by GPIO pins on the remote Pi:
>>> from gpiozero import LED >>> led = LED(2) >>> led.blink() # LED on remote Pi's pin 2 now blinking
Alternatively, use pin objects as described in the pins documentation.
For windows, to set environment variable, execute:
set PIGPIO_ADDR=ip_address_of_your_piand
set GPIOZERO_PIN_FACTORY=pigpioFull code:
Anyway, thank @bennuttall :)