Ультразвуковой дальномер с дисплеем на базе платформы Arduino.

  • Используется дисплей на драйвере TM74HC59, что позволяет выводить расстояние с десятичной точкой
  • Для определения расстояния используется дешёвый модуль ультразвукового дальномера
  • Показания с дальномера фильтруются двумя фильтрами, благодаря чему достигнута точность

1 мм

  • Отдельный переключатель позволяет сдвигать начало отсчёта на противоположный конец корпуса
  • Работает от 3х батареек формата АА
  • Ардуино – уникальная система, представляющая собой пластилин в руках инженера, из которого он может слепить, что пожелает. Возможно это благодаря большому разнообразию датчиков и модулей разных направленностей. От простых чипов, измеряющих силу тока, до вещей вроде Arduino hc hc sr04.

    Это специальный датчик, позволяющий, при помощи ультразвуковых волн, измерить расстояние до объекта, на который его направили. Несложно догадаться, что проще всего его применить для создания простого дальномера. Рассмотрим Arduino hc sr04 и какие нюансы в работе с ним стоит учитывать, прежде чем начать собирать проект.

    1. Основы сборки дальномера на Ардуино с помощью датчика HC SR04

    Если вы собираетесь собрать дальномер на Ардуино, то без HC SR04 просто не обойтись. Ведь именно этот модуль чаще всего применяют в подобных системах из-за его высокой востребованности, по причине простоты работы, доступности и низкой стоимости. При этом точность показаний остаётся на высоте, что очень важно в подобных системах. Из данного чипа можно собрать не только дальномер на Ардуино, но и полноценного робота, который будет чувствовать расстояние до объекта и обходить любое препятствие.

    Однако сегодня мы рассмотрим именно вариант с дальномером на Аrduino, так как он идеально подойдёт для новичков в сфере, которые ещё не слишком хорошо разбираются в основах. Если же вы захотите затем модифицировать своё изобретение, то можно научить его моделировать полноценную трехмерную карту помещения, что будет удобно для тех, кто занимается дизайном и конструированием мебели или зданий. Но сначала стоит рассмотреть, как вообще работает данный прибор и какие основы сборки стоит усвоить, прежде чем создать лазерный дальномер на Ардуино своими руками.

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

    Почему усреднённое?

    Дело в том, что любой ультразвуковой датчик все равно будет ошибаться на десятые доли метра, связано это с тем, что различные материалы, окружение и прочие переменные могут повлиять на скорость движения и отражения от поверхности звука. А в данном проекте мы берём идеальную систему, которая в реальном мире работать не может.

    Можно постараться учесть все эти факторы, но каждую переменную вы все равно не запрограммируете, поэтому наша задача – получить данные, максимально приближённые к показаниям профессиональных приборов, ведь дальномер Ардуино всё ещё далёк от них по точности.

    Соответственно, лучше всего применять прибор к гладким и плоским поверхностям, которые не будут нарушать движения УВ, что также ограничивает его функционал. Но благодаря низкому ценнику и удобству работы датчик всё ещё остается достаточно популярным.

    2. Что будет в уроке?

    Мы соберем дальномер, который будет работать по следующему принципу: при приближении объекта на расстояние менее 4 сантиметров — загорается красный светодиод, иначе горит зеленый.

    Достаточно простой пример, в котором мы проверим точность измерения расстояния дальномером hc-sr04. Основа проверки точности станет простая линейка 🙂

    3. Инструменты

    Чтобы лишний раз не бегать в магазин прямо посреди процесса сборки системы, лучше заранее подготовить все инструменты, что могут вам пригодиться. Так, стоит побеспокоиться, чтобы под рукой были:

    1. Паяльник. Хорошим выбором станут приборы с регулируемой мощностью, их можно приспособить к любой ситуации.
    2. Проводники. Естественно, датчик необходимо будет подсоединять к МК, и для этого не всегда подходят стандартные пины.
    3. Переходник под usb-порт. Если на вашем микроконтроллере нет встроенного порта, побеспокойтесь о том, чтобы его можно было подключить к ПК другим способом. Ведь вам необходимо будет подгружать дополнительные библиотеки и новую прошивку в ваш проект.
    4. Припой, канифоль и прочие мелочи, в том числе изолированное рабочее пространство.
    5. Сам чип и МК, а также, при необходимости, корпус будущего устройства. Наиболее опытные инженеры предпочитают распечатывать оболочку для своих проектов на 3Д принтере, однако, если вы живёте в крупном городе, не обязательно тратиться. Можете поискать компании, дающие в аренду принтеры.

    Стоит понимать, что дальномер Arduino относится к приборам бесконтактного типа и способен обеспечивать точные измерения. Но всё же не стоит забывать, что профессиональные устройства используют совершенно другие технологии и проходят длительную калибровку под все материалы, а соответственно, в любом случае, окажутся лучше. Также у нашего проекта будет ограниченный диапазон измерения расстояний, от 0.03 до 4 метров, что подойдёт не во всех случаях.

    Но, что хорошо, на работу устройства не оказывается никакого влияния со стороны ЭМ излучений и солнечной энергии. А в комплекте к датчику уже находятся нужные ресиверы и трансмиттеры, которые пригодятся, когда вы будете собирать ультразвуковой дальномер Ардуино.

    4. Комплектующие

    Так как мы решили пока ничего не паять — оптимальный набор деталей будет следующим:

    • 1 — Arduino UNO R3 (или аналог)
    • 1 — Ультразвуковой датчик расстояния HC-SR04
    • 1 — красный светодиод
    • 1 — зеленый светодиод
    • 2 — резистор 560 Ом
    • 1- макетная плата
    • 8 — проводов-перемычек (папа-папа)
    • 1 — линейка для измерения расстояния

    5. Подключение датчика HC SR04

    С подключением датчика не должно возникнуть никаких проблем. Достаточно с помощью проводников соединить пин на питание с источником или МК, а ввод и вывод, соответственно, присоединить непосредственно к МК. Воспользуйтесь схемой ниже для сборки схемы:

    У самого сенсора SR04 следующие характеристики от которых вам стоит отталкиваться:

    1. Напряжение для питания – 5В.
    2. Работает в цепях с силой тока 15 мА.
    3. Если датчик не используется, то для поддержания его в пассивном состоянии всё ещё требуется до 2 мА.
    4. Угол обзора у модуля небольшой, всего 15 градусов.
    5. Разрешение сенсора – 3 десятых см.
    6. А вот угол для измерений составляет уже приятные 30 градусов.

    Также на датчике имеются четыре вывода по стандарту 2.54 мм. В них входит контакт для питания с положительным напряжением +5В, пины для ввода и вывода сигнала и заземление.

    В конечном варианте выглядеть устройство должно примерно таким образом:

    6. Код

    Код для нашего устройства ниже. Помните, что красный светодиод должен загораться при расстоянии менее 4 см.

    Единственное, о чем стоит помнить, – далеко не все функции и библиотеки написаны профессионалами. Многие из них создаются такими новичками, как и вы, соответственно, старайтесь просматривать код, прежде чем заключать, что датчик не работает или выдаёт неправильные данные.

    Но значительно лучше будет изучить основы программирования и С++, чтобы в дальнейшем самостоятельно писать многие вещи самому.

    7. Запуск и настройка

    При первом запуске устройства происходит следующее:

    1. Подается импульс на вход Trig.
    2. В самом датчике сигнал преобразуется в 8 импульсов, у которых частота достигает 40 кГц, их он, соответственно, и посылает вперёд.
    3. Доходя до препятствия, импульсы отражаются и возвращаются на приемник, происходят моментальные расчеты в МК, и вся информация подаётся на устройство вывода. В нашем случае – это консоль ПК, но в будущем мы сделаем урок, где данные будут выводиться на LED-экранчик.

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

    Датчик пользуется большой популярностью и всё больше людей пишут свои решения для работы с ним.

    Дальномеры

    В этом уроке мы поподробнее познакомимся с дальномерами.

    Ультразвуковой дальномер HC-SR04

    На сегодняшний день (2016 г) стоит не более 1$ на AliExpress.

    Датчик имеет 4 вывода:

    • Vcc – На этот контакт подается питание в 5В.
    • Trig – На этот контакт нужно подать логическую единицу на 10мкс, чтобы дальномер испустил ультразвуковую волну.
    • Echo – После того, как ультразвуковая волна вернется обратно, на этот контакт будет подана логическая единица на время, пропорциональное расстоянию до объекта
    • Gnd – Этот контакт подключается к земле.

    Ультразвуковой дальномер – работает по принципу “летучей мыши”. Он посылает ультразвуковую волну и считает время, за которое волна возвратится. Зная скорость звука и время, за которое волна пришла обратно, можно рассчитать расстояние до объекта.

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

    Дальномер

    Давайте соберем простенькую схему для того чтобы понять, как работает дальномер.

    Код

    Пояснения

    pulseIn(ECHO, HIGH); — С помощью этой функции мы считали время, на которое на пине ECHO устанавливается значение HIGH. Это время считается в микросекундах.

    В общем виде pulseIn(); можно записать так:

    pulseIn(пин, значение, таймаут);

    Пин – Пин, на котором будет производиться подсчет времени.

    Значение – Уровень ожидаемого сигнала, при котором будет проводиться подсчет. HIGH или LOW.

    Таймаут – время в микросекундах, в течение которого ожидается приход сигнала. По истечении таймаута значение, возвращаемое функцией, будет приравнено к нулю.

    Так, с принципом работы дальномера разобрались. Время сделать парктроник для игрушечных машинок.

    Парктроник

    Схема парктроника выглядит так:

    Код

    Пояснения

    Парктроник снабжен светодиодной и звуковой индикацией. При приближении объекта на заданные расстояния раздаются более частые сигналы, и загорается больше светодиодов.

    dist_setup – это коэффициент, с помощью которого можно регулировать расстояние до срабатывания парктроника.

    У меня он равен единице. Если вам нужно уменьшить расстояние – нужно уменьшить коэффициент, но тогда он будет в виде 0.xxx. Для этого вводится переменная типа float.

    Частоту писка можно также изменять. Для этого нужно изменить значение frequency. Но следует помнить, что пищит пьезоизлучатель ужасно. Крайне. И, мне кажется, что он быстро отобьет у вас желание им пользоваться дальше или дольше 5 минут.

    Как вариант – понизить частоту до 20 Гц или подключить обычный динамик на 8 Ом, к примеру.

    Пароль

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

    Внимание на схему.

    Код

    Пояснения

    Для того чтобы зажечь все пять светодиодов – нужно знать последовательность действий, которую нужно выполнять. Вот для вас задание – “Не смотря объяснения ниже, определить, какую же последовательность действий нужно выполнять, чтобы загорелись все пять светодиодов”

    Это выполнимая задача, если вы читали первую часть курса и разобрались в работе функции if().

    Разобрались? Если да – молодцы, а если нет – почти молодцы.

    Всего есть три “символа ввода” – от 0 до 10, от 10 до 15 и от 20 до 25.

    Состояние от 0 до 10 включается, если поднести обе руки на расстояние от 0 до 10 см к обоим дальномерам. Если это сделать – загорится желтый светодиод.

    Состояние от 10 до 15 включится, когда вы поднесете руку к правому или левому дальномеру на расстояние от 10 до 15 см. О совершении этого действия вам подскажут крайний левый светодиод для левой руки и крайний правый – для правой.

    Состояние от 20 до 25 включается в тот момент, когда расстояние от руки до одного из дальномеров будет от 20 до 25 см. Об этом вас проинформируют второй слева и второй справа светодиоды для левой и правой руки соответственно.

    Стоит отметить, что выполнять последовательность нужно строго.

    • Поднести ПРАВУЮ руку на расстояние от 10 до 15.
    • После того, как загорелся крайний правый светодиод – поднести ЛЕВУЮ руку на расстояние от 20 до 25. Все это делается, не меняя положения правой руки.
    • После индикации второго слева светодиода – отвести ЛЕВУЮ руку влево, чтобы не загорелся крайний левый светодиод, иначе – код нужно будет набирать сначала. ПРАВУЮ руку приблизить на расстояние от 0 до 10, а ЛЕВУЮ подвести на это же расстояние, не задевая расстояние от 10 до 15
    • Светодиоды должны гореть и не реагировать на ваши действия.
    • Нажать кнопку RESET, для сброса пароля. Светодиоды должны потухнуть.

    Каждое неверное движение сбрасывает пароль, и его нужно вводить заново. С первого раза может и не получиться, но спустя несколько минут тренировки, я уверен – все получится, и светодиоды загорятся.

    После того, как у вас будет получаться зажечь все светодиоды, можно вам проверить себя и изменить код так, чтобы последовательность была другая – на ваше усмотрение. Можно сделать больше “символов”, а можно оставить те же, но сделать каждый символ с использованием двух дальномеров. Это будет заданием для самостоятельного решения.

    Инфракрасный дальномер Sharp

    С этими дальномерами все даже проще. Подключать их нужно, как и все аналоговые датчики. И даже можно без резистора на 10 кОм. Если вы по каким-то причинам этого не умеете, то это описано в моей статье про датчики.

    Терменвокс

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

    Код

    Пояснения

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

    Кнопка нужна для остановки или запуска нашего “Терменвокса”

    Итог

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