Эхолокатор на двух датчиках и Arduino

Добавлено 21 сентября 2018 в 02:10

Введение

В данной статье объясняется, как определить местоположение объекта с помощью Arduino, двух ультразвуковых датчиков и формулы Герона для треугольников. Движущихся частей в проекте нет.

Формула Герона позволяет рассчитать площадь любого треугольника, для которого известны все стороны. Как только вы узнаете площадь треугольника, вы сможете рассчитать положение одного объекта (относительно известной базовой линии), используя тригонометрию и теорему Пифагора.

Точность отличная. При использовании распространенных ультразвуковых датчиков HC-SR04 или HY-SRF05 возможны большие области обнаружения.

Конструкция проста: всё, что вам нужно, это острый нож, два сверла, паяльник и ножовка по дереву.

Изображения:

  • видеоролик, показывающий работу устройства;
  • фото 1 показывает собранный эхолокатор;
  • на фото 2 показан типовой дисплей. Объект отображается красной (мигающей) точкой;
  • на фото 3 показана тестовая установка, используемая на видео. Было необходимо установить два ультразвуковых датчика HY-SRF05 на 50 см ниже базовой линии, чтобы полностью «осветить» зону обнаружения со звуком.

Собранный двойной эхолокатор на Arduino
Рисунок 1 – Собранный эхолокатор на двух датчиках и Arduino
Скриншот экрана обнаружения объекта
Рисунок 2 – Скриншот экрана обнаружения объекта
Тестовый стенд для проверки эхолокатора на Arduino
Рисунок 3 – Тестовый стенд для проверки эхолокатора на Arduino

Шаг 1: схема соединений

Двойной эхолокатор на Arduino. Схема соединений.
Рисунок 4 – Эхолокатор на двух датчиках и Arduino. Схема соединений.

На рисунке выше показана схема подключения для «эхолокатора на двух датчиках и Arduino».

Датчик B представлен «пассивным», это делается с помощью нанесения нескольких слоев маскирующей ленты поверх передающего (T) преобразователя. Эта лента блокирует ультразвук, который иначе излучался бы.

Шаг 2: перечень компонентов

Компоненты для эхолокатора на двух датчиках и Ardiuno
Рисунок 5 – Компоненты для эхолокатора на двух датчиках и Ardiuno

Как показано на фотографии выше, для данного проекта требуется всего лишь несколько деталей.

Следующие детали были куплены на Aliexpress.com:

Следующие детали были найдены на месте:

  • 1 однорядный разъем 2,54 мм (папа);
  • 2 однорядных разъема 2,54 мм (мама);
  • 2 куска алюминия;
  • 2 небольших куска дерева;
  • 2 небольших самореза;
  • 3 кабельных стяжки;
  • 4 длинных изолированных провода (разных цветов) [1].

Примечание:[1] общая длина каждого провода будет равна необходимому расстоянию между датчиками плюс небольшое количество для монтажа. Провода затем скручиваются вместе для формирования кабеля.

Шаг 3: теория

Область обнаружения объекта
Рисунок 6 – Область обнаружения объекта
Формулы
Рисунок 7 – Формулы

Диаграммы направленности лучей

На левом рисунке 6 выше показаны наложенные диаграммы направленности для преобразователя A и преобразователя B.

Датчик A получит эхо от любого объекта в «красной зоне».

Датчик B будет получать эхо, только если объект находится в «лиловой зоне». Вне этой зоны определить координаты объекта невозможно (целевая зона может быть полностью «освещена» звуком, если расположить датчики ниже базовой линии).

Большие «лиловые» зоны обнаружения возможны, если датчики расставлены широко.

Расчеты

Что касается правого рисунка 7 выше.

Площадь любого треугольника может быть вычислена по формуле:

\[площадь = основание \cdot высота/2 \qquad (1)\]

Преобразование уравнения (1) дает нам высоту (координату Y):

\[высота = площадь \cdot 2 / основание \qquad (2)\]

Пока всё хорошо... Но как мы вычислим площадь?

Ответ заключается в том, чтобы разместить два ультразвуковых преобразователя на известном расстоянии друг от друга (базовая линия) и измерить расстояние, на котором каждый датчик находится от объекта, используя ультразвук.

На рисунке 7 показано, как это сделать.

Преобразователь A посылает импульс, который отражается от объекта во всех направлениях. Этот импульс слышат оба преобразователя, и A, и B. Преобразователь B не передает импульсов, он только слушает.

Обратный путь к преобразователю A показан красным цветом. Если разделить его на два и учесть скорость звука, мы можем рассчитать расстояние d1 с помощью формулы:

\[d1 _{(см)} = время_{(микросекунды)}/59 \qquad (3)\]

Значение 59 для константы получается следующим образом:

  • Скорость звука составляет примерно 340 м/с, что составляет 0,034 см/мкс (сантиметр/микросекунда).
  • Обратное значение 0,034 см/мкс составляет 29,412 мкс/см, которое при умножении на 2 (чтобы получить длину обратного пути) дает в результате 58,824 или 59 при округлении.
  • Это значение можно подстроить вверх/вниз, чтобы учесть температуру, влажность и давление воздуха.

Путь к преобразователю B показан синим цветом. Если из этого пути вычесть расстояние d1, мы получим расстояние d2. Формула для d2 будет следующей:

\[d2 _{(см)} = время_{(микросекунды)}/29,5 - d1 \qquad (4)\]

Величина 29,5 для константы получается следующим образом:

  • Тут нет обратного пути, поэтому мы используем 29,5, что является половиной значения, используемого в формуле (3) выше.

Теперь у нас есть длины всех сторон треугольника ABC... погуглите «Герон».

Формула Герона

Формула Герона использует нечто, называемое «полу-периметром», в который вы добавляете каждую из трех сторон треугольника и делите результат на два:

\[s = (a + b + c)/2 \qquad (5)\]

Теперь полощадь может быть рассчитана по следующей формуле:

\[площадь = \sqrt{s \cdot(s-a)\cdot(s-b)\cdot(s-c)} \qquad(6)\]

Как только мы узнаем эту площадь, мы сможем вычислить высоту (координату Y) из формулы (2) выше.

Теорема Пифагора

Теперь координату X можно вычислить, отложив из вершины треугольника перпендикулярную линию до базовой линии, чтобы получить прямоугольный треугольник. Теперь координату X можно вычислить с помощью теоремы Пифагора:

\[с1 = \sqrt{b^2-h^2}\]

Шаг 4: сборка

Монтажный уголок
Рисунок 8 – Монтажный уголок
Собранный эхолокатор
Рисунок 9 – Собранный эхолокатор

Монтажные уголки

Два монтажных уголка были изготовлены из алюминиевого листа толщиной 2 мм. Размеры уголков показаны на рисунке 8.

Два отверстия обозначенные «базовая линия», предназначены для крепления шнура к каждому датчику. Для простоты настройки просто привяжите к ним шнур требуемой длины.

Разъемы датчиков

Разъемы датчиков (рисунок 9) выполнены из стандартных разъемов от Arduino. Все ненужные выводы были вытащены, и в пластике было просверлено отверстие 3 мм.

При пайке соединений старайтесь не замыкать провода на алюминиевый уголок.

Защита от натяжений

Небольшой кусок термоусадочной трубки на каждом конце кабеля препятствует разрыву проводов. Для предотвращения нежелательных перемещений кабеля были использованы кабельные стяжки.

Шаг 5: установка программного обеспечения

Установите следующее программное обеспечение в этом порядке:

Arduino IDE

Скачайте и установите Arduino IDE (интегрированную среду разработки) с сайта https://www.arduino.cc/en/main/software, если она еще у вас не установлена.

Processing 3

Скачайте и установите Processing 3 отсюда https://processing.org/download/.

Скетч Arduino

Скачайте и откройте в Arduino IDE файл "dual_sensor _echo_locator.ino", загрузите его в свою Arduino Uno R3.

Закройте Arduino IDE, но USB кабель оставьте подключенным.

Скетч Processing

Скопируйте содержимое прикрепленного файла, “dual_sensor_echo_locator.pde” в Processing "Sketch".

Теперь нажмите вверху слева кнопку "Run"... На вашем экране должен появиться графический экран.

Шаг 6: тестирование

Скетч Processing
Рисунок 10 – Скетч Processing
Графический экран Processing
Рисунок 11 – Графический экран Processing

Подключите USB кабель Arduino к компьютеру.

Запустите “dual_sensor_echo_locator.pde”, нажав кнопку запуска вверху слева в Processing 3 IDE.

На вашем экране должны начать появляться числа, разделенные запятой (рисунок 10).

Сообщение об ошибке при запуске

При запуске может появиться сообщение об ошибке. Если это так, то измените [0] в строке 88 (рисунок 10) на номер, связанный с вашим COM портом.

В зависимости от вашей системы могут быть указаны несколько COM портов. Один из номеров будет работать.

На рисунке 10 номер [0] связан с моим «COM4»

Расположение датчиков

Расположите датчики на расстоянии 100 см друг от друга и 100 см от объекта, фронтальной стороной к нему.

Медленно поворачивайте оба датчика к диагонально противоположному углу воображаемого квадрата со стороной 1 метр.

Когда вы будете вращать датчики, то найдете положение, в котором на графическом дисплее появится мигающая красная точка.

Также, когда датчики захватят ваш объект, будут отображаться дополнительные данные (рисунок 11):

  • расстояние d1
  • расстояние d2
  • базовая линия (base)
  • смещение (offset)
  • полупериметр (s)
  • площадь (area)
  • координата X
  • координата Y

Шаг 7: дисплей

Графическое представление эхолокатора
Рисунок 12 – Графическое представление эхолокатора

Дисплей был написан с помощью Processing 3. Базовая линия 100 см показана.

Изменение базовой линии

Давайте изменим нашу базовую линию со 100 см на 200 см.

Измените “float Baseline = 100;” в заголовке скетча Processing на “float Baseline = 200;”.

Измените метки “50” и “100” в функции “draw_grid()” скетча Processing на “100” и “200”.

Изменение смещения

Если мы расположим датчики ниже базовой линии, то сможем получить площадь обнаружения.

Если вы решите это сделать, то в заголовке скетча Processing должна быть изменена переменная "Offset".

Теги

ArduinoHC-SR04HY-SRF05ДатчикДатчик расстоянияИзмерениеРасстояниеСонарУльтразвуковой датчикЭхолокатор

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.