はじめに
”WiringPi”は、ラズパイのGPIOを制御するためのC言語ライブラリである。
このGPIOは、仮想ファイルへ割り当てられているため、シェルを使えば
$sudo echo 1 > /sys/class/gpio/gpio18/value
と、上記のようにechoコマンドを使って設定することができる。
Lチカや製作した回路の動作確認程度であれば、これだけで済むが、GPIOをフルに使用するとなると、それなりのAPIを使用したプログラムが必要となる。
そこで、本章では、ラズパイのGPIOを制御するためのC言語ライブラリ”WiringPi”をインストールする手順を示す。
ただし、本章は本サイトに別途記載のDebianパソコンとラズパイのクロスプラットフォーム開発を想定しているため、下記手順はDebianパソコンでの操作である。
ライブラリの準備
I2Cライブラリのインストール
これから開発するプログラムにてI2C通信を行いたい場合は、下記コマンドを実行して、I2Cライブラリをインストールすること。
$> sudo aptitude install libi2c-dev
WiringPiのインストール
「Wiring Pi」は、GitHubにて提供されていることから、gitコマンドが使えるよう、下記コマンドを実行する。
$> apt-get -y install git
すると、gitコマンドが使えるようになるので、下記の内容にて実行する。(事前に、”apt-get update”しておくこと)
$> git clone git://git.drogon.net/wiringPi Cloning into 'wiringPi'... remote: Counting objects: 1177, done. remote: Compressing objects: 100% (980/980), done. remote: Total 1177 (delta 822), reused 212 (delta 142) Receiving objects: 100% (1177/1177), 369.45 KiB | 251.00 KiB/s, done. Resolving deltas: 100% (822/822), done. Checking connectivity... done. $>
実行が完了すると、カレントディレクトリに、”wiringPi”ディレクトリが生成され、ソースコードが取得されているので、下記手順にてビルド及びインストールする。
$cd wiringPi/ $./build ..... All Done. NOTE: To compile programs with wiringPi, you need to add: -lwiringPi to your compile line(s) To use the Gertboard, MaxDetect, etc. code (the devLib), you need to also add: -lwiringPiDev to your compile line(s).
インストールが成功したかを確認するため、下記コマンドを実行してバージョンを確認する。
$gpio -v gpio version: 2.46 Copyright (c) 2012-2018 Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY. For details type: gpio -warranty Oops: Unable to determine board revision from /proc/cpuinfo -> No "Hardware" line -> You'd best google the error to find out why.
補足)gpioコマンドを使ってGPIO入出力制御
バージョン確認で使用した”gpio”コマンドは、”echo”コマンド同様、シェルでGPIOを制御することができる。
GPIO制御プログラムを作成する前に、制御対象のハードウェアをGPIOに接続して、動作確認に使用するという使い道もあり、便利です。(ポート指定などで、こちらのほうがわかりやすいと思われます)
実行例) $gpio -g mode 25 out ・・・GPIO25番ポートを出力に設定 $gpio -g write 25 1 ・・・同ポートに”High”を出力 $gpio -g write 25 0 ・・・同ポートに”Low”を出力
C言語プログラムでのWiringPiの利用
C言語からWiringPi APIを利用するならば、ソースコードにWiringPiのヘッダファイルを指定し、WiringPiAPIを使用したプログラムを記述後、コンパイル時に、リンカオプションで”-lwiringPi”を追加する。
実行例) $gcc -o test test.c -lwiringPi $sudo ./test
参考)test.c #include <wiringPi.h> #define PORTNUM 25 int main(void) { if(wiringPiSetupGpio() == -1) { return 1; } pinMode(PORTNUM, OUTPUT); digitalWrite(PORTNUM, 1); delay(1000); digitalWrite(PORTNUM, 0); }
なお、ビルドおよび実行はラズパイ内で実施してください。
あとは、いろんなプログラムを書いて、”WiringPi”APIを使いこなしてください。