MicroPythonで距離センサ(VL53L0X)を使う

今回もMicroPythonを使って、死蔵していたモジュールの蔵出しです。
割と最近購入して、まだ試していなかったレーザー距離センサです。

VL53L0X使用 レーザー測距センサモジュール(ToF): センサ一般 秋月電子通商-電子部品・ネット通販

最大2m測定できるとありますが、実感としては1m程度までが実用範囲の印象です。

結線は3.3V、GND、SCL、SDAの4本です。このほか、XSHUTとGPIO1という端子がありますが、何も接続しなくても動作します。

MicroPythonでのドライバは以下のものが修正無しで使えました。

thesheep / micropython-vl53l0x — Bitbucket

使い方は以下のような感じです。

>>> from machine import I2C
>>> i2c=I2C(1)
>>> i2c.scan()
[41]
>>> vl=VL53L0X(i2c)
>>> vl.init()
>>> vl.read()
259
>>> vl.start()
>>> vl.read()
271
>>> vl.stop

写真はOLEDが二つありますが、今回は測定結果を右のOLEDに表示させています。
二つあるのは、この直前に行っていた実験の名残りです。

ちなみに右はI2C、左はSPI接続のSSD1306で、この2つのスピード比較を以下の記事のサンプルで試していました。
このサンプルはアニメーションなのでかなり転送量が多く、バスのスピード差が効いてきます。

micropythonでOLED (SSD1306) I2C編 – Qiita

結果としてはSPIが圧倒的に早く、I2Cは規格外の2MHzまでクロックを上げるとようやく対抗できる感じでした。
128×64という低解像度とはいえ、I2CのOLEDはアニメーションやゲームなどにはあまり向いていないという結論です。

コメント