はじめに
GPIOをPythonで操作する時によく使われていたRPi.GPIOがRaspberryPi5から使えなくなりました。
その代わりにgpiozeroを使用するように公式からアナウンスされています。
ネイティブ環境から操作することは容易ですが、それらをDockerコンテナで一から構築する方法が無かったのでこちらに示します。
ソースコードはこちら。
全体構成
app
|-- code
| `-- sample.py
|-- docker-compose.yml
`-- Dockerfile
Dockerイメージ
docker-compose.yml
version: '3.3'
services:
gpio:
build: .
tty: true
privileged: true
volumes:
- ./code:/code
command: bash
gpiozeroの他に依存ライブラリとしてlgpio、pigpio、gpioが必要です。
FROM python:3.11-slim
RUN apt update -y && apt upgrade -y
# GPIO
RUN pip install lgpio pigpio gpio gpiozero
スクリプト
LEDを接続したGPIO25ピンに接点出力するサンプルです。
from gpiozero import LED
from time import sleep
led = LED(25)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
起動方法
サンプルスクリプトはこれで動きます。
$ docker-compose up -d
$ docker-compose exec gpio python3.11 code/sample.py