The DTS6012M is a compact, highly integrated time‑of‑flight (dToF) distance sensor built for precision ranging up to 20 m.
Size: 21 × 15 × 7.87 mm, weight just 1.35 g
Interfaces: supports both I²C (up to 400 kb/s) and UART (up to 921,600 baud)
Range & Accuracy: ±6 cm accuracy for <6 m, ±1 % beyond; ambient light resistance up to 12 m at 100 kLux
Frame rate: 100 fps typical, up to 250 fps max
Laser wavelength: 905 nm, field of view <2°
Great for robotics, drones, obstacle avoidance, and smart devices
Supply the sensor with 3.3 V (range: 3.0–3.6 V).
Choose one interface:
I²C: Connect SDA & SCL to corresponding MCU pins.
UART: TX/RX pins; if using UART, ground the INT pin per forum reports
Ensure GND is common between sensor and MCU.
For STM32-based boards, there’s a useful open‑source C library making I²C communication and reading easy, with functions like:
DTS6012M_Init(...)
DTS6012M_StartLaser(...)
DTS6012M_GetDistance(...)
GitHub.
Adapt or write your own routines for Arduino/ESP32 if needed, using the datasheet as reference.
Initialize interface and sensor struct (e.g. with DTS6012M_Init
).
Use the start function to begin ranging.
Measure with GetDistance()
multiple times per second.
Adjust SCALING_FACTOR and OFFSET_DISTANCE if distance readings are off-center in your firmware
Optionally tweak measurement timing and algorithms to suit response speed versus accuracy.
Example setup (pseudocode overview):
DTS6012M sensor; sensor.i2c_handle = &hi2c1; // STM32 example DTS6012M_Init(&sensor, sensor.i2c_handle); DTS6012M_StartLaser(&sensor); while (1) { float dist = DTS6012M_GetDistance(&sensor); // in meters printf("Distance: %.2f m ", dist); HAL_Delay(10); // for ~100 Hz reporting }
If using UART, default baud is often 921,600, ensure proper wiring and idle state configuration. Per Reddit and forum posts, INT usually must be grounded for proper UART function Arduino Forum.
Keep the beam clean: The FoV is narrow (<2°), so debris or dirt can affect readings.
Avoid reflective glare: Although strong ambient light resistance is built in, accuracy beyond ~12 m sunlight conditions may degrade.
Use dual-target detection for overlapping objects scenarios
Drone altitude or obstacle sensing in bright conditions like outdoor landing—lightweight and responsive enough for flight control loops
Mobile robots or vacuum cleaners: integrate into SLAM or obstacle avoidance systems.
Smart environments: detect presence or distance for lighting or interface activation.
Feature | Detail |
---|---|
Supply Voltage | 3.0–3.6 V (typical 3.3 V) |
Interfaces | I²C (up to 400 kb/s) or UART |
Range | Up to 20 m (12 m typical under sunlight) |
Accuracy | ±6 cm (<6 m), ±1 % (>6 m) |
Frame Rate | 100 Hz typical, up to 250 Hz |
Size / Weight | ~21×15×7.9 mm, 1.35 g |
Field of View | <2° |
Laser Wavelength | 905 nm |
Extras | Dual-target detection, temp compensation, reflectance correction |
The DTS6012M is a remarkable blend of tiny size and powerful performance—ideal for lightweight robotics or embedded applications needing precise distance measurement. Using I²C or UART, and leveraging open‑source libraries, you can integrate it into your own projects quickly.
Take the datasheet, power it, get data, experiment with calibration—and you’ve got real‑time range sensing in your hands.
Let me know if you’d like help porting to Arduino, ESP32, Raspberry Pi—or even interfacing via Python!
Happy sensing ????