今回は、圧力センサー(FSR406)を使ってRaspbeeryPiで値を取得してみたいと思います。
必要なもの
・RaspberryPi B+
・圧力センサーFSR406(秋月で600円で購入)
・ADコンバータMCP3002(ラズパイにはデジタル入力しかないのでMCP3002を使って変換)
・ブレッドボード・ジャンパワイヤー他(適当にあるものを使って)
回路はここを参考に下記のように組み立て
まず、RaspberryPiのSPI driverを有効にします。
RaspbeeryPiの/boot/config.txtを編集するか、raspi-configで設定する。
/boot/config.txt # Uncomment some or all of these to enable the optional hardware interfaces #dtparam=i2c_arm=on #dtparam=i2s=on #dtparam=spi=on dtparam=spi=on
#dtparam=spi=onのコメントを外すか、追記。
再起動
$ sudo reboot
Pythonでspi deviceを扱うモジュールをインストール
$ git clone git://github.com/doceme/py-spidev $ cd py-spidev $ sudo python setup.py install
下記ソースを保存
#!/usr/bin/env python import spidev import time import subprocess #spiデバイスオープン spi = spidev.SpiDev() spi.open(0, 0) try: while True: res = spi.xfer2([0x68, 0x00]) value = (res[0] * 256 + res[1]) & 0x3ff print value time.sleep(1) #sleep 1sec except KeyboardInterrupt: spi.close()
sudoをつけて実行。
$ sudo python <プログラム名>.py
こんな感じに、触っていない時は0に近い値で、センサーを触ると値が大きくなります。
センサーの値はどうも触っている面積によって変化する模様。なので、センサーを指で押すのと手のひら全体で押すのではどれだけ指に力を入れても手のひら全体で押している方が値が大きくなるようです。といっても、力を入れて押すとセンサーの押されている面積が大きくなるのでほぼ同じ値が出ますけどね(笑)