Mundarija:

Benewake TFmini - Teensy 3.5: 3 bosqichli arzon LiDAR
Benewake TFmini - Teensy 3.5: 3 bosqichli arzon LiDAR

Video: Benewake TFmini - Teensy 3.5: 3 bosqichli arzon LiDAR

Video: Benewake TFmini - Teensy 3.5: 3 bosqichli arzon LiDAR
Video: Benewake TFmini 2024, Iyul
Anonim
Benewake TFmini - Teensy 3.5 bilan arzon LiDAR
Benewake TFmini - Teensy 3.5 bilan arzon LiDAR

Benewake TFmini LiDAR bloki - kichik, juda engil LiDAR sensori, taxminan 50 dollarlik kanadalik. Hujjatlar yaxshi, lekin to'liq emas edi. U sensordan ma'lumotlarni qabul qilish bo'yicha tafsilotlarni taqdim etdi, lekin sensorni standart rejimga o'tkazish uchun zarur bo'lgan signalni eslatib qo'yishni unutdi, shunda u ma'lumotlarni yuboradi. Yaxshiyamki, bu disk raskadrovka hujjatida edi.

Bu men uchun ishlagan narsa, va u bilan ishlash juda oson.

Men Teensy 3.5 dan foydalanishni tanladim, chunki u bir nechta HW ketma -ket portlarga ega, bu ma'lumotlarni yig'ish va ularni yig'ishga ruxsat bermasdan qayta ishlash uchun etarli. O'yin -kulgi uchun men Teensy Threading kutubxonasidan foydalanib, ma'lumotlarni kodning qolgan qismidan ajratib oldim.

1 -qadam: TFmini Teensy 3.5 -ga ulash (Arduino Mega -ga o'xshash)

TFmini Teensy 3.5 -ga ulash (Arduino Mega -ga o'xshash)
TFmini Teensy 3.5 -ga ulash (Arduino Mega -ga o'xshash)

Bu misol ikkita ketma -ket ulanishni talab qiladi: biri TFmini -ga, ikkinchisi kompyuterda natijalarni ko'rsatish uchun. Shu sababdan va aytishim mumkinki, faqat shu sabab, bu alohida misol Arduino Mega yoki Teensy 3.x dan pastda ishlamaydi.

Aytish kerakki, kompyuter ekranida chop etish uchun ketma -ket chiqishni talab qilmaydigan ilovalar uchun xuddi shu loyiha moslashtirilishi kerak.

Kiritilgan simlardan foydalanish:

1) qora simni Teensy GND ga ulang (agar farqli VDC manbasidan foydalansangiz, Teensy -da GND -ga o'tishini ta'minlang)

2) qizil simni Teensy Vin ga ulang (yoki 5VDC manbai)

3) oq simni (TFmini RX) Teensy (Serial1 TX) 1 -piniga ulang.

4) yashil simni (TFmini TX) Teensy (Serial RX) 0 -piniga ulang.

Menga non taxtasida ishlash uchun juda kichik simlar joylashtirilgan edi, shuning uchun men TFmini qarshisidagi uchini kesib tashladim va simlarni non taxtasiga lehimlab qo'ydim, JST ulagichini taxtaga qo'shdim va erkaklar jumperiga JST qildim. sim jabduqlar.

2 -qadam: ishga tushirish uchun kod

Quyidagi kodni ishlating (Teensy 3.5 uchun) yoki biriktirilgan faylni yuklab oling:

Arduino Mega uchun tishli ulanish ishlamaydi. ReadLiDAR funktsiyasidan kodni asosiy tsiklga o'tkazing va ishlov berish bilan bog'liq bo'lgan narsalarni olib tashlang.

#qo'shing #"TeensyThreads.h" ni qo'shing

// Berilgan kabeldan foydalanish:

// - Qora = GND (GND ga ulangan) // - Qizil = 5V (4.5 - 6.0V) (Teinsy 3.5 -da Vin yoki Arduino -da 5V ga ulangan) // - Oq = TFmini RX (aka. TX mikrokontrolleriga ulanish), Pin1 Teensy 3.5 -da) // - Yashil = TFmini TX (aka. RX mikrokontrolleriga ulanish, Teensy 3.5 -dagi pin0) // QAYD: bu eskiz uchun sizga USB kabelga ulanganidan tashqari qo'shimcha ketma -ket portli mikrokontroller kerak bo'ladi. / Bunga Arduino MEGA (Serial1 -dan foydalaning), Teensy (3.x) kiradi (HW Serial -ning mavjud ulanishlaridan birini ishlating)

o'zgaruvchan int liDARval = 0;

bekor o'qishLiDAR () {

// Benewake TFmini uchun ma'lumot formati // ============================= // Bir xabar uchun 9 bayt: // 1) 0x59 // 2) 0x59 // 3) Dist_L (past 8bit) // 4) Dist_H (yuqori 8bit) // 5) Strength_L (past 8bit) // 6) Strength_H (yuqori 8bit) // 7) Zaxiralangan baytlar // 8) Signal sifatining asl darajasi // 9) Tekshirish summasining parite biti (past 8bit), Checksum = Byte1 +Byte2 +… +Byte8. Bu faqat 8 bitlik past ko'rsatkich, lekin (1) {// abadiy davom eting (Serial1.available ()> = 9) // Agar kamida 9 bayt ma'lumot mavjud bo'lsa (1 signal uchun kutilgan bayt soni), keyin o'qing {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // bayt 1 va bayt 2 {unsigned int t1 = Serial1.read (); // bayt 3 = Dist_L imzosiz int t2 = Serial1.read (); // bayt 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // bayt 5 = Strength_L t2 = Serial1.read (); // bayt 6 = Kuch_H t2 << = 8; t2 += t1; for (int i = 0; i <3; i ++) Serial1.read (); // bayt 7, 8, 9 e'tiborga olinmaydi}}}}

bo'sh o'rnatish ()

{Serial1.begin (115200); // TFmini Serial.begin uchun HW seriyasi (115200); // USB orqali kompyuterni kechiktirishga ketma -ket chiqish (100); // Ishlar boshlanishiga ozgina vaqt bering // Serial1.write (0x42) standart chiqish rejimiga o'rnating; Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // TFmini threads.addThread (readLiDAR) dan ketma -ket kirishni o'qish uchun sozlash tarmog'i; }

bo'sh halqa ()

{kechiktirish (10); // 100Hz Serial.println (liDARval) da TFmini namunalari sifatida tez -tez o'qishni xohlamang; }

3 -qadam: Arduino IDE ko'rish natijalarini ketma -ket Plotterda ishlatish

Arduino IDE natijalarini ketma -ket Plotterda ko'rish
Arduino IDE natijalarini ketma -ket Plotterda ko'rish

Siz xohlagan usuldan foydalanishingiz mumkin, lekin Arduino IDE natijalarni yaxshi tuzadi.

Teensy -ga ulaning va Serial monitorni oching. Baudrate 115200 ga o'rnatilganligiga ishonch hosil qiling.

Tavsiya: