Kako se Koristi i Programira ESP32 Mikrokontroler sa GPS Senzorom NEO-6M
Iz dana u dan naša sekcija “Tutorijali” postaje sve bogatija i bogatija! Kako naš tim pravi sve veći broj lekcije, tako sve više dobivamo upita i ponosni smo na to! U ovoj lekciji naučit ćemo kako se koristi GPS senzor, tačnije model NEO-6M. Mikrokontroler koji ćemo koristiti je ESP32. Za one koji još uvijek nisu napravilike prve korake sa ESP32 mikrokontrolerom preporučujemo da pročitate na sljedećim linkovima:
U ovoj lekciji ćemo objasniti:
- Šta je to NEO-6 GPS modul ?
- Prednosti NEO-6 GPS modula i ESP32 mikrokontrolera
- Tehinčke karakteristike NEO-6 GPS modula
- Šema povezivanja i kod za kontrolu ESP32 sa GPS NEO-6 Modulom
- Specifikacija materijala
Šta je to NEO-6 GPS modul?
GPS NEO-6 modul je popularan satelitski navigacijski modul koji se koristi za određivanje tačne geografske lokacije uređaja pomoću Global Positioning System (GPS) satelita.

On prima signale sa više GPS satelita koji kruže oko Zemlje i na osnovu vremena dolaska signala izračunava svoju poziciju, brzinu kretanja i tačno vrijeme.
NEO-6 modul komunicira sa mikrokontrolerima (kao što je ESP32) putem serijske UART komunikacije.
Podatke šalje u standardnom NMEA formatu, koji sadrži informacije o geografskoj širini i dužini, broju vidljivih satelita, jačini signala i kvalitetu pozicije.
GPS NEO-6 se najčešće koristi u GPS trackerima, vozilima, IoT uređajima, dronovima, pametnim mjernim sistemima i navigacionim projektima.
Njegova velika prednost je jednostavna integracija, dobra dostupnost i relativno niska cijena.
Modul može raditi sa aktivnom ili pasivnom GPS antenom, pri čemu aktivna antena daje znatno bolje rezultate u realnim uslovima.

Za pravilno funkcionisanje, GPS modul mora imati direktan pogled prema nebu, jer zidovi, metalne konstrukcije i zatvoreni prostori znatno slabe GPS signal Vrijeme potrebno da modul prvi put pronađe satelite naziva se TTFF (Time To First Fix) i može trajati od nekoliko sekundi do nekoliko minuta, zavisno od uslova.
GPS NEO-6 zahtijeva stabilno napajanje, najčešće 3.3 V ili 5 V, u zavisnosti od verzije modula.
Nepravilno napajanje ili loš kvalitet napona često dovode do gubitka signala ili nestabilnog rada.
Modul ne zahtijeva internet konekciju, jer direktno komunicira sa GPS satelitima.
Za pouzdan rad važno je pravilno povezati TX i RX linije, odabrati odgovarajući baud rate i koristiti provjerenu biblioteku za obradu GPS podataka.
U kombinaciji sa ESP32, GPS NEO-6 omogućava izradu naprednih lokalizacionih i IoT sistema sa visokim stepenom pouzdanosti.
Za one koje interesuje, NMEA format (National Marine Electronics Association) je standardizovani tekstualni protokol koji GPS moduli, uključujući NEO-6, koriste za slanje podataka o poziciji i statusu prijema satelita. NMEA je standardni format poruka za skoro sve GPS uređaje. Svaka komanda počinje sa $, a različite komande sadržavaju različite upite kao što su: $GPRMC, $GPVTG, $GPGSA itd. Da ne bi išli daleko o satelitskim formatima, vratimo se mi na osnove NEO-6 GPS modula.
Prednosti NEO-6 GPS modula i ESP32 mikrokontrolera
Arduino mikrokontroleri su poznati po velikoj preciznosti, ali i po velikoj potrošnji energije (stariji modeli prije 2024 godine). Upravu tu nastupa ESP32 koji ima ultra veliku brzinu, a potrošnju energije do 20 puta manju nego Arduino. Ovo je jako bitno u sistemima praćenja kretanja vozila, kao i kada je vozilo isključeno. Ako je vozilo isključeno, rad senzora preuzima akumulator koji je njegova baterija. Velika potrošnja će jako brzo istrošiti bateriju. Naravno, danas na tržištu imamo veliki broj gotovih modula, ali naš cilj je shvatiti osnovne karakteristike i naučiti kako tačno sistem radi.
Tehinčke karakteristike NEO-6 GPS modula
Visoka preciznost pozicioniranja
GPS NEO-6 omogućava tačnost lokacije od oko 2–2,5 metra u dobrim uslovima prijema, što je sasvim dovoljno za većinu IoT i tracking projekata.
Brzo pronalaženje satelita (TTFF)
Modul ima kratko vrijeme do prvog pozicioniranja – hot start oko 1 sekunde, dok cold start traje približno 25–30 sekundi, zavisno od okruženja.
Standardni NMEA komunikacioni format
Podaci se šalju putem NMEA rečenica preko UART-a, što omogućava jednostavnu obradu i kompatibilnost sa gotovo svim mikrokontrolerima i bibliotekama.
Jednostavna UART komunikacija
NEO-6 koristi TTL serijsku komunikaciju (TX/RX) sa podrazumijevanim baud rateom od 9600 bps, idealno za ESP32 i slične uređaje.
Fleksibilno napajanje i mala potrošnja
Radi na 3.3 V, a većina modula ima integrisan regulator koji omogućava napajanje i sa 5 V, uz relativno nisku potrošnju energije.
Podrška za vanjsku antenu i rad u realnim uslovima
Mogućnost korištenja aktivne GPS antene omogućava stabilan prijem signala i pouzdan rad u pokretnim i spoljnim aplikacijama.
Šema povezivanja i kod za kontrolu ESP32 sa GPS NEO-6 Modulom
Pa da krenemo sa Šemom i kodom. U slučaju da ne želite prepisivati kod sa slike, kliknite na ovaj GITHUB link i preuzmite kod sa ovog tutorijala, kao i od ostalih Tutorijala.
Kako bi pojednostavili što je više moguće, za ovaj projekat nam neće trebati nikakva specijalna šema jer ćemo koristiti ESP32 koji ćemo direktno povezati sa NEO-6 GPS modulom. Nećemo koristiti nikakve indikatore jer nam je cilj dobiti podatke o geografskoj širini (latitude) i dužini (longitude) putem serijske komunikacije koristeći standardni NMEA. Ako senzor ispravno radi i pošalje nam tačne podatke, mi ćemo iste ukucati na google i vidjeti svoju lokaciju tj. lokaciju senzora!
Povezat ćemo senzor kao na šemi ispod:

| VCC | 3.3V |
| RX | GPIO 16 |
| TX | GPIO 17 |
| GND | GND |
Nakon što smo senzor povezali kao na šemi iznad, pređimo na programiranje:
Za početak ćemo upisati kod kako bi provjerili da li je naš uređaj pravilno povezan. Kao što možete vidjeti na slici ispod, kao rezultat ćemo dobiti čiste NMEA odgovore:

Ako želite sami filtrirati podatke, za više informacija možete pogledati na ovom linku:
Za one koji ne žele koristiti koordinate jednostavno kopirajte kod ispod kako bi filtrirali Lat. i Lon. koordinate:
String nmeaLine = "";
void setup() {
Serial.begin(115200);
delay(1000);
Serial.println("GPS LAT / LON parser");
// GPS na UART1
Serial1.begin(9600, SERIAL_8N1, 16, 17);
}
void loop() {
while (Serial1.available()) {
char c = Serial1.read();
if (c == '\n') {
parseNMEA(nmeaLine);
nmeaLine = "";
} else if (c != '\r') {
nmeaLine += c;
}
}
}
// ---------------- PARSER ----------------
void parseNMEA(String line) {
if (!line.startsWith("$GPRMC")) return;
// $GPRMC,time,status,lat,N,lon,E,...
int idx = 0;
String data[12];
for (int i = 0; i < 12; i++) {
int comma = line.indexOf(',', idx);
if (comma == -1) break;
data[i] = line.substring(idx, comma);
idx = comma + 1;
}
if (data[2] != "A") return; // A = valid fix
float lat = convertToDecimal(data[3], data[4]);
float lon = convertToDecimal(data[5], data[6]);
Serial.print("LAT: ");
Serial.print(lat, 6);
Serial.print(" LON: ");
Serial.println(lon, 6);
}
// --------- DM → DECIMAL ---------
float convertToDecimal(String raw, String dir) {
if (raw.length() < 6) return 0;
float deg;
float min;
if (dir == "N" || dir == "S") {
deg = raw.substring(0, 2).toFloat();
min = raw.substring(2).toFloat();
} else {
deg = raw.substring(0, 3).toFloat();
min = raw.substring(3).toFloat();
}
float dec = deg + (min / 60.0);
if (dir == "S" || dir == "W") dec *= -1;
return dec;
}Ako ste dobro prekopirali text trebali bi dobiti odgovor kao na slici ispod:

Sada kada imate Lat. i Lon. vrijednosti (u primjeru sa slike 44.819496 15.913278), otvorite Google Maps i u gornjem lijevom uglu u pretragu ukucajte Vaše koordinate. Ako ste tačno prekopirali, dobit ćete tačnu lokaciju na karti. Rezultat možete vidjeti na slici ispod:

U ovoj lekciji objasnili smo i naučili kako se koristi GPS senzor NEO-6 sa ESP32 mikrokontrolerom. Prilikom programiranja nismo koristili nikakvu biblioteku, tako da ce kod skoro uvijek raditi neovisno o Arduino IDE verziji.
U slučaju da imate bilo kakvo pitanje vezano za mikrokontrolere, senzore i ostalu IoT opremu, naš tim Vam stoji na raspolaganju!
Specifikacija materijala
Napomena: Nakon što pročitate bilo koji Tutorijal na internetu, uvijek pogledajte Datasheet bilo koje komponente ili senzora, jer se tu nalaze svi bitni fabrički detalji!

Komentariši