対象読者
IoTに興味があり、電子工作とJavaScriptの基本的な知識がある方を対象とします。電子工作のごく初歩的な説明は割愛しているので、「ラズベリーパイをつかったセンサープログラミング超入門」の記事なども併せて参照してください。
はじめに
前回の連載「Tessel 2ではじめるお手軽IoT」では、ワンボードマイコンTessel 2に、専用の気候センサーモジュールやUSBカメラを接続する方法を紹介しました。この連載では、そのような専用のハードウェアモジュールではなく、ブレッドボードと呼ばれる基板を使ってTessel 2にセンサーを接続してみます。今回は、人感センサーとスピーカーの接続です。
人感センサー
人感センサーとは、赤外線や超音波などを利用して人間の存在を検知するためのセンサーです。人が近づいたらしばらくのあいだ点灯する電灯や、手を近づけると水が出る蛇口などで使われています。
焦電型赤外線センサー
今回は、以下の画像のような赤外線を検知するタイプの人感センサーモジュールを利用しました。Amazonなどで非常に安価に入手できるものです。
このモジュールは、赤外線を検知する焦電型赤外線センサーと周辺回路が組み込まれたものです。赤外線を物体に放射すると起電力が発生する、焦電効果を利用したセンサーのため、焦電型赤外線センサーと呼ばれています。
今回接続するものはモジュールタイプで、電源を用意するだけで他のパーツを接続することなく、単なるスイッチと同様に利用できます。
赤外線センサーモジュールの使い方
今回利用する赤外線センサーモジュールには3つの端子があります。2つは電源用の入力端子で、残りがセンサーの出力端子になっています。入力電源は4~6V程度の直流電源です。出力端子は通常は0Vとなっていて、人を検知すると3.3Vを出力します。したがってそのままTessel 2のピンに接続するだけで、人を検知することができます。また、このセンサーモジュールには、抵抗値を調整できる2つの半固定抵抗があります。1つは人を感知する距離の調整で、もう1つは、検知した後に出力をどの程度の時間保持するかの調整を行います。
電源として入力する電圧ですが、このセンサーモジュールだとTessel 2の3.3Vの出力では足りないようで、うまく動作しませんでした。センサーモジュール内部の回路は3.3Vで動作しているものの、広い電圧に対応するために3端子レギュレータと呼ばれるパーツが組み込まれていることが原因のようです。
3端子レギュレータとは、入力した電圧を変換して一定の電圧に整える電子部品です。今回のセンサーモジュールでは、この3端子レギュレータを使って3.3Vに変換しています。3端子レギュレータでは電圧を増幅するわけではないため、3.3V以上でないと正常に3.3Vに変換できません。
5Vの電源を取り出す
Tessel 2の3.3Vの出力を利用する場合は、赤外線センサーモジュール自体を少し改造して、モジュール内の3端子レギュレータをバイパスする必要がありそうです。ただ、今回は別の方法で対処することにしました。実はTessel 2から5Vの電源を取り出す方法があるのです。赤外線センサーモジュール以外にも利用できるため、この電源を活用することにしました。
Tessel 2の基板を見ればわかる通り、USBの入力端子の近くに5Vの入出力パターン(ホール)が用意されています。これはTessel 2自体の電源として、USBの代わりに入力するための端子とその電源をそのまま出力できる端子です。
ただし、これを利用するにはTessel 2にピンヘッダなどをハンダ付けする必要があります。ピンヘッダとは次のような形をしたピン状のもので、基板上に端子を設ける場合に使われる部品です。
ピンヘッダをTessel 2にハンダ付けすると、次のようになります。
接続
回路はとてもシンプルです。赤外線センサーモジュールのGNDとVCC端子に、Tessel 2にハンダ付けしたピンヘッダを介して5Vの電源を接続します。そして、センサーのOUT端子をGPIOの2番ピンに入力するだけです。
入力を参照する
センサーの動作を確認するコードを書いてみましょう。最初にt2 initコマンドでひな形を作成しておきます。そして作成されたindex.jsを以下の通りに書き換えます。
const tessel = require('tessel'); const pin = tessel.port.A.pin[2]; // ポートAの2番ピンのオブジェクト // ピンの入力電圧の上げ下げでコールバックが実行される pin.on('change', function(v) { console.log(v); });
このサンプルはセンサーが人を検知してOUT端子に3.3Vが出力された場合に、コンソールに出力するコードです。ピンオブジェクトのonメソッドで、センサーの出力を割り込みイベントとして登録しています。人を検知すると1が出力され、しばらくすると0が出力されます。