SPMOD - TOF
2024-07-25
Overview
SPMOD_TOF(TOF module) uses VL53L0X .
SPMOD - TOF Introduction
- Using Sipeed-SPMOD interface(2.54mm * 8PIN ),unified MaixPy board interface
- Using SP-MOD I2C to communicate with TOF module
- ToF module:The VL53L0X sensor used in this module is an I2C interface and a long distance single point flight time measurement (ToF) sensor. It has high performance and high reliability,
- With the longest distance of 4m and the highest refresh rate of 50Hz
- With the red laser pointer, the laser is activated through XSHUT and connected by SP_MOD.
- Size:25.0*10*3.15mm
VL53L0X Introduction:
Features: | --- |
---|---|
Max ranging distance | 4000mm |
Refresh rate | 50Hz |
Measuring angle | 27° |
Communication Interface | I2C |
Range of working temperature | -40℃ - 80℃ |
Sleep Status of Current | 5uA |
Supply voltage of external power supply | 2.8~3.5V |
Supply current of external power supply | Depends on the working conditions of the module, usually less than 20mA |
SPMOD_TOF pin description:
Pin | Name | Type | Description | |
---|---|---|---|---|
1 | GND | G | Ground | |
2 | IRQ | I | Interrupt input pin, connected to GPIO1 of VL53L0X | |
3 | NC | NC | Not connected | |
4 | SDA | I/O | Receive data signal | |
5 | 3V3 | V | Power supply(3.3V) | |
6 | NC | NC | Not connected | |
7 | SHT | I | Xshutdown pin(active low) | |
8 | SCL | I | Transmit clock signal |
- Mode of connection:
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 |
Usage
Process
- Initialization
- Adjust(option)
- Get distance
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)
Runtime enviroments
Language | Boards | SDK/firmware version |
---|---|---|
C | MaixCube | kendryte-standalone-sdk v0.5.6 |
MaixPy | MaixCube | maixpy v0.5.1 |
Result
C
MaixPy
- [None]
Transplant
Modify the following parameters to fit other K210 boards.
- C
// board_config.h
#define VL53L0X_I2C_DEVICE 0 // i2c device number
#define VL53L0X_I2C_FREQ_KHZ 100 // i2c frequency
#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)
##############################################
Outlook
- SPMOD_TOF Size drawing:
Resource Link
Resource | --- |
---|---|
Website | www.sipeed.com |
Github | https://github.com/sipeed |
BBS | http://bbs.sipeed.com |
Wiki | http://maixpy.sipeed.com |
Sipeed model shop | https://maixhub.com/ |
SDK Relevant information | dl.sipeed.com/MAIX/SDK |
HDK Relevant information | dl.sipeed.com/MAIX/HDK |
E-mail(Technical Support and Business Cooperation) | support@sipeed.com |
Telegram link | https://t.me/sipeed |