本記事は、2018年5月に別の場所へ書いた記事の転載です
概要
子供のランドセルとかに付けた BLE (Bluetooth Low Energy)タグのIDをモニタリング、家から出発したり家に帰ってきたことを検知してLINEに通知してくれる見守りセンサを作ってみました。
見守りセンサの中身は、数百円で入手できてしまうWi-FiとBluetoothが一体になった小型モジュール ESP32 (ESP-WROOM-32)です。前回のESP8266と同様、技適取得済みで安心、入手も容易です。
BLEタグの方は、mamorio などの紛失防止タグをそのまま使います。要は、BLEのadvertisingパケットを出し続けてくれていればなんでもOKです。
実装
苦労したポイントだけをザックリまとめておくと、、、
- ESP32上でWi-FiとBluetoothを同時に使うときのメモリ不足
---> Arduino IDEのビルドオプション変更で解決 (詳しくは「参考」を参照) - ESP32上で無線LANとBluetoothを同時に使うときの電源容量不足
---> 電源回路用のレギュレータを高性能なものにして解決 (ADP3338) - 1台のESP32だけでは、BLEタグを検知できる範囲が狭い
---> 複数台の検知結果をクラウド側で統合して解決(※)
(※) 見守りセンサのESP32は、BLEタグをスキャンしたスキャン結果をAWS上のWEBサービス (AWS Lambda + DynamoDB + API Gateway) とHTTPSでやり取りし、見つけた/見失ったIDがあった場合にはIFTTT経由でLINE通知します。(詳しくはコードを参照)
回路図とコード
見守りセンサの回路図は以下。
フリスクケースに収まるよう部品点数はなるべく減らしたつもりです。
見守りセンサで動くコード(ESP32向けのArduinoコード)と、クラウド側で動くコード(AWS Lambda上で動くPythonコード)を以下に置いておきます。
nikotan/BLETagMonitor_esp32.ino - GitHubGist
nikotan/BLETagMonitor_lambda.py - GitHubGist
実際しばらく使ってみると、在宅状況を把握できるだけで得られる安心もあるということが分かりました。
参考
今回のハードとソフトを作るにあたっては、以下の記事などを参考にしました。
- ESP-WROOM-32 ( ESP32 ) で Wi-Fi スマホ LED スイッチ作り | mgo-tec電子工作
- Aruduino IDEだとBLEとWi-Fiを同時に使うアプリを書くとメモリ不足でビルドできない - つれづれ日記
- BLE + WiFi, WiFi gets disconnected · Issue #169 · nkolban/esp32-snippets - GitHub
- interactive-matter/aJson - GitHub
- AWSのLambdaとDynamoDBとAPIGatewayの連携 - Qiita
- LambdaでDynamoDBのデータを操作する(Node&Python) - Qiita
- [API Gateway] APIキーと使用量プランを使用してアクセス制限を掛ける | Developers.IO
- HTTPS通信の疎通確認に覚えておきたい3つのコマンド - Qiita