Uvod u ESP32 — Poređenje sa Arduino UNO i primer za Servo Sweep
ESP32 je moćan Wi-Fi + Bluetooth mikrokontroler, idealan za IoT projekte. U nastavku se nalaze ključne informacije, poređenje sa Arduino UNO pločom i praktičan primer upravljanja servo motorom (sweep) pomoću ESP32.
Kako izgleda ESP32 i njegove glavne karakteristike
- 32-bitni dvostruki procesor (Xtensa) @ 160–240 MHz
- Ugrađeni Wi-Fi i Bluetooth
- Dosta GPIO pinova sa podrškom za PWM, ADC, DAC, I2C, SPI i UART
- Više RAM/Flash memorije u odnosu na Arduino UNO
- Najčešće korišćene razvojne ploče: ESP32 DevKitC, NodeMCU-32S
ESP32 vs Arduino UNO
| Karakteristika | ESP32 | Arduino UNO |
|---|---|---|
| CPU | 32-bitni, dvostruki, do 240 MHz | 8-bitni AVR, 16 MHz |
| Wi-Fi / Bluetooth | Da | Ne (zahteva dodatni modul) |
| RAM / Flash | stotine KB / više MB | 2 KB SRAM / 32 KB Flash |
| GPIO | ~34 (zavisi od modula) | 14 digitalnih + 6 analognih |
| Najbolje za | IoT, bežične uređaje, kompleksne projekte | Učenje, jednostavne projekte |
Gde se koristi ESP32
- Pametni uređaji (automatizacija doma)
- IoT senzori i gateway uređaji
- Robotika sa bežičnom kontrolom
- Audio i multimedijalni projekti (zahvaljujući brzom procesoru)
Napajanje i napomene za povezivanje servoa
- ESP32 koristi 3.3V logiku. Većina servo signala je kompatibilna, ali napajanje servoa obično zahteva 5V.
- Nemojte napajati servo direktno sa ESP32 3.3V pina — koristite eksterno 5V napajanje ako servo troši više struje.
- Uvek povežite GND servoa sa GND ESP32 ploče.
- Dodajte kondenzator (100–470 µF) između 5V i GND blizu servoa kako biste smanjili pad napona pri opterećenju.
Osnovno povezivanje (servo konekcija)
- Signal servoa → GPIO pin (npr. GPIO 18)
- Servo VCC → eksterno +5V napajanje
- Servo GND → zajednička masa sa ESP32
Primer — Servo Sweep sa ESP32
Ovaj primer koristi biblioteku ESP32Servo. Povežite signal servoa na GPIO 18, VCC na eksternih 5V, a GND zajednički sa ESP32.
// ESP32 Servo Sweep — korišćenjem ESP32Servo biblioteke
#include <ESP32Servo.h>
Servo myServo;
const int servoPin = 18; // primer: GPIO18
void setup() {
myServo.attach(servoPin);
}
void loop() {
// pomeranje od 0 do 180 stepeni
for (int pos = 0; pos <= 180; pos += 1) {
myServo.write(pos);
delay(15);
}
// i nazad od 180 do 0
for (int pos = 180; pos >= 0; pos -= 1) {
myServo.write(pos);
delay(15);
}
}
Dodatni saveti
- Ako servo trza, proverite napajanje i dodajte kondenzator blizu VCC/GND priključaka.
- Za više servoa koristite eksterno napajanje i zajedničku masu.
- Za naprednije projekte koristite ESP32 hardverske tajmere ili PWM kontrolere.
Više o servo motorima možete pročitati ovde: Uvod u servo motore
Gde se koristi ESP32?
ESP32 je izuzetno svestran mikrokontroler, široko korišćen u projektima koji se kreću od hobi elektronike do profesionalnih IoT rešenja. Sa ugrađenim Wi-Fi i Bluetooth modulima, omogućava bežičnu komunikaciju i povezivanje na internet bez dodatnog hardvera. Zbog toga je idealan za projekte koji zahtevaju daljinsku kontrolu, prikupljanje podataka ili automatizaciju.
Primeri primene ESP32 mikrokontrolera
- IoT projekti – ESP32 se često koristi u sistemima pametnih kuća za merenje temperature, vlažnosti ili nivoa osvetljenja. Na primer, uz senzor DHT22 može pratiti klimu u prostoriji i automatski uključiti ventilaciju ili klima uređaj preko interneta.
- Robotika – zahvaljujući PWM podršci i velikom broju GPIO pinova, ESP32 može upravljati servo i DC motorima. Možete napraviti autonomno vozilo ili robota koji se kontroliše putem Wi-Fi ili Bluetooth veze preko mobilnog telefona.
- Nosivi uređaji (wearables) – zbog male potrošnje energije i kompaktne veličine, ESP32 se koristi u pametnim satovima i fitnes trackerima. Na primer, može meriti puls pomoću senzora i slati rezultate mobilnoj aplikaciji.
- Audio aplikacije – ESP32 podržava digitalne audio interfejse, pa je pogodan za projekte poput internet radio stanica ili bežičnih zvučnika. Uz mali ekran, lako možete napraviti svoj internet radio prijemnik.
- Industrijske primene – u industrijskom okruženju ESP32 se koristi za daljinsko nadziranje mašina i automatizaciju procesa. Na primer, može prikupljati podatke sa senzora o radu motora i slati ih na cloud platformu radi prediktivnog održavanja.
Ovo su samo neki primeri. Na narednim stranicama sledi detaljno objašnjenje i praktični ESP32 projekti koje možete samostalno isprobati.
Priprema Arduino IDE okruženja za ESP32 projekte
Ovaj modul nastavlja lekciju Uvod u ESP32 i daje praktično, korak-po-korak uputstvo za pripremu Arduino IDE okruženja, kako biste mogli odmah da počnete sa ESP32 projektima (uključujući i ranije prikazani primer upravljanja servo motorom). Tekst je kratka i pregledna web-lekcija sa jasnim koracima, preporukama i kontrolnom listom za početnike.
1. Instalacija ESP32 Arduino Core dodatka (Board Manager)
Arduino Core for ESP32 omogućava IDE-u da kompajlira i otprema skice na ESP32 razvojne ploče. Ovo nije firmware uređaja — već alat i biblioteke koje IDE koristi.
- Otvorite File → Preferences u Arduino IDE.
- U polje Additional Boards Manager URLs dodajte:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - Otvorite Tools → Board → Boards Manager…, potražite ESP32, pronađite esp32 by Espressif Systems i instalirajte. Preporučena verzija je 3.3.1.
2. Izbor ploče i porta
- Idite na Tools → Board i izaberite odgovarajući model (npr. ESP32 Dev Module ili vašu tačnu verziju).
- Povežite ploču preko USB-a i u Tools → Port izaberite pravi COM port.
- Ako upload ne uspeva, probajte drugi USB kabl ili postavite upload brzinu na
115200u Tools meniju.
3. Instalacija preporučenih biblioteka (Library Manager)
Neke biblioteke nisu deo ESP32 core paketa i morate ih instalirati preko Library Manager-a (Sketch → Include Library → Manage Libraries…):
- ESP32Servo — upravljanje servo motorima na ESP32.
#include <ESP32Servo.h> - ArduinoJson — parsiranje JSON podataka za REST / IoT projekte.
#include <ArduinoJson.h> - Adafruit Unified Sensor + DHT sensor library — rad sa temperaturnim/vlažnosnim senzorima.
#include <DHT.h> - Adafruit GFX + Adafruit SSD1306 — OLED displeji.
#include <Adafruit_SSD1306.h> - EEPROM — čuvanje malih vrednosti kroz restart.
#include <EEPROM.h> - AsyncTCP i ESPAsyncWebServer — za brze web servere (često se instaliraju ručno sa GitHub-a).
4. Korisni ugrađeni header fajlovi
ESP32 core već sadrži sledeće API-je — samo ih uključite u vašu skicu:
#include <WiFi.h>
#include <HTTPClient.h>
#include <Wire.h> // I2C
#include <SPI.h> // SPI
#include <Preferences.h> // trajno skladištenje podataka (bolja alternativa EEPROM-u)
5. Preporuke za napajanje i povezivanje
- ESP32 koristi 3.3V logiku. Većina servo kontrolnih signala radi i na 3.3V, ali napajanje serva je 5V.
- Koristite eksterni 5V izvor za servoe koji vuku više struje. Servo GND mora ići na isti GND kao ESP32.
- Postavite elektrolitski kondenzator (100–470 μF) preko 5V i GND na napajanju serva kao filtraciju pri pokretanju.
- Ako servo "drhti", prvo proverite napajanje i masu pre menjanja koda.
6. Brza kontrolna lista za novi ESP32 projekat
- Instalisati ESP32 core (preporučeno 3.3.1).
- Izabrati tačnu ploču i port.
- Instalirati biblioteke: ESP32Servo, ArduinoJson, Adafruit Unified Sensor, DHT sensor, Adafruit GFX, Adafruit SSD1306.
- Povezati hardver sa ispravnim napajanjem i zajedničkom masom.
- Otvoriti primer (File → Examples) i proveriti upload i Serial Monitor.
7. Starter skica (tipični header-i)
Ovo su tipični include fajlovi koje ćete koristiti u većini ESP32 projekata — pod uslovom da su biblioteke instalirane:
#include <ESP32Servo.h> // instalirati preko Library Manager-a
#include <WiFi.h> // ugrađeno
#include <HTTPClient.h> // ugrađeno
#include <ArduinoJson.h> // instalirati preko Library Manager-a
// ostatak vaše skice ...
8. Saveti i rešavanje problema
- Koristite Examples svakog library-ja za brže učenje.
- Ako biblioteka nije u Library Manageru, potražite je na GitHub-u (npr. ESPAsyncWebServer često se ručno instalira).
- Kada koristite kod za Arduino UNO, obratite pažnju na razlike u pinovima i naponima.
- Za trajno skladištenje podataka radije koristite Preferences nego EEPROM.
9. Preporučeni paket biblioteka za početnike
Instalirajte odmah ove biblioteke kako biste izbegli kasnije prekide u radu:
- ESP32Servo
- ArduinoJson
- Adafruit Unified Sensor
- DHT sensor library
- Adafruit GFX + Adafruit SSD1306
- Preferences / EEPROM (ugrađeno)
Uz ovaj modul i uvodnu lekciju, čitaoci dobijaju kompaktno i praktično uputstvo za pripremu okruženja i izbegavanje najčešćih problema pri radu sa ESP32 u Arduino IDE-u.
10. USB drajveri i rešavanje problema (Windows)
Dešava se da Windows ne instalira automatski USB-to-Serial drajver. Tipični simptomi: nema COM porta u Tools → Port, u Device Manager-u se pojavljuju uređaji pod Other devices kao CP2102 USB to UART…, ili se pojavljuje samo ECP Printer Port.
Koji drajver vam može biti potreban
- CP210x (Silicon Labs) — veoma čest na ESP32 razvojnim pločama.
- CH340 / CH341 (WCH) — prisutan na jeftinijim ili klon pločama.
Instalacija preko EXE fajla
- Ako ZIP sadrži installer (npr.
CP210xVCPInstaller_x64.exe), pokrenite ga kao administrator. - Po završetku instalacije, isključite i ponovo povežite ploču.
Ručno instaliranje drajvera
- Raspakujte ZIP u neki jednostavan folder, npr.
C:\CP210x_Driver\. - Otvorite Device Manager i pronađite uređaj pod Other devices.
- Desni klik → Update driver → Browse my computer.
- Izaberite folder i uključite opciju Include subfolders.
- Ako Windows prijavi upozorenje da drajver nije potpisan, kliknite Install anyway (samo ako je drajver preuzet sa verovatnog izvora).
Provera uspešne instalacije
- Device Manager → Ports (COM & LPT) bi trebalo da prikaže
CP210x USB to UART Bridge (COMx)iliUSB-SERIAL CH340 (COMx). - Arduino IDE → Tools → Port sada treba da prikaže odgovarajući COM port.
Ako i dalje ne radi
- Pokušajte drugi USB kabl — mnogi kablovi su samo za punjenje i ne prenose podatke.
- Povežite ploču direktno u računar (bez USB hub-ova).
- Restartujte Windows nakon instalacije drajvera.
- Ako upload ne uspeva, pritisnite i držite dugme BOOT dok klikćete na Upload.
- Na macOS/Linux proverite uređaje komandama:
ls /dev/tty.*ilils /dev/ttyUSB*.
11. Delovi ESP32-D razvojne ploče (šta čemu služi)
Korisna referenca koja opisuje fizičke komponente tipične ESP32-D ploče — veoma korisno za početnike i za rešavanje problema.
- ESP32 modul (ESP-WROOM-32 / ESP32-D) — sadrži CPU jezgra, Wi-Fi/Bluetooth module i SPI flash. Ovde se izvršava vaš program.
- USB-to-Serial čip (CP2102 / CH340) — omogućava upload programa i Serial Monitor. Ako drajver nedostaje, COM port se neće pojaviti.
- USB konektor (Micro-USB / USB-C) — prenosi napajanje i podatke. Potrebno je koristiti kabl koji prenosi podatke.
- Regulator napona (5V → 3.3V) — obezbeđuje stabilnih 3.3V za ESP32 i periferije.
- SPI Flash memorija — čuva vaš program, fajl sistem i trajne podatke.
- EN / RESET pin — resetuje uređaj.
- BOOT (GPIO0) dugme — služi za ulazak u bootloader mod ako automatski reset zakaže.
- Power LED — pokazuje da je ploča napajana.
- User LED — korisnička LED za testiranje.
- Header pinovi / GPIO — svi dostupni pinovi: digitalni, ADC, DAC, PWM, I2C, SPI, UART itd.
- VIN / 5V pin — ulaz za eksterno 5V napajanje.
- 3V3 pin — izlaz stabilizovanog 3.3V napona.
- GND pinovi — zajednička masa; obavezno ujediniti mase svih uređaja.
- Antena / U.FL konektor — PCB ili spoljašnja antena.
- Strapping otpornici — određuju režim podizanja sistema (boot mode).
Važne naponske napomene
- ESP32 GPIO radi na 3.3V. Nikada ne dovodite 5V direktno na GPIO pinove.
- Servoe uvek napajajte iz eksternog 5V izvora i spojite masu sa ESP32.
- Kod ADC pinova obavezno koristite naponske delioce ako ulaz prelazi 3.3V.
ESP32-D Pinout – Opis i funkcije
ESP32-D (ESP32-WROOM-32 na DevKit V1 ploči) ima dva reda pinova (levi i desni deo modula). Svaki pin može imati više funkcija, kao što su digitalni ulaz/izlaz, PWM, ADC, DAC, touch senzor, I2C, SPI ili UART. Neki pinovi su samo za ulaz, dok su drugi rezervisani i ne bi trebalo da se koriste. Ispod je detaljna tabela pinova.
Pinovi sa leve strane
| Pin # | Oznaka | Tip | Opis |
|---|---|---|---|
| 1 | 3V3 | Napajanje | Izlaz napajanja 3.3V |
| 2 | EN | Ulaz | Pin za reset/enable |
| 3 | VP (GPIO36) | Samo ulaz, ADC1 | Analogni ulaz, nema digitalni izlaz |
| 4 | VN (GPIO39) | Samo ulaz, ADC1 | Analogni ulaz |
| 5 | GPIO34 | Samo ulaz, ADC1 | Analogni ulaz |
| 6 | GPIO35 | Samo ulaz, ADC1 | Analogni ulaz |
| 7 | GPIO32 | I/O, ADC1, Touch | Digitalni ulaz/izlaz, PWM, touch senzor |
| 8 | GPIO33 | I/O, ADC1, Touch | Digitalni ulaz/izlaz, PWM, touch senzor |
| 9 | GPIO25 | I/O, ADC2, DAC1 | Digitalni ulaz/izlaz, PWM, DAC izlaz |
| 10 | GPIO26 | I/O, ADC2, DAC2 | Digitalni ulaz/izlaz, PWM, DAC izlaz |
| 11 | GPIO27 | I/O, ADC2, Touch | Digitalni ulaz/izlaz, PWM, touch senzor |
| 12 | GPIO14 | I/O, ADC2, Touch, HSPI CLK | Često korišćen kao SPI clock |
| 13 | GPIO12 | I/O, ADC2, Touch | Korišćen u boot modu, pažnja potrebna |
| 14 | GPIO13 | I/O, ADC2, Touch | Generalni I/O pin |
| 15 | GND | Napajanje | Uzemljenje |
| 16 | GPIO9 | Rezervisano | Interna flash memorija, ne koristiti |
| 17 | GPIO10 | Rezervisano | Interna flash memorija, ne koristiti |
| 18 | GPIO11 | Rezervisano | Interna flash memorija, ne koristiti |
| 19 | 5V | Napajanje | 5V ulaz (USB ili eksterno) |
Pinovi sa desne strane
| Pin # | Oznaka | Tip | Opis |
|---|---|---|---|
| 1 | GND | Napajanje | Uzemljenje |
| 2 | GPIO23 | I/O, VSPI MOSI | Digitalni ulaz/izlaz, PWM, SPI MOSI |
| 3 | GPIO22 | I/O, I2C SCL | Digitalni ulaz/izlaz, I2C clock |
| 4 | GPIO1 (TX0) | I/O, UART TX | Standardni UART transmit |
| 5 | GPIO3 (RX0) | I/O, UART RX | Standardni UART receive |
| 6 | GPIO21 | I/O, I2C SDA | Digitalni ulaz/izlaz, I2C data |
| 7 | GPIO19 | I/O, VSPI MISO | Digitalni ulaz/izlaz, SPI MISO |
| 8 | GPIO18 | I/O, VSPI SCK | Digitalni ulaz/izlaz, SPI clock |
| 9 | GPIO5 | I/O, VSPI CS | Digitalni ulaz/izlaz, SPI chip select |
| 10 | GPIO17 | I/O, UART2 TX | Digitalni ulaz/izlaz, UART transmit |
| 11 | GPIO16 | I/O, UART2 RX | Digitalni ulaz/izlaz, UART receive |
| 12 | GPIO4 | I/O, ADC2, Touch | Digitalni ulaz/izlaz, PWM, touch senzor |
| 13 | GPIO0 | I/O, ADC2, Touch, BOOT | Pin za izbor boot moda |
| 14 | GPIO2 | I/O, ADC2, Touch | Digitalni ulaz/izlaz, PWM, touch senzor |
| 15 | GPIO15 | I/O, ADC2, Touch | Generalni I/O pin |
| 16 | GPIO8 | Rezervisano | Interna flash memorija, ne koristiti |
| 17 | GPIO7 | Rezervisano | Interna flash memorija, ne koristiti |
| 18 | GPIO6 | Rezervisano | Interna flash memorija, ne koristiti |
| 19 | GND | Napajanje | Uzemljenje |
Dodatne napomene
- Pinovi samo za ulaz: GPIO36, GPIO39, GPIO34, GPIO35
- Boot pinovi: GPIO0, GPIO2, GPIO12 utiču na boot mod – koristiti pažljivo
- Rezervisani pinovi: GPIO6–11 (koriste se za internu flash, ne povezivati)
- Pinovi opšte namene: Većina ostalih GPIO pinova može se koristiti kao PWM, UART, I2C, SPI itd.
Upozorenja i dobre prakse za ESP32
Prilikom korišćenja ESP32 modula, pridržavanje sledećih pravila može pomoći da se izbegnu problemi sa hardverom i stabilno radi sa senzorima, LED-ovima, servo motorima i drugim periferijama:
- Logika 3.3 V: Svi digitalni pinovi rade na 3.3 V. Ne priključivati direktno 5 V logiku bez level shiftera.
- Zajednička masa (GND): Uvek povežite masu svih komponenti sa GND ESP32 modula da biste izbegli nestabilnosti.
- Eksterno napajanje za potrošače struje: Servo motori, LED trake ili motori koji troše više od nekoliko mA ne bi trebalo da se napajaju direktno sa ESP32.
- Kondenzatori za stabilizaciju: Preporučuje se dodavanje kondenzatora (100 µF ili više) kod servoa, LED drivera ili motora da bi se izbegli kratkotrajni padovi napona.
- Odvojeni naponski izvori kad je potrebno: Ako koristite više potrošača struje, najbolje je imati odvojen izvor napajanja sa odgovarajućim GND povezivanjem.
- Upozorenje za specijalne pinove: Pinovi koji su rezervisani ili imaju specijalnu funkciju (GPIO6–11 za internu flash, GPIO0, GPIO2, GPIO12 za boot mod) ne bi smeli biti povezivani sa eksternim komponentama, osim ako niste sigurni šta radite.
Pridržavanje ovih pravila omogućava sigurnije i stabilnije korišćenje ESP32 u projektima i smanjuje rizik od oštećenja modula.
Pregled ESP32 modula i varijanti
ESP32 dolazi u različitim modulima i varijantama, a izbor pravog modula zavisi od projekta, potrebne memorije, funkcionalnosti i periferija. Slede najčešći moduli:
| Modul | RAM / PSRAM | Funkcionalnosti | Veličina / Dimenzije | Namena / Napomene |
|---|---|---|---|---|
| ESP32-WROOM-32 | 520 KB RAM, 4 MB Flash | Wi-Fi, Bluetooth, GPIO, ADC, DAC, PWM, I2C, SPI, UART | 25.5 x 18 mm | Standardni modul za većinu IoT i mikrokontrolerskih projekata |
| ESP32-WROVER | 520 KB RAM + 4 MB PSRAM, 4 MB Flash | Wi-Fi, Bluetooth, dodatna PSRAM, GPIO, ADC, DAC, PWM, I2C, SPI, UART | 27 x 40 mm | Za projekte koji zahtevaju više RAM-a, obrada audio/video signala, slike, složeniji algoritmi |
| ESP32-CAM | 520 KB RAM, 4 MB Flash | Wi-Fi, Bluetooth, kamera, microSD, GPIO, ADC, PWM, I2C, SPI, UART | 27 x 40 mm | Projekti sa kamerom, video strim, AI kamera, detekcija objekata |
| ESP32 DevKitC | 520 KB RAM, 4 MB Flash | Wi-Fi, Bluetooth, GPIO, ADC, DAC, PWM, I2C, SPI, UART, USB-to-serial | 52 x 28 mm (različite verzije) | Razvojna ploča pogodna za prototipove, jednostavno povezivanje sa računarom preko USB |
| ESP32-S2 / S3 | 320 KB RAM, 4 MB Flash (S3 može imati PSRAM) | Wi-Fi, Bluetooth LE (S3), GPIO, ADC, DAC, PWM, I2C, SPI, UART, USB | Varira po modelu | Napredniji projekti sa niskom potrošnjom ili AI funkcijama (S3) |
Ova tabela omogućava korisniku da brzo proceni koji ESP32 modul odgovara njegovom projektu, bilo da je u pitanju IoT, kamera, audio obrada, prototip ili industrijska primena.
Koristan materijal i zvanična dokumentacija
Za brži napredak u radu sa ESP32, preporučuje se korišćenje sledećih resursa i zvanične dokumentacije:
- Zvučna zvanična dokumentacija: Espressif Documents & Datasheets
- ESP32 WROOM-32 Datasheet: PDF Datasheet
- ESP32 Forum i zajednica: ESP32 Forum – diskusije, projekti, pitanja i odgovori
- Praktični tutorijali i primeri: Random Nerd Tutorials – ESP32 Projekti
- ESP32 GitHub resursi: Espressif GitHub – biblioteke, primeri, SDK