Arduino

и не только...

YouTube Instagram TikTok Telegram VK

Работа с ультразвуковым датчиком расстояния HC-SR04

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

Ultrasonic distance sensor hc-sr04

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

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

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

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

Итак, подключаем пины Vcc и Gnd соответственно к +5 и Gnd пинам на Arduino, а пины Trig и Echo к любым свободным цифровым пинам:

Ultrasonic distance sensor hc-sr04 schema

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

#define ECHO_PIN 7
#define TRIG_PIN 8

void setup()
{
  Serial.begin(9600);
  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);
}

void loop()
{
  int duration;
  int distance;
  
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);
  
  duration = pulseIn(ECHO_PIN, HIGH);
  distance = duration / 58;
  Serial.print(distance);
  Serial.println(" cm");
  delay(200);
}

В функции setup() мы конфигурируем пины: TRIG_PIN на вывод, а ECHO_PIN - на ввод.

В функции loop() мы определяем расстояние до объекта и выводим его в консоль. Для повышения точности работы датчика следует сначала отправить в TRIG_PIN сигнал LOW, спустя 2 миллисекунды - HIGH и далее спустя 10 миллисекунд - вновь LOW. После этого мы считываем длительность сигнала с пина ECHO_PIN и переводим полученное значение в сантиметры.

Диапазон работы датчика: от 2 до 400 см (иногда до 500 см, зависит от версии датчика, это можно проверить опытным путем), чего хватает в большинстве случаев.

Купить можно либо отдельно датчик, либо датчик с пластиковым креплением (держателем):


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