Inhoudsopgave:

Benewake TFmini - Goedkope LiDAR met Teensy 3.5 - Ajarnpa
Benewake TFmini - Goedkope LiDAR met Teensy 3.5 - Ajarnpa

Video: Benewake TFmini - Goedkope LiDAR met Teensy 3.5 - Ajarnpa

Video: Benewake TFmini - Goedkope LiDAR met Teensy 3.5 - Ajarnpa
Video: LoRaWAN LWHD-WM420 Long-Distance Wireless Inclinometer Accuracy 0.05° 2024, Juli-
Anonim
Benewake TFmini - Voordelige LiDAR met Teensy 3.5
Benewake TFmini - Voordelige LiDAR met Teensy 3.5

De Benewake TFmini LiDAR-eenheid is een kleine, zeer lichtgewicht LiDAR-sensor voor ongeveer $ 50 Canadees. Documentatie was goed, maar onvolledig. Het gaf details over het ontvangen van gegevens van de sensor, maar vergat het signaal te vermelden dat nodig is om de sensor in de standaardmodus te zetten, zodat deze de gegevens daadwerkelijk verzendt. Gelukkig stond dat in het foutopsporingsdocument.

Dus dit is wat voor mij werkte, en het is echt een gemakkelijk apparaat om mee te werken.

Ik koos ervoor om een Teensy 3.5 te gebruiken omdat deze meerdere HW seriële poorten heeft, hij is meer dan snel genoeg om gegevens te ontvangen en te verwerken zonder dat de gegevens zich opstapelen. Gewoon voor de lol gebruikte ik de Teensy Threading-bibliotheek om het ophalen van de gegevens van de rest van de code te scheiden.

Stap 1: TFmini aansluiten op Teensy 3.5 (vergelijkbaar met Arduino Mega)

TFmini aansluiten op Teensy 3.5 (vergelijkbaar met Arduino Mega)
TFmini aansluiten op Teensy 3.5 (vergelijkbaar met Arduino Mega)

Dit voorbeeld vereist twee seriële verbindingen: één naar de TFmini en één om resultaten op uw computer weer te geven. Om deze reden, en voor zover ik weet, alleen om deze reden, werkt dit specifieke voorbeeld niet op iets onder een Arduino Mega of Teensy 3.x.

Dat gezegd hebbende, voor toepassingen die geen seriële uitvoer nodig hebben om naar een computerscherm te printen, zou hetzelfde project aanpasbaar moeten zijn.

Bij gebruik van de meegeleverde kabelboom:

1) sluit zwarte draad aan op Teensy GND (als u een verschil-VDC-bron gebruikt, zorg er dan voor dat aarde ook naar GND gaat op Teensy)

2) sluit rode draad aan op Teensy Vin (of 5VDC-bron)

3) sluit de witte draad (TFmini RX) aan op pin 1 op Teensy (Serial1 TX)

4) sluit de groene draad (TFmini TX) aan op pin 0 op Teensy (Serial RX)

De meegeleverde kabelboom was te klein voor mij om op een breadboard te werken, dus ik sneed het uiteinde tegenover de TFmini af en soldeerde de draden aan een breadboard, voegde een JST-connector toe aan het breakboard en maakte een JST naar mannelijke jumper kabelboom.

Stap 2: Code om het uit te voeren

Gebruik de volgende code (voor Teensy 3.5) of download het bijgevoegde bestand:

Voor Arduino Mega zal threading waarschijnlijk niet werken. Verplaats code van de readLiDAR-functie naar de hoofdlus en verwijder alles wat met threading te maken heeft.

#include #include "TeensyThreads.h"

// Met meegeleverde kabel:

// - Zwart = GND (verbonden met GND) // - Rood = 5V (4,5 - 6,0 V) (verbonden met Vin op Teensy 3,5 of 5V op Arduino) // - Wit = TFmini RX (ook bekend als verbinding met microcontroller TX, pin1 op Teensy 3.5) // - Groen = TFmini TX (ook bekend als aansluiten op microcontroller RX, pin0 op Teensy 3.5) // OPMERKING: voor deze schets heb je een microcontroller nodig met extra seriële poorten naast de poort die is aangesloten op de USB-kabel / / Dit omvat Arduino MEGA (gebruik Serial1), Teensy (3.x) (gebruik een van de beschikbare HW Serial-verbindingen)

vluchtig int liDARval = 0;

ongeldig leesLiDAR(){

// Gegevensformaat voor Benewake TFmini // =============================== // 9 bytes totaal per bericht: // 1) 0x59 // 2) 0x59 // 3) Dist_L (lage 8bit) // 4) Dist_H (hoge 8bit) // 5) Strength_L (lage 8bit) // 6) Strength_H (hoge 8bit) // 7) Gereserveerde bytes // 8) Oorspronkelijke signaalkwaliteitsgraad // 9) Checksum-pariteitsbit (lage 8bit), Checksum = Byte1 + Byte2 +…+Byte8. Dit is echter maar een lage 8bit while(1){ // Blijf voor altijd doorgaan (Serial1.available()>=9) // Als er ten minste 9 bytes aan gegevens beschikbaar zijn (verwacht aantal bytes voor 1 signaal), dan read {if((0x59 == Serial1.read()) && (0x59 == Serial1.read())) // byte 1 en byte 2 { unsigned int t1 = Serial1.read(); // byte 3 = Dist_L unsigned int t2 = Serial1.read (); // byte 4 = Dist_H t2 <<= 8; t2 += t1; liDARval = t2; t1 = Serie1.lezen(); // byte 5 = Strength_L t2 = Serial1.read (); // byte 6 = Strength_H t2 <<= 8; t2 += t1; for(int i=0; i<3; i++)Serial1.read(); // byte 7, 8, 9 worden genegeerd } } } }

ongeldige setup()

{ Serie1.begin(115200); // HW-serie voor TFmini Serial.begin (115200); // Seriële uitvoer via USB naar computervertraging (100); // Geef wat tijd om te starten // Stel in op standaarduitvoermodus Serial1.write (0x42); Serieel1.schrijven (0x57); Serieel1.schrijven (0x02); Serieel1.schrijven (0x00); Serieel1.schrijven (0x00); Serieel1.schrijven (0x00); Serieel1.schrijven (0x01); Serieel1.schrijven (0x06); // Setup-thread voor het lezen van seriële invoer van TFmini-threads.addThread (readLiDAR); }

lege lus()

{ vertraging(10); // Ik wil niet te vaak lezen als TFmini-samples op 100Hz Serial.println(liDARval); }

Stap 3: Arduino IDE gebruiken Bekijk resultaten in seriële plotter

Arduino IDE gebruiken Bekijk resultaten in seriële plotter
Arduino IDE gebruiken Bekijk resultaten in seriële plotter

Je kunt elke methode gebruiken die je wilt, maar Arduino's IDE zal de resultaten mooi plotten.

Maak verbinding met de Teensy en open de seriële monitor. Zorg ervoor dat de baudrate is ingesteld op 115200.

Aanbevolen: