ラズパイ4×Ubuntu20.04でGPIOを動かす(Lチカまで)

この記事では、ubuntu20.04の入っているRaspberry Pi 4 Model BWiring 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を使う方法について説明しました。

状況によってはこの説明の通りにやってもエラーが出ることもあるともいます。その時はぜひコメントを。

参考サイトは以下

http://wiringpi.com/

https://packages.debian.org/ja/sid/libc6-dev

https://unix.stackexchange.com/questions/625576/how-to-run-32-bit-armhf-binaries-on-64-bit-arm64-debian-os-on-raspberry-pi

最新情報をチェックしよう!