Search packages, repositories and app categories

Package detailsv0.10.0

rpi_gpio

rpi_gpio is a Dart library for accessing the Raspberry Pi GPIO pins.

Linux
30-day downloads
48
Likes
33
Pub points
150

Install package

flutter pub add rpi_gpio

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

rpi_gpio is a Dart library enabling direct access to Raspberry Pi GPIO pins on Linux systems. It allows developers to control digital inputs and outputs, facilitating interaction with physical hardware such as sensors, LEDs, and motors. Designed for IoT applications, the library provides a straightforward interface for managing GPIO functionality within Flutter or standalone Dart projects running on Raspberry Pi. The package integrates seamlessly with the Linux environment where Raspberry Pi operates, making it ideal for embedded and real-time hardware control scenarios.

Use cases

  • Controlling LEDs and relays
  • Reading sensor data from GPIO
  • Building home automation systems
  • Creating interactive IoT devices
  • Developing robotics interfaces

Key features

  • Direct GPIO pin access
  • Linux-only compatibility
  • Simple API for input/output control
  • Supports interrupt-based events
  • Lightweight and minimal dependencies

Suitable for

  • Raspberry Pi developers
  • IoT hobbyists
  • Hardware-interfacing Flutter apps
  • Embedded system projects
  • Real-time device control

Considerations

  • Only works on Raspberry Pi with Linux
  • Requires root privileges for some operations
  • Limited to Linux platforms
  • No support for other microcontrollers
  • May need additional setup for GPIO permissions

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

rpi_gpio.dart

pub package

rpi_gpio is a Dart package for accessing the Raspberry Pi GPIO pins.

Overview

  • Gpio provides the API for accessing the various General Purpose I/O pins on the Raspberry Pi.

  • RpiGpio provides the implementation for the Gpio API via the native libgpiod.so.2 library.

Setup

Installing libgpiod (should already be installed)

RpiGpio accesses the GPIO pins using the native libgpiod.so.2 library. If you are running the latest Raspberry Pi OS (formerly Raspbian), then this library should already be installed by default on your Raspberry Pi. If you are unsure, see #2 below in the troubleshooting section. If it is not already installed, open a terminal and run

sudo apt update
sudo apt install libgpiod2

Example

The example launches the example app to demonstrate:

  • Blinking an LED along with software based PWM on a second LED.

  • Responding to a button press by turning on an LED.

The example is structured such that the example test can inject a mock gpio to facilitate testing and allow test execution on platforms other than the Raspberry Pi.

Testing

Latest Raspberry Pi OS (2024-05-29)

Raspberry Pi Hardware Dart version
Pi 5 Model B Rev 1.0 3.3.4 (stable) (Tue Apr 16 19:56:12 2024 +0000) on "linux_arm64"
Pi 3 Model B Rev 1.2 3.3.4 (stable) (Tue Apr 16 19:56:12 2024 +0000) on "linux_arm64"
Pi 2 Model B Rev 1.1 3.3.4 - 32 bit
Pi 1 Model B Rev 2 unsupported

Troubleshooting

  1. Run test/src/native/show_hardware_and_os.dart and record the output

  2. Run test/src/native/show_lib_version.dart to see if the libgpiod.so.2 library can be located

  3. If running test/src/native/blink_led.dart crashes then there may be a 32 bit / 64 bit mismatch. Check that the board, the OS, and the Dart SDK are all either 32 bit or 64 bit.

  4. If running test/src/native/blink_led.dart doesn't crash, but doesn't blink the LED (where the LED and resistor are connected in series to GPIO 17 (pin 11) and ground) then

sudo apt-get install libgpiod-dev
gpioinfo

and and check to see that the gpiochip# listing all of the GPIO# (for example "gpiochip4" below)

$ gpioinfo
gpiochip0 - 32 lines:
  ...
gpiochip4 - 54 lines:
	line   0:     "ID_SDA"       unused   input  active-high
	line   1:     "ID_SCL"       unused   input  active-high
	line   2:      "GPIO2"       unused   input  active-high
	line   3:      "GPIO3"       unused   input  active-high
	line   4:      "GPIO4"       unused   input  active-high
  ...

matches the Gpio Chip information in #1 above. (for example "gpiochip4" below)

$ dart test/src/native/show_hardware_and_os.dart
CPU          : aarch64
  ...
Is Rpi 5     : true
Gpio Chip    : gpiochip4

Categories

Dependencies

Dependency list 2 items

Source repository

Projects using this package

No data available yet.