Difference between revisions of "TOF Laser Range Sensor (B)"

From Waveshare Wiki
Jump to: navigation, search
Line 27: Line 27:
 
===Software===
 
===Software===
 
*[https://www.waveshare.com/w/upload/2/23/Waveshare_TOFAssistant.zip TOF Assistant PC Assistant (Windows 7/10 64-bit machine)]
 
*[https://www.waveshare.com/w/upload/2/23/Waveshare_TOFAssistant.zip TOF Assistant PC Assistant (Windows 7/10 64-bit machine)]
*[[File:TOFAssistant4.2.3.2_x86.zip|TOF Assistant PC Assistant (Windows 7/10 32-bit machine)]]
+
*[https://www.waveshare.com/w/upload/e/e4/TOFAssistant4.2.3.2_x86.zip TOF Assistant PC Assistant (Windows 7/10 32-bit machine)]
 
</div>
 
</div>
 
<div class="tabbertab" title="FAQ">
 
<div class="tabbertab" title="FAQ">

Revision as of 06:19, 5 January 2022

TOF Laser Range Sensor (B)
TOF Laser Range Sensor B

VL53L1X Distance Sensor
{{{name2}}}

{{{name3}}}

{{{name4}}}

{{{name5}}}

Onboard Interfaces
CAN UART

Introduction

The TOF Laser Range Sensor (B) is a TOF-based (time of flight) laser ranging sensor with an embedded MCU and ranging algorithm, which is capable of offering up to 15m measuring range, ±2% accuracy, and 1mm resolution. It supports UART or I2C communication bus, features a longer measuring distance and higher light interference resistance capability due to its ultra-narrow FOV, suitable for either indoor or outdoor conditions.
This sensor can be widely used in applications like common distance measuring, robot obstacle avoidance/route planning, as well as drone altitude setting/ceiling detection, and more...

Specification

Typical measuring range 0.10 ~ 15.0m
Typical measuring accuracy 0.10 ~ 2m ±2cm; 2 ~ 15m ±2%
Resolution 1mm
Wavelength 750 ~ 830nm, compliant with IEC 60825-1:2014 version 3 Class2 standard
Field of view (FOV) 1° ~ 2°
Communication interface UART (3.3V TTL signal level)
I2C (cascading support, the slave address is 0x08+module ID)
Baudrate UART: 115.2Kbps ~ 3000Kbps (921.6Kbps by default)
I2C: up to 400Kbps
Cascade support up to 8x cascades via I2C
Power supply 3.7 ~ 5.2V (reverse-proof)
Power consumption 610mW (UART active output, 5.0V power supply, 122mA current)
Weight 7.7g
Operating temperature -10°C ~ 60°C
Dimensions 22.7 × 28 × 13.6mm (L × W × H)

Applications

  • Unmanned aerial vehicle height setting,ceiling detection
  • Robot obstacle avoidance
  • Measuring and detecting
  • Intelligent gesture control
  • 1-dimension gesture identification

Technology Overview

TOF is one absolute distance detecting technology, that is the sensor emits the near-infrared light to be debugged, and it will reflect after encountering the object. The sensor calculates the distance of the subject being photographed by calculating the time difference or phase difference for the emission and reflection of light so as to produce depth information. Compared with the binocular plan and 3D structural light plan, TOF has the advantages of long working distance, wide application scenarios, and high precision of long-distance, etc. Therefore, it is always applied to personnel proximity detection, robot obstacle avoidance, camera automatic focusing, etc. The near-infrared light coming from the sunlight in the outdoor environment will generate an impact on the measuring effect of the module.

TOF-Laser-Range-Sensor-work.jpg

Function description

【ID】

  • ID is one variable set up for distinguishing the different sensors, which is used to identify each sensor during the cascade connection.

【Interface & Baudrate】

TOFSense supports two communication modes with configurations are UART, I2C and I/O .

UART

The communication baud rate setting range is as follows:

UART Baud Rate Note
115200,230400,460800,921600,1000000,1200000,2000000,3000000 Baud Rate is 921600 in default

Interface data output mode setting:

  • Active Output:
    • The active output mode can only be used with a single module. In this mode, the module actively outputs measurement information at a frequency of 50 Hz, the format of output data is based on the NLink_TOFSense_Frame0 protocol.
    • Users can connect the Sensor to Windows PC by USB to TTL module and configure the module by Waveshare TOFAssistant software. Just like the picture below. You need to click the "Write Parameter" button to save the setting and don't forget to check them by "Read Parameter".
TOF-B-UART-Active-inquire.jpg
  • Query Output:
    • The query output mode can be used in a single module. In this mode, the controller sends a query command containing the module ID to the desired query module, and the module can output one frame of measurement information. The query command is based on NLink_TOFSense _Read_Frame0 protocol, and the output data from module is based on NLink_TOFSense_Frame0 protocol.
TOF-B-UART-Inquire.jpg

I2C

  • The baudrate rate
I2C baudate Description
Max 400KHz Max 4000KHz, it is defined by the host device
  • I2C address
I2C address Description 0x08 ~ 0x77 The default address is 0x08 (7 bits), the slaver address of the module is 0x08 + ID, you can change the device address by modifying the module ID. Please take care of offset and the behavior bit while communicating. for example, if the device address is 0x08, if you need to write data, you need to add the write bit and the byte sent should be 0x10, if you need to read data, you need to add the read bit and the byte sent should be 0x11.
In the I2C communication mode, the controller sends a reading frame to the expected query module of the specified slave address, and then the information such as the distance of the module can be obtained. In addition, various parameters such as the output mode of the module can also be changed through I2C communication. The reading frame and write frame format follow the protocol NLink_TOFSense_IIC_Frame0. You can connect the sensor to the PC by USB to the TTL module and change the device address (0x08 + ID, the ID should in the range 0 ~111) by the Waveshare TOFAssistant software. Note that, the Waveshare ToFAssitant software can only support UART mode.
TOF-B-I2C.jpg

I/O output

  • In I/O output mode, it doesn't output distance data. The voltage of I/O is toggled when the distance is over threshold.
When the module is in UART mode, users can connect it to the Windows PC by USB to TTL module and configure the band data by the Waveshare TOFAssistant software. The distance value is converted to high and low level output through hysteresis comparison. TX/SCL and RX/SDA output complementary levels. The hysteresis comparison diagram is shown in Figure 5. After configuring the parameters, you need to click the Write Parameters button to save the parameters. Note: After switching to I/O mode, you can refer to the FAQ chapter to change back to UART mode.
For example, Band_Start and Bandwidth are both set to 500, which corresponds to 0.5 meters. When the distance measurement value is 0.3 meters, RX is high, TX is low, the distance measurement value increases to 0.8 meters, RX is high, TX is low, and when the distance measurement value exceeds 1 meter, the level is reversed and RX is low, TX is high. When the distance measurement value drops from more than 1 meter to 0.8 meters, RX is low and TX is high. When the distance measurement value drops below 0.5 meters, the level is reversed, RX is high and TX is low.
TOF-B-IO.jpg
  • The range of Band_Start, Bandwidth is 0~15000 and 0~25000
TOF-B-Bandwidth.jpg

【Distance Status】

The module can output the current distance status, the user can perform the data processing with the combination of distance status,The meaning of distance status is as follows:

Value Note
0 Measuring distance is invalid
1 Measuring distance is valid

【Signal Strength】

Indicate the strength of current return signal, and the larger this value indicates the stronger the return signal.

【Range Precision】

Indicate the precision of current signal, smaller the data, higher the prevision.

【FOV】

The field angle FOV determines the vision scope of TOFSense. The FoV of the ToF Sensor (B) is 1~2°

【Mode Switch】

If the sensor is in UART mode, users can connect it to PC and chnage it to I2C or I/O mode by the Waveshare TOFAssistant software. If the sensor is in I2C mode, users can send commands to switch the mode to UART. And users can check the FAQ chapter about how to change to UART from I/O mode.

Protocol analysis

  • The protocol is composed of Frame Header, Function Mark, Data, and Sum Check.
    • The Frame Header and Function Mark are fixed values;
    • Data is the content of the transmitted data;
    • Sum Check is the lowest byte after the addition of Frame Header, Function Mark, and Data (that is, the addition of all the previous bytes).
  • Agreement composition:
 Frame Header + Function Mark + Data + Sum Check

Note: Protocol packets follow the principle of little-endian mode, that is, the low byte is first and the high byte is last.

  • The frame:
Protocol Type Description
NLINK_TOFSENSE_FRAME0 Fixed length UART output data, contain the timestamp, distance, distance status and signal strength, etc.
NLINK_TOFSENSE_READ _FRAME0 Fixed length UART read, contain device ID
NLINK_TOFSENSE_IIC_FRAME0 Flexible length I2C data, contain distance, distance status and signal strength, etc.
  • NLink_TOFSense_Frame0:
    • Data Sources: Connect the module to the host computer and configure the UART as active output mode.
    • Raw data:
 57 00 ff 00 9e 8f 00 00 ad 08 00 00 03 00 06 41
  • Analysis table:
Data Type Length (Bytes) Hex Result
Frame Header uint8 1 57 0x57
Function Mark uint8 1 00 0x00
reserved uint8 1 ff *
id uint8 1 00 0
System_time uint32 4 9e 8f 00 00 36766ms
dis*1000 uint24 3 ad 08 00 2.221m
dis_status uint8 1 00 0
signal_strength uint16 2 03 00 3
range_precision uint8 1 06 6cm
Sum Check uint8 1 41 0x41
  • TNLink_TOFSense_Read_Frame0:
    • Data Sources: Connect the module to the host computer, configure it as UART query output mode, id is 0, send the following data through the host computer to achieve data query.
    • Raw data:
 57 00 ff 00 9e 8f 00 00 ad 08 00 00 03 00 06 41
  • Analysis table:
Data Type Length (Bytes) Hex Result
Frame Header uint8 1 57 0x57
Function Mark uint8 1 00 0x00
reserved uint8 1 ff *
id uint8 1 00 0
System_time uint32 4 9e 8f 00 00 36766ms
dis*1000 uint24 3 ad 08 00 2.221m
dis_status uint8 1 00 0
signal_strength uint16 2 03 00 3
range_precision uint8 1 06 6cm
Sum Check uint8 1 3a 0x3a
  • NLink_TOFSense_Read_Frame0:
    • Data Sources: Connect the module to the host computer, configure it as UART query output mode. Host device send cmmand to query the data
    • Raw data:
57 10 FF FF 00 FF FF 63
  • Analysis table:
Data Type Length (Bytes) Hex Result
Frame Header uint8 1 57 0x57
Function Mark uint8 1 10 0x10
reserved uint8 2 ff *
id uint8 1 00 0
reserved uint8 2 ff *
Sum Check uint8 1 63 0x63
  • NLink_TOFSense_IIC_Frame0:
    • Device Address: The sensor works as slaver device, the default device address is 0x08 (7bits), the whole device address is 0x08 + ID, user can change the device address by modifying the ID.
    • Register address: If the register is NULL, the output is 0xff by default
AD 08 00 00 03 00 FF FF
  • Analysis table:
NLink TOFSense IIC Frame.png
  • I2C communication
NLink TOFSense IIC comunication.png

NLink_TOFSense_Setting_Frame0

    • Data Sources:: Setting Commands
  • Analysis table:

TOFSense-B-Setting-Frame.png

Software

NAssistant is the accessory debug software for TOFSense with the main functions are: Debug configuration, Status display, Function application, Firmware upgrade:

  • Debug configuration: Used for configuring the relevant parameters of nodes, e.g. ID, working

mode, Baud rate etc.

  • Function application: Used for the application development, e.g. data import and export, motion

trail storage, historical trial replay etc.

  • Firmware upgrade: Used for carrying out the wired firmware upgrade for product.
  • Hardware connection reference(you also need a USB TO TTL module):

TOF-Connect.jpg

  • Software setup video:

<video type="html5">https://www.waveshare.com/w/upload/3/30/TOF-Setting.mp4</video> File:TOF-Setting.mp4

Dimensions

  • TOF-Laser-Range-Sensor-B-details-size.jpg

Work with Raspberry Pi

Enable Serial Port

Open a terminal and run the following commands:

sudo raspi-config
Choose Interfacing Options -> Serial -> No -> Yes

You need to disable the login shell and enable the hardware serial

L76X GPS Module rpi serial.png

Reboot Raspberry Pi

sudo reboot

Enable I2C Interface

Open a terminal and run the following commands:

sudo raspi-config 
Choose Interfacing Options -> I2C ->yes 

RPI open i2c.png
Reboot Raspberry Pi:

sudo reboot

Install libraries

Open a terminal and run the following commands to install libraries

sudo apt-get install update
sudo apt-get install python3-serial
sudo pip install smbus

Configure the Module

  • Connect the Sensor board to Windows PC and set the UART baud rate to 921600
  • Connect the sensor to Raspberry Pi
  • Download the example and unzip
cd 
wget https://www.waveshare.com/w/upload/0/01/TOF-Laser-Range-Sensor-B-Demo.zip
unzip TOF-Laser-Range-Sensor-B-Demo.zip
  • Run the Python codes.
cd ~/ToF Light sensor B/TOF-Laser-Range-Sensor-B-Demo/Raspberry/python
sudo python3 TOF_Laser_Range_Sensor_Demo.py
TOF Laser Range Sensor raspberry1.jpg

Working with Jetson Nano

Install libraries

Open a terminal and run the following commands to install libraries

sudo apt-get install update
sudo apt-get install python3-serial
sudo pip install smbus

Configure the Module

  • Connect the Sensor board to Windows PC and set the UART baud rate to 115200
  • Connect the Sensor to the UART pins of the Jetson Nano
  • Download the examples and run it
cd 
wget https://www.waveshare.com/w/upload/0/01/TOF-Laser-Range-Sensor-B-Demo.zip
unzip TOF-Laser-Range-Sensor-B-Demo.zip
cd TOF-Laser-Range-Sensor-B-Demo/Jetson nano/python
sudo python3 TOF_Laser_Range_Sensor_Demo.py
TOF Laser Range Sensor jetson Demo.png

Working with Arduino

  • Install Arduino IDE in your PC
  • Download the examples and unzip
  • Go into the directory of Arduino examples (..\TOF-Laser-Range-Sensor-B-Demo\Arduino\TOF_ranging_test)
  • Open the TOF_ranging_test.ino project
  • Connect the Sensor to PC and configure the UART baud rate to 115200
  • Connect the Sensor to Arduino board
TOF-Laser-Range-Sensor-Arduino-connected.jpg
  • Build and upload the examples to Arduino board
TOF-Arduino-Test.jpg
 Answer:
The module is able to used in outdoor.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
No interference. When multiple modules work at the same time, even if the infrared rays between each other cross or hit the same position, it will not affect the actual measurement.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
Each module is shipped after strict testing. If there is no data, please check whether the mode, wiring, baud rate, and other configurations are correct; for I2C mode, please check if you have to use the correct device address; for I/O mode, please check the Introduction part
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
When installing, avoid obstruction in the FOV angle. In addition, attention should be paid to the height of the ground, and similar reflective surfaces such as ground occlusion in the FOV should be avoided.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
All the interfaces of the module share the same physical interface, and the corresponding line sequence can be changed for different communication modes.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
The TOFAssistant software can only support UART mode. If you have set the Sensor to other modes, please switch it back to UART mode first.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
  • In UART mode, users can configure the module to I2C or I/O mode by the software.
  • In I2C mode, users need to send commands to the module through I2C communication to switch the mode to UART or I/O.
  • In I/O mode, you should use a USB to TTL adapter which should support 921600 baudrate.
    • Connect the TX, TX, and GND pins (do not connect the VCC now) of the adapter to the Sensor.
    • Connect the adapter to PC, open the TOFAssistant software and enter the SerialPort interface, **Configure the baud rate to 921600. Select the COM port of the adapter and click the "Connect" button.
    • In the input box, type the following commands:
54 20 00 ff 00 ff ff ff ff 00 ff ff 00 10 0e ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 7b
  • Set the sending interval time (right-bottom) to 20ms and check the Timed Send(ms) option
  • Connect the 5V pin of the adapter to the VCC pin of the Sensor
  • If the Sensor is switched to UART mode (UART data are received), you can disconnect the adapter, restart the sensor, and check.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
If the measured distance is larger than 15m, the output data is random and it will be 0 if the distance is larger than 20m
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
The module can only output one distance at a time and does not support the output of point cloud information temporarily.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
The connector is GH1.25.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
For example, if the data received is ad 08 00. Because the data is saved in little-endian mode, it should be taken as 0x0008ad, convert it to DEC mode it should be 2221, and divide with 1000 you can get the distance data 2.221m.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
{{{2}}}
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
n IIC mode, the device's SDA and SCL pins are recommended to be output in open-drain mode. At this time, a pull-up resistor is required on the bus. During communication, functions such as start, stop, read, write, and response should be programmed according to the standard IIC communication sequence. When communicating with the TOF module, refer to the NLink_TOFSense_IIC_Frame0 protocol in the user manual to read and write the registers. Pay special attention to the shift of the 7-bit slave address and increase the read/write bit to send
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
Visual C ++ Redistributable for Visual Studio 2017, if the above installation fails or shows success, but opening the assistant program still prompts that the DLL file is missing. Note, please select the patch for the computer system.
{{{3}}}
{{{4}}}

{{{5}}}


 Answer:
Please check whether the installation file is silently intercepted by the security software, please exit the security software and reinstall it. Also, run with administrator rights.
{{{3}}}
{{{4}}}

{{{5}}}


Support

If you require technical support, please go to the Support page and open a tickets.