人感センサーLD2410をRaspberry Piに接続する

DIYする
FMCW Radar Sensor Hi-Link LD2410

前回の記事で紹介した人感センサーLD2410を、Raspberry Pi 4 (RPi4) のGPIOピンに接続しました。GPIOピン状態をHomeKit人感センサーに橋渡しするHomebridgeプラグインを使用して、HomeKitから使えるようにしました。

前回のあらすじ

LD2410は、24GHzのFMCW(周波数変調連続波)レーダーを使った人検出センサーです。AliExpressで送料別393円で売ってます。工場出荷時状態で適切に動作するので、電源を接続するだけで、人感知を反映した1ビットOn/Off信号が得られます。

人感センサーHi-Link LD2410をHomeKitで使う
24GHzのFMCW(周波数変調連続波)レーダーを使った人検出センサーを試してみました。AliExpressで送料別393円の部品です。詳細な感度調整も可能ですが、工場出荷時状態で適切に動作するので、電源を接続するだけで、人感知を反映した1...

上記の記事では、これをESP32に接続しました。人の検出結果をESP32が、RPi4 で動作しているMQTTブローカーMosquittoに送ります。それをHomebridgeのMqttthingプラグインで受けて、HomeKitに橋渡ししてました。

この構成では、ESP32とRPi4がWiFiで接続しているので、センサーを家のどこにでも設置できます。

今回はRPi4のGPIOに接続

実はLD2410を設置したい部屋では、RPi4が動作してます。なのでWiFi接続を利用せず、RPi4に直接接続しても良いです。ということで、今回は、RPi4のGPIOにセンサーを直結します。以下の構成です。

そこで、LD2410のVCC, GND, OUTを、RPi4の5V PWR, GND, GPIO4に接続しました。GPIOの接続先はどこでも良かったのですが、5V, GNDピンの近いところということで適当にGPIO4に配線しました。

RPi4は、AliExpressで買ったファン付きケースに入ってます。

ケース上部には、GPIOの場所にスリットが空いてますので、LD2410のケーブルをそこに挿しました。RPi4は、部屋の棚の上の段に置いているので、LD2410は斜め下に居る人に向くように、テープと粘着剤(ひっつき虫)で固定しました。

LD2410は、指向性がシビアなようで、人を確実に検出し続けるためには、人の方向に向けておく必要があります。市販の製品と比較すると、TuyaのZY-M100センサーに近い感じです。これに対して、AqaraのFP1は、高価格なだけに、適当に設置しても安定して人検出し続けます。そこで写真のようにセンサーを設置しました。これで検出に失敗する事はほとんど無くなりました。

次に、RPi4にssh接続して、raspi-gpioコマンドでセンサーの状態を確認します。

$ raspi-gpio get 4
GPIO 4: level=1 fsel=0 func=INPUT pull=UP

GPIO 4番のlevelが1ということで、人を検出しているらしいことが確認できます。pull upされているので、接続できていないだけの可能性もありますが、人を検知しなくなると、lever=0になりました。LD2410にはpull upは不要ですが、デフォルトを変更するのが面倒なので、このままにしておきました。

GPIOプラグインを選定

GPIOに接続したので、これをプログラムで(例えばPythonで)読み込むこともできます。例えば、プログラムからMQTTブローカーにメッセージを送れば、前回の記事と同じくMqttthingプラグインでHomebridge/HomeKitに接続できます。でも今回はもっと簡単に、GPIOの状態を読み込むプラグインを使うことにしました。

GPIOを扱えるプラグインを探すために、HomebridgeのWeb UIの「プラグイン」のページで、gpioをキーワードに検索しました。そこ結果、30個のプラグインが見つかりました。

Rpiプラグイン

この中でも、Homebridge Rpiというプラグインが、一番汎用的で、メンテナンスもされている様子です。様々な目的に使えて、Motion sensorにも対応してます。

GitHub - ebaauw/homebridge-rpi: Homebridge plugin for Raspberry Pi.
Homebridge plugin for Raspberry Pi. Contribute to ebaauw/homebridge-rpi development by creating an account on GitHub.

対応しているアクセサリーは、

  • Buttons
  • Contact sensors (Eveの履歴機能対応)
  • DHTxx 温度/湿度 sensors
  • Doorbells
  • Motion sensors (Eveの履歴機能対応)
  • Leak sensors
  • Smoke sensors
  • リレー、LED, ファンなどのスイッチ
  • PWM方式の調光LED(電球)
  • サーボモーター(HomeKitからスイッチとして見える)
  • 調色LED

とのことです。対応アクセサリ種類に、Mqttthingでは用意されていたOccupancy sensorはありません。でも、Motion sensorは、PIR(パッシブ赤外線)人感センサーのことで、ホームアプリからの扱いは、Occupancy sensorと全く同じなので、これでも問題ないと思います。

Motion sensor plusプラグイン

ということで、Homebridge Rpiをインストールして設定を始めようとしました。が、pigpiodデーモンの設定が必要でした。Raspberry PiのGPIOを使うためには、数種類のライブラリがあって、その中でも一番玄人向けがpigpioらしいです。pigpiodデーモンは、さらにそれをソケット通信から使うために機能で、LAN接続も可能にします。ただ、あまり複雑なことはしたくなかったので、pigpiodを使わない他のプラグインを探しました。

他の選択肢として、Motion sensor plusプラグインが良さそうでした。こちらはpigpiodの設定が不要で、すぐに使い始められるようです。

GitHub - Droccal/homebridge-motion-sensor-plus: Extended functionality for sensors connected to GPIO Pins of a raspberry pi
Extended functionality for sensors connected to GPIO Pins of a raspberry pi - Droccal/homebridge-motion-sensor-plus

Motion sensorに特化したプラグインで、機能は少ないです。でもセンシングの細かい調整も可能なようです。ということで、Motion sensor plusプラグインを使用することにしました。

プラグインを設定

Motion sensor plusをインストールして、「設定」をクリックします。必須の設定項目は、「Name」「sensorType」「gpioPin」の3箇所です。gpioPinは4番に設定します。sensorTypeは、PIR SensorとDopplerraderから選択します。どちらかというとDoppler raderかと思ったのですが、こちらはGPIOピンがLOWの時に人が居ると判定するようです。LD2410に合わせて、人の検知でHIGHになるRIP Sensorを選択しました。

この結果、「コンフィグ」を確認すると、以下になりました。

{
    "name": "LD2410",
    "sensorType": "pir",
    "gpioPin": 4,
    "timeoutSeconds": 1,
    "cacheSeconds": 0,
    "delayMilliseconds": 0,
    "delayCacheSeconds": 0,
    "accessory": "Motion Plus Sensor"
}

ここで、timeoutSecondsは、センサーをポーリングする時間間隔(秒)のようです。0秒では、頻繁すぎて他の処理に影響与えそうな気もしたので、最小値の1秒にしました。整数指定なので0と1の中間値は指定できません。

HomeKitから使う

設定ファイルを保存し、Homebridgeを再起動すると、iPhoneとMacのホーム.appに以下のように人感センサーが表示されました。

次に、ホーム.appに、「人を検知したら照明をOn」と「人の検知を停止したら照明をOff」のオートメーションを設定しました。

動作を確認したところ、部屋に入るとすぐに(2~3秒で)照明が点灯します。また、部屋から出ると7~8秒で照明が消灯します。ESP32で接続した場合よりも、応答時間が遅いのは、ポーリング間隔が10msから1秒に増えたからだと思います。それでもAqara FP1より高速です。

まとめ

人感センサーL2410を、Raspberry Pi 4のGPIOピンに接続し、Homebridge経由でHomeKitから使えるように設定しました。この方法ならばESP32不要なので、センサー部品代金(送料・ケーブル込みで1000円程度)だけで実現できます。使用場所がRaspberry Piの周囲に限定されますが、確実に動作するレーダーセンサーをHomeKitに組み込む一番安価な方法だと思います。

コメント

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