MysteryLidar: Difference between revisions

From RevSpace
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 48: Line 48:


Example packet:
Example packet:
   55 aa 23 10 ec 59 ac f7 7f 40 cd 7f 40 cc 7f 40 cf 7f 40 c6 7f 40 bf 7f 40 b4 80 40 b9 80 40 ba 80 40 bc 80 40 ba 80 40 b5 80 40 d0 81 40 ca 81 40 c2 82 40 c2 82 40 c8 0e a0 cd 2e
  |<--    header    -->|  |<------------------------------------------------------------------data--------------------------------------------------------------------->|  angle check
   55 aa 23 10 ec 59 ac f7 7f 40 cd 7f 40 cc 7f 40 cf 7f 40 c6 7f 40 bf 7f 40 b4 80 40 b9 80 40 ba 80 40 bc 80 40 ba 80 40 b5 80 40 d0 81 40 ca 81 40 c2 82 40 c2 82 40 c8 0e a0 cd 2e


=== angle ===
=== angle ===

Latest revision as of 23:53, 3 August 2024

Project MysteryLidar
Mysterylidar.png
Aliexpress Mystery Lidar
Status In progress
Contact bertrik
Last Update 2024-08-03

Introduction

I bought a cheap lidar from AliExpress, no guarantees, no datasheets. This page is about understanding it and reverse engineering the protocol

Hardware

Has stickers with the following codes:

  • on the side of the plastic casing: data matrix HHCT3B6X9K00863
  • on the PCB: data matrix FW0251022426001437
  • next to the power/data connector: 2d bar code 20617158

Protocol

Serial bit rate is 230400 bps

From the Aliexpress page:

Baud: 230400; Packet_length=60Bytes (in every ~4ms period)

  • B0= 0x55
  • B1=0xAA
  • B2=0x23
  • B3=0x10
  • B4+B5=current resolution LSB+MSB
  • B6+B7= Start Angle of this packet LSB+MSB
  • 16x:
    • B8:B9= Distance LSB+MSB
    • B10= Quality (1 byte only) . . .
  • B56+B57= Final Angle of this packet (LSB+MSB)
  • B58+B59= CRC

The angle is encoded in steps of 1/64 degree, with a 640 offset.

Some numbers:

  • each packet is 60 bytes
  • each packet contains 16 measurements
  • each packet contains data for 10 degrees
  • there are about 35 packets per rotation
  • there are about 6 rotations per second

=> 6 rotations/s * 36 packets * 60 bytes = 12960 bytes/s

Example packet:

 |<--     header    -->|  |<------------------------------------------------------------------data--------------------------------------------------------------------->|  angle check
 55 aa 23 10 ec 59 ac f7  7f 40 cd 7f 40 cc 7f 40 cf 7f 40 c6 7f 40 bf 7f 40 b4 80 40 b9 80 40 ba 80 40 bc 80 40 ba 80 40 b5 80 40 d0 81 40 ca 81 40 c2 82 40 c2 82 40 c8  0e a0 cd 2e

angle

number encoded = 640 + 64*angle, for example

Software