RaspberryPIの汎用IOをJavaで制御するには,Pi4Jというライブラリを使うことが一般的のようです.ここではインストールと初期設定について述べます.インストールする方法として,オンラインでインストールする方法と,インストールするパッケージをダウンロードしたのちにオフラインでインストールする方法があります.ここではその両方を説明します.


オンラインによるインストール

こちらのインストールでは,curlというコマンドを使います.これを使えば,指定したURLからダウンロードとインストールを続けて行ってくれます.具体的には下に示すようにコマンドラインに打ち込みます.

curl -s get.pi4j.com | sudo bash

Pi4J公式ホームページによれば,上記の方法で次のことができるそうです.

  1. ローカルのAPTレポジトリにPi4J APTレポジトリを追加します.
  2. 署名の確認のため,Pi4JのGPG公開鍵をダウンロードとインストールします.
  3. ローカルパッケージデータベースを更新するため,Pi4J APTレポジトリで"apt-get update"コマンドを実行します.
  4. ダウンロードとインストールを実現するために,"apt-get install pi4j"コマンドを実行します.

 この後,一般ユーザでもPi4Jを利用できるようにするための設定を行います.詳しくはこちらをご覧ください


オフラインによるインストール

  • ダウンロード

    RaspberryPiへのインストールにはdebファイルを用いることとします.このファイル(pi4j-1.2.deb)は,こちらからダウンロードできます.なお,2019年11月現在,安定版のバージョンは1.2です.

  • インストール

    インストールには,dpkgコマンドを使います.下記のようにしてインストールを行います.
    sudo dpkg -i pi4j-1.2.deb
  • 初期設定

    初期設定として,Pi4Jのパスを通しておく必要があります.先ほど行ったインストールにより,/opt/pi4j/libディレクトリの下にライブラリが入っています.そこで,この中に入っているライブラリをjavaの外部ライブラリにシンボリックリンクします.今回,jdk-8-oracle-arm-vfp-hfltを用いているため,外部ライブラリの位置は以下のようになります.
    /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/lib/ext
    ここにシンボリックリンクを張るには下のようになります.
    sudo ln -s /opt/pi4j/lib/pi4j-* /usr/lib/jvm/jdk-8-oracle-arm-vfp-hflt/jre/lib/ext/

    これで,コンパイル時にいちいちパスを通さなくてもよくなります.


一般ユーザによるPi4Jの利用

Pi4Jの内部ではWiringPIという低レベルなIO操作用ライブラリを利用しており,このライブラリが基本的にroot権限でしか動作しないようになっています.そこで,次に示す設定を行うことで一般ユーザでもPi4JによりIOの操作を行うことができます.

まず,/usr/binの下にあるeclipseを起動するためのスクリプトを変更します.そのために

sudo vi /usr/bin/eclipse

上記スクリプトを開きましたら,2行目に次のようにして環境変数を設定します.

export WIRINGPI_GPIOMEM=1

次にGPIOピンのデバイスファイルに対し,一般ユーザでも読み書きできる権限を追加します.

sudo chmod o+rw /dev/gpiomem