Arduino

【Arduino】 ESP32で雨をLINEでお知らせしてくれるデバイスの製作

イノ
記事内に商品プロモーションを含む場合があります

外で雨が降り始めても、案外気づきづらいものですよね。私も何度かそれで洗濯物を濡らしてしまいました。そこで、今回は雨が降り始めたらLINEでお知らせしてくれるデバイスを製作しました。

2025/1追記 LINE Notifyは2025年3月31日にサービス終了します。LINE Messaging APIなど代替サービスをご利用ください。

完成イメージ↓

いつもの:万が一事故や故障等発生しても、責任は負いかねます。ご了承ください。

必要なもの

実用的に使用する場合はユニバーサル基盤を使用すると思いますが、試作段階ではブレッドボードを使います。

LINE Notifyからトークン発行

LINE Notifyは、外部WebサービスからLINEメッセージを送信できるようにする、LINE公式のサービスです。

ここでESP32からLINEへメッセージを送信できるようにする、「トークン」と呼ばれるものを発行します。

1.LINE Notifyにアクセス(スマホ不可)

2.ログインする

3.ログインできたら、ページ右上ユーザーネーム>「マイページ」へ進む

4.「トークンを発行する」をクリック

5.トークン名を記入

トークン名ではありますが、メッセージに表示されるので、それっぽいものを記入

6.送信するトークルームを選択

今回は自分に送信するので、「1:1で~」を選びました。家族LINEとかでも大丈夫です

7.「発行する」をクリック

8.発行されたトークンをコピー

以上でLINE側の準備は完了です。

回路

回路は下図のとおりです。

ESP32の5番ピンに雨検知センサーのデジタル出力を差しています。

雨検知センサーの感度は、センサーを接続している長方形のパーツの可変抵抗で調節します。緑のランプがギリギリ2つ点灯しない場所に調整します。(最後にやっても良い)

ソースコード

Arduino IDEを使用します。私と同じものを使用した場合、ボードは「ESP32 Dev Module」です。

ソースコードは以下の通りです。Wi-FiのSSID、パスワードは各自設定してください。
LINE Notifyで発行したトークンは、10行目に記入してください。

一応void loopのところだけ解説します。

簡単に言うと、雨検知 → LINE送信 をやっています。ただ、これだけだと、雨が降っている間、永遠に通知を送り続けます。なので、雨を検知したときにflag = 0だったものを flag = 1にします。LINE送信の動作に入る条件として 87行 if(digitalRead(5)) == LOW && flag == 0) と書いているように、このflagが1の時は、送信の条件に入りません。そして、雨を検知しなくなったら、91行 else ifに入り、flag = 0になります。これでリセットになるわけです。
もっとスマートなやり方があるかもしれませんが、とりあえずこれで対処しました。

95行目 delay(1000)は、センサーのノイズ等で一回切れちゃう事があるので長めにしています。今回は1000msec(=1秒)ですが、10秒とか30秒でも良いと思います。

検証

センサーに霧吹きを掛けてみたところ、ちゃんと通知が届きました。

今回はこんなところです。気になったところは、雨検知センサーの銅の部分が剥げやすいところです。実用する場合は他の製品で代用したいところですが、今のところ良さそうなものが見つかっていません。そのうち反応しなくなりそうな気がしますが、取り合えず壊れるまではこのままでやってみます。

おすすめ記事

ABOUT ME
イノ
イノ
一応ギタリスト
写真撮って旅してギター弾いて機械弄る人。 串カツが好物
記事URLをコピーしました