micro:bit Makecodeでレーザ距離センサ(VL53L1X)の動作テスト

2021.8.18 Coskx Lab  

1 はじめに

micro:bitにレーザ距離センサ(VL53L1X)を接続して周囲の対象物までの距離を測定します。



レーザ距離センサ(VL53L1X)を使うと,光の往復時間を測定し,2.5m程度までの距離を測定することができます。(カタログ値は4mとなっています。)
micro:bitにはI2Cでデータを転送します。
VL53L1Xを基板上に取り付けた製品は多数ありますが,ここでは秋月電子で販売されているAE-VL53L1Xを使用します。

2 使用環境

3 端子の割り付け

AE-VL53L1Xは測定結果をI2C通信で送ってくるので,I2C用の端子として,P19とP20を使います。

4 接続

AE-VL53L0XのI2CのSCL信号線とSDA信号線をmicro:bitにつなげます。
micro:bitのSCLとSDAはそれぞれ端子P19とP20です。
その他には電源3.3V,GNDは当然必要です。micro:bitの3Vの端子にはUSB電源供給時に3.25Vが出力されていました。
そのため,次のようにつなげることを目指せばよいことになります。

参考 micro:bit端子一覧



端子に直接はんだ付けしてしまってもよいのですが,そのようなことはしたくないため,micro:bitの端子を引き出して扱いやすくなっているブレイクアウトボードなどを使います。細工が必要な場合もあります。
接続端子はんだ付け例1
接続端子はんだ付け例2
はんだ付け+熱収縮チューブにて保護

注意 I2C信号はノイズに弱いため,モータを使うシステムでは, モータへのノイズ対策 をしておかないと正常に動作できないことがあります。

(1) ブレイクアウトボード KITRONIK-5601Bの場合
P19とP20のところには,ピンヘッダがついていなかったので,ピンヘッダをはんだ付けする必要がありました。
ピンヘッダのはんだ付け
3VとGNDは他の場所にも引き出されているので,そちらを使用することもできます。


実際の様子 ブレイクアウトボード KITRONIK-5601Bの場合
AE-VL53L0X付属のケーブルの先には何もついていないので,メスコネクタを取り付けています。
(このように自分でメスコネクタをかしめ取り付けしても,メスコネクタ付きのジャンプワイヤを切ってはんだ付けでつないでもOKです。)



(2) モータドライバボード KITRONIK-5698の場合
P19とP20のところには,ピンヘッダがついていなかったので,ピンヘッダをはんだ付けする必要がありました。
ピンヘッダのはんだ付け
3VとGNDは他の場所にも引き出されているので,そちらを使用することもできます。



(3) モータドライバボード KITRONIK-5698の場合
micro:bit差し込み口の裏側に,19,20 端子が出ているように番号が書いてありますが,これは使えません。micro:bitを逆向きに挿すと使えます。(とシルク印刷に書いてありました。)しかしそれではモータドライバの機能が使えません。
micro:bit差し込み口のモータドライバ側に,19,20 端子がつながっている端子がありました。これを捜して無理やりはんだ付けして,19,20 端子を使えるようにしました。はんだ付けが,難しいので,自信のある方以外にはお勧めしません。



(4) Sparkfun ブレイクアウトボードの場合
Sparkfun ブレイクアウトボードでは,引き出されている端子に名前がシルク印刷されているので接続が簡単です。P19,P20もそのまま使えるようになっています。




5 テストプログラム

MakeCodeを使います。
MakeCode画面で「拡張機能」を開き, 拡張機能の一覧の見えているところの検索ボックスで,「https://github.com/healthywalk/vl53l1x-microbit」のURLで検索すると「vl53l1x-microbit」が見つかるので,これを取り込ます。



使える拡張機能が取得出来たら,あとは,組み立てるだけです。
「最初だけ」のところで,VL53L1Xの初期化(initialization)を行います。
「ずっと」のところで取得できた距離をコンソールに表示します。

  VL53L1Xの動作テスト用プログラム



VL53L1Xが正しく接続されていないときは,距離測定値は0mm(0.0cm)になります。
測定対象が遠すぎて測定範囲を超えたところにあるときや,正しく測定できなかったときは,距離測定値は9999mm(999.9cm)になります。

コピペする場合は,「vl53l1x-microbit」を拡張機能に取り込んでから,次のソースコードをPythonソースとして貼り付ければ完了です。

serial.write_line("Hello")
VL53L1X.init()

def on_forever():
    serial.write_line(VL53L1X.string_distance())
basic.forever(on_forever)

6 まとめ

レーザ距離センサ(VL53L1X)を使用して,2.5m程度までの距離測定ができました。


7 レーザ距離センサの応用

サーボモータにレーザ距離センサを載せて周囲をスキャンして物体認識