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

Σύστημα τοποθέτησης με βάση υπερήχους: 4 βήματα (με εικόνες)
Σύστημα τοποθέτησης με βάση υπερήχους: 4 βήματα (με εικόνες)

Βίντεο: Σύστημα τοποθέτησης με βάση υπερήχους: 4 βήματα (με εικόνες)

Βίντεο: Σύστημα τοποθέτησης με βάση υπερήχους: 4 βήματα (με εικόνες)
Βίντεο: Ξύλο μεταξύ κάμεραμαν του ΣΚΑΙ και πολίτη 2024, Νοέμβριος
Anonim
Σύστημα τοποθέτησης με βάση υπερήχους
Σύστημα τοποθέτησης με βάση υπερήχους

Όλες οι εκδόσεις των ραντάρ υπερήχων που έχω βρει για συσκευές arduino (Arduino - Radar/Ultrasonic Detector, Arduino Ultrasonic Radar Project) είναι πολύ ωραία ραντάρ αλλά όλες είναι "τυφλές". Θέλω να πω, το ραντάρ ανιχνεύει κάτι, αλλά τι εντοπίζει;

Προτείνω λοιπόν να αναπτύξω ένα σύστημα ικανό να ανιχνεύει αντικείμενα και να τα αναγνωρίζει. Με άλλα λόγια ένα σύστημα εντοπισμού θέσης χωρίς τη χρήση συσκευών GPS αλλά ανιχνευτών υπερήχων.

Αυτό είναι το αποτέλεσμα που ελπίζω να σας αρέσει.

Βήμα 1: Πώς λειτουργεί;

Πώς λειτουργεί?
Πώς λειτουργεί?

Τα συστήματα τοποθέτησης σχηματίζονται από τρεις σταθμούς αισθητήρων με υπερηχητικούς ανιχνευτές και id_node 1, 2 και 3 που σχηματίζουν ορθογώνιο ή τετράγωνο που σαρώνουν γωνία 90º και όπου οι αποστάσεις μεταξύ τους είναι γνωστές όπως φαίνεται στην εικόνα 1.

const float distancebetween1and2 = 60,0;

const float distancebetween2and3 = 75,0;

Αυτοί οι αισθητήρες μετρούν την απόσταση και τη γωνία άλλων αντικειμένων με id_node μεγαλύτερο από 3 που διαθέτουν επίσης έναν υπερηχητικό ανιχνευτή που σαρώνει μια γωνία 170 °.

Όλοι τους στέλνουν τις αποστάσεις, τις γωνίες που μετρήθηκαν και τον id_node σε έναν άλλο κύριο σταθμό χρησιμοποιώντας ασύρματες επικοινωνίες για την ανάλυση, τον υπολογισμό της θέσης των αντικειμένων χρησιμοποιώντας τον υπολογισμό της τριγωνομετρίας και την αναγνώρισή τους.

Για να αποφευχθούν παρεμβολές, ο κύριος σταθμός συγχρονίζει όλους τους ανιχνευτές υπερήχων με αυτόν τον τρόπο που μόνο ένας ανιχνευτής υπερήχων μετρά κάθε στιγμή

Μετά από αυτό και χρησιμοποιώντας μια σειριακή επικοινωνία, ο κύριος σταθμός στέλνει τις πληροφορίες (γωνία, απόσταση, id_object) σε ένα σκίτσο επεξεργασίας για να σχεδιάσει τα αποτελέσματα.

Βήμα 2: Πώς να ρυθμίσετε τις παραμέτρους των τριών σταθμών αισθητήρων και των αντικειμένων

Πώς να διαμορφώσετε τους τρεις σταθμούς αισθητήρων και τα αντικείμενα
Πώς να διαμορφώσετε τους τρεις σταθμούς αισθητήρων και τα αντικείμενα
Πώς να διαμορφώσετε τους τρεις σταθμούς αισθητήρων και τα αντικείμενα
Πώς να διαμορφώσετε τους τρεις σταθμούς αισθητήρων και τα αντικείμενα

Η μόνη λειτουργία κάθε σταθμού αισθητήρων είναι η ανίχνευση αντικειμένων και η αποστολή της λίστας απόστασης, γωνίας και αναγνωριστικού κόμβου στον κύριο σταθμό.

Επομένως, πρέπει να ενημερώσετε τη μέγιστη απόσταση ανίχνευσης ("valid_max_distance") και την ελάχιστη ("valid_min_distance") (εκατοστά) για να βελτιώσετε την ανίχνευση και να περιορίσετε τη ζώνη ανίχνευσης:

int valid_max_distance = 80;

int valid_min_distance = 1;

Ο κόμβος id αυτών των σταθμών αισθητήρων ("this_node" στον παρακάτω κωδικό) είναι 1, 2 και 3 και ο αναγνωριστικός κόμβος του κύριου σταθμού είναι 0.

const uint16_t this_node = 01; // Διεύθυνση του κόμβου μας σε οκταδική μορφή (Node01, Node02, Node03)

const uint16_t other_node = 00; // Διεύθυνση του κύριου κόμβου (Node00) σε οκταδική μορφή

Κάθε σταθμός αισθητήρων σαρώνει και γωνία 100º ("max_angle" στον παρακάτω κωδικό)

#define min_angle 0

#define max_angle 100

