このページでは、焦電型赤外線センサーをRaspberry Pi で利用する方法についての実験結果を紹介します。焦電型赤外線センサーを用いることで、人が動いた時に何らかの処理をさせることができるようになり、いろいろな場面での利用が期待できます。

※この記事は執筆・公開から3年以上経過しています。記事の情報が古くなっている場合がありますのでご注意ください。

公開日時:2016/05/22 07:55
最終更新:2019/12/10 13:11

人感センサー(焦電型赤外線センサー)

Raspberry Pi を取り扱ったページで比較的多いのはやはり赤外線リモコンのページなのですが、併せて多いのが人感センサー(焦電型赤外線センサー)のページです。焦電型赤外線センサーの原理は、分極されバランスがとれているセンサーの表面に赤外線が当たることで、温度上昇・下降に伴って電荷が移動することを利用しているそうです。

参考)人体検知器の製作

この焦電型赤外線センサーを使うことで、人体から発生する赤外線を計測し、人が動いたことを感知しようというのが一般的な人感センサーの仕組みのようです。

ただ、人体から発生する赤外線によって得られる電荷はとても僅かなので、それをそのまま測定するのではなく、オペアンプ等によって電圧の変化を増幅することで、その変化を検出しやすくする方法がとられています。

オペアンプについてはいろいろと原理紹介のページがあるのでそちらを見ていただくと良いと思いますが、2つの抵抗の比率で増幅率が決まる増幅回路、という、とても計算お手軽な回路です。

参考)オペアンプ(wikipedia)

回路図

焦電型赤外線センサーには、AKE-1(RE-210)を利用しました。これに併せて、人体検知器の製作のPDFにあるように赤外線の集光率を上げるためのフレネルレンズとしてS9013を使いました。

オペアンプはLM358Nです。オペアンプ2回路入りの汎用品で、オペアンプについて記述されているWEBページでは頻繁に目にする定番中の定番のようです。秋月電子では5個入りで100円となっています。

センサーの増幅回路ですが、これはRE-210のデータシートにある応用回路例を参考に、手元にある電子部品をできるだけ使って組みました。また、がた老AVR研究所さんのブログ記事やYouTubeの秋月焦電センサのテスト回路なども参考にさせていただいています。

データシートの応用回路例

データシートの応用回路例

弊社で実験した回路

実験回路

ブレッドボード

オペアンプ左側が非反転増幅回路で100倍、右側が反転増幅回路で100倍、合計約1万倍の増幅です。増幅率を変えていろいろやってみましたが、結局、データシートの応用例が一番検出が楽なようでした。センサーとしては電荷の移動が十分検知できればいいので結構アバウトでも大丈夫なようです。

回路図ではオペアンプが離れて記述してあるのでゆったり目に見えますが、LM358Nは2回路入りで、ICの左側1,2,3番ピンが回路図の左側のオペアンプ、5,6,7番ピンが回路図の右側のオペアンプとなり、ブレッドボードで組むとかなりごちゃごちゃします。ですので、短めのオス-オスのジャンパワイヤーがあると便利でしょう。

なお、4番はGND、8番はVccなのでRaspberry Pi の5Vに繋ぐことになります。LM358Nの最大定格電圧は±16Vのようで、3Vでも動作するという事ですから3.3Vでも5Vでも問題ないでしょうが、焦電型赤外線センサーを5Vで駆動させているためそれをそのまま利用しました。

参考)マイコン回路での入力信号増幅をオペアンプで行う方法

回路を組む上で、あと注意しなければいけないのは電解コンデンサを使っているので極性を間違えないことぐらいでしょうか。無極性のキャパシタ(コンデンサ)が使えればその方が初心者には安心かもしれませんね。

動作確認

実際の動作確認には、ブルーバックス社の「Raspberry Pi で学ぶ電子工作 超小型コンピュータで電子回路を制御する」のサンプルコード 06-01-print.py を移植したPHPコードを利用しています。動作確認だけであれば 06-01-print.py をそのまま使うだけで十分です。

因みに、この本はとても親切な編集になっているので初心者向けとしてとてもお勧めです。A/DコンバータのMCP3208についての紹介もあります。A/Dコンバータはいろいろな場面で利用できるので、ぜひとも常備したい部品の1つです。

上記回路の OUT をMCP3208の検査用のピンに繋ぐと、オペアンプで増幅された焦電型赤外線センサーの電位の変化が数値となってコンソールに出力されます。

がた老AVR研究所さんのブログ記事にもあるのですが、この焦電型赤外線センサーは、通電してから電荷が安定して赤外線を正常に検知できるようなるまでに40秒ほどかかります。

弊社の回路で06-01-print.py を使った場合、電荷が安定すると2500~3200程度の値を推移しますが、傍で人が動くと10程度まで突然数値が下がった後、12bit A/D コンバータであるMCP3208の最大値4095が検出されます。人感センサーとしては、この電圧の変化を測定することになります(ブログ記事にオシロスコープ画面があるのでそれを見ていただければ理解しやすいとおもいます)。

検出距離は意外に広く、10m位離れていても人が動くのをしっかりと感知してくれます。フレネルレンズの効果でしょうね。なお、赤外線を検知するので昼間と夜間では多少動作が変わります。ですから実際の運用ではCdSセルを併用して周りの明るさを検知し、昼と夜で検出のしきい値を変更したりするのも良いかもしれません。

余談ですが、傍でコーヒーを飲むとその湯気に反応したりもするようです。もっと面白いのは、ため息に反応することです。本当に疲れた時自然に出るため息には反応するのですが、それをまねしてワザとため息を吐いてみてもほとんど反応しません。自然に出るため息というのはかなりの赤外線を発するようです。

弊社ではセンサーからの数値のプログラムでの取り扱いを容易にするため、A/Dコンバータから読み取ったデジタル値を%に変換しています。人感センサーでは95%と60%にしきい値を設け、これよりも上あるいは下になる値に短時間(1秒以内)で連続して切り変った場合に、人が動いたとしています。

((float)value / 4095) × 100 = %

本当はニュートラルな値を50%付近に持ってきたかったのですが、オペアンプの調整が上手くいかず、増幅率を変えても大体70%半ばになってしまいました。何分、独学で電子回路の勉強を始めてまだ日が浅いため、既存回路に少しずつ手を加えて回路の意味を把握している状態ですので暖かい目で見ていただければと思います。人感センサーとしては上記回路でも十分な結果が得られましたので人感センサー回路の実験はこれで終わりにして連続運転で経過観察に移りますが、もう少しオペアンプの勉強をしたら50%に平常時を持ってこれるようになるかもしれません。

(2016/05/22 追記)

余談になりますが、この人感センサーの回路、ブレッドボードやジャンパワイヤ―まで含めると軽く1000円を超えてしまいます。一方、Raspberry Pi に対応した既成品は数百円で販売されています。例えばこれなどです。

当サイトで購入してテストした製品は ¥520 で(Amazonでは売り切れになってしまっていました)検出性能もとても良くできています。単純に人感センサーを導入したいだけであれば、こういった既成品を購入して Raspberry Pi に接続するほうが、ずっと安くてお手軽です。

そういう身も蓋もない話ではなく、自分で回路を組み上げるのが楽しいんだ! という方は、ぜひあなたの人感センサーを作ってみてください。それこそが、Raspberry Pi を使う最大の楽しみでもあるのではないでしょうか。

記事リンク