Spisu treści:

Benewake TFmini - Niedrogi LiDAR z Teensy 3.5: 3 kroki
Benewake TFmini - Niedrogi LiDAR z Teensy 3.5: 3 kroki

Wideo: Benewake TFmini - Niedrogi LiDAR z Teensy 3.5: 3 kroki

Wideo: Benewake TFmini - Niedrogi LiDAR z Teensy 3.5: 3 kroki
Wideo: Lidar Integrated w/ Raspberry PI 2024, Lipiec
Anonim
Benewake TFmini - Niedrogi LiDAR z Teensy 3,5
Benewake TFmini - Niedrogi LiDAR z Teensy 3,5

Jednostka Benewake TFmini LiDAR to mały, bardzo lekki czujnik LiDAR za około 50 dolarów kanadyjskich. Dokumentacja była dobra, ale niekompletna. Podał szczegółowe informacje na temat odbierania danych z czujnika, ale zapomniał wspomnieć o sygnale potrzebnym do przełączenia czujnika w tryb domyślny, aby faktycznie wysyłał dane. Na szczęście było to w dokumencie debugowania.

Więc to zadziałało dla mnie i jest to naprawdę łatwe w obsłudze urządzenie.

Wybrałem Teensy 3.5, ponieważ ma wiele portów szeregowych HW, jest wystarczająco szybki, aby odbierać dane i przetwarzać je bez nagromadzenia się danych. Dla zabawy użyłem biblioteki Teensy Threading, aby oddzielić pobieranie danych od reszty kodu.

Krok 1: Podłączanie TFmini do Teensy 3.5 (podobne do Arduino Mega)

Podłączanie TFmini do Teensy 3.5 (podobne do Arduino Mega)
Podłączanie TFmini do Teensy 3.5 (podobne do Arduino Mega)

Ten przykład wymaga dwóch połączeń szeregowych: jednego do TFmini, a drugiego do wyświetlania wyników na komputerze. Z tego powodu i o ile wiem, tylko z tego powodu, ten konkretny przykład nie zadziała na niczym poniżej Arduino Mega lub Teensy 3.x.

Biorąc to pod uwagę, w przypadku aplikacji niewymagających wyjścia szeregowego do drukowania na ekranie komputera, ten sam projekt powinien dać się dostosować.

Korzystanie z dołączonej wiązki przewodów:

1) podłącz czarny przewód do Teensy GND (jeśli używasz różnicowego źródła VDC, upewnij się, że uziemienie również przechodzi do GND na Teensy)

2) podłącz czerwony przewód do Teensy Vin (lub źródła 5VDC)

3) podłącz biały przewód (TFmini RX) do pinu 1 na Teensy (Serial1 TX)

4) podłącz zielony przewód (TFmini TX) do styku 0 na Teensy (Serial RX)

Dołączona wiązka przewodów była zbyt mała, abym mogła pracować na płytce do krojenia chleba, więc odciąłem koniec naprzeciwko TFmini i przylutowałem przewody do płytki stykowej, dodałem złącze JST do płytki stykowej i zrobiłem zworkę JST na męską wiązki przewodów.

Krok 2: Kod do uruchomienia

Użyj poniższego kodu (dla Teensy 3.5) lub pobierz załączony plik:

W przypadku Arduino Mega wątki prawdopodobnie nie będą działać. Przenieś kod z funkcji readLiDAR do pętli głównej i usuń wszystko, co dotyczy wątków.

#include #include "Nastoletnie wątki.h"

// Za pomocą dostarczonego kabla:

// - Czarny = GND (podłączony do GND) // - Czerwony = 5 V (4,5 - 6,0 V) (podłączony do Vin na Teensy 3,5 lub 5 V na Arduino) // - Biały = TFmini RX (czyli podłącz do mikrokontrolera TX, pin1 na Teensy 3.5) // - Zielony = TFmini TX (aka podłączenie do mikrokontrolera RX, pin0 na Teensy 3.5) // UWAGA: do tego szkicu potrzebny jest mikrokontroler z dodatkowymi portami szeregowymi poza tym podłączonym do kabla USB / / Obejmuje to Arduino MEGA (użyj Serial1), Teensy (3.x) (użyj jednego z dostępnych połączeń szeregowych HW)

lotny int liDARval = 0;

void przeczytajLiDAR(){

// Format danych dla Benewake TFmini // =============================== // Łącznie 9 bajtów na wiadomość: // 1) 0x59 // 2) 0x59 // 3) Dist_L (niski 8 bitów) // 4) Dist_H (wysoki 8 bitów) // 5) Strength_L (niski 8 bitów) // 6) Strength_H (wysoki 8 bitów) // 7) Zarezerwowane bajty // 8) Stopień jakości oryginalnego sygnału // 9) Bit parzystości sumy kontrolnej (mały 8 bit), Suma kontrolna = Bajt1 + Bajt2 +…+Bajt8. To jest tylko 8-bitowy chociaż while(1){ // Kontynuuj przez cały czas while(Serial1.available()>=9) // Gdy dostępnych jest co najmniej 9 bajtów danych (oczekiwana liczba bajtów na 1 sygnał), wtedy read { if((0x59 == Serial1.read()) && (0x59 == Serial1.read())) // byte 1 i byte 2 { unsigned int t1 = Serial1.read(); // bajt 3 = Dist_L unsigned int t2 = Serial1.read(); // bajt 4 = Odst_H t2 <<= 8; t2 += t1; liDARwal = t2; t1 = Serial1.odczyt(); // bajt 5 = Siła_L t2 = Serial1.read(); // bajt 6 = Siła_H t2 <<= 8; t2 += t1; for(int i=0; i<3; i++)Serial1.read(); // bajty 7, 8, 9 są ignorowane } } } }

pusta konfiguracja()

{ Numer seryjny1.rozpocznij(115200); // Serial sprzętowy dla TFmini Serial.begin(115200); // Opóźnienie wyjścia szeregowego przez USB do komputera (100); // Daj trochę czasu na rozpoczęcie działania // Ustaw tryb wyjścia standardowego Serial1.write(0x42); Serial1.write(0x57); Serial1.write(0x02); Serial1.write(0x00); Serial1.write(0x00); Serial1.write(0x00); Serial1.write(0x01); Serial1.zapis (0x06); // Konfiguracja wątku do odczytu wejścia szeregowego z TFmini threads.addThread(readLiDAR); }

pusta pętla()

{ opóźnienie(10); // Nie chcę czytać zbyt często jako próbek TFmini przy 100Hz Serial.println(liDARval); }

Krok 3: Używanie Arduino IDE Zobacz wyniki w ploterze szeregowym

Używanie Arduino IDE Zobacz wyniki w ploterze szeregowym
Używanie Arduino IDE Zobacz wyniki w ploterze szeregowym

Możesz użyć dowolnej metody, ale IDE Arduino ładnie wykreśli wyniki.

Połącz się z Teensy i otwórz Serial Monitor. Upewnij się, że szybkość transmisji jest ustawiona na 115200.

Zalecana: