5个不稳定版本

0.3.4 2024年8月8日
0.3.3 2024年8月4日
0.3.0 2024年7月31日
0.2.0 2024年6月22日
0.0.1 2024年6月2日

#81硬件支持

Download history 59/week @ 2024-05-27 196/week @ 2024-06-03 7/week @ 2024-06-10 104/week @ 2024-06-17 19/week @ 2024-06-24 357/week @ 2024-07-29 242/week @ 2024-08-05 11/week @ 2024-08-12

610 每月下载量

Apache-2.0

265KB
6K SLoC

GH Action codecov

pigg - Raspberry Pi GPIO GUI

一个用于Raspberry Pi GPIO输出控制和输入可视化的应用程序,使用rust语言,利用Iced GUI工具包和rppal GPIO crate构建。

GUI二进制文件(Pi Gpio GUI - PIGGUI)亲切地被称为“piggy”。

BCM Pin Layout Screenshot Board Pin Layout Screenshot

Board Pin Layout Screenshot

目前,当在Pi上运行时,您可以配置Pi的GPIO硬件输入或输出,控制输出的电平,并查看输入的电平。

它可以在macOS/Linux/Windows上运行。当我们添加网络支持时,这将允许您远程控制Pi GPIO硬件。

Input Output

最新新增功能 - 网络GPIO!

  • GUI(piggui)可以通过网络连接到Pi(运行piglet),从远处控制和查看GPIO硬件。GUI可以在Mac、Linux、Windows或Raspberry Pi上运行。事件在源端时间戳(尽可能靠近硬件)进行,因此网络延迟不应影响显示的波形。在“讨论”或GH问题中提供有关网络的相关反馈和想法。
  • 通过iroh-net连接到远程节点所需的数据称为nodeid。如果piglet在前景启动,它将为您打印出来。当piglet作为系统服务启动时,启动另一个前景实例,这将检测后台实例并显示其nodeid然后退出。
  • 使用nodeid,将其作为命令行选项提供给piggui--nodeid $nodeid,如果使用cargo run,则前面需要加上-- )或者将其输入到GUI中。要从GUI连接到远程实例,请点击屏幕底部信息栏左边的“硬件菜单”,然后选择“连接到远程Pi..:”菜单项。然后在提供的字段中输入nodeid并点击“连接”。

以下是两个视频,展示了两种使用方法,通过VNC显示了运行在RPi上的piglet。

其他功能

  • 两种布局中GPIO引脚的视觉表示,一种是模仿Pi的GPIO接头/接头的物理布局的“板引脚布局”,另一种是只有可编程GPIO引脚的“BCM引脚布局”,按BCM引脚编号排序。
  • 每个引脚都有其板引脚编号、名称和功能。
  • 下拉选择器以配置每个引脚(目前作为输入,带有或不带有上拉/下拉,或作为输出)。
  • 输入具有类似于LED的视觉表示,以显示其当前级别(黑色表示未知,红色表示关闭,绿色表示打开),还有一个波形视图,显示检测到输入级别的最近历史。
  • 输出有一个切换开关,可以用来改变输出的稳定值,还有一个“单击器”,用于快速反转稳定级别,还有一个显示输出上设置的级别最近历史的波形视图。
  • GPIO配置可以在启动时通过命令行文件名选项加载,也可以通过UI中的文件选择器加载,或通过文件选择器保存到文件。

您可以在这里查看更多功能和视频。

Piggui(发音为“Piggy”)

piggui是一个用于配置引脚、观察输入级别和控制输出级别的GUI。在Raspberry Pi上,它有一个真实的GPIO硬件后端(通过rppal)。在macOS、Linux和Windows上,它使用一个假硬件后端(主要用于开发)或可以连接到运行piglet的远程硬件后端。

Piglet

piglet是一个“无头”的命令行工具,它与GPIO硬件交互,可以应用从文件提供的配置并停止,或者可以监听来自远程piggui的配置更改,并向GUI报告输入级别更改。

如果在与“pi_hw”功能一起构建Pi上,则它有一个真实的GPIO硬件后端。

它可以构建在macOS/Linux/Windows/Pi上,带有“fake_hw”功能以实现假硬件后端,主要用于开发。

它接受一个可选的配置文件作为命令行选项。它将从文件加载GPIO配置(如piggui可以),然后将其应用于硬件然后停止。

它提供了从远程piggui实例与硬件交互的能力。它将在启动时打印出连接信息,并开始监听来自piggui实例的Iroh网络连接,然后用户可以与之交互,并通过piggui GUI可视化输入级别更改。

需要来自Raspberry Pi用户的反馈

我们希望从Raspberry Pi用户那里得到反馈,帮助我们决定未来要工作的顺序,以及如何集成新的功能(例如I2C总线、SPI、UART等)。

请告诉我们您的看法和建议,通过讨论或GH问题反馈。

短期路线图

我们在这次初步发布后确定了一些我们想要工作的领域,但非常希望您能提供意见,哪些功能可能最有用或最酷,很多人已经在GH问题上提出了。

  • 发布流程自动化和发布软件包问题 #85
  • 为Raspberry Pi预构建的二进制文件以便安装问题 #112和更容易的安装问题 #111
  • 扩展对输入和输出的支持(例如,时钟、PWM、I2C、UART、SPI等)。问题#53#52#5
  • 真正的逻辑布局,按功能分组引脚问题 #94

更长远的想法

  • 允许引脚之间连接问题 #95
  • 对Pico的支持,通过网络访问无头硬件后端
  • 在输入事件(边缘、电平等)上触发脚本或WebAssembly插件

安装

我们计划制作支持平台的预构建二进制文件及其直接安装方法。

在此之前,要安装 pigguipiglet,您必须从源代码构建,可以使用 cargo install,或 cargo build 或从repo的克隆或发布源tarball/zip的下载中使用 make

请参阅下面的章节以获取详细信息。

这是一个我们欢迎想法、意见和贡献的领域 - 请将您的想法发布到讨论

从源代码构建Piggui和Piglet

请参阅BUILDING.md

运行Piggui和Piglet

有关在相同机器上或在远程GUI与Pi硬件之间以系统服务方式运行pigletpiggui的详细信息,请参阅RUNNING.md

贡献

请参阅CONTRIBUTING.md

许可

请参阅LICENSE

行为准则

请参阅CODE_OF_CONDUCT.md

安全

请参阅SECURITY.md

依赖

~83–130MB
~2.5M SLoC