====== Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы ====== [[amp>product/hc-sr04-ultrasonic-sensor-distance-module?utm_source=man&utm_campaign=HCSR04&utm_medium=wiki|Ультразвуковой дальномер]] рассчитан на определение расстояния до объектов в радиусе четырёх метров. Работа модуля основана на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, не сложно вычислить расстояние до препятствия. {{ :продукты:hc-sr04-ultrasonic-sensor-distance-module:ultrasonic-hc-sr04.1.jpg?direct&500 |}} =====Подключение ультразвукового дальномера к Arduino===== Модуль подключается четырьмя проводами. Контакты ''VCC'' и ''GND'' служат для подключения питания, а ''Trig'' и ''Echo''— для отправки и приема сигналов дальномера. Подключим их к пинам ''10'' и ''11'' соответственно. {{ :продукты:hc-sr04-ultrasonic-sensor-distance-module:ultrasonic-conection.png?direct |}} Напряжение питания дальномера 5 В. Модуль работает и с платами, напряжение которых 3,3 В — в этом случае подключайте его к пинам группы с P8 по P13. Установите джампер выбора питания V2 на Troyka Shield в положение V2+5V. Пин микроконтроллера, соединённый с пином ''Echo'' должен быть толерантен к 5 В. Приведённая схема подходит для подключения дальномера к [[js:iskra_js|Iskra JS]]. ===== Пример работы ===== Рассмотрим как работает дальномер. {{ :продукты:hc-sr04-ultrasonic-sensor-distance-module:ultra-diagramm.png?direct |}} * Для того чтобы инициализировать отправку сигнала дальномером, необходимо подать высокий сигнал длительностью 10 μs на пин ''Trig''. * После получения высокого сигнала длительностью 10 μs на пин ''Trig'', модуль генерирует пучок из восьми сигналов частотой 40 кГц и устанавливает высокий уровень на пине ''Echo''. * После получения отраженного сигнала модуль устанавливает на пине ''Echo'' низкий уровень. Зная продолжительность высокого сигнала на пине ''Echo'' можем вычислить расстояние, умножив время, которое потратил звуковой импульс, прежде чем вернулся к модулю, на скорость распространения звука в воздухе (340 м/с). Функция ''pulseIn'' позволяет узнать длительность импульса в ''μs''. Запишем результат работы этой функции в переменную duration. Теперь вычислим расстояние переведя скорость из м/с в см/мкс: ''distance = duration * 340 м/с = duration * 0.034 м/мкс'' Преобразуем десятичную дробь в обыкновенную ''distance = duration * 1/29 = duration / 29'' Принимая во внимание то, что звук преодолел расстояние до объекта и обратно, поделим полученный результат на 2 ''distance = duration / 58'' Оформим в код всё вышесказанное и выведем результат в Serial Monitor // Укажем, что к каким пинам подключено int trigPin = 10; int echoPin = 11; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { int duration, distance; // для большей точности установим значение LOW на пине Trig digitalWrite(trigPin, LOW); delayMicroseconds(2); // Теперь установим высокий уровень на пине Trig digitalWrite(trigPin, HIGH); // Подождем 10 μs delayMicroseconds(10); digitalWrite(trigPin, LOW); // Узнаем длительность высокого сигнала на пине Echo duration = pulseIn(echoPin, HIGH); // Рассчитаем расстояние distance = duration / 58; // Выведем значение в Serial Monitor Serial.print(distance); Serial.println(" cm"); delay(100); } {{ :продукты:hc-sr04-ultrasonic-sensor-distance-module:ultra_serial.png?direct |}} ==== Работа с библиотекой ==== Количество строк кода можно существенно уменьшить, используя {{:продукты:hc-sr04-ultrasonic-sensor-distance-module:newping_v1.8.zip|библиотеку}} для работы с дальномером. #include #define TRIGGER_PIN 10 #define ECHO_PIN 11 #define MAX_DISTANCE 400 NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(9600); } void loop() { delay(50); Serial.print("Ping: "); Serial.print(sonar.ping_cm()); Serial.println("cm"); } ==== Работа с Iskra JS ==== var sonic = require('@amperka/ultrasonic') .connect({trigPin: P10, echoPin: P11}); sonic.ping(function(err, value) { if (err) { console.log('An error occurred:', err); } else { console.log('The distance is:', value, 'millimeters'); } }, 'mm'); ===== Характеристики ===== {{ :продукты:hc-sr04-ultrasonic-sensor-distance-module:hc-sr04.png?direct |}} * Напряжение питания: 5 В * Потребление в режиме тишины: 2 мА * Потребление при работе: 15 мА * Диапазон расстояний: 2–400 см * Эффективный угол наблюдения: 15° * Рабочий угол наблюдения: 30° ===== Ресурсы ===== * [[amp>product/hc-sr04-ultrasonic-sensor-distance-module?utm_source=man&utm_campaign=HCSR04&utm_medium=wiki|Ультразвуковой дальномер HC-SR04]] в магазине Амперка * [[js:ultrasonic|Описание библиотеки для Iskra JS]] * [[http://playground.arduino.cc/Code/NewPing#Methods|Описание библиотеки для Arduino]]