ESP32 Alarm Water Jet(猫除け)

庭の猫フ〇に悩まされて

我が家の庭に野良ネコが度々侵入し、いけないこと(プ〜ン)をしていくので嫁がどうにかしてくれとお怒りで、忌避剤、超音波猫除け機、感知式スプリンクラーなど様々なものを試しました。
忌避剤や超音波は一時的な効果はあるものの直ぐに慣れてしまうし、スプリンクラーは効果絶大ですが、人間にも反応してお客さんがずぶ濡れになるなど、どれも一長一短でした。

そこで製作したのが上の写真にあるAlarmWaterJetです。(2018年12月製作)
人感センサで猫を検知し、ポンプで水を噴射して猫を追い払うとともに、写真撮影とメール送信により猫の侵入を知らせます。

猫が逃げていきます
噴射された水滴も映っています

おかげさまで設置後は猫が寄り付かなくなりましたが、長らくバッテリー充電を怠っていたため最近また侵入されています。ただ、なぜだかフ〇はせず、庭に寝そべるだけのようです。自分の家のつもりかも知れません。仕付けてしまったのでしょうか?
虐待するつもりはないので、いけないことをしないのなら、まあ良しとしましょう。

動作概要

基板の上下に配置した人感センサの内、下側のセンサが反応した場合のみポンプが作動します。これにより、人間には水がかからないようになっています。
ポンプはDC5Vの水中ポンプで大きな力はありませんが、噴射口の穴が小さいので1m程度は水が飛びます。
噴射口は、ポリエチレン製スポイトの手持ち側の玉に数個の小さな穴をあけて水槽用のホース(内径8mm)でポンプに接続してあります。ショットガンのように水が出ます。

基板の裏面(部品面ではない側)に人感センサ(PaPIRS)とカメラ(ArduCAM)を取り付け、表面側のESP32に入力します。
ESP32はespressif社のマイクロコントローラで、AVRマイコンに比べてはるかに多くのプログラム領域、メモリ、IO端子を持つほか、日本の技術基準に適合(技適)したWiFiやBluetoothを備えています。

ハードウエア構成

今回製作した基板はUSBシリアル変換IC(FT232RL)を搭載しており、ArduinoのIDEを利用してESP32のコード(スケッチ)を作成、コンパイル、書込みができます。

基板上には、

  • USB端子(シリアル変換IC FT232RL接続)
  • リアルタイムクロック(時刻保持用DS3234S、CR1220バッテリバックアップ)
  • MicroSDカードソケット(画像保管用)
  • センサ入力(3.3V/0V) 2系統
  • スイッチ入力(ON/OFF) 2系統
  • 5V出力(5V/0V) 2系統
  • LED表示出力 2系統
  • カメラ入力 1系統(ArduCAM)

を搭載していて、ESP32のコードを書き換えれば他の用途にも使えます。
なお、写真の基板のRivisionは3.0で、Rev1.0、2.0(非公開)ではリアルタイムクロック非搭載でしたが、WiFiに接続できない時でも猫検知動作時刻を記録できるように改良したものです。

今回は猫除け用途として、各入出力端子には、センサ入力に低消費電力の人感センサ PaPIRs EKMB1301111K を2個、電源ON/OFF用のスイッチ1個、水噴射用5Vポンプ1個、状態表示LED1個、カメラ1個を接続しています。

また、電源はIoT機器対応のモバイルバッテリーCHEERO CANVAS(3200mAh)を利用しています。
一般のモバイルバッテリーは、通電電流が小さいと充電完了と判断し供給を停止しますが、CHEERO CANVASはIoT用なので通電電流が小さくても停止せず電気を供給し続けてくれます。
AlarmWaterJet基板は、バッテリーの持ちが極力長くなるように、ESP32のスリープ機能(deep sleep)を駆使して低消費電力化(定常時約0.2mA)を図っていますので、CHEERO CANVAS以外のモバイルバッテリーでは動作しないと思われます。
バッテリーは、ポンプが動作しなければ満充電で1年以上持つ設計ですが、残念ながら猫以外にも反応しているようで、数日で充電が必要です。
但し、充電切れ前に水がなくなったのが見た目でわかるので、給水時に充電すれば問題ないですが。

ソフトウェア構成

ESP32のコード(Arduino スケッチ)は、Arduino IDE を利用して作ってあり、次項のDownloadから入手できます。
Arduino IDEのインストール、ESP32での利用時の設定・使い方等の説明は省略しますが、興味のある方は他サイトを検索してください。

ESP32コード

AlarmWaterJet用のコード(スケッチ)WaterAlarmV2(最新Ver.36)は、Arduino ESP32の標準ライブラリ以外に以下のライブラリが必要です。Github等から入手できます。

  • ArduCAM
  • AsyncTCP
  • ESPAsyncWebServer

私の環境にライブラリをインストールしてから随分月日が経過したため詳細を忘れてしまいましたので、上記のほかにも必要なものがあるかもしれません。コンパイル時にエラーが出たら、検索・入手してインストールしてください。

コード(スケッチ)は分割していないので、コメントを含めて約2300行と長大です。

その他のデータ

AlarmWaterJetを使用するには、上記コード以外に設定データ等(ダウンロードしたdataフォルダのデータ)をESP32に書き込んでおく必要があります。
Arduino IDEの ツール>ESP32 Sketch Data Upload から書き込みます。
dataフォルダの内容は以下のとおりです。

  • index.html (Webアクセス初期ページの雛形)
  • image.html(写真データ表示ページの雛形)
  • config.html(通信関係設定ページの雛形)
  • Config.txt (通信初期設定データ)
  • pic01.jpg 〜 pic10.jpg (写真=ダミー)
  • Record.txt (写真データの属性=ダミー)

Config.txt はWiFiやメール設定ですので、ご利用の際はご自分の環境に合わせて***部分を書き換えてください。

使用方法

(1)スイッチ操作と動作モード

AlarmWaterJet基板に接続するスイッチ(SW0)は1つだけで、通常は電源のON/OFF用に使いますが、長押しをすることにより設定モードに入ります。

  • Short Press (2秒以下) 電源ON/OFF および 各Configモードの終了
  • Middle Press(2~5秒) AP Configモード(AlarmWaterJet自身がWiFi APになる)
  • Long Press(5秒以上) WiFi Configモード(WiFiを経由しての表示・設定モード)

AP ConfigモードとWiFi Configモードでは、スマートホンやPCのブラウザで検知記録を表示したりWiFiやメール等を設定したりするときに利用します。
WiFi Configモードでは、AlarmWaterJetとスマホ等が同一の家庭内WiFi環境を経由して接続するのに対し、AP ConfigモードではAlarmWaterJet自身がWiFi APとなってスマホ等と直接接続します。

検知記録の表示ページ

WiFi等の設定変更ページ

上記画像はAP Configモードで接続した時のものです。
IPアドレスが192.168.5.1になっています。
AP Configモードでは、スマホの接続先SSIDをAlarmWaterJet001に変更しておく必要があります。

なお、AP ConfigモードまたはWiFi Configモードでの接続に失敗した時のため、SSIDとパスワード設定用のSmart Configモードを用意してありますが、espressif社のアプリesptouchをスマホにインストールする必要があるので説明は省略します。

(2)LED表示

AlarmWaterJetの作動状況を知るため、LEDの点滅を以下のように設定してあります。

モードLED点滅備 考
電源OFF消灯
スタートアップ短2回点灯/秒人感センサの準備のため20秒間待機
定常短1回点灯/秒deep sleep超低消費電流0.2mA
SW Press中0.5秒点灯/秒
各Configモード短4回+長1回点灯/2秒
センサ検知時長2回点灯/秒
アラーム動作完了時0.7秒点灯(1回のみ)撮影・メール送信後

定常モード(通常時)では、SWを押すかセンサが検知するまでESP32はdeep sleepに入って、0.2mAの超低消費電流を実現しています。

Download

データはこちらを解凍してください。
回路図pdf、基板アートワークpdf、ESP32用Arduinoコードが入っています。

基板は10枚発注して、まだ6枚残っていますので、ほしい方には先着4名様に無料でお送りします。普通郵便にて。お問合せからメールください。(残り2 枚は保守用です)
また、リアルタイムクロック非搭載のRev2.0基板も多数残っていますので、それで良い方はご連絡くださればお送りします。
部品の調達、製作はご自分でお願いします。
ほぼすべての部品が表面実装ですので、はんだ付けに自信のない方や製作する気のない方は、もうしわけないですがご遠慮ください。

なお、基板・回路図(KiCAD用)詳細データが必要な方も、お問合せからご連絡ください。

コメント

タイトルとURLをコピーしました