SPMOD - TOF

概述

SPMOD_TOF(TOF 模块) 采用 VL53L0X 模块。

SPMOD - TOF 介绍

  • 采用 Sipeed-SPMOD 接口(2.54mm * 8PIN 排针),统一 MaixPy 开发板接口
  • 利用SP-MOD I2C 和 TOF 模块通讯
  • ToF模块:VL53L0X模块是一个I2C接口,长距离单点飞行时间测定(ToF)模块,它具有高性能和可靠性
  • 最远测量距离4000mm,最高50Hz的测量刷新率。典型前方测量角度27°
  • 可选配红色激光器瞄准头,通过XSHUT引脚控制激光器开关
  • 模块尺寸:25.0*10*3.15mm

VL53L0X 介绍

VL53L0X 功能特性:
测量距离 最大 4000mm(4m)
工作刷新率 50Hz
测量角度(正面) 27°
通信接口 I2C
工作电压 2.6V~3.5V (选用红色激光时: 2.8V~3.3V)
工作状态电流 18mA (选用红色激光时: 20mA)
工作温度 -40℃ - 80℃
睡眠状态电流 5uA

SPMOD_TOF 模块引脚定义:

引脚序号 引脚名称 类型 引脚说明
1 GND G 模块电源地
2 IRQ I 模块中断输入引脚,连接至 VL53L0X 的GPIO1
3 NC NC 悬空引脚,无功能
4 SDA I/O 模块 I2C 串行数据引脚
5 3V3 V 模块电源输入正
6 NC NC 悬空引脚,无功能
7 SHT I 模块休眠&激光头控制引脚 #注释
8 SCL I 模块 I2C 串行时钟引脚

SHT 低电平时,模块休眠 &激光头关闭

  • 接线方式:
MCU:FUN(IO) SP_RFID
I2C:SDA(IO_7) SDA
NC(IO_15) NC
NC(IO_20) IRQ
NC(IO_21) NC
GPIOHS(IO_8) SHT
I2C:SCL(IO_6) SCL
2.8~3.5V 3.3V
GND GND

使用例程

  • 流程
    1. 初始化
    2. 校准(可选)
    3. 读取距离(多种模式可选)

C 示例:


  //set io mux
    fpioa_set_function(VL53L0X_SCL, FUNC_I2C0_SCLK + VL53L0X_I2C_DEVICE * 2);
    fpioa_set_function(VL53L0X_SDA, FUNC_I2C0_SDA + VL53L0X_I2C_DEVICE * 2);
    fpioa_set_function(VL53L0X_SHT, FUNC_GPIOHS0 + VL53L0X_SHT);

    gpiohs_set_drive_mode(VL53L0X_SHT, GPIO_DM_OUTPUT);

    //i2c init
    maix_i2c_init(VL53L0X_I2C_DEVICE, 7, VL53L0X_I2C_FREQ_KHZ * 1000);

    while (vl53l0x_init(&vl53l0x_dev)) {
          printf("VL53L0X init error!!!\r\n");
          msleep(500);
    }

    printf("VL53L0X init success!\r\n");

    // adjusting
    printf("VL53L0X adjusting\r\n");
    vl53l0x_calibration_test(&vl53l0x_dev);

    // get distance
    printf("VL53L0X start work\r\n");
    vl53l0x_general_test(&vl53l0x_dev);

MaixPy 例程:


    fm.register(VL53L0X_SHT, fm.fpioa.GPIOHS0, force=True)
    XSHUT = GPIO(GPIO.GPIOHS0, GPIO.OUT)

    i2c = I2C(VL53L0X_I2C_NUM, freq=VL53L0X_FREQ, scl=VL53L0X_SCL, sda=VL53L0X_SDA)

    # create obj and read distance
      tof = VL53L0X(i2c)
      while True:
      mm = tof.read()
      utime.sleep_ms(100)
      print(mm)

运行环境

语言 开发板 SDK/固件版本
C MaixCube kendryte-standalone-sdk v0.5.6
MaixPy MaixCube maixpy v0.5.1

运行结果

  • C

  • MaixPy

    • [None]

移植

修改以下参数即可适配其他 K210 开发板.

  • C
  // board_config.h
  #define VL53L0X_I2C_DEVICE 0 // i2c device number
  #define VL53L0X_I2C_FREQ_KHZ 100 // i2c frequence
  #define VL53L0X_SCL 6 // scl
  #define VL53L0X_SDA 7 // sda
  #define VL53L0X_SHT 8 // sht
  • MaixPy
  ################### config ###################
  VL53L0X_I2C_NUM = const(I2C.I2C0)
  VL53L0X_FREQ = const(100000)
  VL53L0X_SCL = const(6)
  VL53L0X_SDA = const(7)
  VL53L0X_SHT = const(8)
  ##############################################

参考设计

  • SPMOD_TOF 尺寸图:

资源链接

资源 ---
官网 www.sipeed.com
SIPEED 官方淘宝店 sipeed.taobao.com
Github https://github.com/sipeed
BBS http://bbs.sipeed.com
MaixPy 文档官网 http://maixpy.sipeed.com
Sipeed 模型平台 https://maix.sipeed.com
SDK 相关信息 https://dl.sipeed.com/MAIX/SDK
HDK 相关信息 https://dl.sipeed.com/MAIX/HDK
E-mail(技术支持和商业合作) Support@sipeed.com
telgram link https://t.me/sipeed
MaixPy AI QQ 交流群(四群) 862340358