ESP32 Rain Alarm
2020.11.21
雨が降ってきたらスマホにプッシュ。Wi-Fi搭載マイコン「ESP32」を利用した雨センサです。
センサ板の櫛形に並んだ電極間が雨で濡れると抵抗値が下がり、コンパレータ出力がH→Lに変化します。
コンパレータ出力の変化を検知しESP32はLINEに雨が降ってきたことを通知します。



LINEへの通知はLINE Notifyというサービスを利用します。
外部のWebサービスなどからLINEに通知が送れるチャットbotのような機能です。
APIが公開されているため特定のWebサービスに限らずESP32からも通知が送れます。
インターネットの接続が必要となりますので今回はESP32をWi-Fi環境で運用しています。

購入したもの
抵抗や乾電池・はんだ・線材等々は元からあったものを使用しました。
食品パックは防水ケースとして使用しました。


  • ESP32-DevKitC-32D 1480円 (秋月電子通商)

  • パワーグリッド・ユニバーサル基板 両面スルーホール Cタイプ 140円 (秋月電子通商)

  • 電池ボックス 単3×4本 リード線・フタ・スイッチ付 110円 (秋月電子通商)

  • HiLetgo 5個セット LM393 雨滴センサー 天気モニターセンサー 830円 (Amazon.co.jp)

  • ナカヤ化学産業 K170 しっかりパックO 280mL 2個入 110円 (Seria)



回路図
Amazonで買ったセンサをそのまま組み付けたのでは芸がないので一工夫。
ハッシー直伝の回路指南によりコンパレータ出力から反転入力(V-)に帰還の抵抗(1MΩ)を挿入しヒステリシスを持たせました。
センサの感度はボリュームで適宜調整します。


ソースコード
正しい実装かどうかはさておき、とりあえず動きます。
雨が降ってないときは(コンパレータ出力がHのとき)ESP32をDeepSleepに移行し、雨が降ってきたとき(コンパレータ出力がLのとき)に復帰します。
ESP32_Rain_Alarm.ino

  • 開発環境はArduino IDE 1.8.13です。

  • 無保証です。

  • SSID、PASSWORD、LINE TOKENは適宜書き換えます。



参考にしたサイト
LINE Notify API Document
https://notify-bot.line.me/doc/ja/

ESP32のディープスリープを調べる
https://lang-ship.com/blog/work/esp32-deep-sleep/


ESP32とLINE Notifyを使ってナースコール的なのを作る
https://qiita.com/From_F/items/6fc59c50f139f40e52dc


もっと工夫すべきところ
DeepSleepにしたとはいえプルアップ抵抗やパイロットランプに電流は流れているので実はあまり省エネに寄与していません。
外側から電源スイッチを操作できるように防水スイッチを取り付けたいところです。
もっと全体的に防水対策をちゃんとやらないと実用に耐えられません。
ESP32 with RGB LED by POST method
2019.09.21
Wi-Fi搭載マイコン「ESP32」。
これを使ってスマートフォンからESP32に接続したLEDを調光してみました。



ESP32を実装しDIP化された開発ボードが各社から販売されており、ブレッドボードにさしてすぐ使えます。
I/OはUARTはもちろんI2CとかSPI・D/A・A/D…もう全部入り。これで1500円しないのです。
ソフトウェア開発は無料のArduino IDEを使い、ライブラリも豊富に公開されています。
普通のおじさんにも簡単にマイコン開発できます。
もちろんこれは僕がすごいんじゃありません。
誰でも簡単にマイコン開発できる環境がそろってることがすごいんです。
うーんいい時代になったものだ。

参考にしたサイト
ESP32でwebserverを立ち上げてRGBLEDをスマホから調光する
https://qiita.com/wak_tech/items/60d993bb85e519a047b0

ESP32をWebサーバとして稼働させ、スマホから発光色・輝度情報を受け取り処理するのは基本的に同じ。
上記サイトの作例そのままでは芸がないのでちょっと工夫した点。


  • スライダーの値はGETメソッドではなくPOSTメソッドで送信。

  • 単独でアクセスポイント兼Webサーバとして稼働。

  • インターネットに接続していなくても動作するようjQueryのスクリプトファイルはSDメモリに保存。

  • 動作確認時に使用するSSID・PSK・IPアドレスをOLEDに表示。

  • ページを再読み込みしたときスライダーの値が初期値に戻ってしまわないよう、現在のスライダーの値を反映。



購入したもの
すべて秋月電子通商より調達。ブレッドボードとマイクロSDカードは自前。


  • ESP32-DevKitC-32D @1480YEN

  • 0.96インチ 128×64ドット有機ELディスプレイ(OLED) @580YEN

  • マイクロSDカードスロットDIP化キット @300YEN

  • 抵抗内蔵5mm赤色LED @15YEN

  • 抵抗内蔵5mm黄緑色LED @15YEN

  • 抵抗内蔵5mm青色LED @25YEN



回路図

  • 電源は5V。USBより供給。

  • △は3.3V。ESP32より供給。

  • ▽はGND。

  • LEDは抵抗入り。

  • その他の抵抗はすべて10kΩ。




ソースコード
正しい実装かどうかはさておき、とりあえず動きます。

  • 無保証です。

  • 開発環境はArduino IDE 1.8.9。

  • Arduino core for ESP32 と OLED SSD1306 のライブラリは予めインストールしておきます。

  • SSIDとPSKは適宜書き換えます。

  • jQueryのスプリクトファイル「jquery.min.js」を予めマイクロSDカードに保存します。

  • IPアドレスは192.168.4.1となります。


ESP32withRGBLEDbyPOST.ino

- CafeLog -