Πίνακας περιεχομένων:

Benewake LiDAR TFmini (Πλήρης οδηγός): 5 βήματα (με εικόνες)
Benewake LiDAR TFmini (Πλήρης οδηγός): 5 βήματα (με εικόνες)

Βίντεο: Benewake LiDAR TFmini (Πλήρης οδηγός): 5 βήματα (με εικόνες)

Βίντεο: Benewake LiDAR TFmini (Πλήρης οδηγός): 5 βήματα (με εικόνες)
Βίντεο: Урок 69: Инфракрасный датчик приближения E18-D80NK | Пошаговый курс Arduino 2024, Ιούλιος
Anonim
Benewake LiDAR TFmini (πλήρης οδηγός)
Benewake LiDAR TFmini (πλήρης οδηγός)
Benewake LiDAR TFmini (πλήρης οδηγός)
Benewake LiDAR TFmini (πλήρης οδηγός)

Περιγραφή

Η μονάδα Benewake TFMINI Micro LIDAR έχει τα μοναδικά οπτικά, δομικά και ηλεκτρονικά της σχέδια. Το προϊόν διαθέτει τρία σημαντικά πλεονεκτήματα: χαμηλό κόστος, μικρό όγκο και χαμηλή κατανάλωση ενέργειας.

Ο ενσωματωμένος αλγόριθμος προσαρμοσμένος σε εσωτερικούς και εξωτερικούς χώρους μπορεί να εγγυηθεί μια εξαιρετική απόδοση σε χαμηλό κόστος και σε μικρό όγκο, ο οποίος διευρύνει πολύ τα πεδία εφαρμογής και τα σενάρια του LiDAR και θέτει μια σταθερή βάση για μελλοντικά «μάτια» στο έξυπνο εποχή.

Προδιαγραφές

  • Τάση εισόδου: 5v
  • Μέση ισχύς: 0,12W
  • Πρωτόκολλο επικοινωνίας: UART (ποσοστό Baud: 115200)
  • Θερμοκρασία λειτουργίας: -20 ℃ ~ 60
  • FOV: 2,3 °

Διαστάσεις

  • Μέγεθος: 42mmx15mmx16mm
  • Βάρος: 6,1g

Περιορισμοί

Εύρος "τυφλής" 0cm-30cm

Από που να αγοράσω

  • RobotShop
  • Αμαζόνα

Αυτό το εκπαιδευτικό απαιτεί να είστε εξοικειωμένοι με τα ακόλουθα:

  • Βασικά ηλεκτρονικά
  • Εργαλεία χειρός όπως κοπτικά σύρματος και απογυμνωτές
  • Ανάγνωση διαγραμμάτων και διαγραμμάτων σύνδεσης
  • Προγραμματισμός C/C ++ για Arduino (προαιρετικό)
  • Προγραμματισμός Python για Raspberry Pi (προαιρετικό)

Βήμα 1: Συλλογή υλικού

Υλικό συγκέντρωσης
Υλικό συγκέντρωσης
Υλικό συγκέντρωσης
Υλικό συγκέντρωσης
Υλικό συγκέντρωσης
Υλικό συγκέντρωσης

Αυτό το διδακτικό θα σας οδηγήσει σε διαφορετικούς τρόπους ανάπτυξης του TFmini LiDAR χρησιμοποιώντας τον υπολογιστή σας Windows και το Raspberry Pi. Κάθε μέθοδος έχει τις απαιτήσεις της και μπορεί να διαφέρει ανάλογα με τις ανάγκες σας.

** Θα χρειαστείτε Benewake TFmini LiDAR για κάθε περίπτωση (φυσικά) **

Για εφαρμογή που βασίζεται σε υπολογιστή:

  • Λειτουργικό σύστημα: Windows
  • Μετατροπέας USB-TTL
  • Jumper Wires

Για εφαρμογή βασισμένη σε Raspberry Pi:

  • Raspberry Pi
  • Jumper Wires
  • LED (προαιρετικά)
  • Μετατροπέας USB-TTL (προαιρετικό)
  • Breadboard (προαιρετικό)
  • Αντίσταση (μεταξύ 100-1k Ohm) (προαιρετικό)

Βήμα 2: Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας την εφαρμογή Benewake

Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας την εφαρμογή Benewake
Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας την εφαρμογή Benewake
Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας την εφαρμογή Benewake
Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας την εφαρμογή Benewake
  1. Συνδέστε τον μετατροπέα TFmini LiDAR σε USB-TTL χρησιμοποιώντας καλώδια jumper (αρσενικό-θηλυκό) σύμφωνα με το σχηματικό σχήμα

    • Κόκκινο καλώδιο 5V
    • Μαύρο καλώδιο GND
    • Λευκό/Μπλε Wire Tx
    • Green Wire Rx
  2. Συνδέστε USB-TTL στον υπολογιστή σας
  3. Μεταβείτε στη Διαχείριση Συσκευών (Win + X) και εντοπίστε το "Prolific USB-to-Serial Comm Port" κάτω από τις Θύρες (COM & LPT). Βεβαιωθείτε ότι τα Windows αναγνωρίζουν τη συσκευή
  4. Λήψη και εξαγωγή WINCC_TF.rar
  5. Εκτελέστε το WINCC_TFMini.exe από τα εξαγόμενα αρχεία
  6. Επιλέξτε την αντίστοιχη θύρα COM από το αναπτυσσόμενο μενού στην εφαρμογή Benewake κάτω από την επικεφαλίδα Serial Port
  7. Κάντε κλικ στη ΣΥΝΔΕΣΗ

Βήμα 3: Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας Python (PySerial)

Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας Python (PySerial)
Υλοποίηση βασισμένη σε υπολογιστή χρησιμοποιώντας Python (PySerial)
  1. Συνδέστε το TFmini LiDAR στον υπολογιστή χρησιμοποιώντας μετατροπέα USB-TTL
  2. Κατεβάστε και ανοίξτε το PC_Benewake_TFmini_LiDAR.py χρησιμοποιώντας το Python IDLE (βεβαιωθείτε ότι έχετε εγκαταστήσει PySerial και Python στον υπολογιστή σας)
  3. Επεξεργαστείτε τη θύρα COM στον κώδικα για να ταιριάζει με τη θύρα COM του μετατροπέα USB-TTL στον υπολογιστή σας (δείτε την εικόνα)
  4. Κάντε κλικ στην καρτέλα Εκτέλεση
  5. Κάντε κλικ στην επιλογή Εκτέλεση λειτουργικής μονάδας

** Ανατρέξτε στο Βήμα-5 για επεξήγηση του κώδικα

Βήμα 4: Υλοποίηση βασισμένη σε Raspberry Pi

Υλοποίηση βασισμένη σε Raspberry Pi
Υλοποίηση βασισμένη σε Raspberry Pi
Εφαρμογή βασισμένη σε Raspberry Pi
Εφαρμογή βασισμένη σε Raspberry Pi
Υλοποίηση βασισμένη σε Raspberry Pi
Υλοποίηση βασισμένη σε Raspberry Pi
Υλοποίηση βασισμένη σε Raspberry Pi
Υλοποίηση βασισμένη σε Raspberry Pi
  1. Συνδέστε το TFmini LiDAR σε RPi χρησιμοποιώντας μετατροπέα USB-TTL ή θύρα UART χρησιμοποιώντας GPIO
  2. Κατεβάστε και ανοίξτε το Pi_benewake_LiDAR.py χρησιμοποιώντας το Python IDLE
  3. Εάν χρησιμοποιείτε μετατροπέα USB-TTL με RPi, ανοίξτε το Arduino IDE. Κάντε κλικ στο Εργαλεία -> Σειριακή θύρα και επεξεργαστείτε τον κώδικα ανάλογα. Εάν χρησιμοποιείτε θύρα UART GPIO, γράψτε /dev /ttyAMA0
  4. Εκτελέστε τον κωδικό

** Ο κωδικός θα μπορούσε να χρησιμοποιηθεί για την εκτύπωση της απόστασης, αλλά επειδή το RPi δεν έχει πολλή επεξεργαστική ισχύ, συνιστάται να ανάψετε ένα LED εάν η απόσταση που καταγράφεται είναι κάτω από ένα ορισμένο εύρος (επισυνάπτεται σχηματικό για LED με RPi)

Ε. Γιατί να χρησιμοποιήσετε μετατροπέα USB-TTL με RPi;

Το RPi έχει μόνο μία θύρα UART και μερικές φορές πρέπει να βάλετε μερικές μονάδες που απαιτούν επικοινωνία UART. Το USB-TTL παρέχει μια πρόσθετη θύρα UART στο RPi δίνοντάς μας την ευκαιρία να συνδέσουμε περισσότερες από μία συσκευές UART (όπως δύο ή περισσότερες TFmini LiDAR) με RPi.

Βήμα 5: Σχετικά με τον κώδικα

Σχετικά με τον Κώδικα
Σχετικά με τον Κώδικα

Ο κώδικας μπορεί να χωριστεί σε τρία μέρη:

  • Δημιουργία σύνδεσης
  • Γράψιμο δεδομένων
  • Ανάγνωση δεδομένων

Δημιουργία σύνδεσης:

Μετά την εισαγωγή των απαραίτητων αρχείων κεφαλίδας, εδραιώνουμε τη σύνδεση με το TFmini LiDAR μας δηλώνοντας τη θύρα COM, το ρυθμό Baud και το χρονικό όριο σύνδεσης

ser = serial. Serial ('COM7', 115200, timeout = 1) #PC

ser = serial. Serial ('/dev/ttyUSB1', 115200, timeout = 1) #Raspberry Pi

Γράψιμο δεδομένων:

Ο κώδικας μπορεί να χωριστεί σε δύο μέρη, γραφή και λήψη. Για να λάβετε δεδομένα, πρέπει να προωθήσετε τη συγκεκριμένη εντολή στο TFmini LiDAR (μέρος της διαδικασίας προετοιμασίας). Σε αυτήν την περίπτωση, επέλεξα το 4257020000000106. Παρόλο που το RPi εκτελεί την ίδια έκδοση του Python αλλά υπάρχει μια μικρή αλλαγή στη σύνταξη καθώς το RPi δεν δέχεται άλλα δεδομένα εκτός από δυαδικά.

ser.write (0x42)

ser.write (0x57) ser.write (0x02) ser.write (0x00) ser.write (0x00) ser.write (0x00) ser.write (0x01) ser.write (0x06)

Ανάγνωση δεδομένων:

Το γράφημα που παρέχεται στο φύλλο δεδομένων μας δίνει την «ανάλυση» του μηνύματος UART 9-Byte. Τα πρώτα δύο Bytes είναι κεφαλίδα πλαισίου με τιμή εξάγωνου 0x59 (χαρακτήρας «Υ»). Μπορούν να διαβαστούν και να χρησιμοποιηθούν για τον προσδιορισμό της έναρξης του μηνύματος UART.

εάν (('Y' == ser.read ()) και ('Y' == ser.read ()):

Μόλις διαβαστεί το πλαίσιο κεφαλίδας, θα μπορούσαν να διαβαστούν τα επόμενα δύο byte, που μεταφέρουν δεδομένα απόστασης. Τα δεδομένα απόστασης χωρίζονται σε δύο πακέτα 8 bit, Dist_L (Byte3) - Lower 8bits και Dist_H (Byte4) - Higher 8bits.

Dist_L = ser.read () #Byte3Dist_H = ser.read () #Byte4

Πολλαπλασιάζοντας το Dist_H με 256, τα δυαδικά δεδομένα μετατοπίζονται κατά 8 προς τα αριστερά (ισοδύναμο με "<< 8"). Τώρα τα χαμηλότερα δεδομένα απόστασης 8-bit, Dist_L, θα μπορούσαν απλά να προστεθούν με αποτέλεσμα τα δεδομένα 16-bit του Dist_Total.

Dist_Total = (ord (Dist_H) * 256) + (ord (Dist_L))

Δεδομένου ότι έχουμε την "αποκρυπτογραφημένη" τιμή απόστασης μαζί μας, τα επόμενα πέντε byte θα μπορούσαν να αγνοηθούν. Σημειώστε ότι τα δεδομένα ανάγνωσης δεν αποθηκεύονται πουθενά.

για i στο εύρος (0, 5): ser.read ()

** Σε κάποιο άλλο μέρος, ενδέχεται να βρείτε «καθυστέρηση» (time.sleep in Python) ενσωματωμένο πριν από το τέλος του βρόχου για τον λόγο ότι το TFmini LiDAR έχει συχνότητα λειτουργίας 100Hz. Αυτή η καθυστέρηση «καθυστέρηση προγράμματος» και θα έχει ως αποτέλεσμα την ενημέρωση των δεδομένων μετά από κάποια καθυστέρηση. Πιστεύω ότι δεδομένου ότι περιμένουμε ήδη τα δεδομένα να συσσωρευτούν έως και 9-Bytes, δεν θα πρέπει να υπάρξει άλλη καθυστέρηση

#time.sleep (0.0005) #Η καθυστέρηση σχολιάζεται

while (ser.in_waiting> = 9):

Συνιστάται: