はじめに
WiringPiは自営ICTコンサルタントのG.Henderson氏によって作成されたRaspberry Pi用のGPIO インタフェースライブラリで、GNU LGPLv3 というフリーソフトウェアライセンスとして公開されています。フリーソフトウェアラインセスとは、無料で使用できますが不具合が発生した場合は(基本的に)ユーザーの自己責任となるのですが、G.Henderson氏への問合せのemailがあまりに多く、本業に支障を来したためWiringPiのバージョン2.52で公開を停止する旨がWiringPiのWebページにポストされました。なお、2023年3月30日時点ではそのポストは削除されています。WiringPi2.52はBullseyeの32bitOSでは動作するのですが、64bitOSではインストール時にエラーが発生して使用できません。
その後、contributorsによってGitHubにWiringPiのUnofficial Mirror/Forkサイトが立ち上がり、G.Henderson氏のWiringPiの開発を継承する主旨が明記されています。UnofficialとしているのはG.Henderson氏個人に迷惑をかけいない配慮にも思えます。(contributorsの中にG.Henderson氏の名前があります。)また、Discordチャットアプリを使用してWiringPiのコミュニティが形成されて、意見や相談の受け皿になっています。
https://github.com/WiringPi/WiringPi
今回、WiringPi2.70を64bit版OS Bullseyeにインストールして、取り敢えずLチカで動作確認できたので報告します。32bit版のOSでも同じ手続きで動作確認できました。
使用したもの
・Raspberry Pi 4B
・Raspberry Pi OS(Bullseye) 32bitまたは64bit リリース2023-02-21
・microSDカード 容量16~64GB、Class10。
・microSDカードリーダー
・Lチカ用電子部品一式
ImagerでSDカードにOSをセットアップする方法は下記を参照してください。記事は1年以上が経過していますが操作方法は同じで、メニューからBullseye OSを選択してください。
https://qiita.com/tamamori/items/da96cc3352159be12423
WiringPiのインストールの方法
LXTerminal(ターミナル)を起動して、GitHubからダウンロードしてインストールします。あらかじめ、Raspberry Piをインターネットに接続して、リソースをダウンロードできるようにします。
//GitHubからダウンロードします。
$ git clone https://github.com/WiringPi/WiringPi.git
//WiringPiのディレクトリが作成されたことを確認します。
$ dir
Bookshelf MyApp ダウンロード ドキュメント 音楽 公開
Desktop WiringPi テンプレート ビデオ 画像
//作成されたWiringPiのディレクトリに移動。WiringPiのWが小文字のときがありました。
$ cd WiringPi
//ソースコードをビルドします。途中ワーニングが数カ所表示されますが、All Doneになります。
$ ./build
//バージョンを確認します。
$ gpio -v
gpio version: 2.70
アンインストールの方法
WiringPiをアンインストールする場合は次の手順です。
$ cd WiringPi
$ ./build uninstall
Lチカの回路図
ブレッドボード等に下記のLチカの回路を組み立てます[1]。ここではGPIO23を使用します。
Lチカのソースコード
ホームディレクトリに適当なディレクトリを作成して移動し、Lチカのソースコードを作成して保存します[1]。
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#define LED0 23
int main (void){
wiringPiSetupGpio();
pinMode(LED0, OUTPUT);
for(;;){
digitalWrite(LED0,HIGH);
delay(500);
digitalWrite(LED0, LOW);
delay(500);
}
return EXIT_SUCCESS;
}
コンパイルと実行
$ gcc -Wall -o List4-1_Led01 List4-1_Led01.c -lwiringPi -O0
$ ./List4-1_Led01
//実行の終了はctrlとCを同時に押します。
おわりに
今回はLチカしか確認していませんが、不明があればWiringPiのDiscordチャンネルをご利用ください。
For support, comments, questions, etc please join the WiringPi Discord channel: https://discord.gg/SM4WUVG
補足:旧OS BusterにWiringPi 2.70をインストールする場合
Bullseyeの一つ前のバージョンであるBusterにも、WiringPi2.70をインストールできます。BusterにはあらかじめWiringPi2.50が含まれていることがあるので、古いWiringPiをアンインストールする必要があります。なお、WiringPiがインストールされているかどうか確認する方法は、ターミナルから「$ gpio -v」と入力して、WiringPiのバージョンが表示されたらインストールされています。また、gpioコマンドが無効の表示ならインストールされていません。下記の手続きで、古いWiringPiをアンインストールしてから、WiringPi2.70をGitHubからダウンロードしてインストールしてください[2]。
//purgeコマンドは、パッケージとそのパッケージの環境設定をすべて削除
$ sudo apt purge wiringpi -y
//ハッシュテーブルに記憶しているパス情報を消去
$ hash -r
Reference
[1] 菊池達也,"C言語ではじめるRaspberry Pi徹底入門",技術評論社,pp.68-72,(Apr.2020)
[2] Download and Install,http://wiringpi.com/download-and-install/