LRF1500H UART protocol and integration
LRF1500H 1500 m UAV LiDAR Distance Sensor for Pods, Traffic Safety and Security Monitoring
Typical applications: UAV pods & EO/IR payloads, Traffic safety early warning, Security monitoring.
At a glance
| Protocol family | Family B (5C, streaming) |
| Default baud | 460800 bps, 8N1 |
| Frame | 5 bytes |
| Distance unit on the wire | centimetres |
| Measurement range (datasheet) | 0.05–1,500 m (90% refl.) · 0.05–300 m |
Specification
Values come from the ERDI datasheet for this model. Where the datasheet gives a condition, it is shown.
| Parameter | Value | Condition |
|---|---|---|
| Laser wavelength | 905 nm | |
| Ranging range | 0.05–1,500 m (90% refl.) · 0.05–300 m | 10% refl. |
| Ranging accuracy | ±10 cm (<10 m) · 1% (≥10 m) | |
| Measurement frequency | 1 kHz or 50 Hz — switches automatically to match echo strength | Adaptive |
| Interface | UART / I²C | |
| Supply voltage | 9–36 V DC | |
| Dimensions | 33 × 34 × 18 mm | |
| Weight | 20 ± 2 g | |
| Laser safety class | Class 1 | |
| Operating temperature | -20 to +60 ℃ | |
| Field of view | ≈ 4 mrad | |
| Repeatability | ±5 cm (<10 m) · ±100 cm | 1,500 m |
| Ambient light immunity | 100 kLux | |
| Peak current | 100 mA | |
| Average current | 55 mA | |
| Average power consumption | 1.2 W | |
| Wire specification | 1.25 mm, 5-pin, 50 cm stranded wires | |
| Customization | Available in appearance / structure / output protocol |
Pinout and wiring
| PIN | Definition / Wire Color | User Interface |
|---|---|---|
| 1 | 9-36V (Red) | External Power + |
| 2 | Power GND (Black) | External Power - |
| 3 | Port GND (Yellow) | GND |
| 4 | TX (Green) | RX |
| 5 | RX (Blue) | TX |
Cross TX and RX (module TX to host RX), share ground, and power the module from a supply that matches the supply voltage in the specification table. See Wiring and power.
Protocol summary
- Data frame: 5 bytes,
5C <dist_lo> <dist_mid> <dist_hi> <check>, free-running. - Default baud: 460800 bps, 8 data bits, 1 stop bit, no parity.
- Distance: 3 bytes, little-endian, unit centimetres. The VB series reports millimetres and the H series centimetres, so
5C 02 11 ECis 4.354 m on a VB module and 43.54 m on an H module. - Out-of-range marker: the module outputs 16777215 when there is no valid target. Treat it as no target, not as a distance.
- Checksum: bitwise inverse of the 8-bit sum of all bytes between the header and the check byte.
The full frame description is in Family B protocol. Try it without installing anything in the browser serial monitor.
Code examples
- Python
- Arduino
- ESPHome
- ROS 2
pip install erdi-lrf # PyPI, MIT
erdi-lrf --port /dev/ttyUSB0 --model LRF1500H stream --count 20
from erdi_lrf import ErdiLRF
# COM3 on Windows, /dev/ttyUSB0 or /dev/serial0 on Linux
with ErdiLRF("/dev/ttyUSB0", "LRF1500H") as lrf:
for r in lrf.stream():
print("out of range" if r.out_of_range else f"{r.metres:.3f} m", "raw", r.raw)
#include <ErdiLRF.h>
ErdiLRF lrf(Serial1, ERDI_LRF1500H);
void setup() {
Serial.begin(115200);
Serial1.begin(erdiDefaultBaud(ERDI_LRF1500H)); // 460800 baud; ESP32: Serial1.begin(baud, SERIAL_8N1, RX_PIN, TX_PIN)
lrf.setTimeout(1000);
}
void loop() {
ErdiMeasurement m;
if (lrf.measure(&m) == ERDI_OK) {
Serial.println(m.metres, 3);
}
delay(200);
}
external_components:
- source: github://ErdiTech/erdi-lrf-home-assistant
components: [erdi_lrf]
uart:
id: lrf_uart
tx_pin: GPIO17
rx_pin: GPIO16
baud_rate: 460800
sensor:
- platform: erdi_lrf
uart_id: lrf_uart
model: LRF1500H
name: "Laser distance"
update_interval: 1s
cd ~/ros2_ws/src && git clone https://github.com/ErdiTech/erdi_lrf_driver.git
cd ~/ros2_ws && rosdep install --from-paths src --ignore-src -y && colcon build --packages-select erdi_lrf_driver
source install/setup.bash
ros2 launch erdi_lrf_driver erdi_lrf.launch.py port:=/dev/ttyUSB0 model:=LRF1500H rate:=10.0
ros2 topic echo /range
Platform status
Only rows with evidence say Verified. See the compatibility matrix for what that means and where the evidence is.
| Platform | Status | Guide |
|---|---|---|
| Python (erdi-lrf) | Untested | Python / Raspberry Pi / Jetson |
| Arduino / PlatformIO | Untested | Arduino / PlatformIO |
| ESPHome / Home Assistant | Untested | ESPHome |
| ROS 2 | Untested | ROS 2 |
| ArduPilot (Lua script) | Untested | ArduPilot |
| ArduPilot native driver | No driver yet | ArduPilot |
Known issues
- The datasheet's example frame
5C 02 11 03 ECdoes not satisfy its own checksum rule (the rule givesE9). The driver and the serial monitor use the rule. - The datasheet writes the out-of-range marker as
0xFFFF (16777215). With a 3-byte distance field the marker is 16777215. - UART logic level is not stated as a separate field for most models. Supply voltage is not the UART voltage: check the module's TX level against your host before wiring, or ask us.
Resources
- Model page with datasheet download: https://erdilrf.com/models/lrf1500h/
- Datasheet and specification page: LRF1500H datasheet and specs
- Interactive 3D view: LRF1500H 3D viewer
- STEP model: available on request, Request STEP
- Drivers and protocol notes: ErdiTech/erdi-lrf-drivers
- Questions: tommy@erdimail.com, +86 133 0819 5790