品味樹莓派:GPIO Zero庫遠程控制功能使用

目的

使用GPIO Zero庫可以通過網絡遠程控制樹莓派的上GPIO口,本文將對該功能進行簡單說明。

使用前準備

樹莓派設置

使用GPIO Zero庫遠程功能首先需要使能 Remote GPIO 功能:

  • Raspbian桌面系統下可以通過 首選項 > Raspberry Pi Configuration > Interfaces > Remote GPIO 來設置;
  • 我們也可以終端中輸入 sudo raspi-config 打開配置工具,在其中 Interfaceing > Remote GPIO 來設置;
  • 啓動pigpio,使用 sudo systemctl enable pigpiod 命令可設置在系統啓動時啓動pigpio。此外也可以使用 sudo systemctl start pigpiodsudo pigpiod 來單次啓動pigpio;

控制端設置

控制端設備也不復雜,只要有GPIO Zero庫就可以,根據系統不同可以選擇通過包管理器或者pip來安裝(比如用pip來安裝: pip install gpiozero pigpio ),下面以Windows上安裝作爲演示,其他系統的安裝方式可以參考文後鏈接:
在這裏插入圖片描述

遠程控制GPIO口

完成上面的設置以後就可以真正開始遠程控制了,通過設置Pin Factory來實現該功能,先試試下面代碼:

from gpiozero import LED
from gpiozero.pins.pigpio import PiGPIOFactory
from time import sleep

factory = PiGPIOFactory(host='192.168.1.3') # 填寫樹莓派的IP地址
led = LED(17, pin_factory=factory)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

在樹莓派GPIO17上接上LED,在控制端的電腦上運行上面代碼,如果一切無誤的話你就可以看到LED閃爍了。
如果你有多個樹莓派你甚至可以使用下面代碼來控制多個:

from gpiozero import LED
from gpiozero.pins.pigpio import PiGPIOFactory
from time import sleep

factory3 = PiGPIOFactory(host='192.168.1.3')
factory4 = PiGPIOFactory(host='192.168.1.4')
led_1 = LED(17, pin_factory=factory3)
led_2 = LED(17, pin_factory=factory4)

while True:
    led_1.on()
    led_2.off()
    sleep(1)
    led_1.off()
    led_2.on()
    sleep(1)

上面代碼中兩個樹莓派可以均爲遠程端,如果將其中一個樹莓派作爲控制端、另一個作爲遠程端那麼上面代碼也可以寫成下面這樣:

from gpiozero import LED
from gpiozero.pins.pigpio import PiGPIOFactory
from time import sleep

factory3 = PiGPIOFactory(host='192.168.1.3')
led_1 = LED(17) # 控制端
led_2 = LED(17, pin_factory=factory3)

while True:
    led_1.on()
    led_2.off()
    sleep(1)
    led_1.off()
    led_2.on()
    sleep(1)

遠程控制功能不光可以控制輸出,對輸入也可以檢測傳遞,試試下面代碼:

from gpiozero import LED
from gpiozero.pins.pigpio import PiGPIOFactory
from signal import pause

factory3 = PiGPIOFactory(host='192.168.1.3')
factory4 = PiGPIOFactory(host='192.168.1.4')

button = Button(2, pin_factory=factory3)
led = LED(17, pin_factory=factory4)

led.source = button

pause()

上面代碼將接在一個樹莓派上的button和另一個樹莓派上的led進行綁定,button被按下和鬆開時led狀態也會變化。

除了上面的方式外還可以通過環境變量指定IP地址的方式來使用遠程控制功能,具體的可以參考文後鏈接。

總結

GPIO Zero庫遠程控制功能入門內容就是這些了,更多內容可以參考下面鏈接:
https://gpiozero.readthedocs.io/en/stable/remote_gpio.html
https://gpiozero.readthedocs.io/en/stable/recipes_remote_gpio.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章