LRF50H UART protocol and integration
LRF50H High-Speed 50 m LiDAR Distance Sensor for Overhead Cranes, Carriage Distance Control and Industrial Safety
Typical applications: Overhead crane positioning, Carriage distance control, Industrial safety.
At a glance
| Protocol family | Family B (5C, streaming) |
| Default baud | 460800 bps, 8N1 |
| Frame | 4 bytes |
| Distance unit on the wire | centimetres |
| Measurement range (datasheet) | 0.05–50 m (90% refl.) · 0.05–15 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–50 m (90% refl.) · 0.05–15 m | 10% refl. |
| Ranging accuracy | ±5 cm (<10 m) · 1% (≥10 m), 2σ | |
| Measurement frequency | 20 Hz–10 kHz, default 1 kHz | |
| Interface | UART | |
| Supply voltage | 9–36 V DC | |
| Dimensions | 38 × 20 × 30 mm | |
| Weight | 15 ± 2 g | |
| Laser safety class | Class 1 | |
| Operating temperature | -20 to +60 ℃ (non-condensing) | |
| Field of view | ≈ 4 mrad | |
| Repeatability | ±5 cm | |
| Ambient light immunity | 45 m | 100 kLux |
| Aiming light | 650 nm visible red, Class 2 (switchable; auto-off below -20 ℃) | |
| Peak current | 100 mA | 24 V |
| Average current | 34 mA | 24 V |
| Average power consumption | 0.8 W | |
| Wire specification | 5-pin 1.25 mm terminal (M1250V-05P), 50 cm tinned loose wire | |
| Customization | Available in appearance / structure / output protocol |
Pinout and wiring
| No. | Definition / Wire Color | User Interface |
|---|---|---|
| 1 | 9~36V (Red) | External Power + |
| 2 | GND (Black) | GND |
| 3 | 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: 4 bytes,
5C <dist_lo> <dist_hi> <check>, free-running. - Default baud: 460800 bps, 8 data bits, 1 stop bit, no parity.
- Distance: 2 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 65535 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.
| Command | Request frame |
|---|---|
| Start ranging | 5A 0A 02 02 00 F1 |
| Stop ranging | 5A 0A 02 00 00 F3 |
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 LRF50H stream --count 20
from erdi_lrf import ErdiLRF
# COM3 on Windows, /dev/ttyUSB0 or /dev/serial0 on Linux
with ErdiLRF("/dev/ttyUSB0", "LRF50H") 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_LRF50H);
void setup() {
Serial.begin(115200);
Serial1.begin(erdiDefaultBaud(ERDI_LRF50H)); // 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: LRF50H
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:=LRF50H 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) | Verified (SITL) | ArduPilot |
| ArduPilot native driver | In review (PR #34983, not merged) | ArduPilot |
Known issues
- Factory bench capture, 2026-11-06, wall at 1.9 m: 3 of 2000 frames carried a distance of 315 to 397 m with a valid checksum, far past the 50 m rating. Filter outliers in your application (median of a few readings). Capture notes.
- 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/lrf50h/
- Datasheet and specification page: LRF50H datasheet and specs
- Interactive 3D view: LRF50H 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