🛒
0 товаров
0 руб.

Интернет-магазин «Неглупый Дом»


📶 Проект: ультразвуковой охранный барьер на HC-SR04

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

HC-SR04 постоянно измеряет расстояние до противоположной стены или косяка двери. Как только между датчиком и стеной появляется препятствие ближе установленного порога — включается сирена.

Как это работает

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

В отличие от ИК-барьера (где нужны два модуля по разные стороны проёма), здесь достаточно одного датчика, направленного на противоположную стену или косяк: он постоянно замеряет расстояние до неё, и когда в проёме появляется препятствие (человек), измеренное расстояние резко уменьшается — это и есть сигнал тревоги.

Пошаговая сборка

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

  1. Подключите HC-SR04: Trig → D9, Echo → D10, VCC → 5V, GND → GND.
  2. Подключите пассивный зуммер: сигнал → D8, GND → GND.
  3. Установите датчик так, чтобы он "смотрел" через весь проём на противоположную стену или косяк.
  4. Измерьте штатное расстояние до стены через Serial-монитор при пустом проходе и выставьте `thresholdCm` чуть меньше этого значения.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

const int trigPin = 9;
const int echoPin = 10;
const int buzzerPin = 8;
const int thresholdCm = 80; // расстояние до стены при пустом проходе

long getDistanceCm() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long duration = pulseIn(echoPin, HIGH);
  return duration / 58; // перевод времени полёта звука в сантиметры
}

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
}

void loop() {
  long distance = getDistanceCm();
  Serial.print("Расстояние, см: ");
  Serial.println(distance);

  if (distance > 0 && distance < thresholdCm) {
    tone(buzzerPin, 1500);
  } else {
    noTone(buzzerPin);
  }

  delay(100);
}

Порог `thresholdCm` нужно откалибровать под конкретный проём — измерьте штатное расстояние до стены через Serial-монитор и возьмите значение чуть меньше него.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🏠 двухзонная охранная сигнализация на HC-SR5…🔨 сигнализация удара/разбития на KY-031 и ре… →

🎁 Купить весь комплект со скидкой 10%

Все 2 товара сразу в корзину: 195 ₽ 176 ₽ (экономия 19 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина


Поиск



Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA