Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05
Все версии ультразвуковых радаров, которые я нашел для устройств 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, а узел id главной станции - 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
Как указано выше, единственной функцией объекта является обнаружение объектов и отправка списка расстояний, углов и идентификаторов измеренных объектов на главную станцию. Идентификатор одного объекта («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» в эскизе).
- Для каждого «кандидата» из предыдущего списка функция «chapter_selected_between_sensor2and3» вычисляет с точки зрения ультразвуковых датчиков 2 и 3, какие из них соответствуют следующему условию тригонометрии (см. Рисунки 2 и 3)
float distancefroms2 = sin (радианы (угол)) * расстояние;
float distancefroms3 = cos (радианы (angle_candidate)) * distance_candidate; // Условие тригонометрии 1 абс (distancefroms2 + distancefroms3 - distancebetween2and3) <= float (max_diference_distance)
Как и выше, для каждого «кандидата» из предыдущего списка функция «chapter_selected_between_sensor1and2» вычисляет с точки зрения ультразвуковых датчиков 1 и 2, какие из них соответствуют следующему тригонометрическому соотношению (см. Рисунки 2 и 3)
float distancefroms1 = sin (радианы (угол)) * расстояние; float distancefroms2 = cos (радианы (angle_candidate)) * distance_candidate; // Условие тригонометрии 2 abs (distancefroms1 + distancefroms2 - distancebetween1and2) <= float (max_diference_distance)
Только кандидаты (расстояние, угол, id_node), которые соответствуют условиям тригонометрии 1 и 2, являются идентифицированными объектами, обнаруженными сенсорными станциями 1, 2 и 3
После этого результаты отправляются мастер-станцией в обрабатывающий эскиз для их построения.
Шаг 4: Список материалов
Перечень материалов, необходимых для одной сенсорной станции или одного объекта, следующий:
- Нано-доска
- Ультразвуковой датчик
- Микро серводвигатель
- Беспроводной модуль NRF24L01
- Адаптер NRF24L01
а список материалов для мастер-станции следующий:
- Нано-доска
- Беспроводной модуль NRF24L01
- Адаптер NRF24L01
Рекомендуемые:
Асинхронное обнаружение препятствий с помощью ультразвука: 4 шага
Асинхронное обнаружение препятствий с помощью ультразвука: для развлечения я создаю робота, которого хочу автономно перемещать внутри дома. Это долгая работа, и я делаю ее шаг за шагом. Этот поучительный акцент на обнаружении препятствий с помощью Arduino Mega. Ультразвуковые датчики HC-SR04 против HY-SRF05 дешевы и
Система распознавания и тушения пожара на основе обработки изображений: 3 шага
Система распознавания и тушения пожара на основе обработки изображений: Здравствуйте, друзья, это система обнаружения и тушения пожара на основе обработки изображений с использованием Arduino
Система сортировки цветов: система на основе Arduino с двумя ремнями: 8 шагов
Система сортировки по цвету: система на основе Arduino с двумя ремнями: транспортировка и / или упаковка продуктов и предметов в промышленной сфере осуществляется с использованием линий, изготовленных с использованием конвейерных лент. Эти ремни помогают перемещать предмет из одной точки в другую с определенной скоростью. Некоторые задачи обработки или идентификации могут быть
Генератор музыки на основе погоды (генератор MIDI на основе ESP8266): 4 шага (с изображениями)
Музыкальный генератор на основе погоды (Midi-генератор на основе ESP8266): Привет, сегодня я объясню, как сделать свой собственный небольшой музыкальный генератор на основе погоды. Он основан на ESP8266, который похож на Arduino, и он реагирует на температуру, дождь. и яркость света. Не ожидайте, что он сделает целые песни или аккордовые программы
Использование Arduino Uno для позиционирования XYZ роботизированной руки с 6 степенями свободы: 4 шага
Использование Arduino Uno для позиционирования XYZ-манипулятора с 6 степенями свободы: этот проект посвящен реализации короткого и относительно простого скетча Arduino для обеспечения обратного кинематического позиционирования XYZ. Я построил роботизированный манипулятор с 6 сервоприводами, но когда дело дошло до поиска программного обеспечения для его запуска, ничего особенного, кроме cust