Ciljevi učenja
- Instalirati podršku za klasični ESP32 i izabrati ploču i port.
- Razlikovati kompajliranje programa od njegovog učitavanja na uređaj.
- Objasniti uloge setup(), loop() i serijske komunikacije.
- Promijeniti poruku i interval ispisivanja te provjeriti rezultat.
Prije početka
Predznanje programiranja nije potrebno. Potrebno je osnovno snalaženje sa datotekama i instaliranjem programa na računaru.
Referentna postavka
- Ploča u Arduino IDE-u
- ESP32 Dev Module
- Arduino-ESP32
- 3.3.12
- Serial Monitor
- 115200 baud
Ovo je referentni profil, a ne identifikacija ploče sa fotografije. Za ESP32-C3/S2/S3 ili drugačije označenu ploču treba prilagoditi GPIO i provjeriti šemu prije spajanja.
Šta ćeš napraviti
Povezaćeš ESP32 sa računarom i pokrenuti program koji šalje pozdrav, a zatim približno jednom u sekundi ispisuje novi podatak u Serial Monitoru. Posmatraćeš brojač poruka i proteklo vrijeme od pokretanja. To je prvi mali dokaz da možeš da napišeš program, preneseš ga na uređaj i vidiš njegov rezultat.
U ovom kursu nema spoljnog elektronskog kola. Ne zavisimo od toga da li razvojna ploča ima ugrađenu LED diodu kojom se može upravljati. Računar prikazuje poruke, a program se izvršava na ESP32.
Šta ćeš naučiti
- Da pripremiš Arduino IDE za klasični ESP32.
- Da razlikuješ izbor ploče od izbora komunikacionog porta.
- Da učitaš program i koristiš Serial Monitor.
- Da objasniš uloge funkcija
setup()iloop(). - Da promijeniš poruku i period njenog ispisivanja.
Predznanje
Programiranje nije preduslov. Potrebno je da znaš da preuzmeš datoteku, raspakuješ arhivu i pronađeš fasciklu na računaru. Pripremi približno 60 minuta; instalacija može trajati duže ako je internet spor.
Referentni uređaj je razvojna ploča sa klasičnim ESP32/ESP32-WROOM-32. Ovaj profil nije namijenjen pločama ESP32-C3, S2 ili S3, za koje se posebno prilagođavaju izbor ploče i naredni kursevi.
Potrebna oprema
| Komponenta | Količina | Specifikacija i napomene |
|---|---|---|
| ESP32 razvojna ploča sa klasičnim ESP32-WROOM-32 modulom | 1 | GPIO nazivi moraju odgovarati referentnom profilu; fizički položaj izvoda provjeriti na ploči. |
| USB kabl za podatke i napajanje | 1 | Priključak prilagoditi ploči; komplet na slici navodi Micro-USB. |
USB kabl mora prenositi podatke. Kabl koji služi samo za punjenje može napajati ploču, a da se komunikacioni port uopšte ne pojavi. Arduino preporučuje provjeru kabla i direktno povezivanje sa računarom kada uređaj nije otkriven: provjera USB veze.
Kako radi
Arduino program se često naziva skica, odnosno „sketch”. IDE prevodi napisani tekst u oblik koji ESP32 može izvršavati, a zatim ga prenosi u memoriju uređaja. Dugme Verify provjerava prevođenje; Upload dodatno pokreće prenos na ploču. Uspješan Verify ne potvrđuje da je program prenesen ili da se uređaj ponaša kako očekuješ.
setup() priprema program pri svakom pokretanju. Poslije njega se ponavlja loop(). Serijska veza nam omogućava da vidimo podatke iz programa. Brzina podešena u programu i Serial Monitoru mora biti ista: ovdje koristimo 115200 baud.
Povezivanje
Šema povezivanja
Prikaz prikazuje električne veze po GPIO nazivima, a ne fizički raspored priključaka ploče. Napajanje ploče je preko USB kabla.
| Od | Do | Opis veze |
|---|---|---|
COMPUTER.USB | ESP32.USB | USB kabl za napajanje i razmjenu podataka. |
- Položi ploču na čistu, neprovodnu podlogu i ukloni spojne žice sa njenih pinova.
- Priključi odgovarajući USB konektor na ploču, a drugi kraj direktno na računar.
- Sačekaj da operativni sistem prepozna priključeni uređaj.
Ploča se u ovoj vježbi napaja samo preko USB-a. Spoljne izvore napajanja ne povezujemo. Raspored konektora i tastera provjeri na svojoj ploči; Espressifov vodič za DevKitC objašnjava tipične funkcije USB, EN i BOOT priključaka/tastera.
Priprema Arduino okruženja
- Instaliraj Arduino IDE 2.x sa zvanične Arduino stranice.
- U Preferences pronađi Additional Boards Manager URLs i dodaj
https://espressif.github.io/arduino-esp32/package_esp32_index.json. - Otvori Boards Manager, pronađi „esp32 by Espressif Systems” i izaberi verziju 3.3.12, ciljnu verziju ovog paketa kurseva. Postupak instalacije opisuje Espressif.
- U izboru ploče postavi ESP32 Dev Module. Zatim izaberi port priključene ploče. Ako nije jasno koji je, uporedi listu portova prije i poslije isključivanja USB kabla.
- Preuzmi Arduino primjer (.zip) i raspakuj ga. Zadrži datoteku
first_program.inounutar istoimene fasciklefirst_programi otvori je dvostrukim klikom.
Dodatne biblioteke nisu potrebne. Izbor ploče određuje kako se program prevodi, a port određuje uređaj kome se šalje. To su dva odvojena podešavanja, čak i kada ih IDE nudi zajedno: Arduino — ploča i port.
Program
Prikazani program i datoteka za preuzimanje imaju isti izvor. Najprije pokreni original, pa tek onda sačuvaj kopiju za svoje izmjene.
#include <Arduino.h>
constexpr uint32_t REPORT_INTERVAL_MS = 1000;
uint32_t lastReportMs = 0;
uint32_t counter = 0;
void setup() {
Serial.begin(115200);
Serial.println("Hello from WB Maker Bridge!");
Serial.println("ESP32 is ready. Watch the counter and uptime.");
lastReportMs = millis();
}
void loop() {
const uint32_t now = millis();
// Subtraction keeps this timer working across millis() rollover.
if (now - lastReportMs >= REPORT_INTERVAL_MS) {
lastReportMs = now;
counter++;
Serial.print("Counter: ");
Serial.print(counter);
Serial.print(" | Uptime (s): ");
Serial.println(now / 1000);
}
}
Kako čitati program
Pronađi Serial.begin(115200) u početnom dijelu. Ono postavlja serijsku komunikaciju. Pozdrav se ispisuje tokom pripreme, zbog čega se ne pojavljuje u svakom prolasku kroz loop().
Program pamti vrijeme prethodnog periodičnog ispisa. Funkcija millis() daje protekle milisekunde, a razlika između sadašnjeg i prethodnog vremena poredi se sa intervalom REPORT_INTERVAL_MS. Hiljadu milisekundi je jedna sekunda. Kada interval protekne, nastaje novi red i ažurira se zabilježeno vrijeme. Ovaj pristup ostavlja petlji prostor za druge zadatke; sličan princip pokazuje Arduino Blink Without Delay.
Brojač poruka i protekle sekunde imaju različito značenje. U početnom programu rastu približno zajedno jer šaljemo jednu poruku u sekundi. Ako interval promijeniš, njihov odnos će se promijeniti.
Pokretanje i očekivani rezultat
Klikni Verify, sačekaj uspješan završetak, zatim klikni Upload. Kada prenos završi, otvori Serial Monitor iz menija Tools i postavi 115200 baud. Ako si propustio početni pozdrav, kratko pritisni EN/RESET nakon otvaranja monitora.
Očekuješ početnu poruku i redove koji se dodaju približno svake sekunde. Prebroj pet uzastopnih redova. Pritisak na reset ponovo pokreće program; početne vrijednosti se uspostavljaju iznova. Samo zatvaranje monitora ne predstavlja namjerno resetovanje, mada promjena veze na nekim pločama može pokrenuti reset.
Posmatranje i bilješke
| Postupak | Šta treba zabilježiti |
|---|---|
| Posmatraj pet periodičnih redova | Da li je razmak približno jedna sekunda? |
| Pritisni EN/RESET | Da li se pozdrav ponavlja i brojač počinje iznova? |
| Isključi i ponovo priključi USB | Da li isti program ponovo radi bez novog učitavanja? |
Rješavanje problema
| Problem | Provjera i sljedeći korak |
|---|---|
| Port se ne pojavljuje | Probaj provjeren podatkovni kabl i drugi USB priključak. Provjeri prepoznavanje uređaja u operativnom sistemu. |
| ESP32 Dev Module nije na listi | Provjeri da je instaliran paket kompanije Espressif. |
| Upload prijavljuje nedostupan port | Ponovo izaberi port i zatvori druge programe koji ga koriste. |
| Povezivanje pri Upload-u ne uspijeva | Tek nakon provjere kabla i porta pokušaj držati BOOT tokom poruke „Connecting”; otpusti kada prenos počne. Ako ploča zahtijeva ručni ulazak, drži BOOT, kratko pritisni EN, pa ponovi Upload. |
| Tekst je nečitljiv | Postavi 115200 baud. |
| Monitor je prazan | Provjeri port, sačekaj nekoliko sekundi i pritisni EN/RESET. |
Samostalni izazov
Sačuvaj kopiju programa. Promijeni pozdrav tako da sadrži tvoje ime i „WB Maker Bridge”. Zatim promijeni interval na dvije sekunde. Prije učitavanja predvidi: koliko poruka će stići za približno deset sekundi i kako će se mijenjati prikaz proteklog vremena?
Provjeri razumijevanje
- Koji dio programa se izvršava jednom nakon resetovanja?
- Zašto izbor ispravne ploče nije dovoljan za Upload?
- Da li promjena perioda ispisivanja mijenja brzinu proticanja vremena?
Smjernice i rješenja
Za izazov izmijeni tekst pozdrava i postavi REPORT_INTERVAL_MS na 2000 milisekundi. Očekuješ oko pet periodičnih poruka za deset sekundi. Brojač poruka napreduje po jedan, a prikaz proteklih sekundi približno po dva. Vrijeme mjeriš od pokretanja uređaja, ne od trenutka kada si pogledao monitor.
Odgovori: setup() se izvršava pri pokretanju; port određuje fizički povezani uređaj; interval mijenja učestalost slanja poruka. Prije sljedećeg kursa vrati originalni interval i samostalno ponovi učitavanje.
