LoginSignup
0
1

More than 3 years have passed since last update.

CentOS7をインストールしたRaspberry Pi 3b+で、pigpioを用いてGPIOの制御をする

Last updated at Posted at 2020-05-02

概要

私はCentOSの方が使い慣れているという理由でRaspberry PiにCentOS7をインストールして使ています。
ある日、pigpioというライブラリを用いてGPIO制御をしてみようと思ったのですが、環境構築の手順がRaspbianを前提にしたものがほとんどであり(みんなapt installしてる)、CentOS向けの解説を見つけられなかったので、ハマったポイントなどを紹介しながらまとめました。

環境

使用機器はRaspberry Pi 3b+で、OSおよびPythonのバージョンは以下の通りです。

$ cat /etc/redhat-release
CentOS Linux release 7.8.2003 (AltArch)
$ python3 -V
Python 3.6.8

ダウンロードおよびインストール

公式ページの手順を参考に、インストールを行いました。

wget https://github.com/joan2937/pigpio/archive/master.zip
unzip master.zip
cd pigpio-master
make
sudo make install

この時点で、本来であればpigpiodコマンドが利用できるはずが、Not found。パスの読込先と、pigpiodコマンドの場所を確認するとpigpiodコマンドが/usr/local/bin/に格納されているのに対し、自分のパスが通っていなかった。なんて初歩的なミスと嘆きながらパスを修正し実行すると以下のエラー。

 error while loading shared libraries: libpigpio.so.1: cannot open shared object file: No such file or directory

これは、「ダイナミックリンクされたファイルが見つからないという意味」(引用:https://jsapachehtml.hatenablog.com/entry/2015/01/09/210255) らしく、ldconfigコマンドを実行する際のエラーのよう。そこでMakefileを確認してみると、インストール工程の最後にldconfigを実行している。

結果、こちらこちらのサイトを参考に、以下の設定を追加したら正常に動きました。

/etc/ld.so.confの修正

/etc/ld.so.confにpigpiodコマンドが格納されているパスを記入する

$ sudo vi /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/lib      #新しく追加

pigpioをデーモンとして動作させる

その後の工程として、こちらのサイトを参考にしながら、pigpioをデーモンとして動作させる設定を追加しました。

$ sudo vi /lib/systemd/system/pigpiod.service
[Unit]
Description=Daemon required to control GPIO pins via pigpio
[Service]
ExecStart=/usr/local/bin/pigpiod
ExecStop=/bin/systemctl kill pigpiod
Type=forking
[Install]
WantedBy=multi-user.target

その後デーモンの自動起動を設定し、起動すれば、、

$ sudo systemctl status pigpiod
● pigpiod.service - Daemon required to control GPIO pins via pigpio
   Loaded: loaded (/usr/lib/systemd/system/pigpiod.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 1970-01-01 09:00:07 JST; 50 years 4 months ago
  Process: 255 ExecStart=/usr/local/bin/pigpiod (code=exited, status=0/SUCCESS)
 Main PID: 257 (pigpiod)
   CGroup: /system.slice/pigpiod.service
           mq257 /usr/local/bin/pigpiod

Jan 01 09:00:07 localhost systemd[1]: Starting Daemon required to control GPIO pins via pigpio...
Jan 01 09:00:07 localhost systemd[1]: Started Daemon required to control GPIO pins via pigpio.

問題なく起動しました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1