品味树莓派: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

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naisu Xu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值