TOFSense-M User Manual V3.0
TOFSense-M Lidar Sensor
Languag: English
Firmware: V2.0.2
NAssistant: V4.11.0
Product Series: TOFSense-M, TOFSense-M S
Disclaimer
Document Information
Nooploop reserves the right to change product specifications without notice. As far as possible changes to functionality and specifications will be issued in product specific errata sheets or in new versions of this document. Customers are advised to check with Nooploop for the most recent updates on this product.
Life Support Policy
Nooploop products are not authorized for use in safety-critical applications (such as life support) where a failure of the Nooploop product would cause severe personal injury or death. Nooploop customers using or selling Nooploop products in such a manner do so entirely at their own risk and agree to fully indemnify Nooploop and its representatives against any damages arising out of the use of Nooploop products in such safety-critical applications.
Regulatory Approvals
The TOFSense-M series sensors, as supplied from Nooploop currently have the following laser product certifications. Users need to confirm whether these certifications are applicable according to the region where such products are used or sold. All products developed by the user incorporating the TOFSense-M series sensors must be approved by the relevant authority governing radio emissions in any given jurisdiction prior to the marketing or sale of such products in that jurisdiction and user bears all responsibility for obtaining such approval as needed from the appropriate authorities.
Certification instructions
- TOFSense-M series products comply with the Class1 standard specified in IEC 60825-1:2014 3rd edition
1. Caution – Use of controls or adjustments or performance of procedures other than those specified herein may result in hazardous radiation exposure.
2. According to IEC 60825-1:2014 Safety of laser products – Part 1:Equipment classification and requirements. - TOFSense-M series products comply with the Class 1 laser product standard specified in GB 7247.1-2012
- Attention: If control or adjustment devices are not used according to regulations, or if various steps of operation are not carried out according to regulations, it may cause harmful radiation exposure.
- According to GB 7247.1-2012 Safety of Laser Products – Part 1: Equipment Classification and Requirements.
Introduction
This document mainly introduces how to use TOFSens-M and TOFSens-M S systems, as well as the precautions that need to be taken during the usage process. You may need to refer to the following materials for a better understanding:
- TOFSense-M_Datasheet.pdf
UART Output
UART mode has two output modes: active output and query output. The two output modes can be switched by modifying the data output mode on Nassistant.
Connect TOFSense series products to NASsistant through USB to TTL module (line sequence and power supply voltage reference data manual). After successful recognition, click to enter the
settings page. After configuring the parameters, click Write Parameter button to save the parameters.
After the parameters are successfully written, the module will restart automatically. After waiting for the restart, the parameters can be read once to confirm whether the parameters are successfully written.
2.1 Active Output
UART active output mode can only be used in a single module.
Interface type is set to UART, data Output method is set to Active, and UART active output mode configuration is shown in Figure 1. After the parameter module is written and restarted, it will report data actively.
In this mode, the module outputs measurement information actively at a fixed frequency (8*8 mode 15Hz, 4*4 mode 60Hz), and the output format follows the NLink_TOFSense_M_Frame0 protocol.
2.2 Query Output
UART query output mode can be used in single module and cascading situations.
Set Interface type as UART, set Output mode as INQUIRE. The configuration of UART query output mode is shown in Figure 2. After Write Parameter module is restarted, it will no longer actively report data.
In this mode, the controller sends a query instruction containing the module ID to the expected query module, and the module can output one frame of measurement information. The query frame format follows the protocol NLink_TOFSense_Read_Frame0, and the output frame format follows the protocol NLink_TOFSense_M_Frame0.
CAN Output
CAN Output mode has two output modes: active output and query output. The two output modes can be switched by modifying the data output mode on Nassistant.
Connect TOFSense series products to NASsistant through USB to TTL module (line sequence and power supply voltage reference datasheet). After successful recognition, click to enter the settings page. After configuring the parameters, click the write parameter button to save the parameters. (If CAN or IO mode has already been switched to before, the host computer will not be able to recognize it directly, and the mode needs to be changed according to the method in FAQ.)
3.1 Active Output
CAN active output mode can be used in single module and cascading situations.
Interface type is set to CAN, data Output method is set to Active, and the CAN active output mode configuration is shown in Figure 3. After Write Parameter module is restarted, it will report data actively(After writing the parameters, the module will return to CAN mode after being powered on again, and NAssistant will be temporarily unavailable for testing, requiring the use of equipment such as a CAN analyzer).
In this mode, the module outputs measurement information actively at a frequency of 10Hz (64 frames for 8*8 mode and 16 frames for 4*4 mode, each frame outputting ranging information for one pixel), the output format follows the protocol NLink_TOFSense_CAN_Frame0.
3.2 Query Output
CAN query output mode can be used in single module and cascading situations.
Interface type is set to CAN, Data Output Method is set to INQUIRE, and CAN query output mode configuration is shown in Figure 4. After Write Parameter module is restarted, it will no longer report data actively(After writing the parameters, the module will return to CAN mode after being powered on again, and NAssistant will be temporarily unavailable for testing, requiring the use of equipment such as a CAN analyzer).
In this mode, the controller sends a query instruction containing the module ID to the expected query module, and the module can output measurement information of all pixels in the module (64 frames in8*8 mode and 16 frames in 4*4 mode). The query frame format follows the protocol NLink_TOFSense_CAN_Read_Frame0, and the output frame format follows the protocol NLink_TOFSense_CAN_Frame0.
FOV
The Field of View (FOV) parameter represents the angle covered by the module’s emitted ranging light. The module’s FOV parameter is 45° horizontally & vertically, and 65° diagonally. As shown in the figure below, the FOV area of the TOFSense-M series is a pyramid-like shape with a square base and its vertex at the emission window. When facing a sufficiently large object, the side length of the square coverage area on the measured plane can be estimated through trigonometric functions: R = L*tan45° (L: the distance between the TOFSense-M series module and the measured object).
Pixel
The module supports 64 (8*8) and 16 (4*4) pixel point outputs. The relationship between pixel points and actual objects is shown in Figure 6.
Cascade Ranging
Multiple sensors can be configured with different IDs and connected in series, and the ranging information of all sensors can be read through a single communication interface. The connection schematic is shown in Figure 7. TOFSense MS only has one communication interface, If cascading functionality is needed, users must create their own adapters.
Under cascade ranging, three methods are suitable: UART query, CAN query, and CAN active output.
Protocol Unpack
7.1 Introduction
The protocol unpacking examples in this chapter are based on the NLink protocol, and C language-based NlinkUnpack example parsing code is provided, effectively reducing user development time.
Given the TOFSense-M series product data, to represent more data with fewer bytes, we use integers to represent floating-point numbers through protocol frames. Therefore, unpacked integer data with multipliers are effectively floating-point types and need to be divided by the multipliers indicated in the protocol.
Specifically, for type int24 , we first convert them to type int32 . To maintain the sign, we use the method of left shift and then divide by 256. For example, position data represented by int24 with a multiplier of 1000 is parsed as follows:
uint8_t byte[] = {0xe6,0x0e,0x00};//Decimal value: 3.814
//uint8_t byte[] = {0xec,0xfb,0xff};//Decimal value: 1.044
int32_t temp = (int32_t)(byte[0] << 8 | byte[1] << 16 | byte[2] << 24) / 256;
float result = temp/1000.0f;
Currently, the protocol verification is mainly based on the single-byte checksum at the end of the protocol frame. Example code:
uint8_t verifyCheckSum(uint8_t *data, int32_t length){
uint8_t sum = 0;
for(int32_t i=0;i<length-1;++i){
sum += data[i];
}
return sum == data[length-1];
}
7.2 Composition
7.2.1 UART
The default UART configuration is: 8 data bits, 1 stop bit, no parity check, no flow control, and a default baud rate of 921600bps.
Each UART data frame containing distance information consists of 400/112 (8*8/4*4) bytes of hexadecimal data. Distance and other data are arranged in little-endian mode. The UART communication output protocol frame format is shown in Table 1, consisting of Frame Header, Function Mark, Data, and Sum Check.
Frame Header: Fixed as 0x57.
Function Mark: Fixed as 0x01 for output protocol frames and 0x10 for inquiry protocol frames.
Data: Data segment, The output protocol frame contains module ID, system time (System_time), and data packets for each pixel point in the order of 0~63, with each packet containing measured value (dis), distance status (dis status), and signal strength (signal strength). The inquiry protocol frame only contains the ID of the inquired module.
Sum Check: The checksum is calculated by summing all bytes from Frame Header to Data and taking the low 8 bits.
Detailed output protocol frame formats are shown in Table 2: NLink_TOFSense_M_Frame0 Analysis Table, and inquiry protocol frame formats are shown in Table 3:
NLink_TOFSense_Read_Frame0 Analysis Table.
7.2.2 CAN
CAN communication supports baud rate and ID modification, the content of the protocol is as follows:
The default baud rate is 1000000bps, the receive ID is 0x200 + module ID, and the transmit ID is fixed at 0x402.
Data: Data segment, the output protocol frame contains measured value (dis), distance status (dis status), signal strength (signal strength), and the pixel point position index (index) for this frame. The inquiry protocol frame only contains the ID of the inquired module.
Due to CAN transmission byte limitations, TOFSense-M series 8*8 (4*4) mode data is transmitted in 64 (16) frames.
Detailed output protocol frame formats are shown in Table 4: NLink_TOFSense_CAN_Frame0 parsing table, and inquiry protocol frame formats are shown in Table 5:
NLink_TOFSense_CAN_Read_Frame0 parsing table.
7.3 Example
This document uses a single-module continuous ranging scenario as an application example.
7.3.1 NLink_TOFSense_M_Frame0
Data Source: Connect the module to a host computer, configure UART for active output mode, and use the NLink_TOFSense_M_Frame0 protocol. Distance data parsing can refer to the FAQ.
Raw Data: 57 01 ff 00 03 a0 00 00 40 e0 81 07 00 9f 00 f0 43 03 00 58 00 c0 c8 03 00 55 00 90 e2 00 00 44 00 d0 84 00 00 57 00 18 79 00 00 61 00 e8 80 00 00 7a 00 90 65 00 00 8e 00 d8 d0 01 00 27 00 e8 74 02 00 28 00 00 f4 01 00 2e 00 f8 a7 00 00 39 00 50 c3 00 00 41 00 30 75 00 00 5b 00 70 94 00 00 61 00 00 7d 00 00 9b 00 30 e0 03 00 19 00 c8 79 09 00 1a 00 28 cf 0d 00 3a 00 b0 b3 00 00 20 00 30 75 00 00 31 00 60 6d 00 00 40 00 e8 80 00 00 4b 00 d0 84 00 00 71 00 40 3c 10 00 1e 00 88 b3 0f 00 24 00 20 b9 03 00 12 00 e8 26 0f 00 34 00 f0 d2 00 00 2c 00 c8 af 00 00 30 00 58 98 00 00 3a 00 f8 a7 00 00 47 00 d8 ed 11 09 1c 00 60 84 11 00 1c 00 e0 c8 10 00 21 00 d0 a1 10 00 25 00 88 90 00 00 1c 00 e0 ab 00 00 24 00 18 79 00 00 41 00 08 cf 00 00 41 00 68 47 14 ff 0b 00 c8 b4 14 00 0e 00 20 d6 13 00 11 00 d8 e1 13 00 14 00 d0 84 00 00 1d 00 f0 6c 11 00 19 00 a0 8c 00 00 47 00 90 65 00 00 50 00 88 41 22 ff 12 00 e8 f6 16 00 07 00 80 31 17 ff 0b 00 70 10 16 00 0c 00 40 9c 00 00 20 00 f8 a7 00 00 32 00 80 bb 00 00 33 00 a0 8c 00 00 50 00 90 d6 02 ff 2c 00 b0 e1 22 ff 0b 00 40 19 01 ff 10 00 d8 d6 00 ff 11 00 28 a0 00 00 25 00 e8 80 00 00 2b 00 c8 af 00 00 25 00 90 65 00 00 3c 00 ff ff ff ff ff ff 7d
7.3.2 NLink_TOFSense_Read_Frame0
Data source: Connect the module to the host computer, configure it as UART query output mode with ID set to 0. To query data, send the following bytes from the host computer.
If you need to query modules with different IDs, simply change the ID and checksum bytes accordingly. For example, module id=3, the query instruction should be 57 10 FF FF 03 FF FF 66.
Raw Data: 57 10 FF FF 00 FF FF 63
7.3.3 NLink_TOFSense_CAN_Frame0
Data source: Configure the module as CAN active output mode with ID set to 1, and connect it to the CAN receiving device.
Raw data: StdID:0x201 + Data: e0 81 07 00 9f 00 00 FF
7.3.4 NLink_TOFSense_CAN_Read_Frame0
Data source: The module is configured for CAN query output mode with an ID of 1. Connect the CAN query device, and the query device’s ID (id_s) is 2.
Raw data: StdID:0x402 + Data: FF FF FF 01 FF FF FF FF
FAQ
Q1. Can it be used outdoors (in bright light) conditions?
The module is affected by natural light. Generally speaking, the stronger the natural light, the more it will be affected, resulting in shorter ranging distance, poorer accuracy, and larger fluctuations. In strong light conditions (such as sunlight), it is generally recommended to use the module for short-range detection scenarios.
Q2. Is there interference between multiple modules?
When multiple modules are working at the same time, even if the infrared light emitted from one module crosses or hits the same position as another module, it will not affect the actual measurement. However, if two modules are at the same horizontal height and facing each other, the measurement may be affected for both of them.
Q3. Why is there no data output from TOFSense-M?
Each module has undergone strict testing before shipping. If there is no data, please first check if the mode, wiring (power supply voltage, wire sequence correctness, and whether the pins on both sides of the communication are conducting as recommended by using a multimeter to test), baud rate and other configurations are correct. For CAN output mode, please check if there is a terminal resistor(usually 120Ω).
Q4. What should be noted during installation?
If you do not want to detect the ground or other reflective surfaces, it is necessary to avoid obstructions within the FOV angle during installation. Additionally, the ground height should be taken into consideration, and it is necessary to avoid obstructions such as ground reflections within the FOV. If the installation height is close to the ground, the module can be slightly tilted upwards for installation.
Q5. Are the module's UART, CAN, and I/O the same interface?
The UART interface and the CAN interface of the module share the same physical interface. To switch between different communication modes, simply convert the corresponding wire sequence.
Q6. Why can't NAssistant recognize the module after switching to CAN mode? How to switchbetween different communication modes?
Currently, NAssistant only supports recognizing modules in UART mode. In UART mode, after successfully recognizing the module through the upper computer, you can enter the settings page to configure the module for CAN communication mode; in CAN communication mode, TOFSense-M needs to hold the button and power on the module. When the indicator light changes from fast flashing to slow flashing, release the button, and the module will forcibly enter the temporary UART mode. Then enter the settings page through the upper computer and select UART mode to write parameters; TOFSense-M S can switch back to UART mode by sending the following serial command to the module several times: 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
Q7. Does the module output the shortest distance, the longest distance, or the average distance?
The module will obtain multiple distance values within the FOV for a single measurement (64 points in 8*8 mode, 16 points in 4*4 mode) and output the distances to all points in the specified order.
Q8. How is the distance output when it is out of range?
When out of range, the distance output remains unchanged from the previous moment's value. At this time, the distance status is 255, and you can refer to the distance status indicator for judgment.
Q9. What is the reason for not being able to obtain data in CAN query mode?
First, ensure that the wire sequence between CAN devices is correct. Secondly, the TOFSense-M series ports do not include 120R matching resistors. Ensure that the query device's side resistance matches, and finally, check whether the sent query frame format meets the NLink_TOFSense_CAN_Read_Frame0 protocol, paying special attention to the correct standard frame ID.
Q10. Why can't the cascaded modules in CAN mode receive data or receive incomplete data?
Cascaded modules may experience a voltage drop. Therefore, in general use, a single line is used to connect all the modules, with the voltage decreasing for modules further down the line. If the voltage received by later modules is lower than the minimum working voltage required for CAN mode, issues such as not receiving data or incomplete data may occur. In this case, you can optimize in two ways: 1. Use a better power supply to increase the power supply capacity. 2. Use a star-shaped power supply method. For example, if you need to cascade 7 modules, first divide the power supply into 4 outputs: the first output connects to VCC and GND of module 1 and 2, the second output connects to VCC and GND of module 3 and 4, the third output connects to VCC and GND of module 5 and 6, and the fourth output connects to VCC and GND of module 7. Then connect the CAN_H and CAN_L of all 7 modules in series to the CAN bus. Testing has shown that connecting 2 modules per power supply line is the most stable. If it's a short-term test, you can connect 3 modules per power supply line.
Q11. Does the reflectivity of an object's surface affect the sensor?
Yes, the sensor's range and accuracy can be influenced by the reflectivity of the measured object. In the same environment, measurements may vary for objects with different reflectivity. Therefore, users are advised to conduct sufficient testing in the actual scene and calibrate the sensor as needed for more accurate results. Suggest comparing the test data of cardboard and the one of the actual object being tested, analyzing and compensating for and optimizing based on signal strength.
Q12.Why can't I enter UART configuration mode by pressing the button?
The function button is tested before shipping. If you cannot enter UART mode, try again. Note that the button must be pressed before powering on, and released after the light slowly flashes.
Q13.What is the serial communication terminal model used by the module? What if there is no such terminal interface on the flight controller or microcontroller?
The module uses a GH1.25 terminal. You can purchase a GH1.25 to another terminal adapter cable or cut the included GH1.25-GH1.25 cable and solder another terminal. For wire sequence, power supply voltage, and signal line voltage levels, please refer to the datasheet.
Q14.How to convert received e0 81 07 into distance value?
The data in the protocol frame is stored in little-endian mode and multiplied by a certain ratio when encoded. For example, e0 81 07 is first converted to hexadecimal data 0x0781e0, which is 492000 in decimal, and divided by 1000 to get 492 millimeters.
Q15.How is the checksum calculated?
The checksum is the sum of all previous bytes and then taking the least significant byte of the result. For example, the checksum of 55 01 00 ef 03 is 0x55+0x01+0x00+0xef+0x03=0x0148, so the checksum is 48, and the complete data for this frame is 55 01 00 ef 03 48.
Reference
[1] TOFSense-M Datasheet.pdfAbbreviation and Acronyms
Table 6: Abbreviations and Acronyms
Abbreviation | Full Title |
TOF | Time of Flight |
FOV | Field of View |
Update Log
Table 7: Update Log
Version | Firmware Version | Data | Description |
1.0 | 1.0.1 | 20211112 | 1. Published the first edition of the manual |
1.1 | 1.0.1 | 20220211 | 1. Optimized some descriptions |
1.2 | 1.0.4 | 20220924 | 1. Added authentication-related instructions 2. Optimized some descriptions |
1.3 | 1.0.4 | 20221205 | 1. Optimized some descriptions |
1.4 | 1.0.6 | 20230404 | 1. Added firmware update instructions 2. Expanded FAQ, and optimized some descriptions |
2.0 | 2.0.0 | 20230808 | 1. Expanded FAQ, optimized some descriptions 2. Fixed CAN protocol parsing dis variable scale issue |
2.1 | 2.0.2 | 20240226 | 1. Removed firmware update description 2. Added FOV description 3. Optimized protocol frame composition 4. Optimized some description |
3.0 | 2.0.2 | 20240629 | 1. Corrected bytes per frame 2. Optimized FOV illustration 3. Optimized some FAQ descriptions |
Further Information
Company: SZ Nooploop Technology Co.,Ltd.
Address: A2-218, Peihong building, No.1, Kehui Road, Science Park community, Yuehai street, Nanshan District, Shenzhen
Email: sales@nooploop.com
Tel: +86 0755-86680090
Website: www.nooploop.com
Copyright © 2024 Nooploop. All Rights Reserved.
Documents / Resources
![]() |
NOOPLOOP TOFSense-M Lidar Sensor [pdf] User Manual TOFSense-M, TOFSense-M S, TOFSense-M Lidar Sensor, TOFSense-M Sensor, Lidar Sensor, Sensor |