Оглавление:
- Запасы
- Шаг 1. Ультразвуковой инфракрасный датчик VS
- Шаг 2: Схема
- Шаг 3: Характеристики датчика
- Шаг 4: Последовательная связь
- Шаг 5: Приложение Qt
- Шаг 6: Исходный код Arduino
Видео: Инфракрасный радар с Arduino: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:49
В этом небольшом проекте я хотел бы показать вам, как можно создать простой радар дома с помощью 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
Чтобы общаться с Arduino и рисовать измеренные точки, как радар, я сделал приложение для ПК на Qt (C ++). Он получает некоторые параметры (определенные на Arduino) и точки измеренного расстояния.
Вы также можете скачать приложение и его исходный код.
Шаг 6: Исходный код Arduino
Вы можете настроить некоторые параметры в верхней части кода с помощью макросов.
Обратите внимание, что если вы измените характеристику датчика расстояния Sharp, вам придется изменить значения массива distAdcMap !
- InfraRadar.c: Код радара. Скопируйте и вставьте его в свой проект Arduino.
- InfraRadarMeasurement.c: Код для измерения характеристик. Скопируйте и вставьте его в свой проект Arduino. Используйте последовательную консоль для проверки значений АЦП.
Рекомендуемые:
Сделай сам инфракрасный термометр для COVID-19 с MicroPython: 8 шагов
Сделай сам инфракрасный термометр для COVID-19 с помощью MicroPython: из-за вспышки коронавирусной болезни (COVID-19) персоналу компании необходимо измерить и зарегистрировать температуру каждого работника. Это утомительная и трудоемкая задача для HR. Итак, я сделал этот проект: рабочий нажал кнопку, это в
Лазерный инфракрасный термометр Arduino: 7 шагов (с изображениями)
Лазерный инфракрасный термометр Arduino: в этом проекте я покажу вам, как создать цифровой лазерный инфракрасный термометр с индивидуальным корпусом, напечатанным на 3D-принтере
Представляем «Deodorino» - инфракрасный контроллер Arduino в пустом дезодоранте. Нажмите на 1-е фото: 7 шагов
Представляем «Deodorino» - инфракрасный контроллер Arduino в пустом дезодоранте. Нажмите на 1-е фото: теперь перейдем к деталям
Инфракрасный пульт дистанционного управления и ИК-приемник (TSOP1738) с Arduino: 10 шагов
Инфракрасный пульт дистанционного управления и ИК-приемник (TSOP1738) с Arduino: это руководство для начинающих Arduino. Это один из моих ранних проектов с Arduino. Мне очень понравилось, когда я сделал это, и надеюсь, что он вам тоже понравится. Самая привлекательная особенность этого проекта - «Беспроводное управление». И это
Инфракрасный пульт дистанционного управления I2C с Arduino: 8 шагов (с изображениями)
Инфракрасный пульт дистанционного управления I2C с помощью Arduino: Преамбула В этом руководстве подробно рассказывается, как создать универсальный пульт дистанционного управления с использованием I2C для интерфейса. Как странно, вы говорите, использовать ведомое устройство I2C? Да, ведомое устройство I2C. Это связано с тем, что точная синхронизация пакетов IR весьма требовательна и