Найти тему

Ультразвуковой измеритель расстояния HC-SR04. Подключение к Arduino

Оглавление

Всем привет! Сегодня я покажу вам как подключить ультразвуковой измеритель расстояния HC-SR04 к Arduino. Для этого понадобятся:

1. Любая плата Arduino(я буду использовать Uno)

2. Компьютер с установленной Arduino IDE и драйверами для плат

3. Соединительные провода

4. Ультразвуковой измеритель расстояния HC-SR04

Описание и принцип работы HC-SR04

HC-SR04 - это ультразвуковой измеритель расстояния. Принцип его работы прост. Ультразвуковой измеритель расстояния(сонар) излучает сигнал и ждёт когда он, отразившись от препятствия, вернётся обратно. Возвращает этот сонар число, но это не расстояние, а время, которое шёл сигнал от сонара до препятствия. Если его разделить на скорость ультразвука мы получим расстояние. Дальность его видимости начинается с 2-3 сантиметров и составляет 4 метра. Но не обошлось и без минусов. Он не видит лохматые препятствия, а если расстояние больше четырёх метров, то он и вовсе может зависнуть. Говорят, что HC-SR04+ лишён таких зависаний. Но не обязательно иметь при себе HC-SR04+. Можно HC-SR04 программно лишить этих зависаний. В интернете я прочитал, что если во время такого зависания подать на контакт ECHO 0, то сонар выйдет из зависания. Давайте же подключим наш сонар к Arduino и напишем для него скетч.

HC-SR04
HC-SR04

Схема подключения HC-SR04

Схема подключения HC-SR04 к Arduino Uno представлена на фото ниже:

Схема подключения HC-SR04 к Arduino Uno
Схема подключения HC-SR04 к Arduino Uno

Схема подключения:

VCC(HC-SR04) - 5V(Arduino)

Gnd(HC-SR04) - Gnd(Arduino)

Echo(HC-SR04) - 11(Arduino)

Trig(HC-SR04) - 12(Arduino)

Скетч

Скетч:

int distance; // переменная расстояние

int Sonar_Echo = 11; //пин входа сонара — Echo

int Sonar_Trig = 12; //пин выхода сонара — Trig

void setup()

{

Serial.begin(9600); // включаем скорость обмена данными 9600 бод

pinMode (Sonar_Echo, INPUT); // пин вход сонара

pinMode (Sonar_Trig, OUTPUT); // пин выхода сонара

}

int distance_measurement() // функция измерения расстояния сонаром

{

digitalWrite (Sonar_Trig, LOW); // подаём LOW на Trig

delayMicroseconds (2); //задержка 2 Мс

digitalWrite (Sonar_Trig, HIGH); // подаём HIGH на Trig

delayMicroseconds (10); // задержка 10 Мс

digitalWrite (Sonar_Trig, LOW); // подаём LOW на Trig

int distance = pulseIn(Sonar_Echo, HIGH, 30000); // считываем данные с Сонара

if (distance == 0) // если расстояние 0 дальность измерения выше

//максимальной или сонар завис

{ //перезагрузка сонара

pinMode(Sonar_Echo, OUTPUT);

digitalWrite(Sonar_Echo, 0);

pinMode(Sonar_Echo, INPUT);

// приравниваем расстояние к максимальной дальности измерения

distance = 400;

}

else

{

distance = distance / 58; // рассчитываем расстояние

}

{

return (distance); // возвращаем расстояние

}

}

void loop()

{

distance = distance_measurement();

{

Serial.print(distance); // выводим в серийный порт расстояние в см

Serial.println(" CM");

}

delay(100); // задержка между измерениями

}

Вывод расстояния в монитор порта:

Расстояние в сантиметрах
Расстояние в сантиметрах

На этот раз всё, всем спасибо за внимание!