7月から新しい職場に移り、個室になったのはありがたいんですが、電灯が独立していないので中に自分がいるかどうかが外からはわからなくなってしまいました。そこで、PIR(Passive Infra Red)センサー を使って在室表示灯を作ってみようと思います。

センサーの駆動には仕様書を読んでそれなりの特性を理解して、センサー単体だけではなくて周辺回路なんかも組んであげる必要があるはずですが、最近はセンサーと周辺回路を小さな基盤にまとめて、共通のインターフェースでつながるようにしているものがたくさん出てきました。Grove とか Xadow とかが手に入りやすいですね。Littlebitsも最近はこういう方向性も取り込みつつあるようです。まぁもともとのアイデアはArduinoのシールド なのかなぁと思うますが。

今回はGrove PIR Motion Sensorを使います。

これで赤外線で人の(自分の)動きを検知し、検知したという情報を扉の外に無線で飛ばします。無線にもいろいろな方法がありますが、Wi-Fiは消費電力が大きくて、今回のような1ビットの情報のやり取りに使うにはオーバースペックだし、Bluetoothもペアリングなどの設定が面倒だし、ということで、TWE-Lite DIP を使ってみることにしました。

TWE-Lite は2.4GHz帯無線を使って通信する機能がついたマイクロコンピューターで、消費電力が非常に小さく、またペアリングなどがないのでソフトウェアが単純にでき、日本でも技適を通っているので安心して使うことができます。デフォルトのファームウェアだけで、親機側でHighになったピンが自動的に子機側でもHighになる、という動作をするので、ソフトウェアを書く必要もありません。さらに、USBスティック型の子機もあるので、それを使えばデータをPCに取り込んでMQTTで配信するようなこともできそうです。

そこで早速作ってみた親機がこちら。

4本の線がGrove用の電源/信号線で、PIRセンサーモジュールにつながっています。ブレッドボード中央のチップがTWE-Lite DIPです。マッチ棒みたいなアンテナが標準でついています。 電源は千石電商で売っていたブレッドボード用5V/3.3V電源モジュールを使って、USBから3.3Vに落としてとっています。TWE-Liteの動作電圧は2.0V~3.6Vなので、5Vをかけないように注意しなくてはなりません。電源以外の配線は、PIRモジュールの信号線をDI1ピンにつないでいるのと、親機として動作させるためにM1ピンをGNDにつないでいるぐらいです。あとはアナログ入力を未結線にしておくと入力が不安定になるようなので、AI1-AI4をVCCにつないでおきます。この辺はTWE-Lite DIP使用方法(初級編)にある通りです。

そして子機側です。

子機側もGroveのLEDを使いたかったんですが、子機は扉の外に置くので、周囲に電源を取れる場所がなく、Eneloopを2本直列にして動かしています。これだと2.6Vぐらいしか出ないので、残念ながら電圧不足なのか、GroveのLEDモジュールは光りませんでした。そのため、適当に手元にあったLEDと抵抗をつないで出力としています。

LEDはアノード側をTWE-Lite DIPのDO1ピンにつなぎ、カソード側を抵抗経由でGNDに落としています。 その他、TWE-Liteを間欠受信1秒モードに設定するため、M1とM3ピンをGNDにつないでいます。他は親機と同じでAI1-AI4をVCCにつないでいるぐらいです。

これだけで、PIRセンサーの検知状況によってLEDが点灯する在室表示灯ができました。 間欠受信1秒モードを使って電力を節約するため、TWE-Lite DIPのファームウェアの最新版へのアップデートはしましたが、他は特にプログラミングなしでできたので、十分お手軽といえるでしょう。

今後はPIRセンサーと他のセンサーも併用して検出の精度を上げていくことと、TocoStickを使ってデータをPCに取り込む、といったことをやってみようかなと思います。