圧力センサーFSR402をRaspberryPi上のJAVAで制御する

ロボットの足の裏につける圧力センサーのデータを取得しようと、やってみた。データは取れているようなので、ここで記録のために書いておく。(ほんと、年取ると、やったことをすぐ忘れるので、このサイトに書いておかないと、継続性が全く確保できなくなる ^^;)

なず、ディープラーニングのAICOROがJAVAで高速で動くので、RASPVERRYPIのシリアルコントローラもJAVAにしたいと思っていたら、pi4jというプロジェクトがあって、そこにライブラリがあるので、それを使うことにした。

その前に、大事な、大事な配線である。
まず、
http://www.eleki-jack.com/FC/2011/10/arduinofsr2.html
の図を少し使わせていただく。

昨日作った、FSR402とADコンバーターMCP3208とを中継するデバイスは、上記の図のように接続する。(そういえば、電源3.3Vにつないでいたけど、ちょっとまずかったかな、5Vに変えてみよう)
電源とGNDは、特に問題ないと思う。出力電圧V0の線を、MCP3208のCH0に接続する。
図の1番ピンである。気持ちとしては、足の裏に合計8つの圧力センサーを貼るつもりだから、この8つのチャンネルを全て使えば良いと思っている(ただ、その辺りは誤解かもしれない)

16ピンVDDと15ピンVREFは、電源の3.3Vにつなぐ。仕様書によれば、5.5VまでOKだ。
14ピンと9ピンはアースする。
CLKは、RASPBERRYPIのSCLKにつなぐ。
DOUTは、RASPBERRYPIのMISOピンにつなぐ。
DINは、RASPBERRYPIのMOSIピンにつなぐ。
10ピンCSは、RASPBERRYPIのCE0につなぐ。CE1でもいいはずだがプログラムの変更が必要。

次にプログラムである。JAVAで動かすのだが、まず、
http://pi4j.com/
から、SPIコントロール用の、ライブラリを取ってこなければならない。ダウンロードのページから、

を取ってくる。pi4j-1.1という正式リリース版があるのだが、こちらは、RaspberryPIの最新カーネルに対応していなくてエラーになる。フォーラムで同じ問題にぶつかった人の応答でそのことがわかった。

それを解凍して、そのライブラリをNetbeansのライブラリに付け加える。そうすれば、ライブラリが使えるようになる。Netbeansを使わないやり方は、知らない。JAVAはもう何年もNetbeansでしかプログラミングしていないので(笑)

先に解凍した中に、examplesというフォルダがあって、なんとその中に、
MCP3208GpioExampleNonMonitored.java
というMCP3208を制御できるサンプルがあるではないか!!!!

これはそのまま使えます!!

というわけでできました。データを取っている動画は以下のようです。