Benewake LiDAR TFmini (volledige gids): 5 stappen (met afbeeldingen)
Benewake LiDAR TFmini (volledige gids): 5 stappen (met afbeeldingen)
Anonim
Benewake LiDAR TFmini (volledige gids)
Benewake LiDAR TFmini (volledige gids)
Benewake LiDAR TFmini (volledige gids)
Benewake LiDAR TFmini (volledige gids)

Beschrijving

De Benewake TFMINI Micro LIDAR-module heeft zijn unieke optische, structurele en elektronische ontwerpen. Het product heeft drie grote voordelen: lage kosten, klein volume en laag stroomverbruik.

Het ingebouwde algoritme dat is aangepast aan binnen- en buitenomgevingen kan uitstekende prestaties garanderen tegen lage kosten en in een klein volume, wat de toepassingsgebieden en scenario's van LiDAR sterk uitbreidt en een solide basis legt voor toekomstige "ogen" in de slimme tijdperk.

Specificaties:

  • Ingangsspanning: 5v
  • Gemiddeld vermogen: 0,12 W
  • Communicatieprotocol: UART (baudrate: 115200)
  • Bedrijfstemperatuur: -20℃~60℃
  • FOV: 2,3°

Dimensies

  • Maat: 42mmx15mmx16mm
  • Gewicht: 6.1g

Beperkingen

0cm-30cm "blind" bereik

Waar te kopen

  • RobotShop
  • Amazone

Dit instructable vereist dat u bekend bent met het volgende:

  • Basis elektronica
  • Handgereedschap zoals draadknippers en strippers
  • Schema's en aansluitschema's lezen
  • C/C++-programmering voor Arduino (optioneel)
  • Python-programmering voor Raspberry Pi (optioneel)

Stap 1: materiaal verzamelen

Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen
Materiaal verzamelen

Deze instructable leidt je door verschillende manieren om TFmini LiDAR te implementeren met behulp van je Windows-pc en Raspberry Pi. Elke methode heeft zijn vereisten en kan variëren op basis van uw behoeften.

**Je hebt Benewake TFmini LiDAR nodig voor elk geval (natuurlijk)**

Voor pc-gebaseerde implementatie:

  • Besturingssysteem: Windows
  • USB-TTL-converter
  • Doorverbindingsdraden

Voor implementatie op basis van Raspberry Pi:

  • Raspberry Pi
  • Doorverbindingsdraden
  • LED's (optioneel)
  • USB-TTL-converter (optioneel)
  • Broodplank (optioneel)
  • Weerstand (tussen 100-1k Ohm) (optioneel)

Stap 2: PC-gebaseerde implementatie met de Benewake-app

Pc-gebaseerde implementatie met de Benewake-app
Pc-gebaseerde implementatie met de Benewake-app
Pc-gebaseerde implementatie met de Benewake-app
Pc-gebaseerde implementatie met de Benewake-app
  1. Sluit de TFmini LiDAR aan op de USB-TTL-converter met behulp van jumper (mannelijk-vrouwelijk) draden volgens het getoonde schema
    • Rode draad 5V
    • Zwarte draad GND
    • Wit/Blauwe Draad Tx
    • Groene draad Rx
  2. Sluit USB-TTL aan op uw computer
  3. Ga naar Apparaatbeheer (Win + X) en zoek "Prolific USB-to-Serial Comm Port" onder Poorten (COM & LPT). Zorg ervoor dat Windows het apparaat herkent
  4. Download en extraheer WINCC_TF.rar
  5. Voer WINCC_TFMini.exe uit vanuit de uitgepakte bestanden
  6. Selecteer de corresponderende COM-poort in het vervolgkeuzemenu in de Benewake-app onder het kopje Seriële poort
  7. Klik VERBINDEN

Stap 3: PC-gebaseerde implementatie met Python (PySerial)

Pc-gebaseerde implementatie met Python (PySerial)
Pc-gebaseerde implementatie met Python (PySerial)
  1. Sluit de TFmini LiDAR aan op de pc met behulp van een USB-TTL-converter
  2. Download en open PC_Benewake_TFmini_LiDAR.py met Python IDLE (zorg ervoor dat PySerial en Python op uw pc zijn geïnstalleerd)
  3. Bewerk de COM-poort in de code zodat deze overeenkomt met de COM-poort van de USB-TTL-converter op uw pc (zie afbeelding)
  4. Klik op het tabblad Uitvoeren
  5. Klik op Module uitvoeren

**Zie stap 5 voor uitleg van de code

Stap 4: Op Raspberry Pi gebaseerde implementatie

Op Raspberry Pi gebaseerde implementatie
Op Raspberry Pi gebaseerde implementatie
Op Raspberry Pi gebaseerde implementatie
Op Raspberry Pi gebaseerde implementatie
Op Raspberry Pi gebaseerde implementatie
Op Raspberry Pi gebaseerde implementatie
Op Raspberry Pi gebaseerde implementatie
Op Raspberry Pi gebaseerde implementatie
  1. Sluit TFmini LiDAR aan op RPi met behulp van een USB-TTL-converter of een UART-poort met behulp van GPIO
  2. Download en open Pi_benewake_LiDAR.py met Python IDLE
  3. Als u een USB-TTL-converter met RPi gebruikt, opent u Arduino IDE. Klik op Extra -> Seriële poort en bewerk de code dienovereenkomstig. Als je de UART GPIO-poort gebruikt, schrijf dan /dev/ttyAMA0
  4. Voer de code uit

**De code kan worden gebruikt om de afstand af te drukken, maar aangezien RPi niet veel verwerkingskracht heeft, is het raadzaam een LED te laten branden als de geregistreerde afstand onder een bepaald bereik ligt (schema voor LED met RPi is bijgevoegd)

V. Waarom een USB-TTL-converter gebruiken met RPi?

RPi heeft maar één UART-poort en soms moet je een paar modules plaatsen die UART-communicatie vereisen. USB-TTL biedt een extra UART-poort voor RPi, waardoor we meer dan één UART-apparaat (zoals twee of meer TFmini LiDAR) op RPi kunnen aansluiten.

Stap 5: Over de code

Over de code
Over de code

De code is op te delen in drie delen:

  • Verbinding tot stand brengen
  • Gegevens schrijven
  • Gegevens lezen

Verbinding tot stand brengen:

Na het importeren van de benodigde headerbestanden, brengen we een verbinding tot stand met onze TFmini LiDAR door de COM-poort, de baudrate en de verbindingstime-out te vermelden

ser = serieel. Serial('COM7', 115200, time-out = 1) #PC

ser = serial. Serial('/dev/ttyUSB1', 115200, time-out = 1) #Raspberry Pi

Gegevens schrijven:

De code kan in twee delen worden verdeeld, schrijven en ontvangen. Om gegevens te ontvangen, moet u de bepaalde opdracht doorsturen naar TFmini LiDAR (onderdeel van het initialisatieproces). In dit geval heb ik 4257020000000106 gekozen. Hoewel RPi dezelfde versie van Python gebruikt, is er een kleine verandering in de syntaxis omdat RPi geen andere gegevens dan binaire gegevens accepteert.

ser.schrijven(0x42)

ser.write(0x57) ser.write(0x02) ser.write(0x00) ser.write(0x00) ser.write(0x00) ser.write(0x01) ser.write(0x06)

Gegevens lezen:

De grafiek in de datasheet geeft ons de 'uitsplitsing' van het 9-Byte UART-bericht. De eerste twee bytes zijn frameheaders met een waarde van hex 0x59 (teken 'Y'). Ze kunnen worden gelezen en gebruikt om het begin van het UART-bericht te identificeren.

if(('Y' == ser.read()) en ('Y' == ser.read())):

Zodra het kopframe is gelezen, kunnen de volgende twee bytes, die afstandsgegevens bevatten, worden gelezen. Afstandsgegevens zijn verdeeld in twee 8-bits pakketten, Dist_L (Byte3) - Lagere 8 bits en Dist_H (Byte4) - Hogere 8 bits.

Dist_L = ser.read() #Byte3Dist_H = ser.read() #Byte4

Door Dist_H te vermenigvuldigen met 256, worden de binaire gegevens 8 naar links verschoven (gelijk aan "<< 8"). Nu kunnen de lagere 8-bits afstandsgegevens, Dist_L, eenvoudig worden toegevoegd, wat resulteert in 16-bits gegevens van Dist_Total.

Dist_Total = (ord(Dist_H) * 256) + (ord(Dist_L))

Aangezien we de 'ontcijferde' afstandswaarde bij ons hebben, kunnen de volgende vijf bytes worden genegeerd. Merk op dat de gelezen gegevens nergens worden opgeslagen.

voor i binnen bereik (0, 5):ser.read()

**Op een andere plaats zou je 'vertraging' (time.sleep in Python) kunnen vinden vóór het einde van de lus, omdat de TFmini LiDAR een werkfrequentie van 100 Hz heeft. Deze vertraging 'programmavertraging' en zal ertoe leiden dat gegevens na enige vertraging worden BIJGEWERKT. Ik geloof dat, aangezien we al wachten tot de gegevens zich opstapelen tot 9 bytes, er geen andere vertraging zou moeten zijn

#time.sleep(0.0005) #De vertraging is uitgecommentarieerd

while(ser.in_waiting >= 9):

Aanbevolen: