Упрощаем замеры расстояния: ультразвуковой дальномер на ардуино

Суть проекта

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

Что понадобится?

  • Любая плата Arduino (у меня Uno);

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

  • OLED-дисплей на 0,96 дюймов;

  • Соединительные провода;

  • Макетная плата.

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

Ультразвуковой датчик (ещё его часто называют сонаром или ультразвуковым дальномером) определяет расстояние до объекта так же, как это делают летучие мыши или дельфины. Датчик HC-SR04 генерирует узконаправленный сигнал на частоте 40 кГц и ловит отраженный сигнал (эхо). По времени распространения звука до объекта и обратно можно достаточно точно определить расстояние до него.

По этому же принципу работает множество приборов для исследования пространства — эхолот, сонар, радиолокатор и даже полицейский радар для определения скорости автомобиля. Все эти приборы излучают узконаправленный ультразвуковой сигнал и получают обратно отраженный сигнал. В отличии от инфракрасных дальномеров (IR), на показания ультразвукового датчика (сонара) не влияет цвет объекта.


Принцип работы ультразвукового дальномера HC-SR04

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

Ультразвуковой датчик и светодиод Ардуино

Представленный скетч работает без библиотеки, поэтому в коде многовато строчек. Мы воспользуемся библиотекой для ультразвуковых дальномеров, что позволит нам значительно упростить скетч. Для начала установите библиотеку Ultrasonic (инструкция по установке библиотек в Arduino IDE) и загрузите следующую программу в Ардуино. Ссылка на скачивание архива со скетчами и библиотекой Ultrasonic.h — здесь.

Подключите дополнительно к плате RGB светодиод или несколько светодиодов, для создания мини проекта. Цвета светодиода будут переключаться, в зависимости от расстояния от датчика расстояния до предмета. Для управления светодиодами от УЗ датчика в программе используется условные операторы if. После сборки схемы, как на картинке выше, загрузите в микроконтроллер следующую программу.

Скетч с использованием библиотеки Ultrasonic.h

#include <Ultrasonic.h>    // подключаем библиотеку Ultrasonic
Ultrasonic ultrasonic(8,9); // назначаем выходы для Trig и Echo
 
void setup() {
  Serial.begin(9600);        // подключаем монитор порта
  pinMode (11, OUTPUT); // подключаем к пину светодиод
  pinMode (12, OUTPUT); // подключаем к пину светодиод
}

void loop () {
  int dist = ultrasonic.Ranging(CM);
  Serial.print(dist);     // выводим расстояние в сантиметрах
  Serial.println(" cm");

  // переключаем цвета светодиода
  if (dist < 50) {digitalWrite(12,0); digitalWrite(11,1);}
  if (dist < 50) {digitalWrite(12,1); digitalWrite(11,0);}

  delay(100);
}

Пояснения к коду:

  1. команда  назначает имя для нашего датчика «ultrasonic» и назначаем выходы на Ардуино для Trig и Echo.
  2. расстояние при котором будут переключаться светодиоды можно изменить.

Принцип действия

На этот раз мы разберем работу одного из самых популярных датчиков — ультразвукового (УЗ) дальномера. Существует много разных модификаций подобных устройств, но все они работают по принципу измерения времени прохождения отраженного звука. То есть датчик отправляет звуковой сигнал в заданном направлении, затем ловит отраженное эхо и вычисляет время полета звука от датчика до препятствия и обратно.

Из школьного курса физики мы знаем, что скорость звука в некоторой среде величина постоянная, но зависящая от плотности среды. Зная скорость звука в воздухе и время полета звука до цели, мы можем рассчитать пройденное звуком расстояние по формуле:

где v — скорость звука в м/с, а t — время в секундах. Скорость звука в воздухе, кстати, равна 340.29 м/с.

Чтобы справиться со своей задачей, дальномер имеет две важные конструктивные особенности. Во-первых, чтобы звук хорошо отражался от препятствий, датчик испускает ультразвук с частотой 40 кГц. Для этого в датчике имеется пьезокерамический излучатель, который способен генерировать звук такой высокой частоты. Во-вторых, излучатель устроен таким образом, что звук распространяется не во все стороны (как это бывает у обычных динамиков), а в узком направлении. На рисунке представлена диаграмма направленности типичного УЗ дальномера.

Как видно на диаграмме, угол обзора самого простого УЗ дальномера составляет примерно 50-60 градусов. Для типичного варианта использования, когда датчик детектирует препятствия перед собой, такой угол обзора вполне пригоден. Ультразвук сможет обнаружить даже ножку стула, тогда как лазерный дальномер, к примеру, может её не заметить.

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

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

Второй недостаток связан со скоростью звуковой волны. Эта скорость недостаточно высока, чтобы сделать процесс измерения более частым. Допустим, перед роботом есть препятствие на удалении 4 метра. Чтобы звук слетал туда и обратно, потребуется целых 24 мс. Следует 7 раз отмерить, прежде чем ставить УЗ дальномер на летающих роботов.

Датчик расстояния в проектах Arduino

Способность ультразвукового датчика определять расстояние до объекта основано на принципе сонара – посылая пучок ультразвука, и получая его отражение с задержкой, устройство определяет наличие объектов и расстояние до них. Ультразвуковые сигналы, генерируемые приемником, отражаясь от препятствия, возвращаются к нему через определенный промежуток времени. Именно этот временной интервал становится характеристикой помогающей определить расстояние до объекта.

Описание датчика HC SR04

Датчик расстояния Ардуино является прибором бесконтактного типа, и обеспечивает высокоточное измерение и стабильность. Диапазон дальности его измерения составляет от 2 до 400 см. На его работу не оказывает существенного воздействия электромагнитные излучения и солнечная энергия. В комплект модуля с HC SR04 arduino также входят ресивер и трансмиттер.

Ультразвуковой дальномер HC SR04 имеет такие технические параметры:

  • Питающее напряжение 5В;
  • Рабочий параметр силы т ока – 15 мА;
  • Сила тока в пассивном состоянии -6 с.

Датчик оснащен четырьмя выводами (стандарт 2, 54 мм):

  • Контакт питания положительного типа – +5В;
  • Trig (Т) – выход сигнала входа;
  • Echo (R) – вывод сигнала выхода;
  • GND – вывод «Земля».

Схема взаимодействия с Arduino

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

  • Подать на выход Trig импульс длительностью 10 микросек;
  • В ультразвуковом дальномере hc sr04 подключенном к arduino произойдет преобразование сигнала в 8 импульсов с частотой 40 кГц, которые через излучатель будут посланы вперед;
  • Когда импульсы дойдут до препятствия, они отразятся от него и будут приняты приемником R, что обеспечит наличие входного сигнала на выходе Echo;
  • На стороне контроллера полученный сигнал при помощи формул следует перевести в расстояние.

При делении ширины импульса на 58.2, получим данные в сантиметрах, при делении на 148 – в дюймах.

Подключение HC SR04 к Arduino

Выполнить подключение ультразвукового датчика расстояния к плате Arduino достаточно просто. Схема подключения показана на рисунке.

Контакт земли подключаем к выводу GND на плате Arduino, выход питания соединяем с 5V. Выходы Trig и Echo подсоединяем к arduino на цифровые пины. Вариант подключения с помощью макетной платы:

Библиотека для работы с HC SR04

Для облегчения работы с датчиком расстояния HC SR04 на arduino можно использовать библиотеку NewPing. Она не имеет проблем с пинговыми доступами и добавляет некоторые новые функции.

К особенностям библиотеки можно отнести:

  • Возможность работы с различными ультразвуковыми датчиками;
  • Может работать с датчиком расстояния всего через один пин;
  • Отсутствие отставания на 1 секунду при отсутствии пинга эха;
  • Для простой коррекции ошибок есть встроенный цифровой фильтр;
  • Максимально точный расчет расстояния.

Скачать бибилотеку NewPing можно здесь

Точность измерения расстояния датчиком HC SR04

Точность датчика зависит от нескольких факторов:

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

В основу принципа действия любого ультразвукового датчика заложено явление отражения акустических волн, распространяющихся в воздухе. Но как известно из курса физики, скорость распространения звука в воздухе зависит от свойств этого самого воздуха (в первую очередь от температуры). Датчик же, испуская волны и замеряя время до их возврата, не догадывается, в какой именно среде они будут распространяться и берет для расчетов некоторую среднюю величину. В реальных условиях из-за фактора температуры воздуха HC-SR04 может ошибаться от 1 до 3-5 см.

Фактор расстояния до объекта важен, т.к. растет вероятность отражения от соседних предметов, к тому же и сам сигнал затухает с расстоянием.

Также для повышения точности надо правильно направить датчик: сделать так, чтобы предмет был в рамках конуса диаграммы направленности. Проще говоря, “глазки” HC-SR04 должны смотреть прямо на предмет.

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

  • усредняются значения (несколько раз замеряем, убираем всплески, потом находим среднее);
  • с помощью датчиков (например, DHT11 или DHT22) определяется температура и вносятся поправочные коэффициенты;
  • датчик устанавливается на серводвигатель, с помощью которого мы “поворачиваем голову”, перемещая диаграмму направленности влево или вправо.

Работа с OLED-дисплеем

OLED-дисплей идеально подходит для DIY-устройств. Во-первых, мы имеем достаточно высокое разрешение экрана — 128×64 пикселя. Во-вторых, дисплей работает без модуля подсветки, что обеспечивает низкое потребление энергии. В-третьих, для подключения используется всего четыре разъема — два для питания и два для обмена информацией. Но несмотря на это, у OLED-дисплеев есть и минусы. Со временем пиксели могут тускнеть и перегорать.

Вот таким образом можно подключить дисплей:

Схема подключения

Есть несколько библиотек для работы с OLED-дисплеями, мне больше нравится OLED_I2C. Мне она кажется очень простой и максимально понятной. Следующим образом выведем классический «Hello, world!» на дисплей:

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

  • print(st, x, y) — печать строки на дисплей.Параметры: st: строка для печати; x: координата верхнего левого угла первого символа по горизонтали; y: координата верхнего левого угла первого символа по вертикали.В качестве координат можно использовать как сами координаты, так и литералы LEFT, CENTER, RIGHT.

  • printNumI(num, x, y, ]) — печать целого числа на дисплей.Параметры: num: Число для вывода на экран (от -2147483648 до 2147483647); x: координата верхнего левого угла первой цифры/знака по горизонтали; y: координата верхнего левого угла первой цифры/знака по вертикали; length: <необязательный параметр> минимальное количество цифр для отображения на экране; filler: <необязательный параметр> Символ для заполнения, чтобы получить минимальную длину. По умолчанию “ “.В качестве координат можно использовать как сами координаты, так и литералы LEFT, CENTER, RIGHT.

  • printNumF(num, dec, x, y, ]]) — печать числа с плавающей точкой на дисплей.Параметры:num: Число для вывода на экран (от -2147483648 до 2147483647);dec: количество цифр после запятой (в дробной части) (допустимые значения 1-5);x: координата верхнего левого угла первой цифры/знака по горизонтали;y: координата верхнего левого угла первой цифры/знака по вертикали;divider: <необязательный параметр> Одиночный символ для использования в качестве десятичной точки. По умолчанию ‘.’;length: <необязательный параметр> минимальное количество цифр для отображения на экране;filler: <необязательный параметр> Символ для заполнения, чтобы получить минимальную длину. По умолчанию “ “.В качестве координат можно использовать как сами координаты, так и литералы LEFT, CENTER, RIGHT.

Предисловие

Так получилось, что в университете я изучаю C/C++. Для души пробую делать небольшие проекты на Python. Я много слышал про платформу Arduino, смотрел видео на YouTube, частенько посещал Arduino Project Hub и вот мне стало интересно самому поэкспериментировать, углубясь в разработку под микроконтроллеры. Купив стартовый набор с самой платой и горстью электронных компонентов и попробовав собрать проекты из обучающей брошюры, понял, что надо двигаться дальше. Продумав саму идею следующей самоделки, отправился на просторы Google и обнаружил, что не могу найти всего, что мне нужно на одном ресурсе. Безусловно, мне несложно было посетить несколько сайтитов и блогов с информацией, но я бы сильно сэкономил время, если бы нашел все в одном месте. Так и появилась эта статья-туториал.

Выбор дальномера для подключения к arduino

Для определения расстояния есть несколько способов – инфракрасный датчик приближения, лазерный дальномер и ультразвуковой дальномер. Возможно, есть еще какие-то варианты, но я их сходу не нашел. Поэтому выбирал из трех вариантов. Датчик приближения был сразу забракован, поскольку он не умеет измерять, а только настраивается на определение конкретных расстояний. Лазерный датчик умеет делать измерения и довольно точно, но стоит он не мало, из-за этого выбор был остановлен на ультразвуковом датчике, который стоит в 8-10 раз дешевле лазерного, а точность измерения отличается не на много.
Очевидно, что выбор пал на более дешевый датчик HC-SR04, который стоит 50 руб и способен измерять расстояние от 2 до 400 см с точностью до 3 мм, а эффективный угол наблюдения 15 градусов.

Что такое ультразвуковой датчик и для чего он используется при работе с Arduino?

Ультразвуковые датчики с Arduino позволит вам измерить расстояние ультразвук, вот почему теперь стало очень распространено находить их в новые автомобили , поскольку во многих из них они встроены в GPS, что позволяет пользователям знать, какие препятствия перед вами, на случай, если вы не можете видеть вокруг.

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

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

Следует иметь в виду, что эти датчики для большинства бон Марше и, прежде всего, они очень просты в использовании. Что касается диапазона измерения этих датчиков, то он составляет от От 3 см до 3 м на практике , но считается, что фактический диапазон измерения гораздо более ограничен и составляет от От 20 см до 2 метров.

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

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

Скетч ультразвукового дальномера на arduino с помощью HC-SR04 и TM1637

// подключение индикатора TM1637
#include <TM1637.h>
#define CLK 3
#define DIO 2 
TM1637 tm1637(CLK,DIO);

// пины для HC-SR04
int echoPin = 12; 
int trigPin = 11; 

void setup() { 
  Serial.begin (9600); // для вывода в мониторе порта
  pinMode(trigPin, OUTPUT); // пин отправки сигнала
  pinMode(echoPin, INPUT);  // пин приема сигнала

  // инициализация индикатора
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);
} 
 
void loop() { 
  int duration, mm; // переменные для хранения расстояния
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 
  // отправляем ультрозвуковой сигнал
  digitalWrite(trigPin, HIGH); 
  // ждем 10 микроскунд
  delayMicroseconds(10); 
  // останавливаем отправку сигнала
  digitalWrite(trigPin, LOW); 
  // замеряет длину положительного импульса на пине echoPin
  duration = pulseIn(echoPin, HIGH); 
  // высчитываем расстояние до препядствия
  mm = duration / 5.8;
  // вывод данных в монитор порта
  Serial.print(mm); 
  Serial.println(" mm"); 
  // вывод данных на индикатор
  tm1637.display( mm );
  delay(100);
}

Пошаговая инструкция по подключению ультразвукового датчика к плате Arduino с нуля

Если вы хотите начать использовать ультразвуковой датчик на вашей плате Arduino здесь мы объясним, как выполнить эту процедуру быстро и легко. Учтите, что для этого вам понадобится только один Плата Arduino, это может быть любая модель карты, потому что процедура для всех одинакова. В этом случае мы будем работать с Плата Arduino UNO R3 .

Для этого просто выполните каждый из шагов, которые мы укажем ниже:

Первым делом нужно вставить ультразвуковой датчик в макет а с кабелями необходимо выполнить следующие подключения: «Срабатывание датчика на контакте 2 Arduino» et «Эхо датчика на выводе 3 Arduino».

При желании вы также можете подключить модуль напрямую к Arduino, не используя модель.

  • Имейте в виду, что все эти подключения всегда должны выполняться с выключенным Arduino , поэтому рекомендуется отключите от ПК или любого другого внешнего источника.
  • Позже тебе придется откройте среду программирования Arduino , для них вам нужно перейти к опциям “Орудие труда” затем “Меню”, Оказавшись там, вам нужно выбрать модель используемой платы Arduino. В этом случае вариант «Ардуино Уно» будет выбран .

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

Первое, что нужно сделать, это настроить контакты и последовательную связь на 9800 бод:

Теперь из пустого цикла вам нужно начать с отправки импульса 10 мкс на триггер датчика:

Впоследствии ответный импульс от датчика будет получен через вывод Echo для измерения импульса, который мы используем функцию Pulseln:

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

Для этого следует использовать следующую формулу:

переменная “Скорость” – скорость звука 340 м / с, но в этом случае единицы измерения должны быть см / мкс, так как он будет работать в сантиметрах и микросекундах. Le “время” время, необходимое ультразвуку, чтобы достичь объекта и вернуться к датчику. И, наконец, переменная “Пройденный путь” вдвое больше расстояния до объекта, заменив все эти данные в формуле, мы получим следующее:

Enfin, значение расстояния должны быть отправлены серийно и закончим, поставив паузу 100ms , что выше, чем 60ms рекомендуемые техническими данными датчика.

Здесь вы можете увидеть полный код программы:

Примеры использования датчика расстояния

Давайте рассмотрим пример простого проекта с платой Arduino Uno и датчиком расстояния HC SR04. В скетче мы будем получать значение расстояния до предметов и выводить их в монитор порта в среде Arduino IDE. Вы сможете легко изменить скетч и схему подключения, чтобы датчик сигнализировал о приближении или отдалении предмета.

Подключение датчика к ардуино

При написании скетча использовалась следующий вариант распиновки подключения датчика:

  • VCC: +5V
  • Trig – 12 пин
  • Echo – 11 пин
  • Земля (GND) – Земля (GND)

Пример скетча

Начнем работу с датчиком сразу с относительного сложного варианта – без использования внешних библиотек.

В данном скетче мы выполняем такую последовательность действий:

  • Коротким импульсом (2-5 микросекунды) переводим датчик расстояния в режим эхолокации, при котором в окружающее пространство высылаются ультразвуковые волны с частотой 40 КГц.
  • Ждем, пока датчик проанализирует отраженные сигналы и по задержке определит расстояние.
  • Получаем значение расстояния. Для этого ждем, пока HC SR04 выдаст на входе ECHO импульс, пропорциональный расстоянию. Мы определяем длительность импульса с помощью функции pulseIn, которая вернет нам время, прошедшее до изменения уровня сигнала (в нашем случае, до появления обратного фронта импульса).
  • Получив время, мы переводим его в расстояние в сантиметрах путем деления значения на константу (для датчика SR04 это 29.1 для сигнала «туда», столько же для сигнала «обратно», что в сумме даст 58.2).

Если датчик расстояния не выполняет считывание сигнала, то преобразование выходного сигнала никогда не примет значения короткого импульса – LOW. Так как у некоторых датчиков время задержки варьируется в зависимости от производителя, рекомендуется при использовании указанных скетчей выставлять его значение вручную (мы это делаем в начале цикла).

Если расстояние составляет более 3 метров, при котором HC SR04 начинает плохо работать, время задержки лучше выставлять более 20 мс, т.е. 25 или 30 мс.

Скетч с использованием библиотеки NewPing

Теперь давайте рассмотрим вариант скетча с использованием библиотеки NewPing. Код существенно упростится, т.к. все описанные ранее действия спрятаны внутри библиотеки. Все, что нам нужно сделать – создать объект класса NewPing, указав пины, с помощью которых мы подключаем датчик расстояния и использовать методы объекта. В нашем примере для получения расстояния в сантиметрах нужно использовать ping_cm().

Пример подключения ультразвукового дальномера HC SR04 с одним пином

Подключение HC-SR04 к Arduino может быть выполнено посредством использования одного пина. Такой вариант пригодится, если вы работаете с большим проектом и вам не хватает свободных пинов. Для подключения вам нужно просто установить между контактами TRIGи ECHO резистор номиналом 2.2K и подключить к ардуино контакт TRIG.

Программирование ультразвукового датчика HC-SR04

#define

Trig 8 /* Обозначаем пин подачи импульса*/

#define

Echo 9 /* Обозначаем пин приема импульса*/

void

setup() {

pinMode

(Trig, OUTPUT); /*инициируем как выход */

pinMode

(Echo, INPUT); /*инициируем как вход */

Serial.begin

(9600); /* устанавливаем скорость порта */

}

unsigned int

impulseTime=0;

unsigned int

distance_sm=0;

void

loop() {

digitalWrite

(Trig, HIGH);
/* Подаем импульс на вход trig дальномера */

delayMicroseconds

(10); /* Импульс длится 10 микросекунд */

digitalWrite

(Trig, LOW); // Отключаем подачу импульса

impulseTime=pulseIn

(Echo, HIGH);
/*Принимаем импульс и подсчитываем его длину*/

distance_sm

=impulseTime/58; /* Пересчитываем его значение в сантиметры */

Serial.println(
distance_sm); /* Выводим значение на порт программы */

delay

(200);

}

После того как вы вставили этот код, загрузите его в программу и включите “монитор порта”.
Там вы увидите расстояние от датчика до препятствия, поэкспериментируйте с изменением расстояния объекта.

Вот что должно у вас получиться!

Надеюсь у вас все получилось! Если у вас остались вопросы,
можете написать нам в

На фотографии не видно, но выходы Trig
и Echo
подключены ко 2 и 3 выходу Arduino соответственно. Ну а VCC
и GND
– 5v и земля.

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

// задаем пины
int echoPin = 2;
int trigPin = 3;
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// отключаем подачу импульса
digitalWrite(trigPin, LOW);
}
void loop() {
int duration, cm;
// подаем импульс
digitalWrite(trigPin, HIGH);
// ждем 10 микросекунд
delayMicroseconds(10);
// отключаем подачу импульса
digitalWrite(trigPin, LOW);
// считываем длину сигнала
duration = pulseIn(echoPin, HIGH);
// пересчитываем в сантиметры
Serial.print(duration / 58);
Serial.println(” cm”);
// ждем пол секунды до следующего измерения
delay(500);
}

Подключается по данной схеме

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

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

Но у нас получается слишком много кода, а если нам потребуется подключить 2 таких дальномера? А если 10? В таком случае разработка превратится в рутину, а в случае какой-то ошибки придется менять все сразу.

Именно здесь нам на помощь приходит библиотека Ultrasonic .

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

Как работает ультразвуковой датчик?

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

Скорость звука при температуре 20 ° C, влажности 50% и атмосферном давлении на уровне моря составляет 343 м / с. преобразование этих единиц приводит к следующим результатам:

Это значит, что звук поставит 29,2 микросекунды на расстояние одного сантиметра , это позволяет получить расстояние от времени между передачей и приемом импульса.

Для этого необходимо использовать следующее уравнение:

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

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

С другой стороны, сборка представляет собой макет, который будет выглядеть так:

Лучшие проекты Arduino с ультразвуковыми датчиками, которые вы можете сделать своими руками

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

Для этого следуйте всему, что мы объясним вам ниже:

Трость для слепых

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

Умный мусорный бак

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

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

Парковка автомобиля

Как мы упоминали ранее в статье, эти ультразвуковые датчики в основном используются в автомобилях, потому что они идеально подходят для выполнения различных функций. В данном случае это автомобильный проект что позволяет ему парк, что указывает на то, что автомобиль будет управляться картой Ардуино.

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

Подключение HC-SR04

Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:

HC-SR04GNDVCCTrigEcho
Arduino UnoGND+5V32

Принципиальная схема устройства Ардуино: ультразвуковой дальномер HC-SR04 : 6 комментариев

«Датчик HC-SR04 имеет четыре вывода. Кроме земли (Gnd) и питания (Vcc) еще есть Trig и Echo. Оба этих вывода цифровые, так что подключаем из к любым выводам Ардуино Уно:

OLED дисплей 128×64 GND VCC Trig Echo Arduino Uno GND +5V 3 2»

-Что-то здесь не так…..не так-ли?

В точку! Исправлено:)

Просто и понятно все объяснено. Автору большое спасибо.

Автор у Вас опечатка в статье.

Переводим скорость звука из м/с в см/мкс:

s = duration * 0.034 м/мкс

В единице измерения допущена неточность. Вы же в см/мкс переводите, а не м/мкс (как у Вас)

всё сделал, но в мониторе порта пишет следующее (x⸮x⸮⸮⸮x⸮x⸮⸮⸮x⸮x⸮⸮⸮x⸮), что делать, как быть?))

Проверьте скорость передачи в мониторе последовательного порта. Она должна совпадать со скоростью в программе. Должно быть: 9600

Поделитесь в социальных сетях:FacebookX
Напишите комментарий