Სარჩევი:

Benewake TFmini - იაფი LiDAR მოზარდთან ერთად 3.5: 3 ნაბიჯი
Benewake TFmini - იაფი LiDAR მოზარდთან ერთად 3.5: 3 ნაბიჯი

ვიდეო: Benewake TFmini - იაფი LiDAR მოზარდთან ერთად 3.5: 3 ნაბიჯი

ვიდეო: Benewake TFmini - იაფი LiDAR მოზარდთან ერთად 3.5: 3 ნაბიჯი
ვიდეო: Benewake TFmini-S — лазерный дальномер на 12 метров для Arduino и Raspberry. Железки Амперки 2024, ნოემბერი
Anonim
Benewake TFmini - იაფი LiDAR ერთად Teensy 3.5
Benewake TFmini - იაფი LiDAR ერთად Teensy 3.5

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 წყაროს, დარწმუნდით, რომ მიწა ასევე მიდის GND– ზე Teensy– ზე)

2) შეაერთეთ წითელი მავთული Teensy Vin (ან 5VDC წყარო)

3) შეაერთეთ თეთრი მავთული (TFmini RX) პინ 1 Teensy– ზე (Serial1 TX)

4) შეაერთეთ მწვანე მავთული (TFmini TX) Teensy- ზე 0 სერიისთვის (სერიული RX)

ჩართული მავთულის აღკაზმულობა ჩემთვის ძალიან მცირე იყო პურის დაფაზე სამუშაოდ, ამიტომ მე TFmini– ს მოპირდაპირე ბოლო გავწყვიტე და მავთულები შევაერთე პურის დაფაზე, დავამატე JST კონექტორი ბრეიქოთში და გავაკეთე JST მამრობითი მხტუნავებისთვის. მავთულის აღკაზმულობა.

ნაბიჯი 2: კოდი გასაშვებად

გამოიყენეთ შემდეგი კოდი (Teensy 3.5) ან ჩამოტვირთეთ თანდართული ფაილი:

არდუინო მეგასთვის, ძაფი ალბათ არ იმუშავებს. გადაიტანეთ კოდი readLiDAR ფუნქციიდან მთავარ მარყუჟში და წაშალეთ ყველაფერი რაც დაკავშირებულია ძაფთან.

#მოიცავს #მოიცავს "TeensyThreads.h"

// მიწოდებული კაბელის გამოყენება:

// - შავი = GND (დაკავშირებულია GND– თან) // - წითელი = 5V (4.5 - 6.0V) (დაკავშირებულია Vin– ზე Teensy 3.5– ში, ან 5V Arduino– ზე) // - თეთრი = TFmini RX (ანუ მიკროკონტროლერთან TX, pin1 Teensy 3.5) // - მწვანე = TFmini TX (ასევე. დაკავშირება მიკროკონტროლერთან RX, pin0 Teensy 3.5) // შენიშვნა: ამ ესკიზისთვის გჭირდებათ მიკროკონტროლერი დამატებითი სერიული პორტებით 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 (high 8bit) // 7) დაცული ბაიტი // 8) სიგნალის ხარისხის ორიგინალური ხარისხი // 9) ჩეკსის ჯამი პარიტეტის ბიტი (დაბალი 8 ბიტი), ჩეკუსი = ბაიტი 1 +ბაიტი 2 +… +ბაიტი 8. ეს არის მხოლოდ დაბალი 8 ბიტიანი, თუმცა სანამ (1) {// გააგრძელე სამუდამოდ სანამ (Serial1.available ()> = 9) // როდესაც მონაცემების მინიმუმ 9 ბაიტი ხელმისაწვდომია (1 ბაიტის მოსალოდნელი რაოდენობა 1 სიგნალისთვის), მაშინ წაიკითხეთ {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // ბაიტი 1 და ბაიტი 2 {unsigned int t1 = Serial1.read (); // ბაიტი 3 = Dist_L unsigned 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}}}}

ბათილად დაყენება ()

{Serial1.begin (115200); // HW სერიალი TFmini Serial.begin (115200); // სერიული გამომუშავება USB– ით კომპიუტერთან დაყოვნება (100); // მიეცით ცოტა დრო საქმის დასაწყებად // დააყენეთ სტანდარტული გამოყვანის რეჟიმი Serial1.write (0x42); 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); }

ბათილი მარყუჟი ()

{დაგვიანება (10); // არ მინდა ძალიან ხშირად წავიკითხო როგორც TFmini ნიმუშები 100Hz Serial.println (liDARval); }

ნაბიჯი 3: Arduino IDE შედეგების ნახვა სერიულ პლოტერში

Arduino IDE- ს გამოყენებით შედეგების ნახვა სერიულ პლოტერში
Arduino IDE- ს გამოყენებით შედეგების ნახვა სერიულ პლოტერში

თქვენ შეგიძლიათ გამოიყენოთ ნებისმიერი მეთოდი, რომელიც გსურთ, მაგრამ არდუინოს IDE შედეგებს ლამაზად ასახავს.

დაუკავშირდით Teensy– ს და გახსენით სერიული მონიტორი. დარწმუნდით, რომ Baudrate არის 115200.

გირჩევთ: