Sommario:

Benewake TFmini - LiDAR economico con Teensy 3.5: 3 passaggi
Benewake TFmini - LiDAR economico con Teensy 3.5: 3 passaggi

Video: Benewake TFmini - LiDAR economico con Teensy 3.5: 3 passaggi

Video: Benewake TFmini - LiDAR economico con Teensy 3.5: 3 passaggi
Video: como medir distancia o detectar obstáculos con un tf mini LiDAR (ToF) Laser y arduino 2024, Novembre
Anonim
Benewake TFmini - LiDAR economico con Teensy 3.5
Benewake TFmini - LiDAR economico con Teensy 3.5

L'unità Benewake TFmini LiDAR è un sensore LiDAR piccolo e molto leggero per circa $ 50 canadesi. La documentazione era buona, ma incompleta. Ha fornito dettagli sulla ricezione dei dati dal sensore, ma ha dimenticato di menzionare il segnale necessario per mettere il sensore nella modalità predefinita in modo che invii effettivamente i dati. Fortunatamente era nel documento di debug.

Quindi questo è ciò che ha funzionato per me, ed è davvero un dispositivo facile con cui lavorare.

Ho scelto di utilizzare un Teensy 3.5 in quanto ha più porte seriali HW, è più che abbastanza veloce da ricevere dati ed elaborarli senza lasciare che i dati si accumulino. Solo per divertimento ho usato la libreria Teensy Threading per separare l'acquisizione dei dati dal resto del codice.

Passaggio 1: collegamento di TFmini a Teensy 3.5 (simile ad Arduino Mega)

Collegamento di TFmini a Teensy 3.5 (simile ad Arduino Mega)
Collegamento di TFmini a Teensy 3.5 (simile ad Arduino Mega)

Questo esempio richiede due connessioni seriali: una al TFmini e una per visualizzare i risultati sul tuo computer. Per questo motivo, e per quanto posso dire, solo per questo motivo, questo particolare esempio non funzionerà su nulla al di sotto di Arduino Mega o Teensy 3.x.

Detto questo, per le applicazioni che non richiedono l'output seriale per la stampa sullo schermo del computer, lo stesso progetto dovrebbe essere adattabile.

Utilizzando il cablaggio in dotazione:

1) collegare il filo nero a Teensy GND (se si utilizza una sorgente VDC diversa, assicurarsi che la massa vada anche a GND su Teensy)

2) collegare il filo rosso a Teensy Vin (o sorgente 5VDC)

3) collegare il filo bianco (TFmini RX) al pin 1 di Teensy (Serial1 TX)

4) collegare il filo verde (TFmini TX) al pin 0 di Teensy (Serial RX)

Il cablaggio incluso era troppo piccolo per consentirmi di lavorare su una breadboard, quindi ho tagliato l'estremità opposta al TFmini e ho saldato i fili a una breadboard, ho aggiunto un connettore JST al breakboard e ho creato un ponticello da JST a maschio cablaggio.

Passaggio 2: codice per eseguirlo

Utilizza il seguente codice (per Teensy 3.5) o scarica il file allegato:

Per Arduino Mega, il threading probabilmente non funzionerà. Sposta il codice dalla funzione readLiDAR al ciclo principale e rimuovi tutto ciò che riguarda il threading.

#include #include "TeensyThreads.h"

// Usando il cavo in dotazione:

// - Nero = GND (connesso a GND) // - Rosso = 5V (4.5 - 6.0V) (connesso a Vin su Teensy 3.5, o 5V su Arduino) // - Bianco = TFmini RX (ovvero connettersi al microcontrollore TX, pin1 su Teensy 3.5) // - Verde = TFmini TX (ovvero collegare al microcontrollore RX, pin0 su Teensy 3.5) // NOTA: per questo sketch è necessario un microcontrollore con porte seriali aggiuntive oltre a quella collegata al cavo USB / / Questo include Arduino MEGA (usa Serial1), Teensy (3.x) (usa una delle connessioni seriali HW disponibili)

volatile int liDARval = 0;

void readLiDAR(){

// Formato dati per Benewake TFmini // =============================== // 9 byte in totale per messaggio: // 1) 0x59 // 2) 0x59 // 3) Dist_L (basso 8 bit) // 4) Dist_H (alto 8 bit) // 5) Strength_L (basso 8 bit) // 6) Strength_H (alto 8 bit) // 7) Byte riservati // 8) Grado di qualità del segnale originale // 9) Bit di parità checksum (basso 8bit), Checksum = Byte1 + Byte2 +…+Byte8. Questo è solo un basso 8 bit mentre while(1){ // Continua per sempre while(Serial1.available()>=9) // Quando sono disponibili almeno 9 byte di dati (numero previsto di byte per 1 segnale), quindi read { if((0x59 == Serial1.read()) && (0x59 == Serial1.read())) // byte 1 e 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 = Serial1.read(); // byte 5 = Strength_L t2 = Serial1.read(); // byte 6 = Forza_H t2 <<= 8; t2 += t1; for(int i=0; i<3; i++)Serial1.read(); // i byte 7, 8, 9 vengono ignorati } } } }

configurazione nulla()

{ Serial1.begin(115200); // Seriale HW per TFmini Serial.begin(115200); // Ritardo uscita seriale da USB a computer (100); // Lascia un po' di tempo per iniziare // Imposta la modalità di output standard Serial1.write(0x42); Serial1.write(0x57); Serial1.write(0x02); Serial1.write(0x00); Serial1.write(0x00); Serial1.write(0x00); Serial1.write(0x01); Serial1.write(0x06); // Setup thread per leggere l'input seriale da TFmini threads.addThread(readLiDAR); }

ciclo vuoto()

{ ritardo(10); // Non voglio leggere troppo spesso come campioni TFmini a 100Hz Serial.println(liDARval); }

Passaggio 3: utilizzo dell'IDE Arduino Visualizza i risultati nel plotter seriale

Utilizzo dell'IDE Arduino Visualizza i risultati nel plotter seriale
Utilizzo dell'IDE Arduino Visualizza i risultati nel plotter seriale

Puoi usare qualsiasi metodo desideri, ma l'IDE di Arduino tramerà bene i risultati.

Connettiti a Teensy e apri Serial Monitor. Assicurati che il Baudrate sia impostato su 115200.

Consigliato: