Daftar Isi:

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

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

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

Unit LiDAR TFmini Benewake adalah sensor LiDAR yang kecil dan sangat ringan dengan harga sekitar $50 Kanada. Dokumentasinya bagus, tapi tidak lengkap. Ini memberikan detail tentang penerimaan data dari sensor, tetapi lupa menyebutkan sinyal yang diperlukan untuk menempatkan sensor ke mode default sehingga benar-benar mengirim data. Untungnya itu ada di dokumen debugging.

Jadi inilah yang berhasil bagi saya, dan ini benar-benar perangkat yang mudah digunakan.

Saya memilih untuk menggunakan Teensy 3.5 karena memiliki beberapa port Serial HW, itu lebih dari cukup cepat untuk menerima data dan memprosesnya tanpa membiarkan data menumpuk. Hanya untuk bersenang-senang saya menggunakan perpustakaan Teensy Threading untuk memisahkan mendapatkan data dari sisa kode.

Langkah 1: Menghubungkan TFmini ke Teensy 3.5 (mirip dengan Arduino Mega)

Menghubungkan TFmini ke Teensy 3.5 (mirip dengan Arduino Mega)
Menghubungkan TFmini ke Teensy 3.5 (mirip dengan Arduino Mega)

Contoh ini memerlukan dua koneksi serial: satu ke TFmini, dan satu lagi untuk menampilkan hasil di komputer Anda. Untuk alasan ini, dan sejauh yang saya tahu, alasan ini saja, contoh khusus ini tidak akan bekerja pada apa pun di bawah Arduino Mega atau Teensy 3.x.

Karena itu, untuk aplikasi yang tidak memerlukan output serial untuk dicetak ke layar komputer, proyek yang sama harus dapat disesuaikan.

Menggunakan wire harness yang disertakan:

1) sambungkan kabel hitam ke Teensy GND (jika menggunakan sumber VDC yang berbeda, pastikan ground juga masuk ke GND di Teensy)

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

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

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

Harness kawat yang disertakan terlalu kecil untuk saya gunakan di papan roti, jadi saya memotong ujung yang berlawanan dengan TFmini, dan menyolder kabel ke papan tempat memotong roti, menambahkan konektor JST ke papan pemutus, dan membuat JST ke jumper laki-laki tali kawat.

Langkah 2: Kode untuk Menjalankannya

Gunakan kode berikut (untuk Teensy 3.5) atau unduh file terlampir:

Untuk Arduino Mega, threading kemungkinan tidak akan berfungsi. Pindahkan kode dari fungsi readLiDAR ke loop utama, dan hapus apa pun yang terkait dengan threading.

#include #include "TeensyThreads.h"

// Menggunakan kabel yang disediakan:

// - Hitam = GND (terhubung ke GND) // - Merah = 5V (4,5 - 6,0V) (terhubung ke Vin pada Teensy 3.5, atau 5V pada Arduino) // - Putih = TFmini RX (alias terhubung ke mikrokontroler TX, pin1 pada Teensy 3.5) // - Hijau = TFmini TX (alias terhubung ke mikrokontroler RX, pin0 pada Teensy 3.5) // CATATAN: untuk sketsa ini Anda memerlukan mikrokontroler dengan port serial tambahan di luar yang terhubung ke kabel USB / / Ini termasuk Arduino MEGA (gunakan Serial1), Teensy (3.x) (gunakan salah satu koneksi Serial HW yang tersedia)

volatile int liDARval = 0;

batal bacaLiDAR(){

// Format Data untuk Benewake TFmini // =============================== // Total 9 byte per pesan: // 1) 0x59 // 2) 0x59 // 3) Dist_L (rendah 8bit) // 4) Dist_H (tinggi 8bit) // 5) Strength_L (rendah 8bit) // 6) Strength_H (tinggi 8bit) // 7) Byte yang dicadangkan // 8) Tingkat kualitas sinyal asli // 9) Bit paritas checksum (rendah 8bit), Checksum = Byte1 + Byte2 +…+Byte8. Ini hanya 8bit rendah while(1){ // Teruskan selamanya while(Serial1.available()>=9) // Ketika setidaknya 9 byte data tersedia (jumlah byte yang diharapkan untuk 1 sinyal), maka read { if((0x59 == Serial1.read()) && (0x59 == Serial1.read())) // byte 1 dan byte 2 { unsigned int t1 = Serial1.read(); // byte 3 = Dist_L unsigned int t2 = Serial1.read(); // byte 4 = Jarak_H t2 <<= 8; t2 += t1; liDARval = t2; t1 = Serial1.read(); // byte 5 = Strength_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 } } } }

batalkan pengaturan()

{ Serial1.begin(115200); // Serial HW untuk TFmini Serial.begin(115200); // Output serial melalui USB ke penundaan komputer (100); // Beri sedikit waktu untuk memulai // Atur ke mode Output Standar 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 untuk membaca input serial dari TFmini threads.addThread(readLiDAR); }

lingkaran kosong()

{ penundaan (10); // Tidak ingin membaca terlalu sering sebagai sampel TFmini pada 100Hz Serial.println(liDARval); }

Langkah 3: Menggunakan Arduino IDE Lihat Hasil di Serial Plotter

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

Anda dapat menggunakan metode apa pun yang Anda suka, tetapi IDE Arduino akan memplot hasilnya dengan baik.

Hubungkan ke Teensy, dan buka Serial Monitor. Pastikan Baudrate diatur ke 115200.

Direkomendasikan: