0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ラズピコとMicroPythonでToF測距センサMTOF171000C0を動かす

Posted at

概要

秋月電子で購入できる安価な測距センサ「ToF測距センサMTOF171000C0」をMicroPythonでデータ取得するプログラムを紹介します。
ToF測距センサMTOF171000C0(以下、ToF測距センサ)はI2C通信機能とUART通信機能を有していますが、ここではI2C通信を用いてデータ取得していきます。

ToF測距センサMTOF171000C0(秋月)

ToF測距センサMTOF171000C0の性能

MTOF171000C0のアプリケーションノート(秋月)を参照して、ToF測距センサの性能を簡単に示します。

  • 一般性能
項目 パラメータ
計測形式 ToF(光の反射時間で測距)
電源電圧 3.0~3.6 [V]
通信形式 I2C、UART
計測範囲 白色板:2~120 [cm]
灰色板:2~70 [cm]
計測精度 白色板:±4 [%]
灰色板:±7 [%]
動作サイクル時間 33 [ms]
  • I2C関連
項目 パラメータ
I2Cアドレス 0x52(7bit)
I2C周波数 100 [kHz]
計測用コマンド 0xD3

実装

配線

配線例を以下に示します。下表の「ピン番号」は、Raspberry Pi Picoの各ピンに振り分けられた番号と対応しています(GPIOの番号とは違うので注意)。

MTOF171000C0のピン 接続先 ピン番号
赤(VDD) 3.3 [V] pin 36
黒(GND) GND pin 3
白(TXD) GND pin 3
茶(RXD) GND pin 3
緑(SCL) GPIO 3(I2C1 SCL) pin 5
黄(SDA) GPIO 2(I2C1 SDA) pin 4

もし複数台のToF測距センサを接続したい場合は、RXDをCS(チップセレクト)ピンとして利用できます。
使用したいセンサのRXDにLOWを印可し、それ以外のセンサのRXDにHIGHを印可することで、動作機器の切り替えが可能です。

MicroPythonプログラム

ToF測距センサから1秒おきにデータを取得するMicroPythonプログラムを紹介します。
開発環境としてはThonny IDEを使いました。

main.py
from machine import Pin, I2C
import time

i2c = I2C(id=1, scl=3, sda=2, freq=100000)

while True:
    i2c.writeto(0x52, b'0xD3')
    data_bytes = i2c.readfrom(0x52, 2) # bytes型のデータを取得
    data = data_bytes[1]<<8 | data_bytes[0] # 距離に変換[単位:mm]
    print(data, ' mm')
    time.sleep(1)

これでミリメートル単位の距離が取得出来たら成功です。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?