Aller au contenu


Information tutoriel

  • Ajouté le: avril 24 2026 10:27
  • Date Updated: avril 24 2026 04:30
  • Lectures: 57
 


* * * * *
0 Notes

Utilisation d'un LD06 avec un Raspberry Pi pico et un anneau LED

Tutoriel qui présente comment obtenir un radar LED en utilisant un Raspberry Pi, un ld06 et un anneau de LED.

Posté par ximun on avril 24 2026 10:27

Video youtube du résultat du tutoriel

 

Installez le board manager pour la Pico.

 Capture d’écran 2026-04-24 172837.png
 
Vous devez bracher les composants comme indiqué:
Lidar ld06:
Data (fil blanc) -> GP5
CTL (fil jaune) -> GP4
GND (fil rouge) -> GND
P5V (fil bleu) -> Vbus
 
Anneau LED:
5V (fil rouge) -> Vbus
GND (fil blanc) -> GND
Di (fil vert) -> GP2
raspberry_pi_Pico-Pinout.png
 
Télechargez les librairies si ce n'est pas déjà fait Uplodez ce code: 
 
Librairie ld06
L
ibrairie Adafruit

#include <Adafruit_NeoPixel.h>
#include "ld06.h"

#define PIN_LED 2
#define NUMPIXELS 24
Adafruit_NeoPixel pixels(NUMPIXELS, PIN_LED, NEO_GRB + NEO_KHZ800);

#define RX_LIDAR 5
#define PWM_LIDAR 4
#define BAUD_RATE 230400
LD06 ld06(Serial2);

#define DIST_MIN 200
#define DIST_MAX 1000

void setup() {
  Serial.begin(115200);

  pixels.begin();
  pixels.setBrightness(50);
  pixels.show();

  pinMode(PWM_LIDAR, OUTPUT);
  digitalWrite(PWM_LIDAR, HIGH);

  Serial2.setRX(RX_LIDAR);
  Serial2.begin(BAUD_RATE);
  ld06.init();
}

void loop() {
  if (ld06.readScan()) {
    uint16_t min_distances[NUMPIXELS];
    for (int i = 0; i < NUMPIXELS; i++) {
      min_distances[i] = DIST_MAX; 
    }
    uint16_t n = ld06.getNbPointsInScan();
    for (uint16_t i = 0; i < n; i++) {
      uint16_t angle = ld06.getPoints(i)->angle;
      uint16_t distance = ld06.getPoints(i)->distance;
      if (distance > 0) {
        uint8_t sector = (uint8_t)(angle / (360.0 / NUMPIXELS));
        if (distance < min_distances[sector]) {
          min_distances[sector] = distance;
        }
      }
    }
    for (int i = 0; i < NUMPIXELS; i++) {
      uint16_t dist = constrain(min_distances[i], DIST_MIN, DIST_MAX);
      uint8_t r = map(dist, DIST_MIN, DIST_MAX, 255, 0);
      uint8_t g = map(dist, DIST_MIN, DIST_MAX, 0, 255);

      pixels.setPixelColor(i, pixels.Color(r, g, 0));
    }
    pixels.show();
  }
}

Et voilà, vous avez un radar LED!