ToFセンサー for SPRESENSE を使ってみよう!
初めに
本当は、今日のカレンダーの内容は、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は、データーシートも、昔は公開されていたのですが、
今は取得に、登録が必要になっています。
このライブラリは、その時の公開情報に基づいて作成しました。
https://github.com/Interested-In-Spresense/MM-S50MV
※かなりプリミティブなものですみません。
こちらは、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ぐらいの面での距離も計測ができるので次回はそちらを書こうかな。
投稿者の人気記事
-
Interested_Spresense
さんが
2023/12/19
に
編集
をしました。
(メッセージ: 初版)
-
Interested_Spresense
さんが
2023/12/19
に
編集
をしました。
ログインしてコメントを投稿する