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

Benewake TFmini - Φθηνό LiDAR με βήματα Teensy 3.5: 3
Benewake TFmini - Φθηνό LiDAR με βήματα Teensy 3.5: 3

Βίντεο: Benewake TFmini - Φθηνό LiDAR με βήματα Teensy 3.5: 3

Βίντεο: Benewake TFmini - Φθηνό LiDAR με βήματα Teensy 3.5: 3
Βίντεο: Benewake TFmini-S — лазерный дальномер на 12 метров для Arduino и Raspberry. Железки Амперки 2024, Νοέμβριος
Anonim
Benewake TFmini - Inexpensive LiDAR With Teensy 3.5
Benewake TFmini - Inexpensive LiDAR With 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) στο pin 0 στο Teensy (Serial RX)

Η συμπεριλαμβανόμενη καλωδίωση ήταν πολύ μικρή για να δουλέψω πάνω σε μια σανίδα ψωμιού, οπότε έκοψα το άκρο απέναντι από το TFmini και κόλλησα τα καλώδια σε ένα breadboard, πρόσθεσα μια σύνδεση JST στο breakboard και έκανα ένα JST στον αρσενικό άλτη καλωδίωση.

Βήμα 2: Κωδικός για εκτέλεση

Χρησιμοποιήστε τον ακόλουθο κώδικα (για το Teensy 3.5) ή κάντε λήψη του συνημμένου αρχείου:

Για το Arduino Mega, το νήμα πιθανότατα δεν θα λειτουργήσει. Μετακινήστε τον κώδικα από τη λειτουργία readLiDAR στον κύριο βρόχο και αφαιρέστε οτιδήποτε σχετίζεται με το νήμα.

#include #include "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;

void readLiDAR () {

// Μορφή δεδομένων για Benewake TFmini // ============================ // // 9 bytes σύνολο ανά μήνυμα: // 1) 0x59 // 2) 0x59 // 3) Dist_L (χαμηλό 8bit) // 4) Dist_H (υψηλό 8bit) // 5) Strength_L (χαμηλό 8bit) // 6) Strength_H (high 8bit) // 7) Reserved bytes // 8) Βαθμός ποιότητας αρχικού σήματος // 9) bit ισοτιμίας ελέγχου (χαμηλό 8bit), άθροισμα ελέγχου = Byte1 +Byte2 +… +Byte8. Αυτό είναι μόνο ένα χαμηλό 8bit αν και ενώ (1) {// Συνεχίστε για πάντα όσο (Serial1.available ()> = 9) // Όταν διατίθενται τουλάχιστον 9 byte δεδομένων (αναμενόμενος αριθμός byte για 1 σήμα), τότε διαβάστε {if ((0x59 == Serial1.read ()) && (0x59 == Serial1.read ())) // byte 1 και byte 2 {unsigned int t1 = Serial1.read (); // byte 3 = Dist_L unsigned int t2 = Serial1.read (); // byte 4 = Dist_H t2 << = 8; t2 += t1; liDARval = t2; t1 = Serial1.read (); // byte 5 = Strength_L t2 = Serial1.read (); // byte 6 = Δύναμη_H t2 << = 8; t2 += t1; για (int i = 0; i <3; i ++) Serial1.read (); // byte 7, 8, 9 αγνοούνται}}}}

void setup ()

{Serial1.begin (115200); // HW Serial για TFmini Serial.begin (115200); // Σειριακή έξοδος μέσω USB στον υπολογιστή καθυστέρηση (100). // Δώστε λίγο χρόνο για να ξεκινήσουν τα πράγματα // Ρυθμίστε τη λειτουργία Standard Output 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.addThread (readLiDAR); }

κενός βρόχος ()

{καθυστέρηση (10); // Δεν θέλω να διαβάζω πολύ συχνά ως δείγματα TFmini στα 100Hz Serial.println (liDARval). }

Βήμα 3: Χρήση αποτελεσμάτων προβολής Arduino IDE στο Serial Plotter

Χρήση Arduino IDE Προβολή αποτελεσμάτων στο Serial Plotter
Χρήση Arduino IDE Προβολή αποτελεσμάτων στο Serial Plotter

Μπορείτε να χρησιμοποιήσετε όποια μέθοδο θέλετε, αλλά το IDE του Arduino θα σχεδιάσει όμορφα τα αποτελέσματα.

Συνδεθείτε στο Teensy και ανοίξτε Serial Monitor. Βεβαιωθείτε ότι το Baudrate έχει οριστεί σε 115200.

Συνιστάται: