Агуулгын хүснэгт:

Benewake TFmini - Teensy 3.5: 3 алхамтай хямд LiDAR
Benewake TFmini - Teensy 3.5: 3 алхамтай хямд LiDAR

Видео: Benewake TFmini - Teensy 3.5: 3 алхамтай хямд LiDAR

Видео: Benewake TFmini - Teensy 3.5: 3 алхамтай хямд LiDAR
Видео: Arducopter 4.03 and TF Mini Plus Alt Hold 2024, Долдугаар сарын
Anonim
Benewake TFmini - Teensy 3.5 -тай хямд LiDAR
Benewake TFmini - Teensy 3.5 -тай хямд LiDAR

Benewake TFmini LiDAR төхөөрөмж нь жижиг, маш хөнгөн жинтэй LiDAR мэдрэгч бөгөөд ойролцоогоор 50 долларын үнэтэй Канад юм. Баримт бичиг сайн байсан ч дутуу байсан. Энэ нь мэдрэгчээс өгөгдөл хүлээн авах талаар дэлгэрэнгүй мэдээлэл өгсөн боловч өгөгдлийг илгээдэг тул мэдрэгчийг анхдагч горимд оруулахын тулд шаардлагатай дохиог дурдахаа мартсан байна. Аз болоход энэ нь дибаг хийх баримт бичигт байсан.

Энэ бол миний хувьд ажилласан зүйл бөгөөд энэ нь ажиллахад үнэхээр хялбар төхөөрөмж юм.

Би Teensy 3.5 -ийг ашиглахаар шийдсэн, учир нь энэ нь хэд хэдэн HW серийн порттой тул өгөгдөл цуглуулахгүйгээр өгөгдлийг хүлээн авч, боловсруулахад хангалттай хурдан юм. Зүгээр л хөгжилтэй байхын тулд би Teensy Threading номын санг ашиглан өгөгдлийг кодын бусад хэсгээс салгаж авав.

Алхам 1: TFmini -ийг Teensy 3.5 -тэй холбох (Arduino Mega -тэй төстэй)

TFmini Teensy 3.5 -тэй холбох (Arduino Mega -тэй төстэй)
TFmini Teensy 3.5 -тэй холбох (Arduino Mega -тэй төстэй)

Энэ жишээ нь хоёр цуваа холболтыг шаарддаг: нэг нь TFmini, нөгөө нь таны компьютер дээр үр дүнг харуулдаг. Энэ шалтгааны улмаас, миний хэлж байгаагаар, зөвхөн энэ шалтгааны улмаас энэ жишээ нь Arduino Mega эсвэл Teensy 3.x -ээс доош ямар ч зүйл дээр ажиллахгүй болно.

Компьютерийн дэлгэц дээр хэвлэхийн тулд цуваа гаралт шаарддаггүй програмуудын хувьд ижил төслийг дасан зохицох боломжтой байх ёстой.

Оруулсан утас бэхэлгээг ашиглах:

1) хар утсыг Teensy GND -тэй холбоно уу (хэрвээ VDC -ийн ялгааг ашиглаж байгаа бол Teensy дээр GND руу шилжих эсэхийг шалгаарай)

2) улаан утсыг Teensy Vin (эсвэл 5VDC эх үүсвэр) руу холбоно уу.

3) цагаан утас (TFmini RX) -ийг Teensy (Serial1 TX) дээрх 1 зүү рүү холбоно уу.

4) ногоон утсыг (TFmini TX) Teensy (Serial RX) дээр 0 зүүгээр холбоно уу.

Утасны бэхэлгээ нь талхны тавцан дээр ажиллахад надад хэтэрхий жижиг байсан тул би TFmini -ийн эсрэг талын үзүүрийг хайчилж, утсыг талхны хавтан дээр гагнаж, таслах самбар дээр JST холбогч нэмж, эрэгтэй холбогч руу JST хийв. утас бэхэлгээ.

Алхам 2: Үүнийг ажиллуулах код

Дараах кодыг ашиглана уу (Teensy 3.5 -ийн хувьд) эсвэл хавсаргасан файлыг татаж авна уу.

