Turinys:

„Benewake TFmini“- nebrangus „LiDAR“su „Teensy“3.5: 3 žingsniais
„Benewake TFmini“- nebrangus „LiDAR“su „Teensy“3.5: 3 žingsniais

Video: „Benewake TFmini“- nebrangus „LiDAR“su „Teensy“3.5: 3 žingsniais

Video: „Benewake TFmini“- nebrangus „LiDAR“su „Teensy“3.5: 3 žingsniais
Video: Как работает LiDAR || Интерфейс датчика расстояния TFMini-S Micro LiDAR с Arduino 2024, Liepa
Anonim
„Benewake TFmini“- nebrangus „LiDAR“su „Teensy 3.5“
„Benewake TFmini“- nebrangus „LiDAR“su „Teensy 3.5“

„Benewake TFmini LiDAR“įrenginys yra mažas, labai lengvas „LiDAR“jutiklis už maždaug 50 USD Kanadoje. Dokumentacija buvo gera, bet neišsami. Jame buvo pateikta informacija apie duomenų gavimą iš jutiklio, tačiau pamiršo paminėti signalą, reikalingą jutikliui įjungti į numatytąjį režimą, kad jis iš tikrųjų siunčia duomenis. Laimei, tai buvo derinimo dokumente.

Taigi tai man padėjo ir su juo tikrai lengva dirbti.

Aš nusprendžiau naudoti „Teensy 3.5“, nes jame yra keli HW nuoseklieji prievadai, jis yra pakankamai greitas, kad galėtų priimti duomenis ir juos apdoroti, neleisdamas kauptis duomenims. Tiesiog savo malonumui naudoju „Teensy Threading“biblioteką, kad atskirtų duomenų gavimą nuo likusio kodo.

1 veiksmas: „TFmini“prijungimas prie „Teensy 3.5“(panašus į „Arduino Mega“)

„TFmini“prijungimas prie „Teensy 3.5“(panašus į „Arduino Mega“)
„TFmini“prijungimas prie „Teensy 3.5“(panašus į „Arduino Mega“)

Šiame pavyzdyje reikalingi du nuoseklūs ryšiai: vienas prie TFmini, o kitas, kad būtų rodomi rezultatai jūsų kompiuteryje. Dėl šios priežasties ir, kiek galiu pasakyti, tik dėl šios priežasties, šis konkretus pavyzdys neveiks nieko, kas yra žemiau „Arduino Mega“ar „Teensy 3.x“.

Be to, programoms, kurioms nereikalinga serijinė išvestis spausdinti į kompiuterio ekraną, tas pats projektas turėtų būti pritaikomas.

Naudojant pridedamą laidą:

1) prijunkite juodą laidą prie „Teensy GND“(jei naudojate skirtingą VDC šaltinį, įsitikinkite, kad žemė taip pat eina į „Teensy“GND)

2) prijunkite raudoną laidą prie „Teensy Vin“(arba 5 V nuolatinės srovės šaltinio)

3) prijunkite baltą laidą (TFmini RX) prie „Teensy“(„Serial1 TX“) 1 kaiščio

4) prijunkite žalią laidą (TFmini TX) prie „Teensy“(Serial RX) kaiščio 0

Komplekte esantys laidai buvo per maži, kad galėčiau dirbti su duonos lenta, todėl nupjoviau galą priešais „TFmini“ir lituojau laidus prie duonos lentos, pridėjau JST jungtį prie pertraukos ir padariau JST prie megztinio laidai.

2 žingsnis: kodas paleisti

Naudokite šį kodą („Teensy 3.5“) arba atsisiųskite pridėtą failą:

„Arduino Mega“sriegimas greičiausiai neveiks. Perkelkite kodą iš „ReadLiDAR“funkcijos į pagrindinę kilpą ir pašalinkite viską, kas susiję su sriegiu.

#įtraukti #įtraukti „TeensyThreads.h“

// Naudojant pridedamą kabelį:

// - juoda = GND (prijungta prie GND) // - raudona = 5 V (4,5 - 6,0 V) (prijungta prie „Vin“„Teensy 3.5“arba 5 V „Arduino“) // - balta = TFmini RX (dar žinoma kaip prisijungimas prie mikrovaldiklio TX), „pin 1“„Teensy 3.5“) // - žalia = „TFmini TX“(dar žinomas kaip. prisijungti prie mikrovaldiklio RX, „pin0“, naudojant „Teensy 3.5“) // PASTABA: šiam eskizui jums reikia mikrovaldiklio su papildomais nuosekliais prievadais, esančiais ne prie USB kabelio / Tai apima „Arduino MEGA“(naudokite „Serial1“), „Teensy“(3.x) (naudokite vieną iš galimų HW serijos jungčių)

nepastovus int liDARval = 0;

void readLiDAR () {

// „Benewake TFmini“duomenų formatas // =============================== // Iš viso 9 baitai už pranešimą: // 1) 0x59 // 2) 0x59 // 3) Dist_L (mažas 8 bitų) // 4) Dist_H (didelis 8 bitų) // 5) stiprumas_L (mažas 8 bitų) // 6) stiprumas_H (didelis 8 bitų) // 7) Rezervuoti baitai // 8) Originalus signalo kokybės laipsnis // 9) Kontrolinės sumos pariteto bitas (mažas 8 bitų), Kontrolinė suma = baitas1 +baitas2 +… +baitas8. Tai tik mažas 8 bitų skaičius, nors (1) {// Tęskite visą laiką (Serial1.available ()> = 9) // Kai yra bent 9 baitai duomenų (numatomas baitų skaičius vienam signalui), tada skaityti {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // 1 baitas ir 2 baitas {unsigned int t1 = Serial1.read (); // baitas 3 = Dist_L unsigned int t2 = Serial1.read (); // baitas 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serijos1. skaitymas (); // baitas 5 = Stiprumas_L t2 = Serial1.read (); // 6 baitas = stiprumas_H t2 << = 8; t2 += t1; for (int i = 0; i <3; i ++) Serial1.read (); // ignoruojami 7, 8, 9 baitai}}}}

negaliojanti sąranka ()

{Serial1.begin (115200); // „HW Serial for TFmini Serial.begin“(115200); // Serijinis išėjimas per USB į kompiuterį vėluoja (100); // Skirkite šiek tiek laiko, kol viskas prasidės // Nustatykite standartinį išvesties režimą Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Sąrankos gija, skirta skaityti serijinę įvestį iš TFmini threads.addThread (readLiDAR); }

tuštumos kilpa ()

{uždelsimas (10); // Nenoriu skaityti per dažnai kaip TFmini pavyzdžiai 100Hz Serial.println (liDARval); }

3 žingsnis: „Arduino IDE“naudojimas Peržiūrėkite rezultatus serijos braižytuve

„Arduino IDE“naudojimas Peržiūrėkite rezultatus serijos braižytuve
„Arduino IDE“naudojimas Peržiūrėkite rezultatus serijos braižytuve

Galite naudoti bet kokį norimą metodą, tačiau „Arduino“IDE gražiai parodys rezultatus.

Prisijunkite prie „Teensy“ir atidarykite „Serial Monitor“. Įsitikinkite, kad „Baudrate“nustatyta 115200.

Rekomenduojamas: