Sympapaのスマートホーム日記

スマートなんとかはスマートじゃない方法でつくられている

Home Assistant: ESP Homeで超音波距離センサーHC-SR04を試す

Sympapaです。

秋月電子でESP32を追加発注した際に、送料がかかるので他にもまとめてってことでなんとなく300円の超音波距離センサーをポチってしまいました(汗
特に使い道を考えていなかったのですが、まぁどんなもんなのか試していきたいと思います。

■超音波距離センサーHC-SR04

今回は秋月電子で購入しました。1個300円。
純正品かどうかは怪しいですがAmazonでも5個で1,000円くらいで買えたりします。
仰々しい超音波送信部と受信部?が、とても仕事をしてくれそうな雰囲気です(笑)

■ESP Homeの超音波距離センサー対応

ESP Homeは私のような初心者がESP32を動かすにはもってこいのプラットフォームです。他を知らないのでたぶんですが(笑)
ESP Homeでは設定を簡単な.yamlで書けば、後はGUI上で書き込みの操作をするだけでコンパイルから書き込みまでやってくれます。
初めて接続するESP32の個体の場合はUSB接続してWi-Fi設定の書き込みが必要ですが、その後はESP Homeを使っている限りはWi-Fiで書き込みも出来るお手軽さも魅力だと思います。
とにかく私でも迷わずに導入から使用まで出来ているので、簡単な部類であることは間違いありません(笑)
Home Assistant Cloudを運営しているNabucasaが開発しているだけあって、Home AssistantにはESP Homeアドオンが存在しHome Assistantとの連携もさくっと簡単に出来てしまうのがHome Assistant使い的なESP Homeの長所だと思います。
esphome.io


ESP Homeは超音波センサーもサポートしており、今回購入した超音波距離センサーHC-SR04もサポートしています。
esphome.io


ただし、上記のページに載っている# Example configuration entryはとても曲者です(汗
例をコピペして動かそうとしたところ以下のように怒られました。ボードによってpin nameが違うんですね。

Cannot resolve pin name 'D1' for board esp32dev.
trigger_pin: D1
Cannot resolve pin name 'D2' for board esp32dev.
echo_pin: D2

そんなわけで解決策を探していきましょう。

■解決策

いきなりですが解決策はここで見つかりました。
community.home-assistant.io

抵抗を入れろとかコンデンサーを入れろとか書かれていますが、私の環境ではtrigger_pin:をGPIO4、echo_pin:をGPIO5とするだけでちゃんと動いているように見えます。
ESP Homeの設定(.yaml)は以下のとおりです。

sensor:
  - platform: ultrasonic
    trigger_pin: GPIO4
    echo_pin: GPIO5
    name: "Ultrasonic Sensor"
    update_interval: 5s
    pulse_time: 10us
    timeout: 20m

■使ってみる


距離はそこまで正確ではなさそうですが、ざっくり距離をトリガーにしてオートメーションを発動させるには十分だと思います。

正面でなければ検出はしませんが、何より人感センサーと違ってモノでも検出できるし、人の場合もじっとしていても検出できるメリットがあります。
今回の例では更新間隔を5秒に設定してあるので即応性の必要な用途には使えませんが1秒間隔とかにすると処理に負荷がかかるのかな?
まぁ5秒間隔でも、トイレや机の前など定位置に人が座る場所から居なくなったとか、定位置にあるはずのモノがあるのか無いのかとか、カーポートに車が停まっているかどうかとか、そういうのを検出できそうです。
個人的には「ベッドに人が寝ているか」とか「物干し竿に洗濯ものが干してあるか」みたいのを検出できたらいいなと思うのですが、超音波が反射しづらい柔らかいものは正確に検出するのが難しいみたいですね。また試してみたいと思います。


このセンサーに限ったことではありませんが、ESP32に5Vの電源供給をしないといけないのでボタン電池で動くZigbee接続の人感センサーやドア開閉センサーの使い勝手には到底及びません。
あとHC-SR04用のブラケットは一応売っているんですがそれを使っても剥き出し部が多いので、見た目を美しくしようとすると3Dプリンターが無いと難しいのが難点ですかね。

■まとめ

なんだかんだで300円でこれはなかなか使えそうです。
まぁESP32の費用も足すと1300円~1800円くらいになるのでそれを考えると、XiaomiやAqaraがZigbbe接続でボタン電池駆動の超音波距離センサーを出してくれたらありがたいですが。。。そもそも超音波って時点で電池食いなのかもしれませんけど。
とりまデスクに設置して、長時間デスクの前に座っていなかったら自動的にPCをスリープさせるとかやってみようかな。
それでは。