Isi kandungan:

Benewake TFmini - LiDAR Murah Dengan Langkah-langkah Teensy 3.5: 3
Benewake TFmini - LiDAR Murah Dengan Langkah-langkah Teensy 3.5: 3

Video: Benewake TFmini - LiDAR Murah Dengan Langkah-langkah Teensy 3.5: 3

Video: Benewake TFmini - LiDAR Murah Dengan Langkah-langkah Teensy 3.5: 3
Video: Teensy Bipolar Motor Stepper Control 2024, Julai
Anonim
Benewake TFmini - LiDAR Murah Dengan Teensy 3.5
Benewake TFmini - LiDAR Murah Dengan Teensy 3.5

Unit Benewake TFmini LiDAR adalah sensor LiDAR kecil dan sangat ringan dengan harga sekitar $ 50 Kanada. Dokumentasi bagus, tetapi tidak lengkap. Ini memberikan perincian tentang penerimaan data dari sensor, tetapi lupa menyebutkan sinyal yang diperlukan untuk memasukkan sensor ke mode lalai sehingga benar-benar mengirimkan data. Nasib baik itu ada dalam dokumen debugging.

Jadi inilah yang sesuai untuk saya, dan ini adalah alat yang mudah digunakan.

Saya memilih untuk menggunakan Teensy 3.5 kerana mempunyai beberapa port Serial HW, lebih pantas daripada menerima data dan memprosesnya tanpa membiarkan data menumpuk. Hanya untuk bersenang-senang, saya menggunakan perpustakaan Teensy Threading untuk memisahkan mendapatkan data dari kod yang lain.

Langkah 1: Menyambungkan TFmini ke Teensy 3.5 (serupa dengan Arduino Mega)

Menyambungkan TFmini ke Teensy 3.5 (serupa untuk Arduino Mega)
Menyambungkan TFmini ke Teensy 3.5 (serupa untuk Arduino Mega)

Contoh ini memerlukan dua sambungan bersiri: satu ke TFmini, dan satu untuk memaparkan hasil pada komputer anda. Atas sebab ini, dan sejauh yang saya tahu, alasan ini sahaja, contoh khusus ini tidak akan berfungsi pada apa-apa di bawah Arduino Mega atau Teensy 3.x.

Yang dikatakan, untuk aplikasi yang tidak memerlukan output bersiri untuk dicetak ke skrin komputer, projek yang sama harus disesuaikan.

Menggunakan harness wayar yang disertakan:

1) sambungkan wayar hitam ke Teensy GND (jika menggunakan sumber VDC yang berbeza, pastikan tanah juga menuju ke GND pada Teensy)

2) sambungkan wayar merah ke Teensy Vin (atau sumber 5VDC)

3) sambungkan wayar putih (TFmini RX) ke pin 1 pada Teensy (Serial1 TX)

4) sambungkan wayar hijau (TFmini TX) ke pin 0 pada Teensy (Serial RX)

Harness wayar yang disertakan terlalu kecil untuk saya bekerjasama dengan papan roti, jadi saya memotong hujungnya bertentangan dengan TFmini, dan memateri wayar ke papan roti, menambah penyambung JST ke papan pemisah, dan membuat JST ke jumper lelaki abah-abah wayar.

Langkah 2: Kod untuk Menjalankannya

Gunakan kod berikut (untuk Teensy 3.5) atau muat turun fail yang dilampirkan:

Untuk Arduino Mega, threading kemungkinan tidak akan berjaya. Pindahkan kod dari fungsi readLiDAR ke gelung utama, dan alih keluar apa sahaja yang berkaitan dengan utas.

#include #include "TeensyThreads.h"

// Menggunakan kabel yang dibekalkan:

// - Hitam = GND (disambungkan ke GND) // - Merah = 5V (4.5 - 6.0V) (disambungkan ke Vin pada Teensy 3.5, atau 5V pada Arduino) // - Putih = TFmini RX (aka. Sambungkan ke mikrokontroler TX, pin1 pada Teensy 3.5) // - Hijau = TFmini TX (aka. sambungkan ke mikrokontroler RX, pin0 pada Teensy 3.5) // CATATAN: untuk lakaran ini, anda memerlukan mikrokontroler dengan port bersiri tambahan di luar yang disambungkan ke kabel USB / / Ini termasuk Arduino MEGA (gunakan Serial1), Teensy (3.x) (gunakan salah satu sambungan HW Serial yang tersedia)

int liDARval yang tidak menentu = 0;

batal bacaLiDAR () {

// Format Data untuk Benewake TFmini // =============================== // Jumlah 9 bait setiap mesej: // 1) 0x59 // 2) 0x59 // 3) Dist_L (rendah 8bit) // 4) Dist_H (tinggi 8bit) // 5) Kekuatan_L (rendah 8bit) // 6) Kekuatan_H (tinggi 8bit) // 7) Bait simpanan // 8) Tahap kualiti isyarat asal // 9) Bit paritas Checksum (8bit rendah), Checksum = Byte1 + Byte2 +… + Byte8. Ini hanya 8bit rendah walaupun (1) {// Terus buat selama-lamanya (Serial1.available ()> = 9) // Apabila sekurang-kurangnya 9 bait data tersedia (jangkaan bilangan bait untuk 1 isyarat), maka baca {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // bait 1 dan bait 2 {unsigned int t1 = Serial1.read (); // byte 3 = Dist_L unsigned int t2 = Serial1.read (); // bait 4 = Dist_H t2 << = 8; t2 + = t1; liDARval = t2; t1 = Serial1.read (); // byte 5 = Kekuatan_L t2 = Serial1.read (); // byte 6 = Kekuatan_H t2 << = 8; t2 + = t1; untuk (int i = 0; i <3; i ++) Serial1.read (); // byte 7, 8, 9 diabaikan}}}}

persediaan tidak sah ()

{Serial1.begin (115200); // HW Serial untuk TFmini Serial.begin (115200); // Keluaran bersiri melalui penundaan USB ke komputer (100); // Beri sedikit masa untuk memulakannya // Tetapkan ke mod 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); // Siapkan utas untuk membaca input bersiri dari TFmini threads.addThread (readLiDAR); }

gelung kosong ()

{kelewatan (10); // Jangan terlalu kerap membaca sebagai contoh TFmini pada 100Hz Serial.println (liDARval); }

Langkah 3: Menggunakan Arduino IDE Lihat Hasil dalam Serial Plotter

Menggunakan Hasil Arduino IDE Lihat di Serial Plotter
Menggunakan Hasil Arduino IDE Lihat di Serial Plotter

Anda boleh menggunakan kaedah apa sahaja yang anda mahukan, tetapi Arduino's IDE akan memaparkan hasilnya dengan baik.

Sambung ke Teensy, dan buka Serial Monitor. Pastikan Baudrate ditetapkan ke 115200.

Disyorkan: