Skip to content

Latest commit

 

History

History
68 lines (47 loc) · 1.91 KB

README.md

File metadata and controls

68 lines (47 loc) · 1.91 KB

asyncpio

asyncpio is an asynchronous Python client for pigpio, which allows control of the Raspberry Pi's General Purpose Input Outputs (GPIO).

This is a port of pigpio's thread-based Python client to asyncio.

Requirements

pigpio is a dependency: you must have the pigpio daemon, pigpiod.

Usage

Create an asyncpio.pi() and await pi.connect(), then await the various pi.* function calls as you would for pigpio,

async def main():
    pi = asyncpio.pi()
    await pi.connect()
    # ... await pi.<func> calls.

asyncio.run(main())

You may call asyncpio.pi() outside of a running event loop if you need greater control over the loop,

async def main(pi):
    await pi.connect()
    # ... await pi.<func> calls.

pi = asyncpio.pi()
loop = asyncio.get_event_loop()
loop.run_until_complete(main(pi))

See the pigpio Python documentation and EXAMPLES for the pi API.

Documentation

See http://abyz.me.uk/rpi/pigpio/

GPIO

ALL GPIO are identified by their Broadcom number. See https://pinout.xyz.

There are 54 GPIO in total, arranged in two banks.

Bank 1 contains GPIO 0-31. Bank 2 contains GPIO 32-54.

A user should only manipulate GPIO in bank 1.

There are at least three types of board:

  • Type 1
    • 26 pin header (P1)
    • Hardware revision numbers of 2 and 3
    • User GPIO 0-1, 4, 7-11, 14-15, 17-18, 21-25
  • Type 2
    • 26 pin header (P1) and an additional 8 pin header (P5)
    • Hardware revision numbers of 4, 5, 6, and 15
    • User GPIO 2-4, 7-11, 14-15, 17-18, 22-25, 27-31
  • Type 3
    • 40 pin expansion header (J8)
    • Hardware revision numbers of 16 or greater
    • User GPIO 2-27 (0 and 1 are reserved)

It is safe to read all the GPIO. If you try to write a system GPIO or change its mode you can crash the Pi or corrupt the data on the SD card.