Όπως παραπάνω, η μόνη λειτουργία ενός αντικειμένου είναι η ανίχνευση αντικειμένων και η αποστολή της λίστας των αποστάσεων, των γωνιών και του αντικειμένου id που μετρήθηκαν στον κύριο σταθμό. Το αναγνωριστικό ενός αντικειμένου ("this_node" στον παρακάτω κώδικα) πρέπει να είναι μεγαλύτερο από 3.

Κάθε αντικείμενο σαρώνει και έχει γωνία 170º και όπως παραπάνω, είναι δυνατή η ενημέρωση της μέγιστης και ελάχιστης απόστασης ανίχνευσης.

const uint16_t this_node = 04; // Διεύθυνση του κόμβου μας σε οκταδική μορφή (Node04, Node05,…)

const uint16_t other_node = 00; // Διεύθυνση του κύριου κόμβου (Node00) σε οκταδική μορφή int valid_max_distance = 80; int valid_min_distance = 1; #define min_angle 0 #define max_angle 170

Βήμα 3: Πώς να διαμορφώσετε τον κύριο σταθμό

Πώς να διαμορφώσετε τον κύριο σταθμό
Πώς να διαμορφώσετε τον κύριο σταθμό
Πώς να διαμορφώσετε τον κύριο σταθμό
Πώς να διαμορφώσετε τον κύριο σταθμό
Πώς να διαμορφώσετε τον κύριο σταθμό
Πώς να διαμορφώσετε τον κύριο σταθμό

Η λειτουργία του κύριου σταθμού είναι να λαμβάνει τις εκπομπές των σταθμών αισθητήρων και των αντικειμένων και να στέλνει τα αποτελέσματα χρησιμοποιώντας τη σειριακή θύρα σε ένα σκίτσο επεξεργασίας για να τους σχεδιάσει. Επιπλέον συγχρονίζει όλα τα αντικείμενα και τους τρεις σταθμούς αισθητήρων με αυτόν τον τρόπο που μόνο ένας από αυτούς μετρά κάθε φορά για να αποφευχθούν παρεμβολές.

Πρώτα πρέπει να ενημερώσετε την απόσταση (εκατοστά) μεταξύ αισθητήρα 1 και 2 και την απόσταση μεταξύ 2 και 3.

const float distancebetween1and2 = 60,0;

const float distancebetween2and3 = 70,0;

Το σκίτσο υπολογίζει τη θέση των αντικειμένων με τον ακόλουθο τρόπο:

  • Για όλες τις εκπομπές των αντικειμένων (id_node μεγαλύτερο από 3) αναζητήστε την ίδια απόσταση σε κάθε μετάδοση των αισθητήρων υπερήχων (id_node 1, 2 ή 3).
  • Όλα αυτά τα σημεία σχηματίζουν μια λίστα "υποψηφίων" (απόσταση, γωνία, id_node) για να είναι η θέση ενός αντικειμένου ("process_pointobject_with_pointssensor" στο σκίτσο).
  • Για κάθε «υποψήφιο» της προηγούμενης λίστας, η συνάρτηση «andid_selected_between_sensor2and3 »υπολογίζει από την άποψη του αισθητήρα υπερήχων 2 και 3 ποιος από αυτούς ταιριάζει με την ακόλουθη συνθήκη τριγωνομετρίας (δείτε τις εικόνες 2 και 3)

float distancefroms2 = sin (ακτίνια (γωνία)) * απόσταση?

float distancefroms3 = cos (ακτίνια (angle_candidate)) * distance_candidate; // Συνθήκη τριγωνομετρίας 1 abs (distancefroms2 + distancefroms3 - distancebetween2and3) <= float (max_diference_distance)

Όπως παραπάνω, για κάθε "υποψήφιο" της προηγούμενης λίστας, η συνάρτηση "andid_selected_between_sensor1and2 "υπολογίζει από την άποψη του αισθητήρα υπερήχων 1 και 2 ποιος από αυτούς ταιριάζει με την ακόλουθη σχέση τριγωνομετρίας (δείτε τις εικόνες 2 και 3)

float distancefroms1 = sin (ακτίνια (γωνία)) * απόσταση · απόσταση floatfroms2 = cos (ακτίνια (υποψήφιος γωνίας)) * distance_candidate; // Συνθήκη τριγωνομετρίας 2 abs (distancefroms1 + distancefroms2 - distancebetween1and2) <= float (max_diference_distance)

Μόνο οι υποψήφιοι (απόσταση, γωνία, id_node) που ταιριάζουν με τις συνθήκες τριγωνομετρίας 1 και 2 αναγνωρίζονται ως αντικείμενα που ανιχνεύονται από τους σταθμούς αισθητήρων 1, 2 και 3

Στη συνέχεια, τα αποτελέσματα αποστέλλονται από τον κύριο σταθμό σε ένα σκίτσο επεξεργασίας για να τα σχεδιάσετε.

Βήμα 4: Λίστα υλικού

Image
Image

Η λίστα του υλικού που απαιτείται για έναν σταθμό αισθητήρων ή ένα αντικείμενο είναι η ακόλουθη:

  • Nano σανίδα
  • Αισθητήρας υπερήχων
  • Μικρο σερβοκινητήρας
  • Ασύρματη μονάδα NRF24L01
  • Προσαρμογέας NRF24L01

και η λίστα υλικού για τον κύριο σταθμό είναι η ακόλουθη:

  • Nano σανίδα
  • Ασύρματη μονάδα NRF24L01
  • Προσαρμογέας NRF24L01

Συνιστάται: