Crates.io | pigg |
lib.rs | pigg |
version | 0.5.0 |
source | src |
created_at | 2024-06-02 21:55:31.121058 |
updated_at | 2024-11-19 23:54:27.340936 |
description | A Graphical User Interface for interacting with local and remote Raspberry Pi and Pi Pico Hardware |
homepage | https://github.com/andrewdavidmackenzie/pigg/ |
repository | https://github.com/andrewdavidmackenzie/pigg/ |
max_upload_size | |
id | 1259504 |
size | 576,601 |
An app for Raspberry Pi GPIO Output control and Input visualization, built in rust using the Iced GUI toolkit and rppal GPIO crate.
The GUI binary (Pi Gpio GUI - PIGGUI) is affectionately known as "piggy".
|
Currently, when run on a Pi, you can configure the Pi's GPIO hardware Inputs or Outputs, controlling the level of the Outputs and view the level of the Inputs.
It runs on macOS/Linux/Windows. When we add networking support, this will allow you to control the Pi GPIO hardware remotely.
The pigg
project now has initial Raspberry Pi Pico W support!!!
It's a first version and is missing a few things we have planned on the roadmap, but it's a great start!
Pi Pico support includes:
porky
for running on the Pi Pico Wporky
porky
yourself with default SSID information so all devices with built binary connect
automatically to Wi-Fipiggui
and porky
that allows you to:
porky
devicesNOTE: Support for Pi Pico (not W), Pi Pico 2 (not W) and Pi Pico 2 W is planned for next releases.
piggui
) can connect to a Pi (that is running piglet
) over the network, to control and view the GPIO
hardware from a distance. The GUI can run on Mac, Linux, Windows or Raspberry Pis. Events are timestamped at source
(as close to the hardware as possible) so network delays should not affect the waveforms displayed. Provide us
feedback and ideas related to networking in Discussions or GH issues.nodeid
. piglet
prints this out for you
if it is started in the foreground. When piglet
has been started as a system service, start another instance in the
foreground and this will detect the background instance and display its nodeid
for you then exit.nodeid
and either supply it as a command line option to piggui
(--nodeid $nodeid
, prefixed with --
if using cargo run
) or enter it into the GUI. To connect to a remote instance from the GUI, click on the
"hardware menu" in the left of the info bar at the bottom of the screen and select the "Connect to remote Pi..."
menu item. Then enter the nodeid
into the field provided and hit "Connect"You can see more gifs and videos of features here
piggui
is a GUI for configuring pins, observing input levels and controlling output levels.
On Raspberry Pi it has a real GPIO hardware backend (via rppal).
On macOS, Linux and Windows it uses a fake hardware backend (mainly for development) or can connect to a remote
hardware backend that is running piglet
.
piglet
is a "headless" command line utility that interacts with the GPIO hardware, and can either apply a
config supplied from file and stop, or can listen for config changes from a remote piggui
and report input
level changes to the GUI.
If built on the Pi (with the "pi_hw" feature), then it has a real GPIO hardware backend.
It can be built on macOS/Linux/Windows/Pi with the "fake_hw" feature for a fake hardware backend, mainly used for development.
It takes an optional config file as a command line option. It will load the GPIO configuration from the file
(like piggui
can) and it will apply it to the hardware then stop.
It offers the ability to interact with the hardware from a remote piggui
instance.
It will print out connection info at startup and start listing for Iroh network connections from piggui
instances,
then the user can interact with it and visualize inputs level changes from the piggui
GUI.
porky
is an embedded application developer for the Raspberry Pi Pico (Pi Pico W only currently, but I plan to
add support for Pico, Pico 2 and Pico 2 W soon) for remote interaction with the Pi Pico's GPIO hardware. It can be
connected to remotely over TCP, just like to a piglet
running on a Pi.
For more details see porky's README.md
We would like input from Raspberry Pi users to help us decide the order of things to work on in the future, and input on how integrate new functionalities (e.g. I2C buses, SPI, UART, etc.).
Please let us know what you think, and suggestions, via Discussions or GH issues.
We have identified a number of areas to work on in future releases, but we would really appreciate your input on what could be most useful or just the coolest, many have GH issues.
See issues in milestones 0.6.0 and 0.7.0 for the entire up-to-date list and progress.
TODO
See BUILDING.md
For details on running piglet
and piggui
in the foreground or as a system service, on the same machine or with a
remote GUI to Pi hardware, see RUNNING.md
See CONTRIBUTING.md
See LICENSE
See SECURITY.md