Welcome to SDM18 Laser Ranging Module repository
4.Get distance information_Raspberry Pi
SDM18 and Raspberry Pi Communication
SDM18 and Raspberry Pi CommunicationSDM18 Introduction1. Experimental Preparation2. Experimental Wiring3. Experimental Steps4. Experimental Results5. Explanation of Some Important SDM18 Parameters and Default Values
SDM18 Introduction
The YDLIDAR SDM18 LiDAR (hereafter referred to as the SDM18) is a high-performance single-point LiDAR. This product utilizes the time-of-flight ranging principle and incorporates relevant optical, electrical, and algorithmic design to achieve high-precision laser distance measurement and output point cloud data at a high frame rate.
Product Features ➢ High ranging frequency, internal high sampling rate combined with filtering algorithms, resulting in highly stable data ➢ Long detection range, up to 18 meters ➢ Lightweight, approximately 1.35g ➢ Laser power meets FDA Class I safety standards
1. Experimental Preparation
SDM18 Laser Ranging Module
Raspberry Pi Series This tutorial uses a Raspberry Pi 5
2. Experimental Wiring
Note: You can solder the pin headers to the serial port adapter board yourself. The default pin headers are not included. For our testing, we cannot use pin-based communication, so we need to use a USB port. Here, we directly connect the motherboard and SDM18 via Type-C (UART baud rate 921600).
The wiring diagram is shown in the figure.

3. Experimental Steps
Install the sdm18_test.py program provided in the example on the Raspberry Pi.
After connecting the USB, enter lsusb. If the following device is recognized, the connection is successful.
Run ls /dev/ttyUSB* to see if the USB device is recognized. If it is, skip step 4. If not, proceed to step 4.
The following driver installation tutorial takes jetson as an example. It is also applicable to Raspberry PI. With our image, you can directly ignore it and run the program

Enter lsusb -t in terminal

git clone https://github.com/juliagoda/CH341SER.git cd CH341SER make -j6 sudo make install sudo modprobe ch34x
Then enter modinfo ch34x
If successful, the following message will be displayed.

You can first execute the following command to see if a device such as 'ttyUSB*' appears. If successful, continue with the following steps. If still unsuccessful, connect the USB to TTL pins (GND-->GND RXD-->TX TXD-->RX 3V3-->3.3V)
sudo sh -c 'echo "1a86 7522" > /sys/bus/usb-serial/drivers/ch34x/new_id'
x#1. Create the binding scriptsudo tee /usr/local/bin/ch34x_bind.sh <<EOFsudo modprobe ch34xecho "1a86 7522" > /sys/bus/usb-serial/drivers/ch34x/new_idEOF
# Grant execution permissionssudo chmod +x /usr/local/bin/ch34x_bind.sh
#2. Enable automatic startup via cron# Edit the cron tasksudo crontab -eAdd the following to the end of the file:
@reboot /usr/local/bin/ch34x_bind.shModify the program based on the actual device number, such as /dev/ttyUSB0
This experiment requires the Python environment and pyserial library, which you need to prepare yourself .
xxxxxxxxxxpip3 install pyserialYou need to upload the sdm18_test.py program to the Raspberry Pi in advance, then enter the following command in the terminal:
xxxxxxxxxxpython3 sdm18_test.py4. Experimental Results
After connecting the cables and communicating normally, the serial port assistant will print the measured distance information, as shown in the figure.

dis: Distance in mm
strength: Strength
5. Explanation of Some Important SDM18 Parameters and Default Values
The SDM18 interface is shown in the figure:

Default Serial Port Configuration The default baud rate of the SDM18 is 921600

Important protocol commands based on the serial port (all sent in hexadecimal format) The SDM18 defaults to idle mode upon power-up. To perform ranging, you must first issue the start ranging command.
Start ranging: A5 03 20 01 00 00 00 02 6E
Stop ranging: A5 03 20 02 00 00 00 46 6E
Protocol analysis for receiving ranging signals

Checksum Calculation This checksum uses the CRC-16-modelbus method, calculating all bytes except the check digit.
The following figure shows the checksum calculation result for the "Start Ranging" command.

Other protocols will not be explained here. Interested parties can refer to the SDM18 Development Manual.