LoginSignup
3
1

ToFセンサー for SPRESENSE を使ってみよう!

Last updated at Posted at 2023-12-13

初めに

本当は、今日のカレンダーの内容は、WiSUNのネタを書こうと思ったんだけど、
間に合わなくって、今回は、すでに作ってたSpresense向けのToFについて書きます。

用意するもの

SpresenseはMainボードだけで良いです。

SPRESENSEメインボード[CXD5602PWBMAIN1]
https://www.switch-science.com/catalog/3900/

Spresense向けのToFセンサーは、MM-S50V。

[ToFセンサーボード(SPRESENSE用)【MM-S50MV】
https://www.marutsu.co.jp/pc/i/1558728/)

なんと、値段が上がっていますね。

これだけです。

ブログ(元ネタ)

この記事は、以下のブログに過去に投稿したもののまとめです。

ToFセンサー for SPRESENSE を使ってみよう!
http://spresense.livedoor.blog/archives/34265597.html

Arduino向けライブラリ

MM-S50Vは、データーシートも、昔は公開されていたのですが、
今は取得に、登録が必要になっています。
このライブラリは、その時の公開情報に基づいて作成しました。

※かなりプリミティブなものですみません。

こちらは、Arduino ライブラリにも登録しているので、
ライブラリの検索すれば、ライブラリマネージャからinstallできます。

サンプルプログラム

この中の単純な距離測位のサンプルの紹介をします。
こちらは、距離を計測し、それに合わせてモジュールが持っているLEDの色を変えるものです。

examples/OneDMesure/OneDMesure.ino

※もともとサンハヤトさんが公開していたものです。

まずは、setupでの初期から、

void setup()
{
  Serial.begin(115200);
  MMS50MV.begin();

  MMS50MV.skip(256);
  delay(500);
  MMS50MV.set(MMS50MV_CMD_MODE, MMS50MV_MODE_SYNC);  // sync mode.
  delay(500);
  MMS50MV.skip(256);
  MMS50MV.sync();                                    // sync.
  MMS50MV.set(MMS50MV_CMD_MODE, MMS50MV_MODE_NOMAL); // normal mode. 
  delay(500);

  MMS50MV.set(0x10, 0); // 256frames/s
  delay(500);
  MMS50MV.skip(256);
}

デバイスは、仕様上256バイトを捨てるようになっているので、一旦、256バイト破棄した後、
同期モードにし、同期モード中にsyncで同期をとります。
その後、計測のモード(MMS50MV_MODE_NOMAL)、フレームレートを設定します。
設定後、仕様上256バイトを捨てるようになっています。

void loop()
{

  int32_t dis = MMS50MV.get();

  MMS50MV.led(ledr,ledg,ledb);
  printf("dis=%ld(mm)\n",dis);

後は、loopで、getを呼ぶと距離が取得できるので、それに合わせてLEDを光らせるだけです。
非常に簡単に使えます。

※サンハヤト提供の写真です。

その他、8x4だけど、実質4x3ぐらいの面での距離も計測ができるので次回はそちらを書こうかな。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1