Raspberry Pi + Processing (+pi4j) 〜OpenECHOの下準備〜
Raspberry PiでOpenECHOを動作させる前準備として、Raspberry PiへのProcessingのインストールにチャレンジ。といっても、今回も基本的に先駆者の後を追うだけなのですが。
こちらを参考に、と思ったら、さらにこちらも参考にされているところがあったので、以下、下記を参照しながら進めることにする。
Processing and GPIOs on Raspberry Pi
基本的には書いているとおりに進めるだけなのだけれど、違ったのは以下の箇所。
・手順通りにJDK8をインストールしたつもりでjava -versionをチェックしたら、なぜか1.8.0ではなく1.7.0_40が入っていた。でも動作には問題なし。
・echo export PATH=$PATH:$JAVA_HOME/bin >> .bashrcで、なぜかPATHに/opt/java/jdk1.8.0/binが入ってくれなかったので、$JAVA_HOMEをベタ書きで対処。
・Processingのソースのパスが古かったので、新しいところからインストール。これで正しく動作する。
wget https://processing.googlecode.com/files/processing-2.1.1-linux32.tgz
あとは記載の手順どおりで、同じページに記載されているサンプルプログラムをProcessingで動かしてみると…GPIOのアクセス権限云々でエラーになる。
wiringPiSetup: Unable to open /dev/mem: 許可がありません Unable to change ownership of /sys/class/gpio/gpio27/value: 許可されていない操作です Unable to change ownership of /sys/class/gpio/gpio27/edge: 許可されていない操作です
どうやら、Raspberry Piでは仮想ファイルにアクセスすることでGPIOを制御するとのことなので、スーパーユーザ権限が必要なよう。
ということで、sudo suでスーパーユーザになってProcessingを起動し、サンプルプログラムを実行すると…今度はpi4jのライブラリがないと怒られる。どうやら、Processingでは、プログラムの実行ユーザの持つsketchbookディレクトリの中のlibrariesを参照する模様。ということで、サンプルプログラムのディレクトリとpi4jライブラリのディレクトリを、それぞれ/root/sketchbookと/root/sketchbook/librariesにコピーして、再度スーパーユーザで実行すると、ようやく起動成功。
サンプルプログラムの回路の実装。
Processingの画面。タクトスイッチを押すと、ランダムで円が現れる。
とりあえずはこれでOK…ではあるのだけれど、いちいちスーパーユーザになったりrootフォルダに放り込むのは面倒なので、できればノーマルユーザのままで実行できるようにしたい。ということで、WiringPiをインストール。インストール方法はこのあたりを参照のこと。これにくっついてくるgpioユーティリティを使えば、スーパーユーザにならずにGPIOを制御できるらしい。
今回のサンプルで使用したGPIOの番号はWiringPiでの2番、すなわちGPIO27なので、Processingの実行前にコマンドラインで以下を実行。
$ gpio -g mode 27 in $ gpio export 27 in
ls -l /sys/class/gpio/gpio27/ でチェックすると、確かにedgeとvalueのファイルオーナーがrootからpiに変わっていたので、これでいけるかな…と思いきや、確かにGPIO27について怒られることはなくなったものの、まだ
wiringPiSetup: Unable to open /dev/mem: 許可がありません
のエラーが残る。うーん、もう少し原因を突き詰めた方が良い気もするけれど、一旦はここまで。とりあえず、スーパーユーザでまかなう。
ディスカッション
ピンバック & トラックバック一覧
[…] 前回、無事にRaspberry PiでのProcessing起動と、JavaでのGPIO制御ができるようになったので、あとはOpenECHO for Processingのライブラリを突っ込んでやるだけ。ライブラリはここからmasterのzipをと […]