Project: gpiozero

A simple interface to GPIO devices with Raspberry Pi

Project Details

Latest version
2.0
Home Page
https://gpiozero.readthedocs.io/
PyPI Page
https://pypi.org/project/gpiozero/

Project Popularity

PageRank
0.0030913373077419365
Number of downloads
891644

======== gpiozero

A simple interface to GPIO devices with Raspberry Pi, developed and maintained by Ben Nuttall and Dave Jones_.

.. _Raspberry Pi: https://www.raspberrypi.org/ .. _Ben Nuttall: https://github.com/bennuttall .. _Dave Jones: https://github.com/waveform80

About

Component interfaces are provided to allow a frictionless way to get started with physical computing:

.. code:: python

from gpiozero import LED
from time import sleep

led = LED(17)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

With very little code, you can quickly get going connecting your components together:

.. code:: python

from gpiozero import LED, Button
from signal import pause

led = LED(17)
button = Button(3)

button.when_pressed = led.on
button.when_released = led.off

pause()

You can advance to using the declarative paradigm along with provided to describe the behaviour of devices and their interactions:

.. code:: python

from gpiozero import OutputDevice, MotionSensor, LightSensor
from gpiozero.tools import booleanized, all_values
from signal import pause

garden = OutputDevice(17)
motion = MotionSensor(4)
light = LightSensor(5)

garden.source = all_values(booleanized(light, 0, 0.1), motion)

pause()

See the chapter on Source/Values_ for more information.

.. _Source/Values: https://gpiozero.readthedocs.io/en/stable/source_values.html

The library includes interfaces to many simple everyday components, as well as some more complex things like sensors, analogue-to-digital converters, full colour LEDs, robotics kits and more. See the Recipes_ chapter of the documentation for ideas on how to get started.

.. _Recipes: https://gpiozero.readthedocs.io/en/stable/recipes.html

Pin factories

GPIO Zero builds on a number of underlying pin libraries, including RPi.GPIO_ and pigpio, each with their own benefits. You can select a particular pin library to be used, either for the whole script or per-device, according to your needs. See the section on changing the pin factory.

.. _RPi.GPIO: https://pypi.org/project/RPi.GPIO .. _pigpio: https://pypi.org/project/pigpio .. _changing the pin factory: https://gpiozero.readthedocs.io/en/stable/api_pins.html#changing-the-pin-factory

A "mock pin" interface is also provided for testing purposes. Read more about this in the section on mock pins_.

.. _mock pins: https://gpiozero.readthedocs.io/en/stable/api_pins.html#mock-pins

Installation

GPIO Zero is installed by default in the Raspberry Pi OS desktop image, available from raspberrypi.org. To install on Raspberry Pi OS Lite or other operating systems, including for PCs using remote GPIO, see the Installing chapter.

.. _raspberrypi.org: https://www.raspberrypi.org/software/ .. _Installing: https://gpiozero.readthedocs.io/en/stable/installing.html

Documentation

Comprehensive documentation is available at https://gpiozero.readthedocs.io/. Please refer to the Contributing_ and Development_ chapters in the documentation for information on contributing to the project.

.. _Contributing: https://gpiozero.readthedocs.io/en/stable/contributing.html .. _Development: https://gpiozero.readthedocs.io/en/stable/development.html

Issues and questions

If you have a feature request or bug report, please open an issue on GitHub. If you have a question or need help, this may be better suited to our GitHub discussion board, the Raspberry Pi Stack Exchange_ or the Raspberry Pi Forums_.

.. _issue on GitHub: https://github.com/gpiozero/gpiozero/issues/new .. _GitHub discussion board: https://github.com/gpiozero/gpiozero/discussions .. _Raspberry Pi Stack Exchange: https://raspberrypi.stackexchange.com/ .. _Raspberry Pi Forums: https://www.raspberrypi.org/forums/

Python 2 support

.. warning::

GPIO Zero 1.6.x is the last to support Python 2. GPIO Zero 2.x will support
Python 3 only.

Contributors

  • Alex Chan_
  • Alex Eames_
  • Andrew Scheller_
  • Barry Byford_
  • Cameron Davidson-Pilon_
  • Carl Monk_
  • Claire Pollard_
  • Clare Macrae_
  • Dan Jackson_
  • Daniele Procida_
  • damosurfer_
  • David Glaude_
  • Delcio Torres_
  • Edward Betts_
  • Fatih Sarhan_
  • Fangchen Li_
  • G.S._
  • gnicki_
  • Ian Harcombe_
  • Jack Wearden_
  • Jeevan M R_
  • Josh Thorpe_
  • Kyle Morgan_
  • Linus Groh_
  • Mahallon_
  • Maksim Levental_
  • Martchus_
  • Martin O'Hanlon_
  • Mike Kazantsev_
  • Paulo Mateus_
  • Phil Howard_
  • Philippe Muller_
  • Rick Ansell_
  • Rimas Misevičius_
  • Robert Erdin_
  • Russel Winder_
  • Ryan Walmsley_
  • Schelto van Doorn_
  • Sofiia Kosovan_
  • Steve Amor_
  • Stewart Adcock_
  • Thijs Triemstra_
  • Tim Golden_
  • Yisrael Dov Lebow_