Arduino Mega -ийн хувьд урсгал хийх нь ажиллахгүй байх магадлалтай. ReadLiDAR функцаас кодыг үндсэн давталт руу шилжүүлж, урсгалтай холбоотой бүх зүйлийг устгана уу.

#оруулах #"TeensyThreads.h" оруулах

// Нийлүүлсэн кабелийг ашиглан:

// - Хар = GND (GND -т холбогдсон) // - Улаан = 5V (4.5 - 6.0V) (Teinsy 3.5 дээр Vin -тэй, эсвэл Arduino дээр 5V -тэй холбогдсон) // - Цагаан = TFmini RX (өөрөөр хэлбэл TX микроконтроллерт холбогдох), Teensy 3.5 дээрх pin1) // - Ногоон = TFmini TX (өөрөөр хэлбэл RX микроконтроллерт холбогдох, Teensy 3.5 дээрх pin0) // ТАЙЛБАР: USB схемд холбогдсоноос гадна нэмэлт цуваа порттой микроконтроллер хэрэгтэй болно. / Үүнд Arduino MEGA (Serial1 ашиглах), Teensy (3.x) орно (одоо байгаа HW цуваа холболтуудын аль нэгийг ашиглана уу)

дэгдэмхий int liDARval = 0;

хүчингүй readLiDAR () {

// Benewake TFmini -ийн өгөгдлийн формат // ============================== // Зурвас тутамд 9 байт: // 1) 0x59 // 2) 0x59 // 3) Dist_L (бага 8bit) // 4) Dist_H (өндөр 8bit) // 5) Strength_L (бага 8bit) // 6) Strength_H (өндөр 8bit) // 7) Хадгалагдсан байт // 8) Дохионы чанарын анхны зэрэг // 9) Хяналтын нийлбэрийн паритын бит (8bit бага), Checksum = Byte1 +Byte2 +… +Byte8. Энэ нь зөвхөн 8 битийн бага үзүүлэлт боловч (1) {// Үргэлжлүүлэн үргэлжлүүлээрэй (Serial1.available ()> = 9) // Хамгийн багадаа 9 байт өгөгдөл байгаа үед (1 дохионы хүлээгдэж буй тооны тоо), дараа нь унших {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // байт 1 ба байт 2 {unsigned int t1 = Serial1.read (); // байт 3 = Dist_L тэмдэггүй int t2 = Serial1.read (); // байт 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // байт 5 = Strength_L t2 = Serial1.read (); // байт 6 = Хүч чадал_H t2 << = 8; t2 += t1; for (int i = 0; i <3; i ++) Serial1.read (); // байт 7, 8, 9 -ийг үл тоомсорлодог}}}}

хүчингүй тохиргоо ()

{Цуврал1. эхлэл (115200); // HW Serial for TFmini Serial.begin (115200); // USB -ээр дамжуулагдсан цуваа гаралт нь компьютерийн саатал (100); // Аливаа зүйлийг эхлүүлэхэд жаахан хугацаа өг // Стандарт гаралтын горимд тохируул Serial1.write (0x42); Цуваа 1. бичих (0x57); Цуваа 1. бичих (0x02); Цуваа 1. бичих (0x00); Цуваа 1. бичих (0x00); Цуваа 1. бичих (0x00); Цуваа1. бичих (0x01); Цуваа1. бичих (0x06); // TFmini threads.addThread (readLiDAR) -ээс цуваа оролтыг унших тохиргооны урсгал; }

хоосон давталт ()

{саатал (10); // 100Hz Serial.println (liDARval) дээр TFmini дээж болгон олон удаа уншихыг хүсэхгүй байна; }

Алхам 3: Arduino IDE View үр дүнг сериал плоттер дээр ашиглах

Arduino IDE -ийн үр дүнг сериал плоттер дээр ашиглах
Arduino IDE -ийн үр дүнг сериал плоттер дээр ашиглах

Та хүссэн бүх аргыг ашиглаж болно, гэхдээ Arduino -ийн IDE нь үр дүнг маш сайн зурах болно.

Teensy -тай холбогдож, Serial Monitor -ийг нээнэ үү. Baudrate -ийг 115200 болгож тохируулсан эсэхийг шалгаарай.

Зөвлөмж болгож буй: