IoT何をいまさら(36) PIRセンサからメッセージ

三角測量式距離センサレーザ使ったTOFセンサ24GHzの無線使ったドップラーセンサなど、「人感」にも使える各種センサを動かしてみました。今回は人感サンサとしては定番中の定番の焦電センサ(PIRセンサ)を使ってみます。しかし今回手元にあるのは、デジタル出力で在、不在を知らせるのみの単純なもの。あんまりなので、PIRセンサ、ラズパイ、IFTTT、Facebook Messengerという経路で、PIRセンサの検出をメッセージとしてスマホに報告するという形にしてみました。

まずは、焦電センサ(PIRセンサ)の写真から。

ニッセラ(日本セラミック)製のセンサです。検知距離2m、長手方向130度、横手方向101度という広い範囲内を毎秒1mの速さで人間が動いていると検知できるセンサであります。

写真の取り付けコネクタに来ている配線を見れば想像がつく通り、電源、グラウンドと検出を示すための信号線というシンプルなインタフェースです。電源は、5~3V対応、信号は、ロウ・アクティブです。ぶっちゃけ、大抵のマイコンのGPIOに直結すれば、動作する筈。

注意と言えば、直射日光とか、ヒーターとか熱外乱と、起動に時間がかかることくらい(電源投入後、安定するまで60秒という規格)。とりあえずこの手の焦電センサを取り付ければ、誰かいるのか簡単に検出できるので広く使われていることはご存知のとおり。

このセンサを今回は、マイコンではなく、Raspberry PiのGPIOに接続します。Raspberry PiのGPIO端子を端から数えるのが面倒なので、今回も(部品をほとんど搭載していない)ラズパイマガジン付録基板を流用させていただきました。

 

実際に制御するのはPythonでお手軽に。手順は簡単。

  1. pigpioをインポート
  2. PIRセンサの信号端子に接続している端子をINPUTに設定。今回使用のPIRセンサはオープンドレインですが内部に弱い(47k)プルアップがついているようなので、Raspberry Pi側はとりあえずプルアップ無設定。
  3. PIRの信号を監視。0なら検出ですが、誤検出を防ぐため、timerつかって0.5秒おきにチェックして5回とか連続検出したらトリガを引くようにいたしました。

なお、私はやってしまいましたが、pigpio使う前に、デーモンであるpigpiodを起動させておかないとなりません(デーモンを起動させずにpigpio使うと、デーモン起動しろメッセージがでるので誰でも気づきますが)。さてトリガに戻ります。トリガは、あるURLに対してPOSTしているだけなのですが、そのPOSTの先はネットワーク上のIFTTTです。さまざまなWebサービスを

IF なになにがxxしたら THEN こうしろ

と連携させることができるサービスです。使っている方も多いと思いますが、もしまだ使われていないようであれば、一度チェックしておいても無駄ではないサービスじゃないかと思います。これについて日本語で書かれている方も多数。詳細はそちらをご参照ください。ただ、私の場合、結構トラブリましたね。Google Home Miniに語り掛けた言葉をメールにしてGmail送信、というようなものから利用しようとしたのです。ちゃんとHome Miniは言葉理解してトリガかけているのに、GmailのところであえなくFailします。調べたら、Gmailがうまく使えないケース(アカウント)があり、私の場合はそれのようでした。それでメッセージの送り先を Facebook Messengerに変更しております。なお、Facebookで個人のFacebookのタイムラインにIFTTTから投稿するのは、いつの頃からか不可になっているようです(企業向けなどのFacebook ページにはIFTTTから投稿できるみたいです)。いろいろセキュリティ上の問題などあってFacebookが厳しくしたためのようですが、悪い人たちのためにどんどん不便になる、やな世の中です。

IFTTTの設定ですが、まずRaspberry Piからのトリガを受け止めるために

Webhooks 

というIFTTT内のサービスを設定しました。ここで設定されたURL(サービス設定ページのDocumentのページで確認できます)にPOSTするとIFの方の条件が成り立ち、POSTしたデータなどを含めたものをTHEN側のサービスにIFTTTが繋いでくれます。今回は、Raspberry Pi上で動作しているPythonのスクリプトが検出したPIRがアクティブという情報を、Webhookに投げつけ(たかだか3行のコードですが)ます。

するとFacebookメッセンジャーにメッセージが到着し、音がピロンとなって気付くというわけです。

こんな感じであります。どんなメッセージを送信するかはIFTTT側で設定できるので、ローカルネットワーク内のアクティビティをスマホなどにプッシュ送信するという目的には使えそうです。

IoT何をいまさら(35) Raspberry Pi、Microphone へ戻る

IoT何をいまさら(37) ラズパイに3角測量センサ接続 へ進む