3. micro:bitとAzure Face APIで作る「入室管理システム」

こんにちは、遠藤です。
コピペテックマガジン第5回目は、第4回に引き続いてBBC micro:bitを使った電子工作です。

今回は、micro:bitと焦電赤外線センサー(人感センサー) EKMC1601111を繋いで、オフィスや家に入ってきた人をお知らせするシステムを作ってみたいと思います。
システムの全体像はこんな感じになります。


動作についてはまず、動画を見てみてください。

これは弊社のオフィスの入り口ですが、人が入室すると焦電赤外線センサーが検知してmicro:bitでそれを受け、micro:bitからPC (Surface)に対してBluetooth経由で人が来たことを通知します。

焦電赤外線センサーは、周辺と人や動物などが動く際に発する赤外線のゆらぎを検出するセンサーで、EKMC1601111は、データシートによると5mの距離、垂直方向に82度、水平方向に94度の指向性で人の動きを検出可能です。また、EKMC1601111は集光レンズと信号増幅機も含めたセンサーモジュールとなっており、直接micro:bitの端子につなぎデジタル入力として値を読み取ることができます。

micro:bitは、人が来たことを検知するとBluetoothサービスを利用して、Bluetooth接続したPCのブラウザに対してUARTメッセージを通知します。Bluetooth接続は、ブラウザで利用できるWeb Bluetoothという仕様を利用しますが、この記事を公開している現在ではPC版のChromeとAndroidのChromeのみ対応していています。記事ではPC版のChromeを利用します。

Chromeが、micro:bitから人を検出したメッセージを受けつけるとPCのカメラで写真を撮ります。

撮った写真をサーバーに送信し、サーバー側でMicrosoft AzureのFace APIを呼び出し写真に写った人物を識別します。サーバー側のプログラムはPythonで動かします。

Face APIの結果を受けて、すでに登録されている人であった場合は名前をSlackに通知し、未登録だった場合は、写真と名前を登録するフォーム付きのメッセージをSlackに通知します。
名前の登録はSlackのチームメンバーから選択できるようにしています。メンバーを選択するとFace APIに新しい人物が登録され、次に入出したときに名前が通知できるようになります。

Slackでメンバーを選択した際にSlackからWebアプリが呼び出されますが、このときWebアプリはインターネットからアクセスできるようにする必要があります。
インターネットからアクセスできるように(トンネル)するためにngrokというサービスを利用します。

このように今回もmicro:bitは使いますが、電子工作部分はほんの一部で、人物を検出した後は、クラウドサービスとWebアプリを連携した作り込みといったソフトウェアがメインの内容になっています。

準備するもの

電子工作用買い物リスト

今回の電子工作に使用する部材は以下のとおりです。
  • USBケーブル
  • ミノムシ(ワニ)口クリップ付きジャンパワイヤー x 3 (秋月電子通商)

電子パーツについては、秋月電子通商のECサイトのリンクをつけてありますので、電子パーツを買え
るお店が近くにない場合はこちらから購入してください。

その他、準備が必要なもの

  • • カメラ付きPC Windows または Mac

この記事ではWindows 10をベースに説明しています。