Урок 25: Ультразвуковой датчик HC-SR04

1. Введение

Ультразвуковой датчик HC-SR04 — это доступный датчик близости/дистанции, который часто используется для избегания препятствий в робототехнике, измерения уровня воды, парковочных систем и других задач. Он позволяет Arduino «видеть» расстояние до объектов и предотвращать столкновения или падения.

Внешний вид ультразвукового датчика HC-SR04

2. Необходимое оборудование

Кол-во

Деталь

1

Плата Arduino UNO

1

Ультразвуковой датчик HC-SR04

4

Перемычки

1

USB-кабель

3. Спецификация

Параметр

Значение

Рабочее напряжение

DC 5V

Рабочий ток

15mA

Рабочая частота

40KHz

Максимальное расстояние

4 м

Минимальное расстояние

2 см

Угол измерения

15°

Триггерный входной сигнал

10 мкс TTL импульс

Эхо выходной сигнал

TTL уровень, пропорционален расстоянию

4. Подключение

Схема подключения HC-SR04 к Arduino
  • VCC — 5V Arduino

  • GND — GND Arduino

  • TRIG — цифровой пин 8 Arduino

  • ECHO — цифровой пин 7 Arduino

5. Пример кода

hc_sr04_ultrasonic_sensor.ino
//////////////////////////////////////////////////////////
//Ультразвуковой

#define echoPin 7 // Эхо пин
#define trigPin 8 // Триггер пин
#define LEDPin 13 // Светодиод на плате
int maximumRange = 200; // Максимально необходимое расстояние
int minimumRange = 0; // Минимально необходимое расстояние
long duration, distance; // Продолжительность используется для расчета расстояния
void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(LEDPin, OUTPUT); // Использовать индикатор светодиода (если требуется)
}
void loop() {
  // Следующий цикл trigPin/echoPin используется для определения
  // расстояния до ближайшего объекта, отражая звуковые волны от него.
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  // Расчет расстояния (в см) на основе скорости звука.
  distance = duration / 58.2;

  if (distance >= maximumRange || distance <= minimumRange) {
    // Отправить компьютеру отрицательное число и включить светодиод
    // для указания "вне диапазона"
    Serial.println("-1");
    digitalWrite(LEDPin, HIGH);
  }
  else {
    // Отправить расстояние на компьютер через Серийный протокол и
    // выключить светодиод для указания успешного считывания.
    Serial.println(distance);
    digitalWrite(LEDPin, LOW);
  }
  // Задержка 50 мс перед следующим считыванием.
  delay(50);
}
//////////////////////////////////////////////////////////

6. Результат теста

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

7. Частые ошибки

  • Датчик всегда показывает -1 — проверьте подключение TRIG/ECHO и питание.

  • Значения скачут — избегайте помех, вибраций, прямых отражений.

  • Датчик не реагирует — проверьте правильность кода и портов.

8. Практические задачи

  • Измерение уровня воды в ёмкости.

  • Система парковки с индикацией расстояния.

  • Робот-избегатель препятствий.

9. Идеи для расширения

  • Визуализация данных в Processing или на LCD.

  • Использование нескольких датчиков для кругового обзора.

  • Передача данных по Bluetooth/Wi-Fi.


Подробнее о датчике HC-SR04: https://randomnerdtutorials.com/complete-guide-for-ultrasonic-sensor-hc-sr04/