Podaci se pohranjuju u proračunsku tablicu dataGPS.csv, čiji format odgovara zahtjevima usluge Google Moje mape.

    Programski jezik: Arduino (C++)

Video uputstvo

Sta ti treba

Kako sastaviti

gps-tracker.ino // biblioteka za rad sa uređajima preko SPI#include // biblioteka za rad sa SD karticom#include // biblioteka za rad sa GPS uređajem#include // kreiramo objekat klase GPS i prosljeđujemo mu objekt Serial1 GPS GPS (Serial1) ; // LED pin#define LED_PIN A0 // pin gumba #define BUTTON_PIN 13 // pin CS micro-sd karticu#define CHIP_SELECT_PIN 9 // vremenski interval za upisivanje podataka na karticu#define INTERVAL 5000 // postavlja veličinu niza za vrijeme, datum, geografsku širinu i dužinu#define MAX_SIZE_MASS 16 // niz za pohranjivanje trenutnog vremena vrijeme char[MAX_SIZE_MASS]; // stanje zapisa bool stateRec = lažno; // pamti trenutno vrijeme long startMillis = millis() ; void setup() ( // otvara serijski port za praćenje radnji u programu Serial.begin(115200); // čekati dok se monitor serijskog porta ne otvori // kako bismo pratili sve događaje u programu// while (!Serial) ( // ) Serial.print ("Serial init OK \r\n") ; // otvaramo serijsku vezu sa GPS modulom Serial1.begin(115200); // postaviti LED na izlazni mod pinMode(LED_PIN, OUTPUT) ; // postaviti dugme na način za prijavu pinMode(BUTTON_PIN, INPUT_PULLUP) ; // izlazne informacije o inicijalizaciji na serijski port Serial.println("Inicijalizacija SD kartice...") ; // inicijalizirati SD karticu while (! SD.begin (CHIP_SELECT_PIN) ) ( Serial.println ("Kartica nije uspjela ili nije prisutna" ) ; kašnjenje (1000 ) ; ) // izlazne informacije na serijski port Serial.println("Kartica je inicijalizovana"); // kreiramo objekt dataFile klase File za rad s datotekama Datoteka dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // ako datoteka postoji if (datoteka podataka) ( // upišite naziv budućih podataka na memorijsku karticu dataFile.println("Vrijeme, koordinate, brzina"); // zatvorite datoteku dataFile.close(); Serial.println("Sačuvaj OK"); ) else ( Serial.println ("Greška pri otvaranju test.csv" ) ; ) ) void loop() ( // Snimite pritisak na dugme if (! digitalRead(BUTTON_PIN) ) ( // promijenite stanje “snimanje” / “ne upisivanje” na memorijsku karticu stateRec = ! stateRec; // mijenjamo stanje LED indikatora digitalWrite(LED_PIN, stateRec) ; ) // ako su podaci došli iz GPS modula if (gps.available()) ( // čitanje podataka i raščlanjivanje gps.readParsing(); // provjeriti status GPS modula switch (gps.getState () ) ( // sve je u redu case GPS_OK: Serial.println ("GPS je u redu" ) ; // ako je specificirani vremenski interval prošao if (millis() - startMillis > INTERVAL && stateRec) ( // pohraniti podatke na memorijsku karticu saveSD() ; // zapamtite trenutno vrijeme startMillis = millis() ; ) break ; // slučaj greške u podacima GPS_ERROR_DATA: Serial.println ("GPS podaci o grešci" ) ; break ; // nema veze sa satelitima case GPS_ERROR_SAT: Serial.println ( "GPS nema veze sa satelitima") ; break ; ) ) ) // funkcija pohranjivanja podataka na memorijsku karticu void saveSD() (Datoteka dataFile = SD.open("dataGPS.csv" , FILE_WRITE) ; // ako datoteka postoji i otvorena je if (datoteka podataka) ( // čita trenutno vrijeme gps.getTime(vrijeme, MAX_SIZE_MASS); // upisuje vrijeme na memorijsku karticu dataFile.print(" \" " ) ; dataFile.print(vrijeme); dataFile.print(" \" " ) ; dataFile.print ("," ) ; dataFile.print(" \" " ) ; // čitanje i pisanje koordinata širine i dužine na memorijsku karticu dataFile.print(gps.getLatitudeBase10(), 6); dataFile.print ("," ) ; dataFile.print(gps.getLongitudeBase10(), 6); dataFile.print(" \" " ) ; dataFile.print ("," ) ; dataFile.print(gps.getSpeedKm()); dataFile.println("km/h"); dataFile.close(); Serial.println("Sačuvaj OK"); ) else ( Serial.println ("Greška pri otvaranju test.csv" ) ; ) )

