LINEに通知してくれるおむつ用ごみ箱
赤ちゃんの体調管理のために、おむつ交換の頻度を知りたい。
そのためにGoogle Homeで赤ちゃんの授乳記録をLINEに投稿するを作ったが、
おむつの交換の記録も取っているが、Google Homeに話しかけるのをよく忘れてしまう。
そこで今回は、おむつ用ごみ箱(おむつポット)を開けると、
自動的にLINEに投稿するような仕組みを作ってみる。
ESP-WROOM-32という無線通信モジュールを使い、下記の動画のものが完成した。
構成図
必要なもの
ハードウェア
項目 | 説明 |
おむつ用ごみ箱(おむつポット) | おむつのにおいが漏れないようになっているおむつ専用ごみ箱。 今回はピジョンのらくらくおむつポットンを使用。 |
ESP-WROOM-32 | Espressif Systems社のSoC、"ESP32"を搭載した無線通信モジュール。 Wi-Fi通信機能とBluetooth通信機能を内蔵している。 このモジュールを使用したボードは様々あるが、 今回は電源とシリアル通信について考えるのが面倒だったため、 スイッチサイエンス社のESPr Developer 32を使用。 ESP32-DEVKITCなどでもよい。 |
リードスイッチ | 磁石を近づけると動作するスイッチ。 今回は秋月電子通商で購入できるSPS-320を使用。(磁石付属) |
IFTTTのアプレット
IFTTT(「イフト」と読む。if this then thatの略。)のアプレットが必要。
作成方法は後述。
ソフトウェア
Arduino IDE用のスケッチが必要。
作成したスケッチは https://github.com/cubic9com/ESP32_send_request_to_IFTTT にて配布中。
内容は後述。
手順
ハードウェアの作成
- リードスイッチから出ている2本の配線のうち、
一方をESP-WROOM-32の0番ピン、もう一方をGNDに接続する。
これでリードスイッチがオンになると、0番ピンがGNDに落ちるようになる。
(後述のソフトウェア作成編にて、これをトリガに動作するようにする。) - リードスイッチをおむつポット本体上部に接着する。
- リードスイッチ付属の磁石をおむつポットのハンドル内側に接着する。
- おむつポットのハンドルを使っておむつポットを開けた際に、リードスイッチと磁石が近づくことを確認する。
- ESP-WROOM-32をおむつポット本体に接着する。
- ESP-WROOM-32に電源を接続する。
IFTTTのアプレットの作成
- IFTTTを開く。
- [Sign in]をクリックする。
- 任意の方法でサインインする。
- [Search]をクリックする。
- "Webhooks"と入力する。
- [Webhooks]をクリックする。
- [Connect]をクリックする。
- [Documentation]をクリックする。
- keyをメモしておく。(これはWebhooks用URLの一部になる)
- Documentationのウィンドウを閉じる。
- [My Applets]をクリックする。
- [New Applet]をクリックする。
- [this]をクリックする。
- "Webhooks"と入力する。
- [Webhooks]をクリックする。
- [Receive a web request]をクリックする。
- [Event Name]に適当なイベント名を入力する。
(例:"diaper_pail_opened") - [create trigger]をクリックする。
- [that]をクリックする。
- "LINE"と入力する。
- [LINE]をクリックする。
- [Send message]をクリックする。
- [Recipient]で受信者を選ぶ。
(例:あらかじめ作っておいたLINEグループ) - [Message]に任意のメッセージを入力する。
(例:"おむつポットが開いたよ👶") - [create action]をクリックする。
- [Finish]をクリックする。
ソフトウェアの作成
ハードウェア作成編にて、
リードスイッチに磁石が近づき、リードスイッチがオンになると、
0番ピンがGNDに落ちるようにした。
この0番ピンがGNDに落ちたことをトリガとして、
省電力モード(Deep Sleep)から復帰し、
Wi-Fi接続し、
IFTTTのWebhooks用URLにGETリクエストを送り、
再び省電力モードに入るようなスケッチを作成した。
(GitHubのリポジトリ)
このスケッチは下記のようにして使用する。
- 公式の手順に従い、ESP-WROOM-32(ESP32)をArduino IDEで使えるようにする。
- GitHubのリポジトリからダウンロードしたスケッチをArduino IDEにて開く。
- wifi_config.hを開き、自宅のWi-FiのSSIDとパスワードを設定する。
- ifttt_config.hを開き、IFTTT編にて自分で指定したイベント名と、取得したkeyを設定する。
- スケッチをESP-WROOM-32に書き込む。
(ESPr Developer 32を使用する場合は、USBケーブルにて接続すれば書き込める。
生のESP-WROOM-32モジュールやピッチ変換のみをしたモジュールを使用する場合は、
USBシリアルモジュールと電源が必要。)
完成!
今回は、IFTTT経由でLINEに記録したが、
用途によっては、ThinkSpeakやAmbientなどのサービスに記録しても良いと思う。
参考
- espressif/arduino-esp32: Arduino core for the ESP32
- Arduino - ESP32 WiFiClientSecure ライブラリで、安定して https ( SSL )記事をGETする方法 | mgo-tec電子工作
- 【ESP32】スリープモードについて - ソースに絡まるエスカルゴ
- https://github.com/espressif/arduino-esp32/blob/master/libraries/WiFiClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino
- https://github.com/espressif/arduino-esp32/blob/master/libraries/ESP32/examples/DeepSleep/ExternalWakeUp/ExternalWakeUp.ino