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

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

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

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

Сензор шаље ултразвучни талас и мери време његовог повратка.
За реализацију ове вежбе потребно је:

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

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

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

Повезивање на breadboard плочи.
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);
}
Програм најпре поставља пинове ултразвучног сензора и покреће серијску комуникацију брзином од 9600 baud.
У функцији loop() Arduino:
Формула за израчунавање растојања је:
distance = duration * 0.034 / 2
Број 0.034 представља брзину звука изражену у cm/μs, док се дељење са 2 врши зато што сигнал путује до препреке и назад.
У серијски порт шаље се само један број, на пример:
25.47
48.12
102.85
Ово значајно поједностављује читање података у 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 преко USB кабла прима вредности које Arduino шаље серијском комуникацијом.
Када Arduino пошаље:
35.42
Processing:
На овај начин ученици могу истовремено да виде бројчану вредност и графички приказ растојања.
📌 HC-SR04 шаље кратак ултразвучни импулс.
📌 Ултразвучни талас путује до препреке.
📌 Талас се одбија и враћа назад ка сензору.
📌 Arduino мери време повратка сигнала.
📌 Израчунава се растојање до препреке.
📌 Processing прима податке и приказује их у реалном времену.

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

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

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

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

Упознавање са радом и применом ултразвучних сензора.
Након савладавања ових лекција биће лакше разумети напредније пројекте који користе више сензора, микроконтролера и визуелизацију података у реалном времену.
Истражи различите типове сензора и њихову примену у електроници и роботици.
Покушај да направиш робота који користи HC-SR04 за избегавање препрека.
1. Шта мери HC-SR04 сензор?
2. Који пин покреће ултразвучни импулс?
3. Шта ради Processing програм?
4. Која је брзина серијске комуникације у овој вежби?
У овој вежби ученици ће научити како да користе DHT11 сензор за мерење температуре и влажности ваздуха помоћу Arduino Uno микроконтролерске плоче. Поред самог мерења, подаци ће бити послати на рачунар преко серијске комуникације и приказани у реалном времену помоћу алата Processing.
Ово је једна од основних вежби у оквиру радионица примењене електронике и креативног програмирања, јер повезује:

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

Приказ вредности температуре и влажности у реалном времену.
DHT11 је дигитални сензор који омогућава мерење:
Сензор је веома популаран у образовању и почетним IoT пројектима јер је једноставан за употребу и не захтева сложену електронику. Arduino преко једног пина комуницира са DHT11 сензором и добија податке у дигиталном облику.

Мери температуру и влажност ваздуха.

Сензор шаље дигиталне податке Arduino плочи.
За ову вежбу потребно је следеће:

Arduino Uno, DHT11, breadboard и повезне жице.

Омогућава брзо повезивање компоненти без лемљења.
DHT11 сензор обично има три или четири пина:
DATA пин сензора повезујемо на један од дигиталних пинова Arduino плоче (у примеру пин 2).

Повезивање DHT11 сензора са Arduino Uno плочом.

Практична реализација на breadboard плочи.
Arduino очитава температуру и влажност и затим шаље податке рачунару преко серијске комуникације.
#include <DHT.h>
// Pin na koji je povezan DATA pin senzora
#define DHTPIN 2
// Tip senzora
#define DHTTYPE DHT11
// Kreiranje DHT objekta
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// Pokretanje serijske komunikacije
Serial.begin(9600);
// Pokretanje senzora
dht.begin();
}
void loop() {
// Očitavanje temperature
float temperature = dht.readTemperature();
// Očitavanje vlažnosti
float humidity = dht.readHumidity();
// Provera da li je očitavanje uspešno
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Greška pri očitavanju sa DHT11 senzora!");
return;
}
// Slanje podataka Processing programu
Serial.print(temperature);
Serial.print(",");
Serial.println(humidity);
// Pauza između očitavanja
delay(1000);
}
Програм најпре укључује библиотеку DHT.h која омогућава једноставну комуникацију са DHT11 сензором.
У функцији setup() покреће се серијска комуникација и иницијализује сензор.
Унутар функције loop() Arduino:
Подаци се шаљу у облику:
24.5,58.0
Први број представља температуру, а други влажност ваздуха.
Processing прима податке са Arduino плоче и приказује их у реалном времену.
import processing.serial.*;
Serial myPort;
String data;
float temp, hum;
void setup() {
size(400, 200);
// Povezivanje sa serijskim portom
myPort = new Serial(this, Serial.list()[0], 9600);
}
void draw() {
background(255);
fill(0);
textSize(20);
// Prikaz temperature
text("Temperature: " + temp + " °C", 50, 80);
// Prikaz vlažnosti
text("Humidity: " + hum + " %", 50, 120);
// Provera da li postoje podaci
if (myPort.available() > 0) {
// Čitanje jednog reda teksta
data = myPort.readStringUntil('\n');
// Provera validnosti podataka
if (data != null && data.contains(",")) {
// Razdvajanje temperature i vlažnosti
String[] values = split(trim(data), ",");
if (values.length == 2) {
temp = float(values[0]);
hum = float(values[1]);
}
}
}
}
Processing програм чита податке које Arduino шаље преко USB кабла.
Када Arduino пошаље:
24.5,58.0
Processing:
На овај начин ученици могу у реалном времену да прате промене температуре и влажности.
📌 DHT11 сензор мери температуру и влажност ваздуха.
📌 Arduino очитава вредности са сензора и шаље их рачунару.
📌 Processing прима податке и приказује их у реалном времену.
📌 На тај начин добијамо једноставан систем за мерење и визуелизацију података.

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

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

Динамички приказ вредности кроз графике и анимације.

Слање података преко WiFi мреже помоћу ESP32 плоче.
Уколико желите да детаљније научите основе рада са Arduino платформом, препоручује се да најпре прођете уводне лекције које објашњавају основне појмове, рад са микроконтролерима, повезивање компоненти и развој једноставних пројеката.
Додатна лекција о мерењу температуре помоћу Arduino платформе и различитих сензора.
Након савладавања ових лекција, ученици ће лакше разумети рад са серијском комуникацијом, Processing визуелизацијом и сложенијим IoT пројектима који користе више сензора и микроконтролера.
Детаљније објашњење рада са Arduino платформом и сензорима:
Покушај да направиш IoT систем са ESP32 који шаље податке на интернет.
1. Шта мери DHT11 сензор?
2. Како Arduino добија податке од DHT11?
3. Шта Processing ради у овој вежби?
4. У ком облику Arduino шаље податке?
У овој вежби ученици се упознају са радом сензора осветљења (LDR) и мерењем нивоа светлости у окружењу помоћу Arduino Uno микроконтролера. Ово је једна од основних вежби у области примењене електронике и представља добар увод у рад са аналогним сензорима.
Кроз овај пример ученици уче како да сензор претворе у део једноставног мерења, како да очитају вредност у Arduino IDE-у и како да ту вредност прикажу у реалном времену помоћу Processing-а.
👉 За додатни увод у платформу погледај:
Увод у Arduino програмирање
Основна плоча за читање података са сензора и прве експерименте.
Фотоотпорник чији се отпор мења у зависности од јачине светлости.
Микроконтролер за очитавање вредности са сензора.
Плоча за брзо повезивање без лемљења.
Фотоотпорник за мерење нивоа светлости.
Користи се у напонском делитељу са LDR-ом.
За повезивање компоненти.
LDR (Light Dependent Resistor) је фотоотпорник чији се отпор мења у зависности од количине светлости:
LDR и фиксни отпорник од 10kΩ формирају напонски делитељ, па Arduino на аналогном улазу A0 може да очита вредност од 0 до 1023. Та вредност зависи од нивоа светлости у просторији.
👉 За детаљније објашњење рада LDR сензора и напонског делитеља погледај:
LDR сензор – детаљно објашњење и проширена вежба
Arduino не треба повезивати са рачунаром пре него што су све компоненте правилно повезане. Посебно је важно да се LDR не повезује директно без отпорника, јер је отпорник неопходан за безбедан рад кола и за правилно мерење.
Ако се отпорник изостави, мерење може бити погрешно, а сензор или плоча могу бити изложени непожељном оптерећењу.
1. Повежи пин 5V са једном страном LDR сензора.
2. Другу страну LDR-а повежи са једним крајем отпорника од 10kΩ.
3. Други крај отпорника повежи на GND.
4. Место где се спајају LDR и отпорник повежи на A0.
5. Када су све везе проверене, повежи Arduino са рачунаром преко USB кабла.
Повезивање LDR сензора на Arduino
const int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int lightValue = analogRead(sensorPin); // 0 (dark) to 1023 (bright)
Serial.println(lightValue);
delay(200);
}
LDR сензор осећа количину светлости у окружењу и мења свој отпор. Arduino затим чита напон на аналогном улазу A0 и шаље добијену вредност преко серијске комуникације на рачунар.
То значи да Arduino непрекидно „прати“ светлост у просторији и шаље вредности у реалном времену. Тај податак можемо касније да прикажемо графички, да га користимо за управљање LED диодом, аутоматским светлом или другим уређајем.
У овом примеру Arduino шаље само бројеве у опсегу од 0 до 1023, где мања вредност означава тамније окружење, а већа вредност јаче осветљење.
import processing.serial.*;
Serial myPort;
String val = "";
int lightLevel = 0;
void setup() {
size(400, 200);
myPort = new Serial(this, Serial.list()[0], 9600);
}
void draw() {
background(255);
fill(0);
textSize(20);
text("Light Intensity: " + lightLevel, 50, 100);
if (myPort.available() > 0) {
val = myPort.readStringUntil('\n');
if (val != null) {
lightLevel = int(trim(val));
}
}
}
Processing прима вредност коју Arduino шаље преко серијске комуникације и приказује је на екрану у реалном времену. На тај начин добијамо једноставан визуелни интерфејс за посматрање светлости у просторији.
Овакав приступ је веома користан јер ученици не виде само бројеве, већ одмах уочавају како се подаци из физичког света претварају у графички приказ на рачунару.
Тако се повезују сензор, микроконтролер и програмско окружење, што је важан корак ка сложенијим пројектима и визуелизацији података.
У наставку вежбе може се додати и LED диода која реагује на ниво светлости. Када је у просторији тамније, LED може да светли јаче, а када је више светла, да слабије светли. На тај начин добија се једноставан модел аутоматског осветљења.
LED диода се повезује преко отпорника од 220Ω, како би се заштитила од превелике струје.
Проширена вежба: LDR + LED
const int sensorPin = A0;
const int ledPin = 9;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
int lightValue = analogRead(sensorPin); // 0 (dark) to 1023 (bright)
int ledValue = map(lightValue, 0, 1023, 255, 0);
analogWrite(ledPin, ledValue);
Serial.println(lightValue);
delay(200);
}
Ова вежба има више практичних примена:
Кроз овај пример ученици виде како се један једноставан сензор може користити у реалним техничким решењима и како се подаци могу приказати и обрадити помоћу Processing-а.
Вежба са LDR сензором представља одличан први корак ка разумевању рада са аналогним сигналима, сензорима и визуелизацијом података. Ово знање је основа за наредне вежбе као што су DHT11, ултразвучни сензор, серво мотор и паметна башта.
Управо због тога је ова лекција важна као почетна тачка у серији практичних примера из области примењене електронике.
Ако желиш детаљније објашњење начина рада сензора и електронског кола, погледај проширену лекцију:
Покушај да повежеш више сензора или да направиш систем који аутоматски управља осветљењем у просторији.
1. Како се мења отпор LDR сензора када се повећа количина светлости?
2. Који тип сигнала Arduino чита са LDR сензора?
3. Зашто користимо отпорник од 10kΩ са LDR-ом?
4. Који је опсег вредности које Arduino чита са аналогног улаза?
Ова категорија садржи практичне вежбе и пројекте засноване на Arduino платформи. Кроз рад са сензорима, актуаторима и различитим електронским компонентама ученици стичу основна знања из програмирања микроконтролера, електронике и STEM области. Вежбе су намењене почетницима и напреднијим корисницима који желе да развијају своје пројекте и истражују свет уграђених система.
У овој вежби ученици ће научити како да користе HC-SR04 ултразвучни сензор за мерење растојања до објекта помоћу Arduino плоче. Поред самог мерења, добијена вредност биће послата на рачунар преко серијске комуникације и приказана у реалном времену помоћу алата Processing.
Ова вежба представља одличан увод у рад са сензорима јер повезује:

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

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

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

Сензор шаље ултразвучни талас и мери време његовог повратка.
За реализацију ове вежбе потребно је:

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

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

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

Повезивање на breadboard плочи.
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);
}
Програм најпре поставља пинове ултразвучног сензора и покреће серијску комуникацију брзином од 9600 baud.
У функцији loop() Arduino:
Формула за израчунавање растојања је:
distance = duration * 0.034 / 2
Број 0.034 представља брзину звука изражену у cm/μs, док се дељење са 2 врши зато што сигнал путује до препреке и назад.
У серијски порт шаље се само један број, на пример:
25.47
48.12
102.85
Ово значајно поједностављује читање података у 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 преко USB кабла прима вредности које Arduino шаље серијском комуникацијом.
Када Arduino пошаље:
35.42
Processing:
На овај начин ученици могу истовремено да виде бројчану вредност и графички приказ растојања.
📌 HC-SR04 шаље кратак ултразвучни импулс.
📌 Ултразвучни талас путује до препреке.
📌 Талас се одбија и враћа назад ка сензору.
📌 Arduino мери време повратка сигнала.
📌 Израчунава се растојање до препреке.
📌 Processing прима податке и приказује их у реалном времену.

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

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

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

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

Упознавање са радом и применом ултразвучних сензора.
Након савладавања ових лекција биће лакше разумети напредније пројекте који користе више сензора, микроконтролера и визуелизацију података у реалном времену.
Истражи различите типове сензора и њихову примену у електроници и роботици.
Покушај да направиш робота који користи HC-SR04 за избегавање препрека.
1. Шта мери HC-SR04 сензор?
2. Који пин покреће ултразвучни импулс?
3. Шта ради Processing програм?
4. Која је брзина серијске комуникације у овој вежби?
У овој вежби ученици ће научити како да користе DHT11 сензор за мерење температуре и влажности ваздуха помоћу Arduino Uno микроконтролерске плоче. Поред самог мерења, подаци ће бити послати на рачунар преко серијске комуникације и приказани у реалном времену помоћу алата Processing.
Ово је једна од основних вежби у оквиру радионица примењене електронике и креативног програмирања, јер повезује:

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

Приказ вредности температуре и влажности у реалном времену.
DHT11 је дигитални сензор који омогућава мерење:
Сензор је веома популаран у образовању и почетним IoT пројектима јер је једноставан за употребу и не захтева сложену електронику. Arduino преко једног пина комуницира са DHT11 сензором и добија податке у дигиталном облику.

Мери температуру и влажност ваздуха.

Сензор шаље дигиталне податке Arduino плочи.
За ову вежбу потребно је следеће:

Arduino Uno, DHT11, breadboard и повезне жице.

Омогућава брзо повезивање компоненти без лемљења.
DHT11 сензор обично има три или четири пина:
DATA пин сензора повезујемо на један од дигиталних пинова Arduino плоче (у примеру пин 2).

Повезивање DHT11 сензора са Arduino Uno плочом.

Практична реализација на breadboard плочи.
Arduino очитава температуру и влажност и затим шаље податке рачунару преко серијске комуникације.
#include <DHT.h>
// Pin na koji je povezan DATA pin senzora
#define DHTPIN 2
// Tip senzora
#define DHTTYPE DHT11
// Kreiranje DHT objekta
DHT dht(DHTPIN, DHTTYPE);
void setup() {
// Pokretanje serijske komunikacije
Serial.begin(9600);
// Pokretanje senzora
dht.begin();
}
void loop() {
// Očitavanje temperature
float temperature = dht.readTemperature();
// Očitavanje vlažnosti
float humidity = dht.readHumidity();
// Provera da li je očitavanje uspešno
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Greška pri očitavanju sa DHT11 senzora!");
return;
}
// Slanje podataka Processing programu
Serial.print(temperature);
Serial.print(",");
Serial.println(humidity);
// Pauza između očitavanja
delay(1000);
}
Програм најпре укључује библиотеку DHT.h која омогућава једноставну комуникацију са DHT11 сензором.
У функцији setup() покреће се серијска комуникација и иницијализује сензор.
Унутар функције loop() Arduino:
Подаци се шаљу у облику:
24.5,58.0
Први број представља температуру, а други влажност ваздуха.
Processing прима податке са Arduino плоче и приказује их у реалном времену.
import processing.serial.*;
Serial myPort;
String data;
float temp, hum;
void setup() {
size(400, 200);
// Povezivanje sa serijskim portom
myPort = new Serial(this, Serial.list()[0], 9600);
}
void draw() {
background(255);
fill(0);
textSize(20);
// Prikaz temperature
text("Temperature: " + temp + " °C", 50, 80);
// Prikaz vlažnosti
text("Humidity: " + hum + " %", 50, 120);
// Provera da li postoje podaci
if (myPort.available() > 0) {
// Čitanje jednog reda teksta
data = myPort.readStringUntil('\n');
// Provera validnosti podataka
if (data != null && data.contains(",")) {
// Razdvajanje temperature i vlažnosti
String[] values = split(trim(data), ",");
if (values.length == 2) {
temp = float(values[0]);
hum = float(values[1]);
}
}
}
}
Processing програм чита податке које Arduino шаље преко USB кабла.
Када Arduino пошаље:
24.5,58.0
Processing:
На овај начин ученици могу у реалном времену да прате промене температуре и влажности.
📌 DHT11 сензор мери температуру и влажност ваздуха.
📌 Arduino очитава вредности са сензора и шаље их рачунару.
📌 Processing прима податке и приказује их у реалном времену.
📌 На тај начин добијамо једноставан систем за мерење и визуелизацију података.

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

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

Динамички приказ вредности кроз графике и анимације.

Слање података преко WiFi мреже помоћу ESP32 плоче.
Уколико желите да детаљније научите основе рада са Arduino платформом, препоручује се да најпре прођете уводне лекције које објашњавају основне појмове, рад са микроконтролерима, повезивање компоненти и развој једноставних пројеката.
Додатна лекција о мерењу температуре помоћу Arduino платформе и различитих сензора.
Након савладавања ових лекција, ученици ће лакше разумети рад са серијском комуникацијом, Processing визуелизацијом и сложенијим IoT пројектима који користе више сензора и микроконтролера.
Детаљније објашњење рада са Arduino платформом и сензорима:
Покушај да направиш IoT систем са ESP32 који шаље податке на интернет.
1. Шта мери DHT11 сензор?
2. Како Arduino добија податке од DHT11?
3. Шта Processing ради у овој вежби?
4. У ком облику Arduino шаље податке?
У овој вежби ученици се упознају са радом сензора осветљења (LDR) и мерењем нивоа светлости у окружењу помоћу Arduino Uno микроконтролера. Ово је једна од основних вежби у области примењене електронике и представља добар увод у рад са аналогним сензорима.
Кроз овај пример ученици уче како да сензор претворе у део једноставног мерења, како да очитају вредност у Arduino IDE-у и како да ту вредност прикажу у реалном времену помоћу Processing-а.
👉 За додатни увод у платформу погледај:
Увод у Arduino програмирање
Основна плоча за читање података са сензора и прве експерименте.
Фотоотпорник чији се отпор мења у зависности од јачине светлости.
Микроконтролер за очитавање вредности са сензора.
Плоча за брзо повезивање без лемљења.
Фотоотпорник за мерење нивоа светлости.
Користи се у напонском делитељу са LDR-ом.
За повезивање компоненти.
LDR (Light Dependent Resistor) је фотоотпорник чији се отпор мења у зависности од количине светлости:
LDR и фиксни отпорник од 10kΩ формирају напонски делитељ, па Arduino на аналогном улазу A0 може да очита вредност од 0 до 1023. Та вредност зависи од нивоа светлости у просторији.
👉 За детаљније објашњење рада LDR сензора и напонског делитеља погледај:
LDR сензор – детаљно објашњење и проширена вежба
Arduino не треба повезивати са рачунаром пре него што су све компоненте правилно повезане. Посебно је важно да се LDR не повезује директно без отпорника, јер је отпорник неопходан за безбедан рад кола и за правилно мерење.
Ако се отпорник изостави, мерење може бити погрешно, а сензор или плоча могу бити изложени непожељном оптерећењу.
1. Повежи пин 5V са једном страном LDR сензора.
2. Другу страну LDR-а повежи са једним крајем отпорника од 10kΩ.
3. Други крај отпорника повежи на GND.
4. Место где се спајају LDR и отпорник повежи на A0.
5. Када су све везе проверене, повежи Arduino са рачунаром преко USB кабла.
Повезивање LDR сензора на Arduino
const int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int lightValue = analogRead(sensorPin); // 0 (dark) to 1023 (bright)
Serial.println(lightValue);
delay(200);
}
LDR сензор осећа количину светлости у окружењу и мења свој отпор. Arduino затим чита напон на аналогном улазу A0 и шаље добијену вредност преко серијске комуникације на рачунар.
То значи да Arduino непрекидно „прати“ светлост у просторији и шаље вредности у реалном времену. Тај податак можемо касније да прикажемо графички, да га користимо за управљање LED диодом, аутоматским светлом или другим уређајем.
У овом примеру Arduino шаље само бројеве у опсегу од 0 до 1023, где мања вредност означава тамније окружење, а већа вредност јаче осветљење.
import processing.serial.*;
Serial myPort;
String val = "";
int lightLevel = 0;
void setup() {
size(400, 200);
myPort = new Serial(this, Serial.list()[0], 9600);
}
void draw() {
background(255);
fill(0);
textSize(20);
text("Light Intensity: " + lightLevel, 50, 100);
if (myPort.available() > 0) {
val = myPort.readStringUntil('\n');
if (val != null) {
lightLevel = int(trim(val));
}
}
}
Processing прима вредност коју Arduino шаље преко серијске комуникације и приказује је на екрану у реалном времену. На тај начин добијамо једноставан визуелни интерфејс за посматрање светлости у просторији.
Овакав приступ је веома користан јер ученици не виде само бројеве, већ одмах уочавају како се подаци из физичког света претварају у графички приказ на рачунару.
Тако се повезују сензор, микроконтролер и програмско окружење, што је важан корак ка сложенијим пројектима и визуелизацији података.
У наставку вежбе може се додати и LED диода која реагује на ниво светлости. Када је у просторији тамније, LED може да светли јаче, а када је више светла, да слабије светли. На тај начин добија се једноставан модел аутоматског осветљења.
LED диода се повезује преко отпорника од 220Ω, како би се заштитила од превелике струје.
Проширена вежба: LDR + LED
const int sensorPin = A0;
const int ledPin = 9;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
int lightValue = analogRead(sensorPin); // 0 (dark) to 1023 (bright)
int ledValue = map(lightValue, 0, 1023, 255, 0);
analogWrite(ledPin, ledValue);
Serial.println(lightValue);
delay(200);
}
Ова вежба има више практичних примена:
Кроз овај пример ученици виде како се један једноставан сензор може користити у реалним техничким решењима и како се подаци могу приказати и обрадити помоћу Processing-а.
Вежба са LDR сензором представља одличан први корак ка разумевању рада са аналогним сигналима, сензорима и визуелизацијом података. Ово знање је основа за наредне вежбе као што су DHT11, ултразвучни сензор, серво мотор и паметна башта.
Управо због тога је ова лекција важна као почетна тачка у серији практичних примера из области примењене електронике.
Ако желиш детаљније објашњење начина рада сензора и електронског кола, погледај проширену лекцију:
Покушај да повежеш више сензора или да направиш систем који аутоматски управља осветљењем у просторији.
1. Како се мења отпор LDR сензора када се повећа количина светлости?
2. Који тип сигнала Arduino чита са LDR сензора?
3. Зашто користимо отпорник од 10kΩ са LDR-ом?
4. Који је опсег вредности које Arduino чита са аналогног улаза?