Top/Devel/電子工作/ESP32/LINEに通知してくれるおむつ用ごみ箱

LINEに通知してくれるおむつ用ごみ箱はてなブックマーク

esp32_diaper_pail_hardware01.jpg

赤ちゃんの体調管理のために、おむつ交換の頻度を知りたい。


そのためにGoogle Homeで赤ちゃんの授乳記録をLINEに投稿するを作ったが、
おむつの交換の記録も取っているが、Google Homeに話しかけるのをよく忘れてしまう。


そこで今回は、おむつ用ごみ箱(おむつポット)を開けると、
自動的にLINEに投稿するような仕組みを作ってみる。


ESP-WROOM-32という無線通信モジュールを使い、下記の動画のものが完成した。


構成図

esp32_diaper_pail_diagram.png

必要なもの

ハードウェア

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

IFTTTのアプレット

nolink

IFTTT(「イフト」と読む。if this then thatの略。)のアプレットが必要。


作成方法は後述。

ソフトウェア

nothumb,nolink

Arduino IDE用のスケッチが必要。


作成したスケッチは https://github.com/cubic9com/ESP32_send_request_to_IFTTT にて配布中。


内容は後述。

手順

ハードウェアの作成

  1. リードスイッチから出ている2本の配線のうち、
    一方をESP-WROOM-32の0番ピン、もう一方をGNDに接続する。
    これでリードスイッチがオンになると、0番ピンがGNDに落ちるようになる。
    (後述のソフトウェア作成編にて、これをトリガに動作するようにする。)
  2. リードスイッチをおむつポット本体上部に接着する。
  3. リードスイッチ付属の磁石をおむつポットのハンドル内側に接着する。
  4. おむつポットのハンドルを使っておむつポットを開けた際に、リードスイッチと磁石が近づくことを確認する。
  5. ESP-WROOM-32をおむつポット本体に接着する。
  6. ESP-WROOM-32に電源を接続する。
esp32_diaper_pail_hardware01.jpg
esp32_diaper_pail_hardware02.jpg
esp32_diaper_pail_hardware03.jpg
esp32_diaper_pail_hardware04.jpg
esp32_diaper_pail_hardware05.jpg

IFTTTのアプレットの作成

  1. IFTTTを開く。
  2. [Sign in]をクリックする。
  3. 任意の方法でサインインする。
  4. [Search]をクリックする。
  5. "Webhooks"と入力する。
  6. [Webhooks]をクリックする。
    esp32_diaper_pail_ifttt01.png
  7. [Connect]をクリックする。
    esp32_diaper_pail_ifttt02.png
  8. [Documentation]をクリックする。
    esp32_diaper_pail_ifttt03.png
  9. keyをメモしておく。(これはWebhooks用URLの一部になる)
  10. Documentationのウィンドウを閉じる。
  11. [My Applets]をクリックする。
    esp32_diaper_pail_ifttt04.png
  12. [New Applet]をクリックする。
    esp32_diaper_pail_ifttt05.png
  13. [this]をクリックする。
  14. "Webhooks"と入力する。
    esp32_diaper_pail_ifttt06.png
  15. [Webhooks]をクリックする。
    esp32_diaper_pail_ifttt07.png
  16. [Receive a web request]をクリックする。
    esp32_diaper_pail_ifttt08.png
  17. [Event Name]に適当なイベント名を入力する。
    (例:"diaper_pail_opened")
  18. [create trigger]をクリックする。
    esp32_diaper_pail_ifttt09.png
  19. [that]をクリックする。
  20. "LINE"と入力する。
    esp32_diaper_pail_ifttt10.png
  21. [LINE]をクリックする。
    esp32_diaper_pail_ifttt11.png
  22. [Send message]をクリックする。
    esp32_diaper_pail_ifttt12.png
  23. [Recipient]で受信者を選ぶ。
    (例:あらかじめ作っておいたLINEグループ)
  24. [Message]に任意のメッセージを入力する。
    (例:"おむつポットが開いたよ👶")
  25. [create action]をクリックする。
    esp32_diaper_pail_ifttt13.png
  26. [Finish]をクリックする。

ソフトウェアの作成

esp32_diaper_pail_software.png

ハードウェア作成編にて、
リードスイッチに磁石が近づき、リードスイッチがオンになると、
0番ピンがGNDに落ちるようにした。


この0番ピンがGNDに落ちたことをトリガとして、
省電力モード(Deep Sleep)から復帰し、
Wi-Fi接続し、
IFTTTのWebhooks用URLにGETリクエストを送り、
再び省電力モードに入るようなスケッチを作成した。
GitHubのリポジトリ


このスケッチは下記のようにして使用する。


  1. 公式の手順に従い、ESP-WROOM-32(ESP32)をArduino IDEで使えるようにする。
  2. GitHubのリポジトリからダウンロードしたスケッチをArduino IDEにて開く。
  3. wifi_config.hを開き、自宅のWi-FiのSSIDとパスワードを設定する。
  4. ifttt_config.hを開き、IFTTT編にて自分で指定したイベント名と、取得したkeyを設定する。
  5. スケッチをESP-WROOM-32に書き込む。
    (ESPr Developer 32を使用する場合は、USBケーブルにて接続すれば書き込める。
    生のESP-WROOM-32モジュールやピッチ変換のみをしたモジュールを使用する場合は、
    USBシリアルモジュールと電源が必要。)


完成! :)


今回は、IFTTT経由でLINEに記録したが、
用途によっては、ThinkSpeakAmbientなどのサービスに記録しても良いと思う。

参考

Amazon

差分 一覧