Вежба: Мерење растојања помоћу ултразвучног сензора
У овој вежби ученици ће научити како да користе HC-SR04 ултразвучни сензор за мерење растојања до објекта помоћу Arduino плоче. Поред самог мерења, добијена вредност биће послата на рачунар преко серијске комуникације и приказана у реалном времену помоћу алата Processing.
Ова вежба представља одличан увод у рад са сензорима јер повезује:
- мерење физичких величина,
- Arduino програмирање,
- серијску комуникацију,
- визуелизацију података,
- рад са Processing окружењем.

Arduino + HC-SR04
Повезивање ултразвучног сензора са Arduino плочом и мерење растојања до објекта.

Processing визуелизација
Приказ измереног растојања помоћу хоризонталне траке у реалном времену.
📑 Садржај
Шта је HC-SR04?
HC-SR04 је ултразвучни сензор који служи за бесконтактно мерење растојања. Ради тако што емитује кратак ултразвучни импулс, а затим мери време потребно да се одбијени талас врати до сензора.
Пошто је брзина звука позната, Arduino може једноставно да израчуна удаљеност објекта. Овај сензор се често користи у роботима који избегавају препреке, паметним системима паркирања и различитим STEM пројектима.

HC-SR04
Ултразвучни сензор за мерење растојања.

Принцип рада
Сензор шаље ултразвучни талас и мери време његовог повратка.
🧰 Потребна опрема
За реализацију ове вежбе потребно је:
- Arduino Uno плоча,
- HC-SR04 ултразвучни сензор,
- breadboard плоча,
- повезне жице,
- USB кабл,
- рачунар са Arduino IDE и Processing окружењем.

Потребна опрема
Arduino плоча, HC-SR04 сензор и breadboard.

Breadboard
Омогућава повезивање компоненти без лемљења.
Повезивање компоненти
HC-SR04 поседује четири пина:
- VCC – напајање 5V,
- GND – маса,
- TRIG – покреће ултразвучни импулс,
- ECHO – враћа време одбијеног сигнала.
У овој вежби користимо следеће повезивање:
- TRIG → пин 3
- ECHO → пин 2

Шема повезивања
Повезивање HC-SR04 сензора са Arduino плочом.

Практична реализација
Повезивање на breadboard плочи.
Arduino програм
Arduino шаље ултразвучни импулс, мери време његовог повратка и на основу тога израчунава растојање у центиметрима.
// Мерење растојања помоћу HC-SR04 ултразвучног сензора
// TRIG пин повезан на дигитални пин 3
int trigPin = 3;
// ECHO пин повезан на дигитални пин 2
int echoPin = 2;
// Трајање ECHO импулса у микросекундама
long duration;
// Израчунава се растојање у центиметрима
float distance;
void setup() {
// TRIG је излаз
pinMode(trigPin, OUTPUT);
// ECHO је улаз
pinMode(echoPin, INPUT);
// Покретање серијске комуникације
Serial.begin(9600);
}
void loop() {
// Ресетовање TRIG сигнала
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// Слање ултразвучног импулса
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Мерење трајања ECHO импулса
duration = pulseIn(echoPin, HIGH);
// Израчунавање растојања
distance = duration * 0.034 / 2;
// Слање само бројчане вредности
Serial.println(distance, 2);
// Пауза до следећег мерења
delay(500);
}
Објашњење Arduino програма
Програм најпре поставља пинове ултразвучног сензора и покреће серијску комуникацију брзином од 9600 baud.
У функцији loop() Arduino:
- шаље кратак импулс на TRIG пин,
- чека одбијени сигнал на ECHO пину,
- мери време повратка сигнала,
- израчунава растојање у центиметрима,
- шаље резултат Processing програму.
Формула за израчунавање растојања је:
distance = duration * 0.034 / 2
Број 0.034 представља брзину звука изражену у cm/μs, док се дељење са 2 врши зато што сигнал путује до препреке и назад.
У серијски порт шаље се само један број, на пример:
25.47
48.12
102.85
Ово значајно поједностављује читање података у Processing програму.
Processing програм
Processing чита вредност растојања коју Arduino шаље преко серијске комуникације и приказује је у облику хоризонталне траке. Што је објекат удаљенији од сензора, трака је дужа.
import processing.serial.*;
// Објекат за серијску комуникацију
Serial myPort;
// Текст који стиже са Arduino плоче
String data;
// Измерено растојање
float distance = 0;
// Максимална вредност која се приказује
float maxDistance = 200;
void setup() {
size(700, 250);
// Повезивање на први серијски порт
// По потреби променити индекс
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.clear();
// Позива serialEvent када стигне нови ред
myPort.bufferUntil('\n');
textAlign(LEFT, CENTER);
}
void draw() {
background(245);
// Наслов
fill(0);
textSize(24);
text("Мерење растојања ултразвучним сензором", 20, 30);
// Приказ вредности
textSize(22);
text("Растојање: " + nf(distance, 1, 2) + " cm", 20, 75);
float x = 20;
float y = 120;
float w = 640;
float h = 35;
// Оквир траке
noFill();
stroke(0);
rect(x, y, w, h);
// Израчунавање ширине траке
float barWidth = map(distance, 0, maxDistance, 0, w);
// Ограничење вредности
barWidth = constrain(barWidth, 0, w);
// Попуњена трака
noStroke();
fill(0);
rect(x, y, barWidth, h);
// Ознаке
fill(0);
textSize(16);
text("0 cm", x, y + 55);
text(int(maxDistance) + " cm", x + w - 60, y + 55);
text(
"Што је трака дужа, објекат је даље од сензора.",
20,
210
);
}
// Позива се када стигне нова линија текста
void serialEvent(Serial myPort) {
data = myPort.readStringUntil('\n');
if (data != null) {
data = trim(data);
try {
distance = float(data);
}
catch(Exception e) {
// Игнорише неисправне податке
}
}
}
🖥️ Објашњење Processing програма
Processing преко USB кабла прима вредности које Arduino шаље серијском комуникацијом.
Када Arduino пошаље:
35.42
Processing:
- прочита вредност,
- претвори текст у број,
- прикаже растојање у центиметрима,
- исцрта хоризонталну траку одговарајуће дужине.
На овај начин ученици могу истовремено да виде бројчану вредност и графички приказ растојања.
Како систем функционише?
📌 HC-SR04 шаље кратак ултразвучни импулс.
📌 Ултразвучни талас путује до препреке.
📌 Талас се одбија и враћа назад ка сензору.
📌 Arduino мери време повратка сигнала.
📌 Израчунава се растојање до препреке.
📌 Processing прима податке и приказује их у реалном времену.

Серијска комуникација
Arduino шаље податке Processing програму преко USB кабла.

Реално време
Растојање се континуирано мери и приказује.
Могућа проширења пројекта
Након успешно реализоване вежбе ученици могу да прошире пројекат на различите начине:
- додавањем LED диода које сигнализирају близину препреке,
- употребом звучника (buzzer-а) за звучно упозорење,
- цртањем графика растојања током времена,
- чувањем података у CSV датотеку,
- прављењем система за паркирање,
- израдом робота који избегава препреке.

Графички приказ
Приказ мерења помоћу графика и напредних визуелизација.

Роботика
Употреба ултразвучног сензора за избегавање препрека.
⚠️ На шта треба обратити пажњу
- Проверити исправност свих повезаних жица.
- Уверити се да су TRIG и ECHO повезани на исправне пинове.
- Проверити COM порт у Processing програму.
- Не постављати препреку сувише близу сензора.
- Избегавати лабаве контакте на breadboard плочи.
- Пре покретања програма проверити комплетно коло.
Додатно читање
Уколико желите да детаљније научите рад са Arduino платформом, сензорима и Processing окружењем, препоручујемо следеће лекције:

HC-SR04 ултразвучни сензор
Упознавање са радом и применом ултразвучних сензора.
Након савладавања ових лекција биће лакше разумети напредније пројекте који користе више сензора, микроконтролера и визуелизацију података у реалном времену.
📚 Додатно учење
🔎 Продуби знање
Истражи различите типове сензора и њихову примену у електроници и роботици.
🧪 Идеје за експеримент
- Мери растојање до различитих објеката.
- Упореди резултате за различите материјале.
- Направи једноставан паркинг сензор.
Следећи корак
Покушај да направиш робота који користи HC-SR04 за избегавање препрека.
Мини квиз
1. Шта мери HC-SR04 сензор?
2. Који пин покреће ултразвучни импулс?
3. Шта ради Processing програм?
4. Која је брзина серијске комуникације у овој вежби?