LINEに通知してくれるおむつ用ごみ箱

赤ちゃんの体調管理のために、おむつ交換の頻度を知りたい。
そのためにGoogle Homeで赤ちゃんの授乳記録をLINEに投稿するを作ったが、 おむつの交換の記録も取っているが、Google Homeに話しかけるのをよく忘れてしまう。
そこで今回は、おむつ用ごみ箱(おむつポット)を開けると、 自動的にLINEに投稿するような仕組みを作ってみる。
ESP-WROOM-32という無線通信モジュールを使い、下記の動画のものが完成した。
#youtube(N5h-MIAVCJ8)
構成図

必要なもの
ハードウェア
項目 | 説明 |
---|---|
おむつ用ごみ箱(おむつポット) | おむつのにおいが漏れないようになっているおむつ専用ごみ箱。&br;今回はピジョンのらくらくおむつポットンを使用。 |
ESP-WROOM-32 | Espressif Systems社のSoC、"ESP32"を搭載した無線通信モジュール。&br;Wi-Fi通信機能とBluetooth通信機能を内蔵している。&br;このモジュールを使用したボードは様々あるが、&br;今回は電源とシリアル通信について考えるのが面倒だったため、&br;スイッチサイエンス社のESPr Developer 32を使用。&br;ESP32-DEVKITCなどでもよい。 |
リードスイッチ | 磁石を近づけると動作するスイッチ。&br;今回は秋月電子通商で購入できる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)