GPS sistem globalnog pozicioniranja već je postao dio naših života. Danas je teško zamisliti mobilni telefon bez ugrađenog GPS modula. Ovaj satelitski navigacijski sustav vam omogućava da pratite bilo koje objekte, odredite njihove koordinate i brzinu kretanja. Sada je GPS dostupan ne samo kompanijama koje razvijaju odgovarajuću opremu, već i običnim radio amaterima koji već koriste popularne Arduino ploče u punom potencijalu. Ovaj materijal govori o povezivanju minijaturnog GPS trackera na Arduino Pro Mini ploču. PG03 MiniGPS tracker se koristi kao ispitanik.



Ovaj tracker, osim direktnih geografskih koordinata, pokazuje smjer kretanja, pređenu udaljenost i brzinu kretanja. Nažalost, ne bilježi informacije, tako da povezivanjem na Arduino možete pristupiti ovim podacima i raditi s njima što god želite.


Prvo, tracker treba rastaviti. Ispod su slike rastavljenog GPS trackera.




Srce uređaja za praćenje je Venus638FLP GPS čip. Njegov 44. pin je izlaz UART interfejsa (TxD). Možete zalemiti žicu direktno na ovaj pin, ili možete pronaći pin za testiranje na ploči na koji je i ovaj pin spojen. Ispod su slike položaja pinova mikrokola i kako se spojiti na željeni pin.





Sada uzmimo kompaktnu Arduino Pro Mini ploču i modul SD kartice za snimanje podataka NMEA protokola. Dijagram povezivanja za Arduino Pro Mini i modul SD kartice je sljedeći:



Igle za povezivanje modula za SD kartice:


GND u GND
VCC na 3.3V
MISO na pin 12
MOSI na pin 11
SCK na pin 13
CS na pin 10

Povezivanje pinova GPS trackera:


GND u GND
Pin 2 (Arduino) do Pin 44 (GPS)

Bolje je uzeti napajanje iz GPS trackera (3,7 V). Budući da je njegova baterija malog energetskog kapaciteta, poželjno je spojiti eksternu bateriju, na primjer, sa mobilnog telefona od 1400 mAh, kao što je prikazano na jednoj od slika iznad.


Sada morate preuzeti TinyGPS biblioteku, trebat će vam i biblioteka za rad sa SD karticama i SoftwareSerial biblioteka, koja se može naći u Arduino\libraries.



U sljedećem dijelu koda možete odabrati koje podatke želite napisati:


