Raspberry Piで圧力センサーを使う


今回は、圧力センサー(FSR406)を使ってRaspbeeryPiで値を取得してみたいと思います。

IMG_0425

圧力センサーFSR406

必要なもの
・RaspberryPi B+
・圧力センサーFSR406(秋月で600円で購入)
・ADコンバータMCP3002(ラズパイにはデジタル入力しかないのでMCP3002を使って変換)
・ブレッドボード・ジャンパワイヤー他(適当にあるものを使って)

スポンサード・リンク

 

回路はここを参考に下記のように組み立て
Untitled

まず、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

IMG_0426  IMG_0427
こんな感じに、触っていない時は0に近い値で、センサーを触ると値が大きくなります。
センサーの値はどうも触っている面積によって変化する模様。なので、センサーを指で押すのと手のひら全体で押すのではどれだけ指に力を入れても手のひら全体で押している方が値が大きくなるようです。といっても、力を入れて押すとセンサーの押されている面積が大きくなるのでほぼ同じ値が出ますけどね(笑)