विषयसूची:

Benewake TFmini - किशोर उम्र के 3.5 के साथ सस्ता LiDAR: 3 चरण
Benewake TFmini - किशोर उम्र के 3.5 के साथ सस्ता LiDAR: 3 चरण

वीडियो: Benewake TFmini - किशोर उम्र के 3.5 के साथ सस्ता LiDAR: 3 चरण

वीडियो: Benewake TFmini - किशोर उम्र के 3.5 के साथ सस्ता LiDAR: 3 चरण
वीडियो: 3D Visualization for Surveillance of Outdoor Application 2024, नवंबर
Anonim
Benewake TFmini - Teensy 3.5. के साथ सस्ता LiDAR
Benewake TFmini - Teensy 3.5. के साथ सस्ता LiDAR

Benewake TFmini LiDAR इकाई लगभग $50 कनाडाई के लिए एक छोटा, बहुत हल्का वजन LiDAR सेंसर है। दस्तावेज़ीकरण अच्छा था, लेकिन अधूरा था। यह सेंसर से डेटा प्राप्त करने पर विवरण प्रदान करता है, लेकिन सेंसर को डिफ़ॉल्ट मोड में डालने के लिए आवश्यक सिग्नल का उल्लेख करना भूल गया ताकि यह वास्तव में डेटा भेज सके। सौभाग्य से वह डिबगिंग दस्तावेज़ में था।

तो यह वही है जो मेरे लिए काम करता है, और यह वास्तव में काम करने के लिए एक आसान उपकरण है।

मैंने एक Teensy 3.5 का उपयोग करना चुना क्योंकि इसमें कई HW सीरियल पोर्ट हैं, यह डेटा प्राप्त करने और डेटा को ढेर किए बिना इसे संसाधित करने के लिए पर्याप्त तेज़ है। बस मनोरंजन के लिए मैंने डेटा को बाकी कोड से अलग करने के लिए टेन्सी थ्रेडिंग लाइब्रेरी का उपयोग किया।

चरण 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) लाल तार को टेनेसी विन (या 5VDC स्रोत) से कनेक्ट करें

3) टेनेसी (सीरियल 1 TX) पर 1 पिन करने के लिए सफेद तार (TFmini RX) कनेक्ट करें

4) टेनेसी (सीरियल RX) पर 0 पिन करने के लिए ग्रीन वायर (TFmini TX) कनेक्ट करें

ब्रेड बोर्ड पर काम करने के लिए शामिल वायर हार्नेस मेरे लिए बहुत छोटा था, इसलिए मैंने TFmini के विपरीत छोर को काट दिया, और तारों को ब्रेडबोर्ड में मिला दिया, ब्रेकबोर्ड में JST कनेक्टर जोड़ दिया, और पुरुष जम्पर के लिए JST बना दिया। तार दोहन।

चरण 2: इसे चलाने के लिए कोड

निम्नलिखित कोड का उपयोग करें (Teensy 3.5 के लिए) या संलग्न फ़ाइल डाउनलोड करें:

Arduino मेगा के लिए, थ्रेडिंग की संभावना काम नहीं करेगी। कोड को readLiDAR फ़ंक्शन से मुख्य लूप में ले जाएं, और थ्रेडिंग से संबंधित किसी भी चीज़ को हटा दें।

#शामिल करें #शामिल करें "TeensyThreads.h"

// आपूर्ति की गई केबल का उपयोग करना:

// - ब्लैक = जीएनडी (जीएनडी से जुड़ा) // - रेड = 5 वी (4.5 - 6.0 वी) (टेन्सी 3.5 पर विन से जुड़ा, या Arduino पर 5 वी) // - व्हाइट = टीएफमिनी आरएक्स (उर्फ। माइक्रोकंट्रोलर TX से कनेक्ट करें), पिन1 ऑन टेन्सी 3.5) // - ग्रीन = टीएफमिनी TX (उर्फ। माइक्रोकंट्रोलर आरएक्स से कनेक्ट करें, टेन्सी 3.5 पर पिन0) // नोट: इस स्केच के लिए आपको यूएसबी केबल से जुड़े एक से परे अतिरिक्त सीरियल पोर्ट के साथ एक माइक्रोकंट्रोलर की आवश्यकता है / / इसमें Arduino MEGA (Serial1 का उपयोग करें), Teensy (3.x) शामिल हैं (उपलब्ध HW सीरियल कनेक्शन में से एक का उपयोग करें)

अस्थिर int liDARval = 0;

शून्य रीडलिडर () {

// बेनेवेक टीएफमिनी के लिए डेटा प्रारूप 1) 0x59 // 2) 0x59 // 3) Dist_L (निम्न 8 बिट) // 4) डिस्ट्रिक्ट_एच (उच्च 8 बिट) // 5) स्ट्रेंथ_एल (कम 8 बिट) // 6) स्ट्रेंथ_एच (उच्च 8 बिट) // 7) आरक्षित बाइट्स // 8) मूल सिग्नल गुणवत्ता डिग्री // 9) चेकसम समता बिट (कम 8 बिट), चेकसम = बाइट 1 + बाइट 2 +… + बाइट 8। यह केवल एक कम 8 बिट है, जबकि (1) {// हमेशा के लिए चलते रहें (सीरियल 1.उपलब्ध ()> = 9) // जब कम से कम 9 बाइट्स डेटा उपलब्ध हो (1 सिग्नल के लिए बाइट्स की अपेक्षित संख्या), तो पढ़ें {if((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // बाइट 1 और बाइट 2 { अहस्ताक्षरित int t1 = Serial1.read (); // बाइट 3 = Dist_L अहस्ताक्षरित int t2 = Serial1.read (); // बाइट 4 = Dist_H t2 <<= 8; t2 + = t1; लिडारवल = t2; t1 = Serial1.read (); // बाइट ५ = स्ट्रेंथ_एल टी२ = सीरियल १.रीड (); // बाइट ६ = स्ट्रेंथ_एच टी२ <<= ८; t2 + = t1; for(int i=0; i<3; i++)Serial1.read(); // बाइट 7, 8, 9 पर ध्यान नहीं दिया जाता है } } } }

व्यर्थ व्यवस्था()

{ सीरियल1.बेगिन (115200); // TFmini Serial.begin (115200) के लिए HW सीरियल; // यूएसबी के माध्यम से कंप्यूटर विलंब (100) के माध्यम से सीरियल आउटपुट; // चीजों को शुरू करने के लिए थोड़ा समय दें // मानक आउटपुट मोड पर सेट करें Serial1.write(0x42); सीरियल1.लिखें(0x57); सीरियल1.लिखें(0x02); सीरियल1.लिखें(0x00); सीरियल1.लिखें(0x00); सीरियल1.लिखें(0x00); सीरियल1.लिखें(0x01); सीरियल1.लिखें(0x06); // TFmini थ्रेड्स से सीरियल इनपुट पढ़ने के लिए सेटअप थ्रेड। AddThread (readLiDAR); }

शून्य लूप ()

{देरी (10); // 100Hz Serial.println(liDARval) पर TFmini नमूनों के रूप में बहुत बार पढ़ना नहीं चाहते; }

चरण 3: सीरियल प्लॉटर में Arduino IDE व्यू परिणाम का उपयोग करना

सीरियल प्लॉटर में Arduino IDE व्यू परिणाम का उपयोग करना
सीरियल प्लॉटर में Arduino IDE व्यू परिणाम का उपयोग करना

आप जो भी तरीका चाहते हैं उसका उपयोग कर सकते हैं, लेकिन Arduino का IDE परिणामों को अच्छी तरह से प्लॉट करेगा।

Teensy से कनेक्ट करें, और सीरियल मॉनिटर खोलें। सुनिश्चित करें कि बॉड्रेट 115200 पर सेट है।

सिफारिश की: