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

 

Вежба: Управљање SG90 серво мотором помоћу ESP32 платформе

У овој вежби ученици ће научити како да управљају SG90 серво мотором помоћу ESP32 микроконтролера. Серво мотор ће се непрекидно померати од 0° до 180° и назад, што представља један од најпознатијих примера за упознавање са радом серво мотора.

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

  • рад са ESP32 платформом,
  • управљање серво моторима,
  • PWM сигнале,
  • Arduino програмирање,
  • основе роботике и аутоматике.
ESP32 и SG90 серво мотор

ESP32 + SG90

Повезивање серво мотора са ESP32 плочом.

 

📑 Садржај

 

 

Шта је SG90 серво мотор?

SG90 је мали серво мотор који омогућава прецизно позиционирање осовине на одређени угао. За разлику од класичних DC мотора који се непрекидно окрећу, серво мотор може бити постављен на тачно одређен положај.

Најчешће се користи у роботици, моделарству, аутоматским вратима, роботским рукама и STEM пројектима.

Принцип рада серво мотора

Принцип рада

Серво мотор се позиционира на тачно одређени угао.

 

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

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

  • ESP32 развојна плоча,
  • SG90 серво мотор,
  • breadboard плоча,
  • повезне жице,
  • USB кабл,
  • рачунар са Arduino IDE окружењем.

 

Напомена за кориснике ESP32-WROOM-32E

Уколико користите развојну плочу са модулом ESP32-WROOM-32E, ову вежбу можете изводити без икаквих измена програмског кода. Није потребно бирати други Board у Arduino IDE нити инсталирати додатне библиотеке – поступак је исти као и за ESP32-WROOM-32D.

Обратите пажњу само на ознаке GPIO пинова на вашој развојној плочи. На појединим моделима пинови могу бити означени као P13, IO13 или GPIO13 (или другом ознаком у зависности од пина који се користи у програму), али представљају исти GPIO пин. Пре повезивања серво мотора проверите распоред и ознаке пинова на својој плочи и повежите сигнални проводник на GPIO који је дефинисан у програму.

 

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

Серво мотор SG90 поседује три прикључка:

  • Смеђа жица – GND
  • Црвена жица – VCC
  • Наранџаста жица – сигнал

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

  • GND → GND
  • VCC → 5V
  • Signal → GPIO18
Реално повезивање

Реално повезивање

Повезивање ESP32 плоче и SG90 серво мотора.

ESP32 пинови

ESP32 пинови

Увећан приказ пинова који се користе у пројекту.

Напомена о напајању

Серво мотор током рада може повући већу струју од оне коју ESP32 може обезбедити преко својих GPIO пинова.

Због тога се напајање серво мотора доводи са 5V пина, док се сигнални проводник повезује на GPIO18.

Код сложенијих пројеката препоручује се коришћење посебног извора напајања за серво моторе.

 

ESP32 програм


#include <ESP32Servo.h>

Servo myServo;

const int servoPin = 18;

void setup() {

  myServo.attach(servoPin);

}

void loop() {

  for (int pos = 0; pos <= 180; pos += 1) {

    myServo.write(pos);

    delay(15);
  }

  for (int pos = 180; pos >= 0; pos -= 1) {

    myServo.write(pos);

    delay(15);
  }
}

Објашњење ESP32 програма

За рад са серво мотором користи се библиотека ESP32Servo.

  • Креира се објекат myServo.
  • Серво мотор се повезује на GPIO18.
  • Функција attach() иницијализује серво мотор.
  • Функција write() поставља угао серво мотора.
  • Прва петља ротира мотор од 0° до 180°.
  • Друга петља враћа мотор од 180° до 0°.

Вредност:


myServo.write(90);

поставља серво мотор на угао од 90 степени.

На исти начин могуће је поставити било који угао између 0° и 180°.

 

Како систем функционише?

📌 ESP32 генерише PWM сигнал.

📌 PWM сигнал се шаље серво мотору.

📌 Серво електроника анализира сигнал.

📌 Одређује се жељени угао.

📌 Мотор ротира осовину на задати положај.

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

 

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

  • Управљање серво мотором помоћу потенциометра.
  • Управљање преко Bluetooth везе.
  • Управљање преко Wi-Fi мреже.
  • Аутоматска врата са ултразвучним сензором.
  • Роботска рука са више серво мотора.
  • Систем за праћење положаја објекта.
  • Паметна рампа за паркинг.

 

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

  • Проверити исправност свих жица.
  • Проверити да је сигнална жица повезана на GPIO18.
  • Не оптерећивати серво мотор механички.
  • Не ротирати осовину руком док мотор ради.
  • Користити стабилно напајање.
  • Пре покретања програма проверити целокупно коло.

 

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

ESP32 и серво мотори

Детаљније објашњење рада серво мотора, PWM сигнала, избора GPIO пинова и напајања на ESP32 платформи.

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

Истражи рад PWM сигнала и начин управљања серво моторима.

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

  • Испробај различите брзине кретања.
  • Постави серво на тачно одређене углове.
  • Направи роботску руку.

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

Повежи серво мотор са ултразвучним сензором и направи аутоматска врата.

 

Мини квиз

1. Колико прикључака има SG90 серво мотор?

2. Која функција поставља угао серво мотора?

3. Који GPIO пин се користи у овој вежби?

4. Шта ради Sweep програм?


 

Примена стеченог знања

До сада смо видели како се SG90 серво мотор може контролисати помоћу ESP32 платформе. Следећи корак је повезивање серво мотора са сензором који ће доносити одлуку када треба покренути механизам.

У наредне две вежбе комбинујемо HC-SR04 ултразвучни сензор и SG90 серво мотор како бисмо направили систем који реагује на присуство објекта.

 

Вежба 1: Серво мотор на 90° када је растојање мање од прага

У овој вежби комбинујемо HC-SR04 ултразвучни сензор и SG90 серво мотор са ESP32 платформом. ESP32 непрекидно мери растојање до препреке, а када је објекат ближи од задатог прага, серво мотор се помера на угао од 90°. Када се препрека удаљи, серво се враћа на почетни положај од 0°.

Ова вежба је корисна за разумевање аутоматског реаговања система на окружење и често се примењује у моделима аутоматских врата, поклопцима, рампама и једноставним роботичким механизмима.

Реална изведба вежбе са препреком

Реална изведба

Приказ комплетне вежбе у раду, са препреком испред сензора.

ESP32 i HC-SR04 priključci

ESP32 и HC-SR04

Увећан приказ пинова на ESP32 плочи и ултразвучном сензору.

HC-SR04 pinovi

HC-SR04 пинови

Део реалне шеме на коме се јасно виде прикључци сензора.

Циљ вежбе

Циљ ове вежбе је да ученик увиди како се мерење растојања може повезати са конкретном механичком акцијом. Када је препрека довољно близу, ESP32 шаље команду серво мотору да се помери на 90°.

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

  • ESP32 развојна плоча
  • HC-SR04 ултразвучни сензор
  • SG90 серво мотор
  • breadboard плоча
  • повезне жице
  • USB кабл
  • рачунар са Arduino IDE окружењем

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

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

  • HC-SR04 VCC → 3V3
  • HC-SR04 GND → GND
  • HC-SR04 TRIG → GPIO18
  • HC-SR04 ECHO → GPIO19
  • SG90 signal → GPIO23
  • SG90 VCC → 5V
  • SG90 GND → GND
Шема повезивања

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

Иста шема се користи и у овој и у следећој вежби.

Arduino IDE i Serial Monitor

Arduino IDE + Serial Monitor

Приказ кода и резултата мерења у Serial Monitor-у.

Напомена о напајању

HC-SR04 сензор се у овој вежби напаја са 3V3 како би ECHO сигнал био безбедан за ESP32.

SG90 серво мотор се напаја са 5V, а сви GND прикључци морају бити заједнички повезани.

ESP32 програм


#include <ESP32Servo.h>

// HC-SR04
const int TRIG_PIN = 18;
const int ECHO_PIN = 19;

// Servo motor
const int SERVO_PIN = 23;

// Prag aktivacije
const int DISTANCE_THRESHOLD = 15;

Servo servo;

// Promenljive
float duration_us;
float distance_cm;

void setup() {

  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  servo.attach(SERVO_PIN);

  // Početni položaj
  servo.write(0);
}

void loop() {

  // Reset TRIG
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  // Slanje impulsa
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Merenje vremena povratka
  duration_us = pulseIn(ECHO_PIN, HIGH);

  // Izračunavanje rastojanja
  distance_cm = duration_us * 0.034 / 2;

  // Upravljanje servo motorom
  if (distance_cm < DISTANCE_THRESHOLD) {

    servo.write(90);

  } else {

    servo.write(0);

  }

  // Ispis rezultata
  Serial.print("Rastojanje: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  delay(500);
}

Објашњење програма

  • ESP32 шаље ултразвучни импулс преко TRIG пина.
  • HC-SR04 мери повратак сигнала на ECHO пину.
  • Функција pulseIn() мери трајање импулса.
  • На основу времена повратка израчунава се растојање у центиметрима.
  • Ако је растојање мање од задатог прага, серво иде на 90°.
  • У супротном, серво се враћа на 0°.

distance_cm = duration_us * 0.034 / 2

Број 0.034 представља брзину звука изражену у cm/μs, а дељење са 2 је потребно јер талас путује до препреке и назад.

Како систем функционише?

📌 ESP32 активира TRIG пин.

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

📌 Талас се одбија од препреке.

📌 Одбијени талас стиже на ECHO пин.

📌 ESP32 израчунава растојање.

📌 Серво мотор се помера на 90° када је објекат близу.

📌 Када се препрека удаљи, серво се враћа на 0°.

Примена

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

 

Вежба 2: Sweep покрет када је растојање мање од прага

У овој вежби користимо исту шему повезивања као у претходној, али се серво мотор не зауставља на једном фиксном углу. Када ESP32 детектује да је препрека ближа од задатог прага, серво мотор изводи Sweep покрет од 0° до 180° и назад.

Ова вежба је добра за демонстрацију кретања серво мотора, а може се користити и у пројектима који симулирају скенер, роботску руку или аутоматски механизам са динамичким одговором на присуство објекта.

Реална изведба вежбе

Реална изведба

Комплетна поставка у раду, са препреком која активира систем.

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

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

Иста шема важи и за Sweep варијанту вежбе.

Arduino IDE i Serial Monitor za Sweep

Arduino IDE + Serial Monitor

Код и приказ вредности у Serial Monitor-у за Sweep варијанту.

Циљ вежбе

Циљ ове вежбе је да се покаже како ултразвучни сензор може да покрене сложенији покрет серво мотора. Уместо једног положаја, серво изводи целокупно кретање, што је корисно за скенирање простора и анимацију механичких система.

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

  • ESP32 развојна плоча
  • HC-SR04 ултразвучни сензор
  • SG90 серво мотор
  • breadboard плоча
  • повезне жице
  • USB кабл
  • рачунар са Arduino IDE окружењем

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

Повезивање је потпуно исто као у претходној вежби:

  • HC-SR04 VCC → 3V3
  • HC-SR04 GND → GND
  • HC-SR04 TRIG → GPIO18
  • HC-SR04 ECHO → GPIO19
  • SG90 signal → GPIO23
  • SG90 VCC → 5V
  • SG90 GND → GND

Напомена

Пошто је шема повезивања иста, ученик може да користи исто коло, а да промени само логику програма. Ово лепо показује разлику између једноставне реакције (90°) и сложенијег кретања (Sweep).

ESP32 програм


#include <ESP32Servo.h>

const int TRIG_PIN = 18;
const int ECHO_PIN = 19;
const int SERVO_PIN = 23;

const int DISTANCE_THRESHOLD = 15;

Servo servo;

float duration_us;
float distance_cm;

void setup() {

  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  servo.attach(SERVO_PIN);

  servo.write(0);
}

void loop() {

  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  duration_us = pulseIn(ECHO_PIN, HIGH);

  distance_cm = duration_us * 0.034 / 2;

  Serial.print("Rastojanje: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  if (distance_cm < DISTANCE_THRESHOLD) {

    // Sweep 0 -> 180
    for (int pos = 0; pos <= 180; pos++) {

      servo.write(pos);

      delay(10);
    }

    // Sweep 180 -> 0
    for (int pos = 180; pos >= 0; pos--) {

      servo.write(pos);

      delay(10);
    }
  }

  delay(100);
}

Објашњење програма

  • ESP32 поново мери растојање помоћу HC-SR04 сензора.
  • Када је објекат ближи од прага, активира се Sweep покрет.
  • Серво мотор иде постепено од 0° до 180°.
  • Затим се враћа назад од 180° до 0°.
  • Овај покрет се понавља док је препрека и даље близу сензора.

Ако се жели да се Sweep изврши само једном по детекцији, може се додати заставица, на пример activated, која спречава понављање покрета док се објекат не удаљи.

Како систем функционише?

📌 ESP32 мери растојање помоћу HC-SR04 сензора.

📌 Када је објекат ближи од прага, систем покреће серво мотор.

📌 Серво изводи Sweep покрет од 0° до 180° и назад.

📌 Покрет може да се понавља док је објекат испред сензора.

📌 Ово је корисно за скенирање и демонстрацију покрета.

Примена

  • скенер простора,
  • аутоматска врата са анимацијом,
  • паметна полуга,
  • демонстрација рада серво мотора.

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

  • Проверити исправност свих жица.
  • Проверити да ли су GPIO18, GPIO19 и GPIO23 правилно повезани.
  • Не оптерећивати серво мотор механички.
  • Проверити да ли је напајање серво мотора стабилно.
  • Пре покретања програма проверити целокупно коло.

 

Вежба: Управљање SG90 серво мотором помоћу ESP32 платформе

У овој вежби ученици ће научити како да управљају SG90 серво мотором помоћу ESP32 микроконтролера. Серво мотор ће се непрекидно померати од 0° до 180° и назад, што представља један од најпознатијих примера за упознавање са радом серво мотора.

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

  • рад са ESP32 платформом,
  • управљање серво моторима,
  • PWM сигнале,
  • Arduino програмирање,
  • основе роботике и аутоматике.
ESP32 и SG90 серво мотор

ESP32 + SG90

Повезивање серво мотора са ESP32 плочом.

 

📑 Садржај

 

 

Шта је SG90 серво мотор?

SG90 је мали серво мотор који омогућава прецизно позиционирање осовине на одређени угао. За разлику од класичних DC мотора који се непрекидно окрећу, серво мотор може бити постављен на тачно одређен положај.

Најчешће се користи у роботици, моделарству, аутоматским вратима, роботским рукама и STEM пројектима.

Принцип рада серво мотора

Принцип рада

Серво мотор се позиционира на тачно одређени угао.

 

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

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

  • ESP32 развојна плоча,
  • SG90 серво мотор,
  • breadboard плоча,
  • повезне жице,
  • USB кабл,
  • рачунар са Arduino IDE окружењем.

 

Напомена за кориснике ESP32-WROOM-32E

Уколико користите развојну плочу са модулом ESP32-WROOM-32E, ову вежбу можете изводити без икаквих измена програмског кода. Није потребно бирати други Board у Arduino IDE нити инсталирати додатне библиотеке – поступак је исти као и за ESP32-WROOM-32D.

Обратите пажњу само на ознаке GPIO пинова на вашој развојној плочи. На појединим моделима пинови могу бити означени као P13, IO13 или GPIO13 (или другом ознаком у зависности од пина који се користи у програму), али представљају исти GPIO пин. Пре повезивања серво мотора проверите распоред и ознаке пинова на својој плочи и повежите сигнални проводник на GPIO који је дефинисан у програму.

 

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

Серво мотор SG90 поседује три прикључка:

  • Смеђа жица – GND
  • Црвена жица – VCC
  • Наранџаста жица – сигнал

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

  • GND → GND
  • VCC → 5V
  • Signal → GPIO18
Реално повезивање

Реално повезивање

Повезивање ESP32 плоче и SG90 серво мотора.

ESP32 пинови

ESP32 пинови

Увећан приказ пинова који се користе у пројекту.

Напомена о напајању

Серво мотор током рада може повући већу струју од оне коју ESP32 може обезбедити преко својих GPIO пинова.

Због тога се напајање серво мотора доводи са 5V пина, док се сигнални проводник повезује на GPIO18.

Код сложенијих пројеката препоручује се коришћење посебног извора напајања за серво моторе.

 

ESP32 програм


#include <ESP32Servo.h>

Servo myServo;

const int servoPin = 18;

void setup() {

  myServo.attach(servoPin);

}

void loop() {

  for (int pos = 0; pos <= 180; pos += 1) {

    myServo.write(pos);

    delay(15);
  }

  for (int pos = 180; pos >= 0; pos -= 1) {

    myServo.write(pos);

    delay(15);
  }
}

Објашњење ESP32 програма

За рад са серво мотором користи се библиотека ESP32Servo.

  • Креира се објекат myServo.
  • Серво мотор се повезује на GPIO18.
  • Функција attach() иницијализује серво мотор.
  • Функција write() поставља угао серво мотора.
  • Прва петља ротира мотор од 0° до 180°.
  • Друга петља враћа мотор од 180° до 0°.

Вредност:


myServo.write(90);

поставља серво мотор на угао од 90 степени.

На исти начин могуће је поставити било који угао између 0° и 180°.

 

Како систем функционише?

📌 ESP32 генерише PWM сигнал.

📌 PWM сигнал се шаље серво мотору.

📌 Серво електроника анализира сигнал.

📌 Одређује се жељени угао.

📌 Мотор ротира осовину на задати положај.

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

 

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

  • Управљање серво мотором помоћу потенциометра.
  • Управљање преко Bluetooth везе.
  • Управљање преко Wi-Fi мреже.
  • Аутоматска врата са ултразвучним сензором.
  • Роботска рука са више серво мотора.
  • Систем за праћење положаја објекта.
  • Паметна рампа за паркинг.

 

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

  • Проверити исправност свих жица.
  • Проверити да је сигнална жица повезана на GPIO18.
  • Не оптерећивати серво мотор механички.
  • Не ротирати осовину руком док мотор ради.
  • Користити стабилно напајање.
  • Пре покретања програма проверити целокупно коло.

 

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

ESP32 и серво мотори

Детаљније објашњење рада серво мотора, PWM сигнала, избора GPIO пинова и напајања на ESP32 платформи.

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

Истражи рад PWM сигнала и начин управљања серво моторима.

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

  • Испробај различите брзине кретања.
  • Постави серво на тачно одређене углове.
  • Направи роботску руку.

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

Повежи серво мотор са ултразвучним сензором и направи аутоматска врата.

 

Мини квиз

1. Колико прикључака има SG90 серво мотор?

2. Која функција поставља угао серво мотора?

3. Који GPIO пин се користи у овој вежби?

4. Шта ради Sweep програм?


 

Примена стеченог знања

До сада смо видели како се SG90 серво мотор може контролисати помоћу ESP32 платформе. Следећи корак је повезивање серво мотора са сензором који ће доносити одлуку када треба покренути механизам.

У наредне две вежбе комбинујемо HC-SR04 ултразвучни сензор и SG90 серво мотор како бисмо направили систем који реагује на присуство објекта.

 

Вежба 1: Серво мотор на 90° када је растојање мање од прага

У овој вежби комбинујемо HC-SR04 ултразвучни сензор и SG90 серво мотор са ESP32 платформом. ESP32 непрекидно мери растојање до препреке, а када је објекат ближи од задатог прага, серво мотор се помера на угао од 90°. Када се препрека удаљи, серво се враћа на почетни положај од 0°.

Ова вежба је корисна за разумевање аутоматског реаговања система на окружење и често се примењује у моделима аутоматских врата, поклопцима, рампама и једноставним роботичким механизмима.

Реална изведба вежбе са препреком

Реална изведба

Приказ комплетне вежбе у раду, са препреком испред сензора.

ESP32 i HC-SR04 priključci

ESP32 и HC-SR04

Увећан приказ пинова на ESP32 плочи и ултразвучном сензору.

HC-SR04 pinovi

HC-SR04 пинови

Део реалне шеме на коме се јасно виде прикључци сензора.

Циљ вежбе

Циљ ове вежбе је да ученик увиди како се мерење растојања може повезати са конкретном механичком акцијом. Када је препрека довољно близу, ESP32 шаље команду серво мотору да се помери на 90°.

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

  • ESP32 развојна плоча
  • HC-SR04 ултразвучни сензор
  • SG90 серво мотор
  • breadboard плоча
  • повезне жице
  • USB кабл
  • рачунар са Arduino IDE окружењем

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

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

  • HC-SR04 VCC → 3V3
  • HC-SR04 GND → GND
  • HC-SR04 TRIG → GPIO18
  • HC-SR04 ECHO → GPIO19
  • SG90 signal → GPIO23
  • SG90 VCC → 5V
  • SG90 GND → GND
Шема повезивања

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

Иста шема се користи и у овој и у следећој вежби.

Arduino IDE i Serial Monitor

Arduino IDE + Serial Monitor

Приказ кода и резултата мерења у Serial Monitor-у.

Напомена о напајању

HC-SR04 сензор се у овој вежби напаја са 3V3 како би ECHO сигнал био безбедан за ESP32.

SG90 серво мотор се напаја са 5V, а сви GND прикључци морају бити заједнички повезани.

ESP32 програм


#include <ESP32Servo.h>

// HC-SR04
const int TRIG_PIN = 18;
const int ECHO_PIN = 19;

// Servo motor
const int SERVO_PIN = 23;

// Prag aktivacije
const int DISTANCE_THRESHOLD = 15;

Servo servo;

// Promenljive
float duration_us;
float distance_cm;

void setup() {

  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  servo.attach(SERVO_PIN);

  // Početni položaj
  servo.write(0);
}

void loop() {

  // Reset TRIG
  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  // Slanje impulsa
  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  // Merenje vremena povratka
  duration_us = pulseIn(ECHO_PIN, HIGH);

  // Izračunavanje rastojanja
  distance_cm = duration_us * 0.034 / 2;

  // Upravljanje servo motorom
  if (distance_cm < DISTANCE_THRESHOLD) {

    servo.write(90);

  } else {

    servo.write(0);

  }

  // Ispis rezultata
  Serial.print("Rastojanje: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  delay(500);
}

Објашњење програма

  • ESP32 шаље ултразвучни импулс преко TRIG пина.
  • HC-SR04 мери повратак сигнала на ECHO пину.
  • Функција pulseIn() мери трајање импулса.
  • На основу времена повратка израчунава се растојање у центиметрима.
  • Ако је растојање мање од задатог прага, серво иде на 90°.
  • У супротном, серво се враћа на 0°.

distance_cm = duration_us * 0.034 / 2

Број 0.034 представља брзину звука изражену у cm/μs, а дељење са 2 је потребно јер талас путује до препреке и назад.

Како систем функционише?

📌 ESP32 активира TRIG пин.

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

📌 Талас се одбија од препреке.

📌 Одбијени талас стиже на ECHO пин.

📌 ESP32 израчунава растојање.

📌 Серво мотор се помера на 90° када је објекат близу.

📌 Када се препрека удаљи, серво се враћа на 0°.

Примена

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

 

Вежба 2: Sweep покрет када је растојање мање од прага

У овој вежби користимо исту шему повезивања као у претходној, али се серво мотор не зауставља на једном фиксном углу. Када ESP32 детектује да је препрека ближа од задатог прага, серво мотор изводи Sweep покрет од 0° до 180° и назад.

Ова вежба је добра за демонстрацију кретања серво мотора, а може се користити и у пројектима који симулирају скенер, роботску руку или аутоматски механизам са динамичким одговором на присуство објекта.

Реална изведба вежбе

Реална изведба

Комплетна поставка у раду, са препреком која активира систем.

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

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

Иста шема важи и за Sweep варијанту вежбе.

Arduino IDE i Serial Monitor za Sweep

Arduino IDE + Serial Monitor

Код и приказ вредности у Serial Monitor-у за Sweep варијанту.

Циљ вежбе

Циљ ове вежбе је да се покаже како ултразвучни сензор може да покрене сложенији покрет серво мотора. Уместо једног положаја, серво изводи целокупно кретање, што је корисно за скенирање простора и анимацију механичких система.

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

  • ESP32 развојна плоча
  • HC-SR04 ултразвучни сензор
  • SG90 серво мотор
  • breadboard плоча
  • повезне жице
  • USB кабл
  • рачунар са Arduino IDE окружењем

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

Повезивање је потпуно исто као у претходној вежби:

  • HC-SR04 VCC → 3V3
  • HC-SR04 GND → GND
  • HC-SR04 TRIG → GPIO18
  • HC-SR04 ECHO → GPIO19
  • SG90 signal → GPIO23
  • SG90 VCC → 5V
  • SG90 GND → GND

Напомена

Пошто је шема повезивања иста, ученик може да користи исто коло, а да промени само логику програма. Ово лепо показује разлику између једноставне реакције (90°) и сложенијег кретања (Sweep).

ESP32 програм


#include <ESP32Servo.h>

const int TRIG_PIN = 18;
const int ECHO_PIN = 19;
const int SERVO_PIN = 23;

const int DISTANCE_THRESHOLD = 15;

Servo servo;

float duration_us;
float distance_cm;

void setup() {

  Serial.begin(115200);

  pinMode(TRIG_PIN, OUTPUT);
  pinMode(ECHO_PIN, INPUT);

  servo.attach(SERVO_PIN);

  servo.write(0);
}

void loop() {

  digitalWrite(TRIG_PIN, LOW);
  delayMicroseconds(2);

  digitalWrite(TRIG_PIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TRIG_PIN, LOW);

  duration_us = pulseIn(ECHO_PIN, HIGH);

  distance_cm = duration_us * 0.034 / 2;

  Serial.print("Rastojanje: ");
  Serial.print(distance_cm);
  Serial.println(" cm");

  if (distance_cm < DISTANCE_THRESHOLD) {

    // Sweep 0 -> 180
    for (int pos = 0; pos <= 180; pos++) {

      servo.write(pos);

      delay(10);
    }

    // Sweep 180 -> 0
    for (int pos = 180; pos >= 0; pos--) {

      servo.write(pos);

      delay(10);
    }
  }

  delay(100);
}

Објашњење програма

  • ESP32 поново мери растојање помоћу HC-SR04 сензора.
  • Када је објекат ближи од прага, активира се Sweep покрет.
  • Серво мотор иде постепено од 0° до 180°.
  • Затим се враћа назад од 180° до 0°.
  • Овај покрет се понавља док је препрека и даље близу сензора.

Ако се жели да се Sweep изврши само једном по детекцији, може се додати заставица, на пример activated, која спречава понављање покрета док се објекат не удаљи.

Како систем функционише?

📌 ESP32 мери растојање помоћу HC-SR04 сензора.

📌 Када је објекат ближи од прага, систем покреће серво мотор.

📌 Серво изводи Sweep покрет од 0° до 180° и назад.

📌 Покрет може да се понавља док је објекат испред сензора.

📌 Ово је корисно за скенирање и демонстрацију покрета.

Примена

  • скенер простора,
  • аутоматска врата са анимацијом,
  • паметна полуга,
  • демонстрација рада серво мотора.

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

  • Проверити исправност свих жица.
  • Проверити да ли су GPIO18, GPIO19 и GPIO23 правилно повезани.
  • Не оптерећивати серво мотор механички.
  • Проверити да ли је напајање серво мотора стабилно.
  • Пре покретања програма проверити целокупно коло.

Vrati se na vrh