İçindekiler:

Benewake TFmini - Teensy 3.5 ile Ucuz LiDAR: 3 Adım
Benewake TFmini - Teensy 3.5 ile Ucuz LiDAR: 3 Adım

Video: Benewake TFmini - Teensy 3.5 ile Ucuz LiDAR: 3 Adım

Video: Benewake TFmini - Teensy 3.5 ile Ucuz LiDAR: 3 Adım
Video: Buzzer Challenge One: Driving a Buzzer by Sinking and Sourcing Power with a Teensy 3.2 2024, Temmuz
Anonim
Benewake TFmini - Teensy 3.5 ile Ucuz LiDAR
Benewake TFmini - Teensy 3.5 ile Ucuz LiDAR

Benewake TFmini LiDAR ünitesi, yaklaşık 50 Kanada Doları için küçük, çok hafif bir LiDAR sensörüdür. Belgeler iyiydi, ancak eksikti. Sensörden veri almayla ilgili ayrıntılar sağladı, ancak verileri gerçekten göndermesi için sensörü varsayılan moda geçirmek için gereken sinyalden bahsetmeyi unuttu. Neyse ki bu hata ayıklama belgesindeydi.

Bu benim için işe yaradı ve çalışmak gerçekten kolay bir cihaz.

Birden fazla HW Seri bağlantı noktasına sahip olduğu için bir Teensy 3.5 kullanmayı seçtim, veri almak ve veri yığılmasına izin vermeden işlemek için yeterince hızlı. Sadece eğlence için, verileri almayı kodun geri kalanından ayırmak için Teensy Threading kitaplığını kullandım.

Adım 1: TFmini'yi Teensy 3.5'e bağlama (Arduino Mega için benzer)

TFmini'yi Teensy 3.5'e bağlama (Arduino Mega için benzer)
TFmini'yi Teensy 3.5'e bağlama (Arduino Mega için benzer)

Bu örnek iki seri bağlantı gerektirir: biri TFmini'ye, diğeri ise sonuçları bilgisayarınızda görüntülemek için. Bu nedenle ve anladığım kadarıyla sadece bu nedenle, bu özel örnek Arduino Mega veya Teensy 3.x'in altındaki hiçbir şeyde çalışmayacaktır.

Bununla birlikte, bilgisayar ekranına yazdırmak için seri çıktı gerektirmeyen uygulamalar için aynı proje uyarlanabilir olmalıdır.

Birlikte verilen kablo demetini kullanarak:

1) siyah kabloyu Teensy GND'ye bağlayın (farklı VDC kaynağı kullanıyorsanız, Teensy'de toprağın da GND'ye gittiğinden emin olun)

2) kırmızı kabloyu Teensy Vin'e (veya 5VDC kaynağına) bağlayın

3) beyaz kabloyu (TFmini RX) Teensy (Serial1 TX) üzerindeki pin 1'e bağlayın

4) yeşil kabloyu (TFmini TX) Teensy'deki (Seri RX) pin 0'a bağlayın

Dahil edilen kablo demeti ekmek tahtası üzerinde çalışmak için çok küçüktü, bu yüzden TFmini'nin karşısındaki ucu kestim ve kabloları bir devre tahtasına lehimledim, panoya bir JST konektörü ekledim ve bir JST'den erkek jumper'a yaptım kablo demeti.

Adım 2: Çalıştırmak için Kod

Aşağıdaki kodu kullanın (Teensy 3.5 için) veya ekli dosyayı indirin:

Arduino Mega için threading muhtemelen çalışmayacaktır. Kodu readLiDAR işlevinden ana döngüye taşıyın ve iş parçacığı ile ilgili her şeyi kaldırın.

#include #include "TeensyThreads.h"

// Birlikte verilen kabloyu kullanarak:

// - Siyah = GND (GND'ye bağlı) // - Kırmızı = 5V (4,5 - 6,0V) (Teensy 3.5'te Vin'e veya Arduino'da 5V'a bağlı) // - Beyaz = TFmini RX (diğer bir deyişle mikrodenetleyici TX'e bağlanın), Teensy 3.5'te pin1) // - Yeşil = TFmini TX (diğer adıyla mikrodenetleyici RX'e bağlan, Teensy 3.5'te pin0) // NOT: Bu çizim için USB kablosuna bağlı olanın ötesinde ek seri portlara sahip bir mikrodenetleyiciye ihtiyacınız var / / Bu, Arduino MEGA (Seri1 kullanın), Teensy (3.x) içerir (mevcut HW Seri bağlantılarından birini kullanın)

uçucu int liDARval = 0;

geçersiz readLiDAR(){

// Benewake TFmini için Veri Formatı // ============================= // Mesaj başına toplam 9 bayt: // 1) 0x59 // 2) 0x59 // 3) Dist_L (düşük 8bit) // 4) Dist_H (yüksek 8bit) // 5) Strength_L (düşük 8bit) // 6) Strength_H (yüksek 8bit) // 7) Ayrılmış baytlar // 8) Orijinal sinyal kalite derecesi // 9) Sağlama toplamı eşlik biti (düşük 8 bit), Sağlama Toplamı = Bayt1 + Bayt2 +…+Byte8. Bu sadece düşük bir 8 bittir while(1){ // Daima devam ederken while(Serial1.available()>=9) // En az 9 bayt veri mevcut olduğunda (1 sinyal için beklenen bayt sayısı), o zaman read { if((0x59 == Serial1.read()) && (0x59 == Serial1.read())) // bayt 1 ve bayt 2 { unsigned int t1 = Serial1.read(); // bayt 3 = Dist_L imzasız int t2 = Seri1.read(); // bayt 4 = Dist_H t2 <<= 8; t2 += t1; liDARval = t2; t1 = Seri1.read(); // bayt 5 = Güç_L t2 = Seri1.read(); // bayt 6 = Güç_H t2 <<= 8; t2 += t1; for(int i=0; i<3; i++)Serial1.read(); // bayt 7, 8, 9 yoksayılır } } } }

geçersiz kurulum()

{ Serial1.begin(115200); // TFmini Serial.begin için HW Seri (115200); // USB'den bilgisayara seri çıkış gecikmesi (100); // İşlerin başlaması için biraz zaman verin // Standart Çıkış moduna ayarlayın Serial1.write(0x42); Seri1.write(0x57); Seri1.write(0x02); Seri1.write(0x00); Seri1.write(0x00); Seri1.write(0x00); Seri1.write(0x01); Seri1.write(0x06); // TFmini threads.addThread(readLiDAR); }

boşluk döngüsü()

{ gecikme(10); // 100Hz Serial.println(liDARval); }

Adım 3: Seri Çizicide Arduino IDE Görünüm Sonuçlarını Kullanma

Seri Çizicide Arduino IDE Görünüm Sonuçlarını Kullanma
Seri Çizicide Arduino IDE Görünüm Sonuçlarını Kullanma

İstediğiniz yöntemi kullanabilirsiniz, ancak Arduino'nun IDE'si sonuçları güzel bir şekilde çizecektir.

Teensy'ye bağlanın ve Seri Monitör'ü açın. Baudrate'in 115200 olarak ayarlandığından emin olun.

Önerilen: