経緯
- MicroShiftからRaspberryPiのGPIOを操作する前実験として、PodmanからGPIOを操作した
- 今回はLチカでなく、圧電スピーカーを鳴らした
環境
- Raspberry Pi5
- AlmaLinux 9.4
- Podman version 4.9.4-rhel
手順
0. 事前準備
1. Raspberry Pi5回路準備
- 接続:GPIO12 (PWM0) - 圧電スピーカー - Ground
ref) https://www.hackatronic.com/raspberry-pi-5-pinout-specifications-pricing-a-complete-guide/
2. Podmanインストール・AlmaLinux設定
- Podmanインストール
$ sudo dnf install -y podman
- gpiochipへアクセスできるようにPermissionを設定
$ sudo chmod 666 /dev/gpiochip*
- これですべてのユーザーがgpiochipにアクセスできるようになる
- 上の設定を再起動しても変わらないようにする
$ sudo nano /etc/udev/rules.d/99-gpio.rules
- 上のファイルに下記を追記
KERNEL=="gpiochip*", MODE="0666"
- 再起動
$ sudo reboot
3. プロジェクト用意
- 下記のようにファイルを用意
project ├─Containerfile └─chime.py
- Containerfile
FROM python:3.11-slim RUN pip install lgpio gpiozero WORKDIR /app COPY . . CMD ["python3", "chime.py"]
- chime.py
from gpiozero import PWMOutputDevice from time import sleep # PWM0 is on GPIO 12 buzzer = PWMOutputDevice(pin=12, frequency=440) # 440 Hz is the frequency of the A4 note try: print("Playing sound on buzzer...") while True: buzzer.value = 0.5 # 50% duty cycle for a continuous tone sleep(1) # Play the tone for 1 second buzzer.off() # Turn off the buzzer sleep(1) # Wait for 1 second before playing again except KeyboardInterrupt: print("Program stopped") finally: buzzer.close()
3. コンテナビルド・起動
- コンテナビルド
$ podman build -t gpiozero-sound .
- コンテナ起動
$ podman run -it --privileged gpiozero-sound
ブザーが鳴ったら成功