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

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


#author("2018-07-07T16:58:11+09:00","default:admin","admin")
#author("2018-07-07T17:00:56+09:00","default:admin","admin")
#ref(esp32_diaper_pail_hardware01.jpg,around,right,25%)

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

~

そのために[[Google Homeで赤ちゃんの授乳記録をLINEに投稿する>https://cubic9.com/etc/%B0%E9%BB%F9/#googlehome_ifttt_line]]を作ったが、~
おむつの交換の記録も取っているが、Google Homeに話しかけるのをよく忘れてしまう。

~

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

~

[[ESP-WROOM-32>http://www.amazon.co.jp/exec/obidos/ASIN/B071DSN72Z/cubic9com-22]]という無線通信モジュールを使い、下記の動画のものが完成した。

~





#youtube(N5h-MIAVCJ8)

#clear

*構成図
#ref(esp32_diaper_pail_diagram.png,,25%)
#ref(esp32_diaper_pail_diagram.png,,50%)

*必要なもの
**ハードウェア
#amazon(B0756VKNKH,right)
|項目|説明|h
|おむつ用ごみ箱(おむつポット)|おむつのにおいが漏れないようになっているおむつ専用ごみ箱。&br;今回はピジョンの[[らくらくおむつポットン>http://www.amazon.co.jp/exec/obidos/ASIN/B00BXUCBEE/cubic9com-22]]を使用。|
|[[ESP-WROOM-32>http://www.amazon.co.jp/exec/obidos/ASIN/B071DSN72Z/cubic9com-22]]|Espressif Systems社のSoC、[["ESP32">https://www.espressif.com/en/products/hardware/esp32/overview]]を搭載した無線通信モジュール。&br;Wi-Fi通信機能とBluetooth通信機能を内蔵している。&br;このモジュールを使用したボードは様々あるが、&br;今回は電源とシリアル通信について考えるのが面倒だったため、&br;スイッチサイエンス社の[[ESPr Developer 32>http://www.amazon.co.jp/exec/obidos/ASIN/B0756VKNKH/cubic9com-22]]を使用。&br;[[ESP32-DEVKITC>http://akizukidenshi.com/catalog/g/gM-11819/]]などでもよい。|
|リードスイッチ|磁石を近づけると動作するスイッチ。&br;今回は秋月電子通商で購入できる[[SPS-320>http://akizukidenshi.com/catalog/g/gP-13371/]]を使用。(磁石付属)|

**IFTTTのアプレット
#ref(ifttt_logo.png,around,right,140%,nolink)
[[IFTTT>https://ifttt.com]](「イフト」と読む。if this then thatの略。)のアプレットが必要。

~

作成方法は後述。
#clear

**ソフトウェア
#ref(arduino_logo.png,around,right,120%,nothumb,nolink)
[[Arduino IDE>https://www.arduino.cc/en/main/software]]用のスケッチが必要。

~

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

~

内容は後述。

#clear


*手順
**ハードウェアの作成

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

#ref(esp32_diaper_pail_hardware01.jpg,around,left,25%)
#ref(esp32_diaper_pail_hardware02.jpg,,25%)

#ref(esp32_diaper_pail_hardware03.jpg,around,left,25%)
#ref(esp32_diaper_pail_hardware04.jpg,around,left,25%)
#ref(esp32_diaper_pail_hardware05.jpg,,25%)

**IFTTTのアプレットの作成
+[[IFTTT>https://ifttt.com]]を開く。
+[Sign in]をクリックする。
+任意の方法でサインインする。
+[Search]をクリックする。
+"Webhooks"と入力する。
+[Webhooks]をクリックする。
#ref(esp32_diaper_pail_ifttt01.png,around,right,15%)
+[Connect]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt02.png,around,right,15%)
+[Documentation]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt03.png,around,right,15%)
+keyをメモしておく。(これはWebhooks用URLの一部になる)
+Documentationのウィンドウを閉じる。
+[My Applets]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt04.png,around,right,15%)
+[New Applet]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt05.png,around,right,15%)
+[this]をクリックする。
+"Webhooks"と入力する。
#clear
#ref(esp32_diaper_pail_ifttt06.png,around,right,15%)
+[Webhooks]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt07.png,around,right,15%)
+[Receive a web request]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt08.png,around,right,15%)
+[Event Name]に適当なイベント名を入力する。~
(例:"diaper_pail_opened")
+[create trigger]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt09.png,around,right,15%)
+[that]をクリックする。
+"LINE"と入力する。
#clear
#ref(esp32_diaper_pail_ifttt10.png,around,right,15%)
+[LINE]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt11.png,around,right,15%)
+[Send message]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt12.png,around,right,15%)
+[Recipient]で受信者を選ぶ。~
(例:あらかじめ作っておいたLINEグループ)
+[Message]に任意のメッセージを入力する。~
(例:"おむつポットが開いたよ👶")
+[create action]をクリックする。
#clear
#ref(esp32_diaper_pail_ifttt13.png,around,right,15%)
+[Finish]をクリックする。
#clear

**ソフトウェアの作成
#ref(esp32_diaper_pail_software.png,around,right,37%)

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

~

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


~

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

~

+[[公式の手順>https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/windows.md]]に従い、ESP-WROOM-32(ESP32)を[[Arduino IDE>https://www.arduino.cc/en/main/software]]で使えるようにする。
+[[GitHubのリポジトリ>https://github.com/cubic9com/ESP32_send_request_to_IFTTT]]からダウンロードしたスケッチを[[Arduino IDE>https://www.arduino.cc/en/main/software]]にて開く。
+wifi_config.hを開き、自宅のWi-FiのSSIDとパスワードを設定する。
+ifttt_config.hを開き、IFTTT編にて自分で指定したイベント名と、取得したkeyを設定する。
+スケッチをESP-WROOM-32に書き込む。~
(ESPr Developer 32を使用する場合は、USBケーブルにて接続すれば書き込める。~
生のESP-WROOM-32モジュールやピッチ変換のみをしたモジュールを使用する場合は、~
USBシリアルモジュールと電源が必要。)
#clear

~

完成! :)

~

今回は、IFTTT経由でLINEに記録したが、~
用途によっては、[[ThinkSpeak>https://thingspeak.com]]や[[Ambient>https://ambidata.io]]などのサービスに記録しても良いと思う。


*参考
-[[espressif/arduino-esp32: Arduino core for the ESP32>https://github.com/espressif/arduino-esp32]]
-[[Arduino - ESP32 WiFiClientSecure ライブラリで、安定して https ( SSL )記事をGETする方法 | mgo-tec電子工作>https://www.mgo-tec.com/blog-entry-arduino-esp32-ssl-stable-root-ca.html]]
-[[【ESP32】スリープモードについて - ソースに絡まるエスカルゴ>http://rikoubou.hatenablog.com/entry/2017/06/08/183902]]
-[[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]]

*Amazon
#amazon(B00BXUCBEE,left)
#amazon(B0756VKNKH,left)
差分 一覧