Регионални центар за таленте "Михајло Пупин"

 

Вежба: Мерење растојања помоћу ултразвучног сензора

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

Ова вежба представља одличан увод у рад са сензорима јер повезује:

  • мерење физичких величина,
  • Arduino програмирање,
  • серијску комуникацију,
  • визуелизацију података,
  • рад са Processing окружењем.
Arduino i HC-SR04 ultrazvučni senzor

Arduino + HC-SR04

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

Processing prikaz rastojanja

Processing визуелизација

Приказ измереног растојања помоћу хоризонталне траке у реалном времену.

 

 

Шта је HC-SR04?

HC-SR04 је ултразвучни сензор који служи за бесконтактно мерење растојања. Ради тако што емитује кратак ултразвучни импулс, а затим мери време потребно да се одбијени талас врати до сензора.

Пошто је брзина звука позната, Arduino може једноставно да израчуна удаљеност објекта. Овај сензор се често користи у роботима који избегавају препреке, паметним системима паркирања и различитим STEM пројектима.

HC-SR04 senzor

HC-SR04

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

Princip rada ultrazvučnog senzora

Принцип рада

Сензор шаље ултразвучни талас и мери време његовог повратка.

 

🧰 Потребна опрема

За реализацију ове вежбе потребно је:

  • Arduino Uno плоча,
  • HC-SR04 ултразвучни сензор,
  • breadboard плоча,
  • повезне жице,
  • USB кабл,
  • рачунар са Arduino IDE и Processing окружењем.
Oprema za vezbu

Потребна опрема

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

Breadboard

Breadboard

Омогућава повезивање компоненти без лемљења.

 

Повезивање компоненти

HC-SR04 поседује четири пина:

  • VCC – напајање 5V,
  • GND – маса,
  • TRIG – покреће ултразвучни импулс,
  • ECHO – враћа време одбијеног сигнала.

У овој вежби користимо следеће повезивање:

  • TRIG → пин 3
  • ECHO → пин 2
Šema povezivanja

Шема повезивања

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

Realno povezivanje

Практична реализација

Повезивање на 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 прима податке и приказује их у реалном времену.

Serijska komunikacija

Серијска комуникација

Arduino шаље податке Processing програму преко USB кабла.

Prikaz u realnom vremenu

Реално време

Растојање се континуирано мери и приказује.

 

Могућа проширења пројекта

Након успешно реализоване вежбе ученици могу да прошире пројекат на различите начине:

  • додавањем LED диода које сигнализирају близину препреке,
  • употребом звучника (buzzer-а) за звучно упозорење,
  • цртањем графика растојања током времена,
  • чувањем података у CSV датотеку,
  • прављењем система за паркирање,
  • израдом робота који избегава препреке.
Grafički prikaz podataka

Графички приказ

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

Robot sa ultrazvučnim senzorom

Роботика

Употреба ултразвучног сензора за избегавање препрека.

 

⚠️ На шта треба обратити пажњу

  • Проверити исправност свих повезаних жица.
  • Уверити се да су TRIG и ECHO повезани на исправне пинове.
  • Проверити COM порт у Processing програму.
  • Не постављати препреку сувише близу сензора.
  • Избегавати лабаве контакте на breadboard плочи.
  • Пре покретања програма проверити комплетно коло.

 

Додатно читање

Уколико желите да детаљније научите рад са Arduino платформом, сензорима и Processing окружењем, препоручујемо следеће лекције:

Увод у Arduino

Основни појмови, Arduino IDE и први програми.

Arduino и ESP32

Поређење Arduino и ESP32 платформи.

HC-SR04

HC-SR04 ултразвучни сензор

Упознавање са радом и применом ултразвучних сензора.

Након савладавања ових лекција биће лакше разумети напредније пројекте који користе више сензора, микроконтролера и визуелизацију података у реалном времену.

 

📚 Додатно учење

🔎 Продуби знање

Истражи различите типове сензора и њихову примену у електроници и роботици.

🧪 Идеје за експеримент

  • Мери растојање до различитих објеката.
  • Упореди резултате за различите материјале.
  • Направи једноставан паркинг сензор.

Следећи корак

Покушај да направиш робота који користи HC-SR04 за избегавање препрека.

Мини квиз

1. Шта мери HC-SR04 сензор?

2. Који пин покреће ултразвучни импулс?

3. Шта ради Processing програм?

4. Која је брзина серијске комуникације у овој вежби?


 

Вежба: Мерење растојања помоћу ултразвучног сензора

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

Ова вежба представља одличан увод у рад са сензорима јер повезује:

  • мерење физичких величина,
  • Arduino програмирање,
  • серијску комуникацију,
  • визуелизацију података,
  • рад са Processing окружењем.
Arduino i HC-SR04 ultrazvučni senzor

Arduino + HC-SR04

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

Processing prikaz rastojanja

Processing визуелизација

Приказ измереног растојања помоћу хоризонталне траке у реалном времену.

 

 

Шта је HC-SR04?

HC-SR04 је ултразвучни сензор који служи за бесконтактно мерење растојања. Ради тако што емитује кратак ултразвучни импулс, а затим мери време потребно да се одбијени талас врати до сензора.

Пошто је брзина звука позната, Arduino може једноставно да израчуна удаљеност објекта. Овај сензор се често користи у роботима који избегавају препреке, паметним системима паркирања и различитим STEM пројектима.

HC-SR04 senzor

HC-SR04

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

Princip rada ultrazvučnog senzora

Принцип рада

Сензор шаље ултразвучни талас и мери време његовог повратка.

 

🧰 Потребна опрема

За реализацију ове вежбе потребно је:

  • Arduino Uno плоча,
  • HC-SR04 ултразвучни сензор,
  • breadboard плоча,
  • повезне жице,
  • USB кабл,
  • рачунар са Arduino IDE и Processing окружењем.
Oprema za vezbu

Потребна опрема

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

Breadboard

Breadboard

Омогућава повезивање компоненти без лемљења.

 

Повезивање компоненти

HC-SR04 поседује четири пина:

  • VCC – напајање 5V,
  • GND – маса,
  • TRIG – покреће ултразвучни импулс,
  • ECHO – враћа време одбијеног сигнала.

У овој вежби користимо следеће повезивање:

  • TRIG → пин 3
  • ECHO → пин 2
Šema povezivanja

Шема повезивања

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

Realno povezivanje

Практична реализација

Повезивање на 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 прима податке и приказује их у реалном времену.

Serijska komunikacija

Серијска комуникација

Arduino шаље податке Processing програму преко USB кабла.

Prikaz u realnom vremenu

Реално време

Растојање се континуирано мери и приказује.

 

Могућа проширења пројекта

Након успешно реализоване вежбе ученици могу да прошире пројекат на различите начине:

  • додавањем LED диода које сигнализирају близину препреке,
  • употребом звучника (buzzer-а) за звучно упозорење,
  • цртањем графика растојања током времена,
  • чувањем података у CSV датотеку,
  • прављењем система за паркирање,
  • израдом робота који избегава препреке.
Grafički prikaz podataka

Графички приказ

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

Robot sa ultrazvučnim senzorom

Роботика

Употреба ултразвучног сензора за избегавање препрека.

 

⚠️ На шта треба обратити пажњу

  • Проверити исправност свих повезаних жица.
  • Уверити се да су TRIG и ECHO повезани на исправне пинове.
  • Проверити COM порт у Processing програму.
  • Не постављати препреку сувише близу сензора.
  • Избегавати лабаве контакте на breadboard плочи.
  • Пре покретања програма проверити комплетно коло.

 

Додатно читање

Уколико желите да детаљније научите рад са Arduino платформом, сензорима и Processing окружењем, препоручујемо следеће лекције:

Увод у Arduino

Основни појмови, Arduino IDE и први програми.

Arduino и ESP32

Поређење Arduino и ESP32 платформи.

HC-SR04

HC-SR04 ултразвучни сензор

Упознавање са радом и применом ултразвучних сензора.

Након савладавања ових лекција биће лакше разумети напредније пројекте који користе више сензора, микроконтролера и визуелизацију података у реалном времену.

 

📚 Додатно учење

🔎 Продуби знање

Истражи различите типове сензора и њихову примену у електроници и роботици.

🧪 Идеје за експеримент

  • Мери растојање до различитих објеката.
  • Упореди резултате за различите материјале.
  • Направи једноставан паркинг сензор.

Следећи корак

Покушај да направиш робота који користи HC-SR04 за избегавање препрека.

Мини квиз

1. Шта мери HC-SR04 сензор?

2. Који пин покреће ултразвучни импулс?

3. Шта ради Processing програм?

4. Која је брзина серијске комуникације у овој вежби?


Vrati se na vrh