みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

Raspberry Pi の GPIO をネットワークから操作する

pigpio というライブラリは,Raspberry Pi の GPIO に対応しています.

pigpio library

このライブラリは,デーモンとインターフェイスから構成されていて,ネットワークを通じてデーモンを操作することができます.つまり,開発用の高性能なパソコンにインターフェイスをインストールして,Raspberry Pi でデーモンを起動しておけば,快適な開発環境になります *1.公式サイトにはC言語とPythonに対応していると記載されています.

環境

本記事では以下の商品を使用しました.

Raspberry Pi の準備

GUI は不要なので,Raspberry Pi OS Lite を Raspberry Pi Imager で microSD に書き込みます.このときに,hostname と WiFi の設定をしておくと便利です.hostname はこれ以降 raspberrypi.local と設定したものとします.適宜読み替えてください.SSHは不要です.

Raspberry Pi が起動したら,pigpio をインストールします.

sudo apt install pigpio

pigpio デーモンは raspi-config から有効にできます. "Remote GPIO" を有効にします.

Raspberry Pi Documentation - Configuration

sudo raspi-config

pigpio デーモンは自動実行されると便利なので,サービスを有効にします.

$ sudo systemctl enable pigpiod.service
$ sudo systemctl start pigpiod.service
$ sudo systemctl status pigpiod.service

これで active となれば完了です.

動作確認

簡単な例で試してみます.hostname を raspberrypi.local と指定しているので,ネットワークから操作ができます.

requirements.txt

pigpio==1.78

main.py

GPIO 14 を OUTPUT モードにして,10回点滅させる python スクリプトです.

import sys
import time

import pigpio

pi = pigpio.pi("raspberrypi.local")
if not pi.connected:
   sys.exit()

pi.set_mode(14, pigpio.OUTPUT)
for _ in range(10):
    pi.write(14, 1)
    time.sleep(0.5)
    pi.write(14,0)
    time.sleep(0.2)
    
pi.stop()

回路

GPIO 14 に LED と 330 Ω の抵抗を直列に繋ぎました.

結果

手前の LED をご覧ください.奥の LED は 3v3 Power に接続しており,電源の確認用です.

これで,Raspberry Pi の GPIO をネットワークから操作できることが分かりました.

*1:Raspberry Pi Zero W にデスクトップ環境を準備して,Thonny を起動してみましたが,文字入力すら遅延するため,直接操作するのは大変でした.