void gpsdump(TinyGPS &gps) ( float flat, float; // Lat, Long float fkmph = gps.f_speed_kmph(); // Brzina u km/h float falt = gps.f_altitude(); // +/- visina u metrima (u stvari) float fc = gps.f_course(); " lon " (" kms " .print ( " elevation "); //// /////////////////////////////////////////////////////////////////////// // ////////////////

Otpremite skicu na Arduino, umetnite SD karticu formatiranu u skladu sa FAT32 i ima log.txt datoteku u korijenu. Pokrenite Serial Monitor i vidjet ćete da se podaci upisuju na SD karticu.



Nakon nekoliko eksperimenata sa Arduinom, odlučio sam da napravim jednostavan i ne baš skup GPS tracker sa koordinatama koje se šalju preko GPRS-a na server.
Polovan Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS modul (za slanje informacija na server), GPS prijemnik SKM53 GPS.

Sve je kupljeno na ebay.com, za ukupno oko 1500 rubalja (oko 500 rubalja za arduino, nešto manje za GSM modul, malo više za GPS).

GPS prijemnik

Prvo morate razumjeti kako raditi s GPS-om. Odabrani modul je jedan od najjeftinijih i najjednostavnijih. Međutim, proizvođač obećava bateriju za uštedu satelitskih podataka. Prema podacima, hladni start bi trebao trajati 36 sekundi, međutim, u mojim uslovima (10. sprat od prozorske daske, nema zgrada u blizini) trebalo je čak 20 minuta. Sljedeći početak je, međutim, već za 2 minute.

Važan parametar uređaja povezanih na Arduino je potrošnja energije. Ako preopterećujete Arduino konvertor, može izgorjeti. Za korišćeni prijemnik, maksimalna potrošnja energije je 45mA pri 3.3v. Zašto bi specifikacija trebala naznačiti jačinu struje na naponu različitom od potrebnog (5V) za mene je misterija. Međutim, Arduino pretvarač će izdržati 45 mA.

Veza
GPS se ne kontroliše, iako ima RX pin. U koju svrhu nije poznato. Glavna stvar koju možete učiniti sa ovim prijemnikom je čitanje podataka putem NMEA protokola sa TX pina. Nivoi - 5V, samo za Arduino, brzina - 9600 bauda. Povezujem VIN na VCC arduina, GND na GND, TX na RX odgovarajućeg serijskog. Podatke prvo čitam ručno, a zatim koristeći TinyGPS biblioteku. Začudo, sve je čitljivo. Nakon prelaska na Uno, morao sam koristiti SoftwareSerial, a onda su počeli problemi - neki znakovi poruke su izgubljeni. Ovo nije jako kritično, jer TinyGPS odsijeca nevažeće poruke, ali je prilično neugodno: možete zaboraviti na frekvenciju od 1Hz.

Kratka napomena o SoftwareSerial-u: na Uno-u nema hardverskih portova (osim onog koji je povezan na USB Serial), tako da morate koristiti softver. Dakle, može primati podatke samo na pin na kojem ploča podržava prekide. U slučaju Uno, to su 2 i 3. Štaviše, samo jedan takav port može primati podatke u isto vrijeme.

Ovako izgleda “test bench”.

GSM prijemnik/predajnik


Sada dolazi zanimljiviji dio. GSM modul - SIM900. Podržava GSM i GPRS. Ni EDGE, a posebno 3G, nisu podržani. Za prijenos koordinatnih podataka, ovo je vjerovatno dobro - neće biti kašnjenja ili problema prilikom prebacivanja između načina rada, plus GPRS je sada dostupan gotovo svuda. Međutim, za neke složenije aplikacije to možda neće biti dovoljno.

Veza
Modul se takođe kontroliše preko serijskog porta, sa istim nivoom - 5V. I ovdje će nam trebati i RX i TX. Modul je shield, odnosno instaliran je na Arduino. Štaviše, kompatibilan je i sa mega i uno. Zadana brzina je 115200.

Sastavljamo ga na Megi, i tu nas čeka prvo neprijatno iznenađenje: TX pin modula pada na 7. pin Mege. Prekidi nisu dostupni na 7. pinu mega, što znači da ćete morati spojiti 7. pin, recimo, na 6. pin, na kojem su mogući prekidi. Tako ćemo potrošiti jedan Arduino pin. Pa, za mega to nije strašno - na kraju krajeva, ima dovoljno iglica. Ali za Uno je ovo već komplikovanije (podsjećam da postoje samo 2 pina koji podržavaju prekide - 2 i 3). Kao rješenje ovog problema, možemo predložiti da se modul ne instalira na Arduino, već da se poveže žicama. Tada možete koristiti Serial1.

Nakon povezivanja, pokušavamo "razgovarati" s modulom (ne zaboravite ga uključiti). Odabiremo brzinu porta - 115200, a dobro je da svi ugrađeni serijski portovi (4 na mega, 1 na uno) i svi softverski portovi rade istom brzinom. Na ovaj način možete postići stabilniji prijenos podataka. Ne znam zašto, mada mogu da pretpostavim.

Dakle, pišemo primitivni kod za prosljeđivanje podataka između serijskih portova, šaljemo atz i primamo tišinu kao odgovor. Šta se desilo? Ah, velika i mala slova. ATZ, dobro smo. Ura, modul nas čuje. Treba li nas nazvati iz radoznalosti? ATD +7499... Zvoni fiksni telefon, dim izlazi iz arduina, laptop se gasi. Arduino pretvarač je izgorio. Bila je loša ideja hraniti ga na 19 volti, iako piše da može raditi od 6 do 20V, preporučuju 7-12V. Datasheet za GSM modul nigdje ne govori o potrošnji energije pod opterećenjem. Pa, Mega ide u magacin rezervnih delova. Zadržavajući dah, uključujem laptop koji je preko +5V linije sa USB-a primao +19V. Radi, čak ni USB nije pregorio. Hvala Lenovo što nas štiti.

Nakon što je konverter pregorio, tražio sam trenutnu potrošnju. Dakle, vrh - 2A, tipičan - 0,5A. Ovo očigledno prevazilazi mogućnosti Arduino pretvarača. Zahteva odvojenu hranu.

Programiranje
Modul pruža opsežne mogućnosti prijenosa podataka. Počevši od govornih poziva i SMS-a pa do samog GPRS-a. Štaviše, za potonje je moguće izvršiti HTTP zahtjev koristeći AT komande. Morat ćete poslati nekoliko, ali isplati se: ne želite da kreirate zahtjev ručno. Postoji nekoliko nijansi s otvaranjem kanala za prijenos podataka preko GPRS-a - sjećate se klasičnog AT+CGDCONT=1, “IP”, “apn”? Dakle, ovdje je potrebna ista stvar, ali malo lukavija.

Da biste dobili stranicu na određenom URL-u, trebate poslati sljedeće komande:
AT+SAPBR=1,1 //Otvoreni operater (Nosilac) AT+SAPBR=3,1,"CONTYPE","GPRS" //tip veze - GPRS AT+SAPBR=3,1,"APN","internet" //APN, za Megafon - internet AT+HTTPINIT //Inicijaliziraj HTTP AT+HTTPPARA="CID",1 //ID operatera za korištenje. AT+HTTPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Stvarni URL, nakon sprintf sa koordinatama AT+HTTPACTION=0 // Zatražite podatke koristeći GET metodu //čekaj odgovor AT+HTTPTERM //zaustavi HTTP

Kao rezultat toga, ako postoji veza, mi ćemo dobiti odgovor od servera. To jest, mi već znamo kako poslati podatke o koordinatama ako ih server primi putem GET-a.

Ishrana
Kako je napajanje GSM modula iz Arduino konvertora, kako sam saznao, loša ideja, odlučeno je da se na istom ebayu kupi 12v->5v, 3A konvertor. Međutim, modul ne voli napajanje od 5V. Idemo na hak: spojite 5V na pin iz kojeg dolazi 5V iz arduina. Tada će ugrađeni pretvarač modula (mnogo moćniji od Arduino konvertera, MIC 29302WU) napraviti od 5V ono što je potrebno modulu.

Server

Server je napisao primitivni - pohranjivanje koordinata i crtanje na Yandex.mapama. U budućnosti je moguće dodati različite funkcije, uključujući podršku za mnoge korisnike, status „naoružan/nenaoružan“, stanje sistema vozila (paljenje, farovi, itd.), a moguće čak i kontrolu sistema vozila. Naravno, uz odgovarajuću podršku za tracker, koji se glatko pretvara u punopravni alarmni sistem.

Terenski testovi

Ovako izgleda sastavljeni uređaj, bez kućišta:

Nakon što instalirate pretvarač napajanja i stavite ga u kućište sa mrtvog DSL modema, sistem izgleda ovako:

Zalemio sam žice i uklonio nekoliko kontakata sa Arduino blokova. izgledaju ovako:

Priključio sam 12V u autu, vozio se po Moskvi i dobio stazu:


Tačke staze su prilično udaljene jedna od druge. Razlog je taj što slanje podataka putem GPRS-a traje relativno dugo, a za to vrijeme koordinate se ne čitaju. Ovo je očigledno greška u programiranju. Tretira se, prvo, trenutnim slanjem paketa koordinata tokom vremena, i drugo, asinhronim radom sa GPRS modulom.

Vrijeme traženja satelita na suvozačevom sjedištu automobila je nekoliko minuta.

zaključci

Izrada GPS trackera na Arduinu vlastitim rukama je moguća, iako nije trivijalan zadatak. Sada je glavno pitanje kako sakriti uređaj u automobilu da ne bude izložen štetnim faktorima (voda, temperatura), da nije prekriven metalom (GPS i GPRS će biti zaštićeni) i da nije posebno uočljiv. Za sada samo leži u kabini i spaja se na utičnicu za upaljač.

Pa, također moramo ispraviti kod za glatkiju stazu, iako tracker već obavlja glavni zadatak.

Rabljeni uređaji

  • Arduino Mega 2560
  • Arduino Uno
  • GPS SkyLab SKM53
  • GSM/GPRS štit baziran na SIM900
  • DC-DC 12v->5v 3A pretvarač

Nakon nekoliko eksperimenata sa Arduinom, odlučio sam da napravim jednostavan i ne baš skup GPS tracker sa koordinatama koje se šalju preko GPRS-a na server.
Polovan Arduino Mega 2560 (Arduino Uno), SIM900 - GSM/GPRS modul (za slanje informacija na server), GPS prijemnik SKM53 GPS.

Sve je kupljeno na ebay.com, ukupno oko 1500 rubalja (oko 500 rubalja za arduino, nešto manje za GSM modul, malo više za GPS).

GPS prijemnik

Prvo morate razumjeti kako raditi s GPS-om. Odabrani modul je jedan od najjeftinijih i najjednostavnijih. Međutim, proizvođač obećava bateriju za uštedu satelitskih podataka. Prema podacima, hladni start bi trebao trajati 36 sekundi, međutim, u mojim uslovima (10. sprat od prozorske daske, nema zgrada u blizini) trebalo je čak 20 minuta. Sljedeći početak je, međutim, već za 2 minute.

Važan parametar uređaja povezanih na Arduino je potrošnja energije. Ako preopterećujete Arduino konvertor, može izgorjeti. Za korišćeni prijemnik, maksimalna potrošnja energije je 45mA pri 3.3v. Zašto bi specifikacija trebala naznačiti jačinu struje na naponu različitom od potrebnog (5V) za mene je misterija. Međutim, Arduino pretvarač će izdržati 45 mA.

Veza

GPS se ne kontroliše, iako ima RX pin. U koju svrhu nije poznato. Glavna stvar koju možete učiniti s ovim prijemnikom je čitanje podataka putem NMEA protokola sa TX pina. Nivoi - 5V, samo za Arduino, brzina - 9600 bauda. Povezujem VIN na VCC arduina, GND na GND, TX na RX odgovarajućeg serijskog. Podatke prvo čitam ručno, a zatim koristeći TinyGPS biblioteku. Začudo, sve je čitljivo. Nakon prelaska na Uno, morao sam koristiti SoftwareSerial, a onda su počeli problemi - neki znakovi poruke su izgubljeni. Ovo nije jako kritično, jer TinyGPS odsijeca nevažeće poruke, ali je prilično neugodno: možete zaboraviti na frekvenciju od 1Hz.

Kratka napomena o SoftwareSerial-u: na Uno-u nema hardverskih portova, tako da morate koristiti softverski. Dakle, može primati podatke samo na pin na kojem ploča podržava prekide. U slučaju Uno, to su 2 i 3. Štaviše, samo jedan takav port može primati podatke u isto vrijeme.

Ovako izgleda “test bench”.


GSM prijemnik/predajnik


Sada dolazi zanimljiviji dio. GSM modul - SIM900. Podržava GSM i GPRS. Ni EDGE, a posebno 3G, nisu podržani. Za prijenos koordinatnih podataka, ovo je vjerovatno dobro - neće biti kašnjenja ili problema prilikom prebacivanja između načina rada, plus GPRS je sada dostupan gotovo svuda. Međutim, za neke složenije aplikacije to možda neće biti dovoljno.

Veza

Modul se takođe kontroliše preko serijskog porta, sa istim nivoom - 5V. I ovdje će nam trebati i RX i TX. Modul je shield, odnosno instaliran je na Arduino. Štaviše, kompatibilan je i sa mega i uno. Zadana brzina je 115200.

Sastavljamo ga na Megi, i tu nas čeka prvo neprijatno iznenađenje: TX pin modula pada na 7. pin Mege. Prekidi nisu dostupni na 7. pinu mega, što znači da ćete morati spojiti 7. pin, recimo, na 6. pin, na kojem su mogući prekidi. Tako ćemo potrošiti jedan Arduino pin. Pa, za mega to nije strašno - na kraju krajeva, ima dovoljno iglica. Ali za Uno je ovo već komplikovanije (podsjećam da postoje samo 2 pina koji podržavaju prekide - 2 i 3). Kao rješenje ovog problema, možemo predložiti da se modul ne instalira na Arduino, već da se poveže žicama. Tada možete koristiti Serial1.

Nakon povezivanja, pokušavamo "razgovarati" s modulom (ne zaboravite ga uključiti). Odabiremo brzinu porta - 115200, a dobro je da svi ugrađeni serijski portovi (4 na mega, 1 na uno) i svi softverski portovi rade istom brzinom. Na ovaj način možete postići stabilniji prijenos podataka. Ne znam zašto, mada mogu da pretpostavim.

Dakle, pišemo primitivni kod za prosljeđivanje podataka između serijskih portova, šaljemo atz i primamo tišinu kao odgovor. Šta se desilo? Ah, velika i mala slova. ATZ, dobro smo. Ura, modul nas čuje. Treba li nas nazvati iz radoznalosti? ATD +7499... Zvoni fiksni telefon, dim izlazi iz arduina, laptop se gasi. Arduino pretvarač je izgorio. Bila je loša ideja hraniti ga na 19 volti, iako piše da može raditi od 6 do 20V, preporučuju 7-12V. Datasheet za GSM modul nigdje ne govori o potrošnji energije pod opterećenjem. Pa, Mega ide u magacin rezervnih delova. Zadržavajući dah, uključujem laptop koji je preko +5V linije sa USB-a primao +19V. Radi, čak ni USB nije pregorio. Hvala Lenovo što nas štiti.


Nakon što je konverter pregorio, tražio sam trenutnu potrošnju. Dakle, vrh - 2A, tipičan - 0,5A. Ovo očigledno prevazilazi mogućnosti Arduino pretvarača. Zahteva odvojenu hranu.

Programiranje

Modul pruža opsežne mogućnosti prijenosa podataka. Počevši od govornih poziva i SMS-a pa do samog GPRS-a. Štaviše, za potonje je moguće izvršiti HTTP zahtjev koristeći AT komande. Morat ćete poslati nekoliko, ali isplati se: ne želite da kreirate zahtjev ručno. Postoji nekoliko nijansi s otvaranjem kanala za prijenos podataka preko GPRS-a - sjećate se klasičnog AT+CGDCONT=1, “IP”, “apn”? Dakle, ovdje je potrebna ista stvar, ali malo lukavija.

Da biste dobili stranicu na određenom URL-u, trebate poslati sljedeće komande:

AT+SAPBR=1,1 //Otvoreni operater (Nosilac) AT+SAPBR=3,1,"CONTYPE","GPRS" //tip veze - GPRS AT+SAPBR=3,1,"APN","internet" //APN, za Megafon - internet AT+HTTPINIT //Inicijaliziraj HTTP AT+HTTPPARA="CID",1 //ID operatera za korištenje. AT+HTTPARA="URL","http://www.example.com/GpsTracking/record.php?Lat=%ld&Lng=%ld" //Stvarni URL, nakon sprintf sa koordinatama AT+HTTPACTION=0 // Zatražite podatke koristeći GET metodu //čekaj odgovor AT+HTTPTERM //zaustavi HTTP

Kao rezultat toga, ako postoji veza, mi ćemo dobiti odgovor od servera. To jest, mi već znamo kako poslati podatke o koordinatama ako ih server primi putem GET-a.

Ishrana

Kako je napajanje GSM modula iz Arduino konvertera, kako sam saznao, loša ideja, odlučeno je da se na istom ebayu kupi 12v->5v, 3A konvertor. Međutim, modul ne voli napajanje od 5V. Idemo na hak: spojite 5V na pin iz kojeg dolazi 5V iz Arduina. Tada će ugrađeni pretvarač modula (mnogo moćniji od Arduino konvertera, MIC 29302WU) napraviti od 5V ono što je potrebno modulu.

Server

Server je napisao primitivni - pohranjivanje koordinata i crtanje na Yandex.maps. U budućnosti je moguće dodati različite funkcije, uključujući podršku za mnoge korisnike, status „naoružan/nenaoružan“, stanje sistema vozila (paljenje, farovi, itd.), a moguće čak i kontrolu sistema vozila. Naravno, uz odgovarajuću podršku za tracker, koji se glatko pretvara u punopravni alarmni sistem.

Terenski testovi

Ovako izgleda sastavljeni uređaj, bez kućišta:


Nakon što instalirate pretvarač napajanja i stavite ga u kućište sa mrtvog DSL modema, sistem izgleda ovako:

Zalemio sam žice i uklonio nekoliko kontakata sa Arduino blokova. izgledaju ovako:

Priključio sam 12V u autu, vozio se po Moskvi i dobio stazu:


Ispostavilo se da je staza pokidana. Razlog je taj što slanje podataka putem GPRS-a traje relativno dugo, a za to vrijeme koordinate se ne čitaju. Ovo je očigledno greška u programiranju. Tretira se, prvo, trenutnim slanjem paketa koordinata tokom vremena, i drugo, asinhronim radom sa GPRS modulom.

Lični GPS predajnici

Danas se napredak odvija takvim tempom da uređaji koji su ranije bili glomazni, skupi i visoko specijalizirani brzo gube veličinu, težinu i cijenu, ali dobivaju mnoge nove funkcije.

Tako su uređaji bazirani na GPS tehnologiji stigli do džepnih uređaja i tamo se čvrsto nastanili, dajući ljudima nove mogućnosti. Posebno je vrijedno istaknuti pojedinačne GPS predajnike.

U suštini, ovo su isti GPS tragači, samo dizajnirani za upotrebu ne na vozilu, već od strane osobe u svakodnevnom životu.

Ovisno o modelu, nekoliko različitih uređaja može se kombinirati u jednom kućištu. U svom najjednostavnijem obliku, to je jednostavno mala kutija bez displeja, koja omogućava vam kontrolu kretanja djece, životinja ili nekih drugih predmeta, na kojoj je fiksiran.

Unutar njega se nalazi GPS modul koji određuje koordinate na zemlji, GSM/GPRS modul koji prenosi informacije i prima kontrolne komande, kao i izvor napajanja koji osigurava autonoman rad na duže vrijeme.

Funkcionalnost GPS predajnika

Kako se funkcionalnost povećava, pojavljuju se sljedeće mogućnosti uređaja:


Opcije za GPS predajnike

Ovisno o konfiguraciji, kućišta predajnika mogu se značajno razlikovati. Dostupni su različiti modeli u obliku mobilnih telefona, klasičnih navigatora ili čak ručnih satova.

Šareni dizajn posebnih verzija i korisnih dodataka omogućavaju djeci da ove uređaje tretiraju ne kao "roditeljske špijune", već kao moderne i praktične sprave.

Kao prednost vrijedi spomenuti činjenicu da mnoge verzije uređaja dobro funkcioniraju bez pretplate na usluge specijaliziranih operatera, a sve potrebne informacije se klijentu šalju direktno putem interneta ili SMS poruka, što omogućava značajne uštede. o održavanju takve opreme.

Članci o GPS trackerima

U ovom članku ću pokazati kako koristiti gsm modul sa arduinom koristeći sim800L kao primjer. Iste upute su sasvim prikladne za korištenje bilo kojih drugih gsm modula, na primjer, sim900, itd., jer svi moduli rade na približno isti način - to je razmjena AT naredbi preko porta.

Prikazat ću upotrebu modula sa arduinom na primjeru SMS releja, koji se može koristiti za daljinsko upravljanje uređajem putem SMS komandi. Ovo se može koristiti u kombinaciji sa auto alarmima, itd.

Modul je povezan na Arduino preko UART interfejsa softverskog serijskog porta koji radi na 2 i 3 digitalna pina Arduino nano.

Rad Arduino sa GSM modulima

Za napajanje modula potreban je napon u rasponu od 3,6V do 4,2V, to znači da ćete morati koristiti dodatni stabilizator napona, budući da Arduino ima instaliran stabilizator od 3,3V, koji nije pogodan za napajanje modula , drugi razlog za ugradnju dodatnog stabilizatora je to što je GSM modul ozbiljno opterećen, budući da ima slab predajnik koji omogućava stabilnu komunikaciju sa ćelijskom stanicom. Napajanje za Arduino nano se dovodi do VIN pina - ovo je stabilizator ugrađen u Arduino koji osigurava da modul radi u širokom rasponu napona (6-10V). Relejni modul je povezan prema datom tekstu programa na pin 10 Arduino nano i može se lako promijeniti na bilo koji drugi koji radi kao digitalni izlaz.

Radi ovako: ugrađujemo SIM karticu u GSM modul, uključujemo napajanje i šaljemo SMS sa tekstom "1" na broj SIM kartice kako bismo uključili naš relej, da ga isključimo šaljemo SMS sa tekstom “0”.

#include
SoftwareSerial gprsSerial(2, 3); // postaviti pinove 2 i 3 za softverski port
int LedPin = 10; // za relej

void setup()
{
gprsSerial.begin(4800);
pinMode(LedPin, OUTPUT);

// postavljanje prijema poruke

gprsSerial.print("AT+CMGF=1\r");
gprsSerial.print("AT+IFC=1, 1\r");
kašnjenje (500);
gprsSerial.print("AT+CPBS=\"SM\"\r");
kašnjenje (500); // kašnjenje za obradu naredbi
gprsSerial.print("AT+CNMI=1,2,2,1,0\r");
kašnjenje (700);
}

String currStr = "";
// ako je ovaj red poruka, tada će varijabla uzeti vrijednost True
boolean isStringMessage = false;

void loop()
{
if (!gprsSerial.available())
povratak;

char currSymb = gprsSerial.read();
if ('\r' == currSymb) (
if (isStringMessage) (
// ako je trenutni red poruka, onda...
if (!currStr.compareTo("1")) (
digitalWrite(LedPin, HIGH);
) else if (!currStr.compareTo("0")) (
digitalWrite(LedPin, LOW);
}
isStringMessage = false;
) drugo (
if (currStr.startsWith("+CMT")) (
// ako trenutni red počinje sa “+CMT”, onda sljedeća poruka
isStringMessage = istina;
}
}
currStr = "";
) else if (‘\n’ != currSymb) (
currStr += String(currSymb);
}
}

Video verzija članka:

Oznake: #Arduino, #SIM800L

Vaša ocjena:

Proizvodi korišteni u ovom članku:

← GPS loger na arduinu | Kontrola releja preko COM porta →

GSM skener na RTL-SDR

| Dom| engleski | Razvoj | FAQ |

Glavne karakteristike skenera

GSM skener skenira nizvodne GSM kanale i prikazuje informacije o nivou signala i da li kanal pripada jednom od tri glavna mobilna operatera MTS, Beeline i Megafon. Na osnovu rezultata svog rada, skener vam omogućava da sačuvate listu identifikatora MCC, MNC, LAC i CI baznih stanica za sve skenirane kanale.
GSM skener se može koristiti za procjenu nivoa GSM signala, upoređivanje kvaliteta signala različitih operatera, procjenu radio pokrivenosti, prilikom odlučivanja o ugradnji pojačivača ćelijskog signala i prilagođavanju njihovih parametara, u obrazovne svrhe itd.
Skener radi pod Windowsom i koristi jednostavan i jeftin prijemnik - RTL-SDR. O RTL-SDR-u možete pročitati na:
RTL-SDR (RTL2832U) i softverski definirane radio vijesti i projekti,
RTL-SDR – OsmoSDR,
RTL-SDR na ruskom.
RTL-SDR parametri određuju glavne karakteristike skenera. Naravno, GSM skener nije zamjena za normalnu mjernu opremu.
Skener se distribuira besplatno, bez ikakvih ograničenja u korištenju.
Trenutna verzija podržava GSM 900 opseg i ne podržava GSM 1800. Ovo je određeno činjenicom da je radna frekvencija RTL-SDR-a sa tjunerom R820T ograničena na 1760 MHz. Postoji nada da će korištenje eksperimentalnog RTL-SDR drajvera omogućiti rad u barem dijelu opsega od 1800 MHz.

Pokretanje skenera

Najnoviju verziju skenera možete preuzeti sa ovog linka. Jednostavno raspakirajte datoteku na pogodnu lokaciju i pokrenite gsmscan.exe.
Prethodne verzije skenera, link do spremišta sa izvorima i druge informacije vezane za razvoj nalaze se na razvojnoj stranici.
Da bi skener radio, potrebna je instalacija RTL-SDR drajvera, ako oni već nisu instalirani, to se može lako uraditi pomoću programa Zadig za opis postupka instalacije.

Korištenje skenera

Ispod je prikaz prozora programa skenera:

Horizontalna osa prikazuje broj GSM kanala u obliku ARFCN ili u MHz, a vertikalna osa prikazuje nivo signala u dBm. Visina linije pokazuje jačinu signala.

GSM modul NEOWAY M590 komunikacija sa Arduinom

Ako su BS identifikatori uspješno dekodirani i odgovaraju identifikatorima tri glavna telekom operatera, linije su obojene u odgovarajuće boje.
Padajuće liste na vrhu ekrana omogućavaju vam da izaberete SDR prijemnik, ako je nekoliko povezanih, radni opseg GSM 900 ili GSM 1800 i merne jedinice duž horizontalne ose ARFCN ili MHz.
Tasteri vam omogućavaju da sačuvate izveštaj o radu skenera u obliku liste dekodiranih baznih stanica, obrišete rezultate BS dekodiranja i dobijete informacije o programu.

Principi i karakteristike rada.

Tokom rada, program skenira opseg radne frekvencije sa korakom od 2,0 MHz (10 GSM kanala) i digitalizuje signal sa frekvencijom uzorkovanja od 2,4 MHz. Proces skeniranja se sastoji od brzog prolaza kroz cijeli raspon za mjerenje jačine signala i sporog prolaza za dekodiranje BS identifikatora.

Jedan korak dekodiranja se izvodi nakon prelaska cijelog raspona za mjerenje snage. Dakle, u opsegu GSM 900, nivo signala se ažurira otprilike jednom u 2 s, a kompletan prolaz dekodiranja traje oko 1 minut.
Zbog lošeg kvaliteta signala primljenog od RTL-SDR-a, vjerovatnoća ispravnog dekodiranja sistemskih informacija (SI) BS kontrolnog kanala emitovanja (BCCH) nije velika. Fluktuacije nivoa signala kao rezultat višestrukog širenja također smanjuju vjerovatnoću dekodiranja informacija sistema. Iz ovih razloga, za dobijanje BS identifikatora, potrebno je da skener akumulira informacije u periodu od oko 10 minuta. Ali čak i u ovom slučaju, ne pružaju svi kanali dovoljan nivo i kvalitet signala na datoj lokaciji za dekodiranje čak i od strane najidealnijeg prijemnika. Osim toga, ne koriste se svi GSM kanali za rad prema GSM standardu, kao što se može vidjeti na gornjoj slici, kanale 975 - 1000 zauzima Megafon za rad prema UMTS standardu.
Tokom rada, skener dodaje sistemske informacije o novim dekodiranim kanalima opštem nizu informacija o kanalima. Ali informacije o prethodno dekodiranim kanalima se ne brišu kada se sistemske informacije ne dekodiraju u ovom koraku i ostaju u nizu. Da obrišete ove informacije, koristite dugme za brisanje rezultata BS dekodiranja.
Kada kliknete na dugme sačuvaj izveštaj, akumulirani rezultati se spremaju u tekstualnu datoteku sa nazivom koji se sastoji od naziva programa, datuma i vremena kada su podaci sačuvani. Ispod je primjer dijela datoteke izvještaja:
Skener je dizajniran za rad pod Windows 7, 8.1 i 10. Rad je testiran sa tri kopije RTL-SDR sa tjunerom R820T.
Posebna verzija programa je sastavljena za rad pod Windows XP-om radi nekoliko puta sporije od standardne verzije.

Razvoj.

Program skenera se isporučuje kakav jeste, bez ikakvih garancija ili odgovornosti. Ukoliko imate razumne ideje kako proširiti funkcionalnost ili poboljšati performanse skenera, spremni smo da razgovaramo o mogućnostima njihove implementacije.
Možete učestvovati u razvoju skenera da biste to učinili, posjetite stranicu za razvoj.
Planiran je dalji razvoj GSM skenera, eventualno uz Vaše učešće.