====== Ультразвуковой дальномер 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]]