品味树莓派:GPIO Zero库远程控制功能使用

2023-11-07

目的

使用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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

品味树莓派:GPIO Zero库远程控制功能使用 的相关文章

  • 嵌套字典中的 Django 模板

    我正在使用 Django 模板 并且遇到了嵌套字典的一个问题 Dict result dict type 0 file name abc count 0 type 1 file name xyz count 50 我的 HTML 文件中的模
  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 如何在 Jupyter Notebook 中运行 Python 异步代码?

    我有一些 asyncio 代码在 Python 解释器 CPython 3 6 2 中运行良好 我现在想在具有 IPython 内核的 Jupyter 笔记本中运行它 我可以运行它 import asyncio asyncio get ev
  • TensorFlow:带有轴选项的 bincount

    在 TensorFlow 中 我可以使用 tf bincount 获取数组中每个元素的计数 x tf placeholder tf int32 None freq tf bincount x tf Session run freq feed
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • 字符串中的注释和注释中的字符串

    我正在尝试使用 Python 和 Regex 计算 C 代码中包含的注释中的字符数 但没有成功 我可以先删除字符串以删除字符串中的注释 但这也会删除注释中的字符串 结果会很糟糕 是否有机会通过使用正则表达式来询问不匹配注释中的字符串 反之亦
  • ImportError:运行 jupyter Notebook 时没有名为 IPython.paths 的模块?

    我通过以下方式安装了 jupyter usr local opt python bin python2 7 m pip install jupyter 这将安装 ipython 版本 4 1 2 但是 当我运行 jupyter Notebo
  • Python中列表中两个连续元素的平均值

    我有一个偶数个浮点数的列表 2 34 3 45 4 56 1 23 2 34 7 89 我的任务是计算 1 和 2 个元素 3 和 4 5 和 6 等元素的平均值 在 Python 中执行此操作的快捷方法是什么 data 2 34 3 45
  • 更改 x 轴比例

    我使用 Matlab 创建了这个图 使用 matplotlib x 轴绘制大数字 例如 100000 200000 300000 我想要 1 2 3 和 10 5 之类的值来指示它实际上是 100000 200000 300000 有没有一
  • 使用 Python 计算 Spark 中成对 (K,V) RDD 中每个 KEY 的平均值

    我想与 Python 共享这个特定的 Apache Spark 解决方案 因为它的文档非常贫乏 我想通过 KEY 计算 K V 对 存储在 Pairwise RDD 中 的平均值 示例数据如下所示 gt gt gt rdd1 take 10
  • ValueError:不支持连续[重复]

    这个问题在这里已经有答案了 我正在使用 GridSearchCV 进行线性回归的交叉验证 不是分类器也不是逻辑回归 我还使用 StandardScaler 对 X 进行标准化 我的数据框有 17 个特征 X 和 5 个目标 y 观察 约11
  • CNTK 抱怨 LSTM 中的动态轴

    我正在尝试在 CNTK 中实现 LSTM 使用 Python 来对序列进行分类 Input 特征是固定长度的数字序列 时间序列 标签是 one hot 值的向量 Network input input variable input dim
  • Python、subprocess、call()、check_call 和 returncode 来查找命令是否存在

    我已经弄清楚如何使用 call 让我的 python 脚本运行命令 import subprocess mycommandline lumberjack sleep all night work all day subprocess cal
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • 为什么我应该使用 WSGI?

    使用 mod python 一段时间了 我读了越来越多关于 WSGI 有多好的文章 但没有真正理解为什么 那么我为什么要切换到它呢 有什么好处 这很难吗 学习曲线值得吗 为了用 Python 开发复杂的 Web 应用程序 您可能会使用更全面
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • falcon,AttributeError:“API”对象没有属性“create”

    我正在尝试测试我的猎鹰路线 但测试总是失败 而且看起来我把所有事情都做对了 my app py import falcon from resources static import StaticResource api falcon API
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • 如何使用Python保存“完整的网页”而不仅仅是基本的html

    我正在使用以下代码来使用 Python 保存网页 import urllib import sys from bs4 import BeautifulSoup url http www vodafone de privat tarife r

随机推荐

  • hexo部署:创建个人博客并部署到github

    前言 本文详细记录使用hexo搭建并部署个人博客的全过程 原文地址 https xuedongyun cn post 46487 创建hexo项目 在有node js环境的情况下 搭建项目 npm install hexo cli g he
  • 基于Android的中小学家校互动平台的设计与实现

    基于Android的中小学家校互动平台的设计与实现 摘 要 如今 互联网发展越来越快 手机应用开发技术日渐完善 随着社会信息化水平的提高 以及对新一代教育的日益关注 家校之间的沟通 家校互动的重要性日益凸显 这种需求也使得家校互动的市场受到
  • 秋招算法面经集合

    面试锦囊之面经分享系列 持续更新中 欢迎后台回复 面试 加入讨论组交流噢 写在前面 秋招告一段落 整理文件的时候发现之前记录的面经问题 主要是秋招前期的一些面试 后期由于实习比较忙没花时间整理 希望自己的面经可以帮助到有需要的人吧 由于个人
  • vite框架使用eslint+prettier配置,并且将错误信息显示在浏览器界面上

    在vscode编辑器当中使用vite框架 配置eslint 首先在vite项目中 安装eslint plugin vue依赖 npm install save dev eslint eslint config prettier eslint
  • 当你输入一个网址/点击一个链接,发生了什么?(以www.baidu.com为例)

    假设你用一个全新的浏览器 第一次启动的那种 访问百度 http www baidu com 在你敲入网址并按下回车之后 将会发生以下神奇的事情 浏览器先尝试从Host文件中获取http www baidu com 对应的IP地址 如果能取到
  • 常用字符设备驱动函数总结 ----- 记录总结tool

    打印等级 define KERN EMERG lt 0 gt system is unusable define KERN ALERT lt 1 gt action must be taken immediately define KERN
  • Java中的package(包)

    package类似一个文件夹 文件夹内有各种文件 package存在的意义是防止命名冲突造成使用不便 同一个文件夹内无法存在同名的文件 而不同名的文件夹里允许存在同名文件 因此不同文件夹 即不同package中允许出现相同class名 ja
  • Python中`__init__.py`详解

    在Python中 init py 是一个特殊的文件 用于标识一个包 Package 包是一个包含模块 Module 和其他子包的文件夹 它允许你将相关的模块组织在一起 方便管理和导入 以下是关于 init py 的详细解释 1 包的结构 在
  • windows下添加路由

    1 首先在 运行 窗口输入cmd 按WIN R打开运行窗口 然后回车进入命令行 2 在命令行下输入route命令 会有对应的提示信息 ROUTE f p 4 6 command destination MASK netmask gatewa
  • 【单目标优化算法】杂草优化算法(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 杂草算法代码简单 易于实现 具有较强的自适
  • C#根据经纬度计算两点距离(单位是千米)

    SQL CREATE function dbo fnGetDistance LatBegin REAL LngBegin REAL LatEnd REAL LngEnd REAL RETURNS FLOAT AS BEGIN DECLARE
  • java-面试题

    来源 牛客网 1 什么是Java虚拟机 为什么Java被称作是 平台无关的编程语言 Java虚拟机是一个可以执行Java字节码的虚拟机进程 Java源文件被编译成能被Java虚拟机执行的字节码文件 java的跨平台不是java源程序的跨平台
  • 小程序多种姿势更换文章

    概述 简单的文章切换demo 通过倒计时 摇一摇 双击进行文章切换 详细 直接看效果图吧 比较简单 主要是练习一下 小程序不带双击事件 可以记录第一次单击事件和第二次单机事件进行双击操作 1 摇一摇是通过调用官方的 2 wx onAccel
  • MATLAB安装MinGW-w64 C/C++ 编译器

    参考链接 matlab安装 MinGW w64 C C 编译器 上面的链接非常详细 可以之间看上面的 下面是我安装过程的总结 1 官网安装不成功 2 MinGW w64 for 32 and 64 bit Windows download
  • 通过Python在Windows或Linux上快速搭建HTTP服务器

    在Windows 7 10或Ubuntu上可以通过python2 x或python3 x来快速搭建一个简单的HTTP服务器 如果python为2 x 则可执行 python m SimpleHTTPServer 或 python2 m Si
  • 网上能搞什么副业?适合网上搞的副业

    现如今互联网时代 线上副业早已经普遍 有些工作不再需要线下交谈对接 只要有网络就可以搞定 线上副业已经不再是个人的选择 而是刚需 很多普通人的工资收入都不高 但是又不敢轻易辞职 于是就冒出了开启副业的想法 互联网的兴起让一大批人实现了副业收
  • Python的virtualenv虚拟环境

    Python的virtualenv虚拟环境 1 安装虚拟环境 1 1 创建虚拟环境 1 2 激活虚拟环境 1 3 退出虚拟环境 1 4 删除虚拟环境 2 使用虚拟环境 其实一直在Python的虚拟环境 确实很好用 这次想总结一下 好方便自己
  • 性能需求指标

    通常我们都从两个层面定义性能场景的需求指标 业务指标和技术指标 性能测试行业常用的性能指标表示法 TPS 每秒事务数 T没有规定 所有相关的人都要知道你的 T 是如何定义的 通常情况下 我们会根据场景的目的来定义 TPS 的粒度 如果是接口
  • python开发工程师是干嘛的-python工程师是做什么的

    对于大多数人来说 可能只知道python这个名字 或者也听说过Python在云计算 大数据 人工智能里面都有运用 学Python未来发展前景还比较好 但是并不知道Python具体可以做些什么 在哪些应用场景下可以使用Python语言 最近也
  • 品味树莓派:GPIO Zero库远程控制功能使用

    文章目录 目的 使用前准备 树莓派设置 控制端设置 远程控制GPIO口 总结 目的 使用GPIO Zero库可以通过网络远程控制树莓派的上GPIO口 本文将对该功能进行简单说明 使用前准备 树莓派设置 使用GPIO Zero库远程功能首先需