NURATEK MINIF TOF Lidar Ranging Module

import serial
import time

# Configure the serial port
ser = serial.Serial()
ser.port = '/dev/ttyUSB0'  # Replace with your actual serial port
ser.baudrate = 115200
ser.timeout = 1

try:
    ser.open()
    print("Serial port opened successfully.")
except Exception as e:
    print("Error opening serial port: ", e)
    exit()

def read_distance():
    while True:
        if ser.in_waiting > 0:
            data = ser.read(ser.in_waiting)
            buffer = data.decode('latin-1')  # Decode as Latin-1 to handle non-text bytes

            for i in range(len(buffer)):
                if buffer[i] == chr(0x20):  # Frame header
                    if i + 6 < len(buffer):  # Check if there are enough bytes for a complete frame
                        distance_str = ""
                        i += 1  # Skip frame header

                        while i < len(buffer) and buffer[i] != chr(0x2C):  # Read distance value
                            distance_str += buffer[i]
                            i += 1

                        if distance_str:
                            distance = int(distance_str)

                            if i + 1 < len(buffer) and buffer[i] == chr(0x2C) and buffer[i + 1] == chr(0x20):
                                i += 2  # Skip comma and space

                                confidence_str = ""
                                while i < len(buffer) and buffer[i] != chr(0x0A):  # Read confidence value
                                    confidence_str += buffer[i]
                                    i += 1

                                if confidence_str:
                                    confidence = int(confidence_str)

                                    print(f"Distance: {distance} mm, Confidence: {confidence}")

if __name__ == "__main__":
    try:
        read_distance()
    except KeyboardInterrupt:
        print("\nExiting...")
    finally:
        ser.close()
        print("Serial port closed.")
#include <Arduino.h>

#define UART_NUM UART_NUM_2
#define TX_PIN GPIO_NUM_17
#define RX_PIN GPIO_NUM_16

HardwareSerial mySerial(UART_NUM);

void setup() {
  Serial.begin(115200);
  mySerial.begin(115200, SERIAL_8N1, RX_PIN, TX_PIN);
}

void loop() {
  if (mySerial.available() > 0) {
    uint8_t buffer[10];
    int bytesRead = mySerial.readBytes(buffer, sizeof(buffer));

    if (bytesRead > 0) {
      for (int i = 0; i < bytesRead; i++) {
        if (buffer[i] == 0x20) { // Frame header
          if (i + 6 < bytesRead) { // Check if there are enough bytes for a complete frame
            char distanceStr[6];
            int distanceLength = 0;
            i++; // Skip frame header

            while (i < bytesRead && buffer[i] != 0x2C) { // Read distance value
              distanceStr[distanceLength++] = buffer[i];
              i++;
            }

            if (distanceLength > 0) {
              distanceStr[distanceLength] = '\0';
              int distance = atoi(distanceStr);

              i++; // Skip comma and space (0x2C and 0x20)

              char confidenceStr[3];
              int confidenceLength = 0;

              while (i < bytesRead && buffer[i] != 0x0A) { // Read confidence value
                confidenceStr[confidenceLength++] = buffer[i];
                i++;
              }

              if (confidenceLength > 0) {
                confidenceStr[confidenceLength] = '\0';
                int confidence = atoi(confidenceStr);

                Serial.print("Distance: ");
                Serial.print(distance);
                Serial.print(" mm, Confidence: ");
                Serial.print(confidence);
                Serial.println();
              }
            }
          }
        }
      }
    }
  }
}