Оглавление:

Инфракрасный радар с Arduino: 6 шагов
Инфракрасный радар с Arduino: 6 шагов

Видео: Инфракрасный радар с Arduino: 6 шагов

Видео: Инфракрасный радар с Arduino: 6 шагов
Видео: Ультразвуковой радар своими руками на базе датчиков ардуино 2024, Ноябрь
Anonim
Image
Image

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

Моя цель - создать с его помощью очень простую и дешевую систему LIDAR и реализовать картографическое устройство.

Запасы

  • Arduino (я использовал Maple Mini)
  • Датчик расстояния Sharp (я использовал Sharp GP2Y0A02YK0F)
  • Микро сервопривод (9 г)
  • Макет, провода
  • Дополнительно: резистор 4,7 кОм, конденсатор 100 нФ

Шаг 1. Ультразвуковой инфракрасный датчик VS

Схема
Схема

Основное различие между ультразвуковыми и инфракрасными датчиками расстояния заключается в том, что ультразвуковой датчик измеряет расстояние в более широком диапазоне. Поэтому невозможно точно определить положение препятствия. Это означает, что он измеряет расстояние до ближайшего объекта, который находится в диапазоне углов ~ + -30 °.

Конечно, это не значит, что датчик Sharp лучше. Иногда это свойство может быть очень полезным (например, используется дронами для измерения высоты от земли). Правильный выбор полностью зависит от требований вашего проекта.

Шаг 2: Схема

Схема
Схема
Схема
Схема

Сделать соединение между частями очень просто. Выберите выход PWM и аналоговый вход на вашей плате Arduino и подключите датчики расстояния Servo и Sharp к этим контактам. Для этого я использовал следующие булавки:

  • PA0: Аналоговый вход для датчика расстояния Sharp
  • PA9: выход PWM для сервопривода

Иногда инфракрасный датчик Sharp может иметь зашумленный выход, поэтому на него необходимо установить простой фильтр нижних частот. Я использовал резистор 4,7 кОм и конденсатор 100 нФ, чтобы уменьшить шум на аналоговом выводе. Кроме того, я также отфильтровал измеренное значение в коде, прочитав его несколько раз и вычислив среднее значение.

Шаг 3: Характеристики датчика

Характеристики датчика
Характеристики датчика
Характеристики датчика
Характеристики датчика

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

Несмотря на то, что характеристики датчика указаны в таблице данных, я предпочитаю измерять их самостоятельно в рамках конкретного проекта (это может зависеть от используемого напряжения). Для этого я сделал пары из измеренного значения АЦП и расстояния на каждые 10 см. (Мой датчик смог правильно измерить расстояние от 12 см).

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

В конце документа вы найдете простой код Arduino для измерения значения АЦП во время измерения характеристик.

Шаг 4: Последовательная связь

Последовательная связь
Последовательная связь

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

Этот протокол позволяет определять различные типы сообщений общим способом. В этом проекте я использовал 2 типа сообщений:

  • Параметры: используются для отправки параметров в приложение для ПК, определенных на Arduino, таких как максимальное расстояние и количество препятствий в раунде.
  • Препятствие: используется для отправки обнаруженного препятствия. Это определяется углом сервопривода и измеренным расстоянием. Положение x-y будет рассчитано приложением для ПК.

Шаг 5: Приложение Qt

Приложение Qt
Приложение Qt

Чтобы общаться с Arduino и рисовать измеренные точки, как радар, я сделал приложение для ПК на Qt (C ++). Он получает некоторые параметры (определенные на Arduino) и точки измеренного расстояния.

Вы также можете скачать приложение и его исходный код.

Шаг 6: Исходный код Arduino

Вы можете настроить некоторые параметры в верхней части кода с помощью макросов.

Обратите внимание, что если вы измените характеристику датчика расстояния Sharp, вам придется изменить значения массива distAdcMap !

  • InfraRadar.c: Код радара. Скопируйте и вставьте его в свой проект Arduino.
  • InfraRadarMeasurement.c: Код для измерения характеристик. Скопируйте и вставьте его в свой проект Arduino. Используйте последовательную консоль для проверки значений АЦП.

Рекомендуемые: