Satura rādītājs:

Benewake TFmini - lēts LiDAR ar Teensy 3.5: 3 soļiem
Benewake TFmini - lēts LiDAR ar Teensy 3.5: 3 soļiem

Video: Benewake TFmini - lēts LiDAR ar Teensy 3.5: 3 soļiem

Video: Benewake TFmini - lēts LiDAR ar Teensy 3.5: 3 soļiem
Video: Arducopter 4.03 and TF Mini Plus Alt Hold 2024, Jūlijs
Anonim
Benewake TFmini - lēts LiDAR ar Teensy 3.5
Benewake TFmini - lēts LiDAR ar Teensy 3.5

Benewake TFmini LiDAR iekārta ir mazs, ļoti viegls LiDAR sensors par aptuveni 50 ASV dolāriem no Kanādas. Dokumentācija bija laba, bet nepilnīga. Tas sniedza informāciju par datu saņemšanu no sensora, bet aizmirsa pieminēt signālu, kas nepieciešams, lai sensoru ieslēgtu noklusējuma režīmā, lai tas faktiski nosūtītu datus. Par laimi tas bija atkļūdošanas dokumentā.

Tātad man tas izdevās, un ar to tiešām ir viegli strādāt.

Es izvēlējos izmantot Teensy 3.5, jo tam ir vairāki HW seriālie porti, tas ir vairāk nekā pietiekami ātri, lai saņemtu datus un apstrādātu tos, neļaujot datiem sakrāties. Vienkārši prieka pēc es izmantoju Teensy Threading bibliotēku, lai nodalītu datus no pārējā koda.

1. darbība: TFmini savienošana ar Teensy 3.5 (līdzīgi Arduino Mega)

TFmini savienošana ar Teensy 3.5 (līdzīgi Arduino Mega)
TFmini savienošana ar Teensy 3.5 (līdzīgi Arduino Mega)

Šim piemēram ir nepieciešami divi sērijas savienojumi: viens ar TFmini un otrs, lai parādītu rezultātus datorā. Šī iemesla dēļ un, cik es varu pateikt, tikai šī iemesla dēļ, šis konkrētais piemērs nedarbosies ar neko zem Arduino Mega vai Teensy 3.x.

Tomēr lietojumprogrammām, kurām nav nepieciešama sērijveida izvade, lai drukātu uz datora ekrāna, vienam un tam pašam projektam jābūt pielāgojamam.

Izmantojot komplektā iekļauto vadu:

1) savienojiet melno vadu ar Teensy GND (ja izmantojat atšķirības VDC avotu, pārliecinieties, ka zeme iet arī uz GND uz Teensy)

2) savienojiet sarkano vadu ar Teensy Vin (vai 5VDC avotu)

3) pievienojiet balto vadu (TFmini RX) 1. kontaktam Teensy (Serial1 TX)

4) pievienojiet zaļo vadu (TFmini TX) 0 kontaktam Teensy (Serial RX)

Komplektā iekļautie vadi bija pārāk mazi, lai es varētu strādāt ar maizes dēli, tāpēc es nogriezu galu, kas atrodas pretī TFmini, un pielodēju vadus pie maizes dēļa, pievienoju JST savienotāju sadalījuma panelim un izveidoju JST uz džemperi vadi.

2. darbība: kods tā palaišanai

Izmantojiet šo kodu (Teensy 3.5) vai lejupielādējiet pievienoto failu:

Arduino Mega vītņošana, visticamāk, nedarbosies. Pārvietojiet kodu no funkcijas readLiDAR uz galveno cilpu un noņemiet visu, kas saistīts ar pavedienu.

#iekļaut #iekļaut "TeensyThreads.h"

// Izmantojot komplektācijā iekļauto kabeli:

// - melns = GND (savienots ar GND) // - sarkans = 5 V (4,5 - 6,0 V) (savienots ar Vin ierīcē Teensy 3,5 vai 5 V ierīcē Arduino) // - balts = TFmini RX (pazīstams arī kā savienojums ar mikrokontrolleri TX), pin1 uz Teensy 3.5) // - zaļš = TFmini TX (pazīstams arī kā savienojums ar mikrokontrolleri RX, pin0 uz modeļa Teensy 3.5) // PIEZĪME: šai skicei jums ir nepieciešams mikrokontrolleris ar papildu seriālajiem portiem, kas nav savienoti ar USB kabeli / / Tas ietver Arduino MEGA (izmantojiet Serial1), Teensy (3.x) (izmantojiet vienu no pieejamajiem HW sērijas savienojumiem)

gaistošs int liDARval = 0;

void readLiDAR () {

// Benewake TFmini datu formāts // ============================= // // kopā 9 baiti uz ziņojumu: // 1) 0x59 // 2) 0x59 // 3) Dist_L (zems 8 bitu) // 4) Dist_H (augsts 8 bitu) // 5) Stiprums_L (zems 8 bitu) // 6) Stiprums_H (augsts 8 bitu) // 7) Rezervētie baiti // 8) Sākotnējā signāla kvalitātes pakāpe // 9) Kontrolsummas paritātes bits (zems 8 bitu), Kontrolsumma = baits1 +baits2 +… +baits8. Tas ir tikai zems 8 bitu apjoms, lai gan (1) {// Turpiniet uz visiem laikiem (Serial1.available ()> = 9) // Kad ir pieejami vismaz 9 baiti datu (paredzamais baitu skaits vienam signālam), tad lasīt {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // 1. baits un 2. baits {unsigned int t1 = Serial1.read (); // baits 3 = Dist_L unsigned int t2 = Serial1.read (); // baits 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Sērijas1.lasījums (); // baits 5 = Strength_L t2 = Serial1.read (); // baits 6 = Stiprums_H t2 << = 8; t2 += t1; par (int i = 0; i <3; i ++) Serial1.read (); // 7., 8., 9. baits tiek ignorēts}}}}

anulēts iestatījums ()

{Serial1.begin (115200); // HW sērija TFmini Serial.begin (115200); // Sērijas izvade caur USB uz datoru aizkave (100); // Dodiet nedaudz laika, lai lietas sāktos // Iestatiet standarta izvades režīmu Serial1.write (0x42); Serial1.write (0x57); Serial1.write (0x02); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x00); Serial1.write (0x01); Serial1.write (0x06); // Iestatīšanas pavediens sērijveida ievades nolasīšanai no TFmini threads.addThread (readLiDAR); }

tukša cilpa ()

{kavēšanās (10); // Negribu lasīt pārāk bieži kā TFmini paraugus pie 100Hz Serial.println (liDARval); }

3. darbība: Arduino IDE izmantošana Skatiet rezultātus sērijas ploterī

Izmantojot Arduino IDE, skatiet rezultātus sērijas ploterī
Izmantojot Arduino IDE, skatiet rezultātus sērijas ploterī

Jūs varat izmantot jebkuru metodi, kuru vēlaties, bet Arduino IDE labi uzzīmēs rezultātus.

Izveidojiet savienojumu ar Teensy un atveriet Serial Monitor. Pārliecinieties, ka Baudrate ir iestatīts uz 115200.

Ieteicams: