この記事では、ubuntu20.04の入っているRaspberry Pi 4 Model BでWiring Piというライブラリを用いてGPIOを動かす方法を説明していきます。
使用機器、OSは次の通り。(タイトルの通りですが…)
- Raspberry Pi 4 Model B
- Ubuntu20.04
この環境が揃っていることが前提条件で話を進めていきます。
Wiring Piをインストール
UbuntuでGPIOを使用するためにWiring Piをインストールします。
公式サイトは以下。
http://wiringpi.com/download-and-install/
こちらのサイトの通りにターミナルに打ち込んでいきます。
とりあえず
sudo apt-get update && sudo apt-get upgrade
Wiring Piをインストールします。
sudo apt-get install wiringpi
インストールは完了ですが、こちらのバージョン(2.50)ではRaspberry Pi 3には対応していますが、Raspberry Pi 4には対応していません。
Raspberry Pi 4でWiring Piを使う場合、バージョンが2.52である必要があります。
そのため、Wiring Piをアップグレードします。そのためには、URLから直接ファイルをダウンロードする必要がありますので、そちらの方法についても説明していきます。
Wiring Piをラズパイ4用にアップグレード
こちらの方法も公式サイトに記載されています。
http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/
しかし、公式サイトの用にインストールを進めていくとアーキテクチャのエラーが発生します。(エラー文は以下)
dpkg: error processing archive wiringpi-latest.deb (--install):
package architecture (armhf) does not match system (arm64)
Errors were encountered while processing:
wiringpi-latest.deb
公式サイトで使用している dpkg というコマンドにはマルチアーキテクチャの機能があります。これのおかげで様々なアーキテクチャのシステムに同じソフトをインストールすることができます。
しかし、この機能を使って外来アーキテクチャのソフトを使うには「外来アーキテクチャを定義する」という作業が必要です。
今回の場合、アーキテクチャがarmhfであるパッケージ(Wiring Pi)はシステムのアーキテクチャ arm64と合致していないというエラーが出ているので、次のように外来アーキテクチャを定義します。
sudo dpkg --add-architecture armhf
また、インストール時に参照されるlibc6をインストールし、armhfで使えるようにする必要があります。そのため、次のコマンドを入力して下さい。
sudo apt-get install libc6
sudo apt-get install libc6:armhf libgcc1:armhf
これでインストールの準備はほぼ完了しました。
実際のインストールにはwgetというコマンドを使います。インストールしていない場合はしておきましょう。
sudo apt-get install wget
では、公式サイトに従って次のコマンドを実行
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
以上でインストールは完了です。
動作確認
バージョン2.52が入っているか確認しましょう。
gpio -v
次のように出力されれば問題ありません。
gpio version: 2.52
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Raspberry Pi Details:
Type: Pi 4B, Revision: 02, Memory: 4096MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 4 Model B Rev 1.2
* This Raspberry Pi supports user-level GPIO access.
次のコマンドでピンの割り当てを確認することができます。
gpio readall
次のように出力されれば問題ありません。

Lチカ
LチカはPythonプログラムで実現していきたいと思います。そのため、Pythonでwiringpiを使うためにwiringpiのライブラリをインストールします。
sudo pip install wiringpi
もしくは
sudo pip3 install wiringpi
LEDと抵抗を直列につなぎ、GNDをラズパイの6番ピン、プラス側を3番ピンへつなぎます。
適当にファイルを作り、次のコードをコピペして実行してみてください。
import wiringpi
import time
led_pin = 2
wiringpi.wiringPiSetupGpio()
wiringpi.pinMode( led_pin, 1 )
while True:
wiringpi.digitalWrite( led_pin, 1 )
time.sleep(0.5)
wiringpi.digitalWrite( led_pin, 0 )
time.sleep(0.5)
コピペ出来たら保存して実行
python3 <作ったフィアル名>
Lチカすると思います。
最後に
今回はUbuntu20.04の入ったラズパイ4でGPIOを使う方法について説明しました。
状況によってはこの説明の通りにやってもエラーが出ることもあるともいます。その時はぜひコメントを。
参考サイトは以下