See the contributors page_ on GitHub for more info.

.. _Alex Chan: https://github.com/gpiozero/gpiozero/commits?author=alexwlchan .. _Alex Eames: https://github.com/gpiozero/gpiozero/commits?author=raspitv .. _Andrew Scheller: https://github.com/gpiozero/gpiozero/commits?author=lurch .. _Barry Byford: https://github.com/gpiozero/gpiozero/commits?author=ukBaz .. _Cameron Davidson-Pilon: https://github.com/gpiozero/gpiozero/commits?author=CamDavidsonPilon .. _Carl Monk: https://github.com/gpiozero/gpiozero/commits?author=ForToffee .. _Chris R: https://github.com/gpiozero/gpiozero/commits?author=chrisruk .. _Claire Pollard: https://github.com/gpiozero/gpiozero/commits?author=tuftii .. _Clare Macrae: https://github.com/gpiozero/gpiozero/commits?author=claremacrae .. _Dan Jackson: https://github.com/gpiozero/gpiozero/commits?author=e28eta .. _Daniele Procida: https://github.com/evildmp .. _Dariusz Kowalczyk: https://github.com/gpiozero/gpiozero/commits?author=darton .. _damosurfer: https://github.com/gpiozero/gpiozero/commits?author=damosurfer .. _David Glaude: https://github.com/gpiozero/gpiozero/commits?author=dglaude .. _Delcio Torres: https://github.com/gpiozero/gpiozero/commits?author=delciotorres .. _Edward Betts: https://github.com/gpiozero/gpiozero/commits?author=edwardbetts .. _Fatih Sarhan: https://github.com/gpiozero/gpiozero/commits?author=f9n .. _Fangchen Li: https://github.com/gpiozero/gpiozero/commits?author=fangchenli .. _G.S.: https://github.com/gpiozero/gpiozero/commits?author=gszy .. _gnicki: https://github.com/gpiozero/gpiozero/commits?author=gnicki2000 .. _Ian Harcombe: https://github.com/gpiozero/gpiozero/commits?author=MrHarcombe .. _Jack Wearden: https://github.com/gpiozero/gpiozero/commits?author=NotBobTheBuilder .. _Jeevan M R: https://github.com/gpiozero/gpiozero/commits?author=jee1mr .. _Josh Thorpe: https://github.com/gpiozero/gpiozero/commits?author=ThorpeJosh .. _Kyle Morgan: https://github.com/gpiozero/gpiozero/commits?author=knmorgan .. _Linus Groh: https://github.com/gpiozero/gpiozero/commits?author=linusg .. _Mahallon: https://github.com/gpiozero/gpiozero/commits?author=Mahallon .. _Maksim Levental: https://github.com/gpiozero/gpiozero/commits?author=makslevental .. _Martchus: https://github.com/gpiozero/gpiozero/commits?author=Martchus .. _Martin O'Hanlon: https://github.com/martinohanlon/commits?author=martinohanlon .. _Mike Kazantsev: https://github.com/gpiozero/gpiozero/commits?author=mk-fg .. _Paulo Mateus: https://github.com/gpiozero/gpiozero/commits?author=SrMouraSilva .. _Phil Howard: https://github.com/gpiozero/gpiozero/commits?author=Gadgetoid .. _Philippe Muller: https://github.com/gpiozero/gpiozero/commits?author=pmuller .. _Rick Ansell: https://github.com/gpiozero/gpiozero/commits?author=ricksbt .. _Rimas Misevičius: https://github.com/gpiozero/gpiozero/commits?author=rmisev .. _Robert Erdin: https://github.com/gpiozero/gpiozero/commits?author=roberterdin .. _Russel Winder: https://github.com/russel .. _Ryan Walmsley: https://github.com/gpiozero/gpiozero/commits?author=ryanteck .. _Schelto van Doorn: https://github.com/gpiozero/gpiozero/commits?author=goloplo .. _Sofiia Kosovan: https://github.com/gpiozero/gpiozero/commits?author=SofiiaKosovan .. _Steve Amor: https://github.com/gpiozero/gpiozero/commits?author=SteveAmor .. _Stewart Adcock: https://github.com/gpiozero/gpiozero/commits?author=stewartadcock .. _Thijs Triemstra: https://github.com/gpiozero/gpiozero/commits?author=thijstriemstra .. _Tim Golden: https://github.com/gpiozero/gpiozero/commits?author=tjguk .. _Yisrael Dov Lebow: https://github.com/gpiozero/gpiozero/commits?author=yisraeldov

.. _contributors page: https://github.com/gpiozero/gpiozero/graphs/contributors