ラズパイで感圧センサを使って貯金額を計ってみた。

感圧センサを使って圧力のDN値を読み取る記事を見つけたので、早速同じことをしてみました。

ブレッドボードと飛び線は以前購入したものがあるので以下の3点をネットで購入しました。

  1. 感圧センサ四角形(SFE-SEN-09376)
  2. 10ビット2ch ADコンバータ(MCP3002-I/P)
  3. カーボン抵抗(炭素皮膜抵抗)1/4 10kΩ

   感圧センサと飛び線はハンダ付けしましたが、それ以外は差し込むだけです。 img_1438

スクリプトはWiringPiというモジュールを使ってみました。(インストール方法はググってみてください。)

何も押さないでも5くらいの数値が出ています。感圧センサを指で軽く押すと数値が一気に大きくなります。(500とか600くらい)

scrot

思いっきり強く押すと1000くらいにはなりますが、それ以上どう頑張っても数値はほとんど変わりません。

一通り試して、まぁこんなものか…。ということで作業を終えようとしたのですが、「何かに使えないものかなぁ」とあれこれ考えた結果、貯金箱の貯金額を表示させてみるのはどうかな?と思ったのでちょっと試してみました。

前提として圧力(=重さ)から金額を求めるので、五百円玉貯金に絞り込みます。(他の種類の硬貨が混ざると正確に計算できなくなる。)

まずは、五百円玉の数と圧力のDN値の関係を求めるためにエクセルでグラフを作成します。
センサの上に五百円玉を単純に重ねてDN値を読み取ります。

img_1439

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-08-13-05-17

上のグラフは五百円玉1〜20枚までの相関図です。もちろん枚数が多くなると値は大きくなるのですが非線形です。グラフの上をクリックし「近似曲線の追加…」を選択します。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-08-13-04-33

種類は多項式近似を選び、次数を3にします。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-08-13-04-48

オプションで「グラフに数式を表示する」のチェックを入れます。すると数式が表示された近似曲線がグラフに追加されます。

graph2

近似曲線の方程式は、y=-0.2095x^3+7.3427x^2-31.801x+36.037 でした。

この式でyが分かった時のxの値が五百円玉の数になります。式の解を求めるために、sympyというモジュールをラズパイにインストールします。

インストールは以上です。

そして以下のPythonスクリプトを実行します。

上のスクリプトの24行目でans[1]としてリストから2番目の要素を抽出しているのは、3次式の解が3つリスト形式でsympiから出力されるからです。その中で2番目の要素が実際の硬貨の枚数に近いので、そうしています。

すると以下のように感圧センサの上に載っている五百円玉の合計金額が1秒間隔で更新されて表示されます。

scrot2

一応それらしく表示されてはいますが、結構誤差があります。実際には20枚置いているので10000yenと表示されるべきなのですが…。(;^ω^)
それから、一枚も置いてなくてもデフォルトで1500円からスタートします。これは3枚くらい五百円玉を置いてもDN値が5程度で変わらないからです。

というわけで、センサーの精度にも問題があるためあまり正確ではないですが、何となく金額が分かれば良いではないですか!ネットを使えば遠隔地からでも現在の貯金額が分かりますし、もし盗まれたら警報を鳴らすことだってできます。

今日のところはこの辺で。🍧

スポンサーリンク
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です