レーザー距離測定でLCDは光学的に特別の性質なのか

色々なターゲットで距離測定しつつ反射光の検出強度を測定してみた。

環境はArduino IDEでも動かせるし、以前のようにM5stackのビルドも遅くないから、使ってみた。

Arduino IDEで使うライブラリはこれ、

距離値はビジュアル化できる、

APIで反射光のセンサー値(検出強度)を読み出せる、強さが1,000以下は不安定と判断してfailにされている

色々なターゲットでの検出強度、特徴的なのはターゲットがLCD面だと値が大きく変動することで、おそらく偏向特性が関連しているように思う

結構検出精度は高いように思います、検出エリアは公称18度ぐらいですが。可視光と赤外線では見え方が違うだろうから、人の目には明らかでもレーザー光では反射率が低下するようなターゲットもあるでしょう。

P.S. 2022/9/26

鏡でやってみても同じ特性を持つから、単にLCDや鏡は反射特性が指向性を持つからだろう。

 

admin

Laser距離センサーを動かしてみた

<距離センサー>

熱中症指数計も要らなくなったので、M5stackの転用先を考えてみた。距離センサーで超音波方式はそれほど精度も出ないし、速度も遅いからレーザー方式を試してみようと。

デバイスは新しめの、

https://www.switch-science.com/catalog/8183/

上記のリンク先は、

https://learn.adafruit.com/adafruit-vl53l4cx-time-of-flight-distance-sensor/arduino

対象の数まで検出可能というところが優れもの。i2cデバイスで、シリアルにデバイスを拡張できるから基板にコネクタが二個付いている。

しかし、VL53L4のライブラリとサンプルコードでは動かない、デバイスの初期化でエラーが帰る。実はQwiicの接続だけでは不足しているような気がする、故に以下のサンプルコードとライブラリで動かした(VL53L1用だけどL4でも機能限定で動くんだとあったから)

https://learn.sparkfun.com/tutorials/qwiic-distance-sensor-vl53l1x-vl53l4cd-hookup-guide/all

APIが載っているので、こちらは使いやすい。

コードは比較的単純、

https://github.com/chateight/PlatformIO/tree/master/laser_dist_01/src

バッテリー残量表示はデフォルトで必要だと思うから入れてます。

 

距離測定中、タブレットの画面までの距離を表示してます。

アタッチメント、モジュールはいつもの両面テープ貼り付け

動いてるとこ、

Fusion360で作成したピース、

<おまけ>

VL53L4のドキュメントを見ると追加ピンが2本あるのでその役割

・GPIOとXSHUTの役割(i2cのアドレス変更で使う)

Qwiic以外の追加のインターフェースです。

The host hardware design must ensure the sensor XSHUT pins can be controlled individually. Each XSHUT pin must be connected to a host MCU GPIO pin.

To change the I2C address, the host must :

1. Put the device in HW standby by setting the XSHUT pin low on all the VL53L4CD devices

2. Raise the XSHUT pin of one of the VL53L4CD (e.g. current_tof)

3. Call VL53LX_SetDeviceAddress(current_tof, newAddress) to program the new address

4. Repeat the steps from [2 to 3] to change the address of all ToFs.

 

admin