1.1 GPS – Global Positioning System Încă de la începuturile lor pe Pământ, omenii au fost în căutarea unor metode exacte de navigare și poziționare… [608737]

5
1. Introducere

1.1 GPS – Global Positioning System
Încă de la începuturile lor pe Pământ, omenii au fost în căutarea unor metode exacte de
navigare și poziționare în spațiu. De la mersul pe jos și folosirea unor semne terestre pentru
identificarea poziției unde se află și până la avioanele militare care po t repera un anumit punct
chiar și atunci când se deplasează cu viteze supersonice nu a fost decât un pas. Astfel o
descoperire important ă în acest sens este GPS -ul (Global Positioning System). Inițial GPS -ul
a fost proiectat pentru uz militar, la începutul Războiului Rece în anii 1960, însă și -a găsit
utilitate și în alte domenii precum cel civil, naval, aviație, cercetare seismică, cadastru, studii
climatice.
Ideea de GPS a apărut odată cu lansarea în spațiu a nav etei spațiale Sputnik (Fig. 1.1 )
în 4 octom brie 1957 . Statele Unite ale Americii au fost cele care au dezvoltat primul sistem de
navigație prin satelit. Astfel în 1960 a fost lansat de către Departamentul de Apărare al
Statelor Unite ale Americii primul sistem satelit numit Transit (Fig 1.2). Pentr u perioada
respectivă, sistemul era destul de avansat însă putea fi folosit pentru a afla poziția unui
vehicul aflat la suprafață și care se deplasa cu o viteză mică. Tendința era aceea de a obține un
sistem care să poată identifica vehicule de dimensiuni mari ce se deplasează cu o viteză
mare. [1]

Fig. 1.1 Nave ta spațială Sputnik 1 [2 ]

6
Primul satelit GPS a fost lansat în anul 1978 iar următorii nouă sateliți au fost lansați
în perioada 1978 -1985. Acești sateliți de dezvoltare sunt sunt numiți Block I. În perioada
1989 -1997, au fost lansați 28 de sateliți de producție, numiți Block II. Ultimii 19 sateliți din
această serie de sateliți au fost numiți Block IIA, care au fost versiuni actualizate. În perioada
1997 -2004 a fost lansată a treia generație de satel iți numită Block IIR. Sateliții din această
generație au fost folosiți pentru a înlocui sateliți de generații mai vechi aflați deja în
constelație. În perioada 2005 – 2009 au fost lansați 8 sateliți numiți Block IIR -M, iar în 2010
încă 5 numiți Block IIF. În 2014 au mai fost lansați 12 sateliți numiți Block IIIA. În
momentul de față se află lansați în jur de 70 de sateliți activi. [1]

Fig. 1.2. Transit [ 3]
O dată apărut, GPS -ul s-a integrat foarte ușor în viața oamenilor. În funcție de
domeniul în care es te folosit acesta joacă un rol destul de important. În cazul utilizatorilor
obișnuiți, acesta este folosit pentru navigație. Dacă vorbim însă despre utilizarea lui în
domeniul militar lucrurile sunt puțin diferite. Folosit în operațiunile militare, acesta oferă o
poziționare mult mai precisă decât în cazul unor utilizatori civili. Astfel pentru a face
diferența între datele oferite simp lilor utilizatori civili, și celor din domeniul militar,
Departamentul de Apărare al Statelor Unite ale Am ericii, intervine în mod intenționat asupra
semnalelor oferite de sateliți.
Se diferențiază așadar două servicii de poziționare și anume
– SPS (Standard Positioning System)
– PSP (Precise Positioning System)
Utilizatorii civili pot folosi serviciul de pozițion are SPS fără nici o restricție.
Acuratețea unui astfel de sistem este de 100 de metri în plan orizontal, 156 de metri în plan
vertical și 340 nanosecunde eroare de timp. [16]

7
Serviciul de poziționare PSP este folosit doar de către armata și guverne le aliate
Statelor Unite ale Americii, care au în dotare receptoare GPS speciale, mult diferite de cele
accesibile utilizatorilor civili (posedă la rândul lor diferite sisteme specifice de codare).
Acuratețea unui astfel de sistem este mult superioară celuilalt și anume 22 de metri în plan
orizontal, 27.7 metri în plan vertical și 200 nanosecunde eroare de timp. [16]
1.1.1 Segmentele sistemului GPS
Întreg sistemul GPS este alcătuit d in mai multe segmente (Fig. 1.3 ) interconectate între
ele prin linii radio de transmisii de date, care asigură utilizarea sistemului dar și efectuarea
unor corecții pentru funcționarea optimă a acestuia. [4]
Aceste segmente sunt:
– Segmentul control – cuprinde stațiile de la sol
– Segmentul spațiu – cuprinde rețeaua de sateliți
– Segmentul utilizator – fiecare utilizator al sistemului

Fig 1.3. Segmentele GPS [ 4]
Segmentul control:
Acest segment cuprinde stațiile de la sol, a căror poziție este cunoscută cu un grad de
acuratețe ridicat. În total sunt cinci asemenea stații (una dintre ele având rolul de „master” și
este localizată la Baza Aeriană FALCON din Colorado Springs, Californi a). Rolul celorlalte
patru stații este acela de a monitoriza datele (altitudinea, poziția, viteza) trimise de fiecare
satelit și de a le comunica stației „master”. Aceasta din urmă este cea care procesează datele
primite și trimite la rândul său, înapoi ce lorlalte 4 stații noii para metrii orbitali, parametrii ce

8
sunt retransmise sateliților pentru corecția orbitei. O asemenea stație poate urmări până la 11
sateliți în același timp. [4][5]
Segmentul spațiu:
Acest segment cuprinde o rețea de 24 de sateliț i care orbitează câte 4, în 6 planuri
(orbite), la o altitudine de 20200 Km, o dată la 12 ore. Un avantaj al altitudinii așa mari este
că permite o arie de acoperire foarte mare. Rețeaua de sateliți poate fi comparată cu o
„constelație” (Fig. 1.4 ) de satel iți datorită poziționării lor (cele 6 plane orbitale sunt înclinate
față de Ecuator cu 55 grade iar poziția lor este spațiata cu 60 de grade). Sateliții sunt
alimentați de la lumina solară, și sunt capabili să se orienteze singuri după soare pentru a -și
capta energia. Caracteristic fiecărui satelit este un cod unic – PRN (Pseudo Random Noise
Code) din care se poate extrage cu precizie locația. [4][5]

Fig. 1.4. Constelația de sateliți GPS [ 5]
Segmentul utilizator:
Acest segment cuprinde totalitatea be neficiarilor serviciilor rețelei GPS. Receptorii
preiau semnalele de la sateliți pe cale le convertesc în date ce reprezintă poziția, viteza,
estimări de timp. Mai exact, receptorul se află în contact cu un număr de sateliți (între 4 și 11)
care emit codat informații despre poziția lor și alte semnale adiționale. Aceste informații sunt
prelucrate de către receptor care calculează distanta până la fiecare satelit în parte, și poate
astfel oferi locația. Precizia de poziționare este influențată de mai mulți f actori și anume:
atmosferici, forma reală a Pământului, corecții permanente etc. [4][5]
1.1.2 Semnalele emise de satelitul GPS
Semnalele GPS sunt transmise pe 2 frecvențe diferite:

9
– L1: 1575.42 MHz – destinată serviciului de poziționare GPS Standard
– L2: 1227.60 MHz – destinată serviciului de poziționare GPS Precis
La rândul lor semnalele GPS sunt de două tipuri:
– Codul C/A – cod achiziție date
Acest cod este folosit pentru aplicații civile și permite identificarea precisă a poziției
satelitului de la care provine. Rolul acestuia este de a calcula timpul în care semnalul ajunge
de la satelit. Dat fiind faptul că se cunoaște viteza de propagare a undelor radio (~300.000
Km/s), se poate calcula distanța exactă până la satelitul de la care s -a recepționat semnalul. [6]
– Codul P – cod de protecție
Acest cod este rezervat pentru aplicații din domeniul militar. Are o frecvență de
10.230 MHz și se modifică o dată la 7 zile. Codul P include codul Y, un cod strict
secret. [6][25]
1.1.3 Determinarea poziției GPS
Satelitul va transmite un semnal către receptorul GPS aflat la sol. Fiecare satelit va
transmite datele care indică locația sa și momentul la care s -a transmis semnalul. Timpul
transmis joacă un rol important în determinarea locației utilizatorilor de pe pământ. În acest
sens sateliții GPS sunt echipați cu un ceas atomic pentru a asigura referințe precise de timp.
Distanța dintre satelit și receptorul GPS poate fi determinată prin calcularea timpului de
deplasare a unui semnal de la satelit la receptor [4], unde:

Timpul de deplasare = timp de recepție a semnalului – timpul de transmisie a semnalului
Distanta = timpul de deplasare x viteza luminii

Fig. 1.5 Distanța dintre un satelit și receptorul GPS [ 4]

10
Trilaterația (triangulația) este utilizată pentru a calcula po ziția curentă a receptorului
GPS p e baza timp ului de deplasare primit de la trei sateliți din apropiere și locațiile lor exacte
pe orbită. Cu toate acestea, pentru a determina locație unui punct în spațiul 3D, este nevoie de
4 sateliți în loc de 3(Fig. 1.6 .).

Fig. 1.6. Punctul de intersecție indică locația receptorului GPS [ 4]
1.1.4 Erori în sistemul GPS
La fel ca orice sistem existent, sistemul de poziționare GPS, nu este lipsit de erori. O
vulnerabilitate mai mare la erori o au aplicațiile din domeniul civil. Erorile pot apărea din mai
multe cauze și anume: întârzieri, reflexii, obturații, dificultăți la recepție, erori orbitale, erori
de elevație, modificarea intenționată a semnalului etc. Cea mai des întâlnită eroare este dată
de poziția receptorului față de sateliți (care poate sau nu să fi e remediată de intervenția
omului).
1.2 Istoria GSM
Folosite atât de des în ziua de astăzi, telefoanele mobile, care au ajuns să ni se pară o
banalitate au la bază o tehnologie complexă care s -a dezvoltat enorm în ultimele două decenii.
În momentul de față tehnologia mobilă de tip GSM este folosită de peste 300 de miliarde de
oameni din peste 200 de țări.
GSM, prescurtarea de la Global System for Mobile communications este cel mai
popular standard de telefonie mobil ă din lume. Inițial a fost creat un grup (Groupe Special
Mobile), în anul 1982 la Conferința Europeană a Serviciilor de Poștă și Telegraf, care urma să
creeze un standard pentru comunicațiile mobile din Europa. Cinci ani mai târziu, în 1987, a
fost semnat un memorandum între 13 țări care aveau intenția de a dezvolta un sistem de
telefonie mobilă pe întreg continentul. Din anul 1989, Institutul European pentru Standarde de
Telecomunicații (ETSI), preia responsabilitățile grupului GSM, iar în anul 1990 apare prima
fază a specificațiilor standardului GSM. [7]
În anul următor, 1991, avea loc prima lansare a unei rețele GSM, în Finlanda, de către
compania Radiolinja. O mare parte din infrastructură acelei rețele a fost realizate de o
companie ce se va face cunoscută ulterior și anume Ericsson. Firma finlandeză a fost cea care

11
a inițiat serie de evenimente importante în istoria rețelelor GSM cum ar fi primul SMS trimis
de la o persoană la alta în anul 1993 și primul ton de apel descărcabil contra cost în anul
1998. [7]
1.2.1 Structura unei rețele GSM
Rețeaua GSM reprezint ă o infrastructură complexă, formată din 3 elemente principale
și anume: Base Station Subsystem (BSS), Network Switching Subsystem (NSS) și GPRS
Core Network ().
a) Base Station Subsystem (BSS)
Reprezintă acea parte a rețelei GSM care permite conectarea telef oanelor mobile la
centrala de telefonie mobilă. La rândul său aceasta este formată din BSCs (Base Station
Controllers) – unitățile de control pentru stații care au rolul de a gestiona distribuția resurselor
(alocarea și eliberarea canalelor radio) și BTSs (Base Transceiver stations) – stațiile GSM
care administrează comunicațiile cu stația mobilă prin interfața radio.
BTSs (Base Transceiver stations) sunt de obicei dotate cu antene unidirecționale . Zona
de acoperire din jurul unui BTS este împărțită în sectoare, pentru fiecare din sectoare fiind
repartizată una sau două antene.
BSCs (Base Station Controllers) controlează zeci sau sute de antene, direcționând
traficul către NSS. E ste considerată cea mai importantă componentă a unei rețele GSM
deoarece este dotată cu sisteme redundante pentru asigurarea funcționarii continue a
rețelei. [8]
b) Network Switching Subsystem (NSS)
Această componenta a rețelei GSM poate fi comparată cu o centrală telefonică a unei
rețele de telefonie fixă. Ea este cea care realizează ma nagementul convorbirilor din rețea și
permite interconectivitatea cu alte rețele de telefonie mobilă sau chiar fixă. O componentă
importantă a NSS o reprezintă Mobile Switching Center (MSC) care are rolul de a direcționa
apelurile și
SMS -urile. Tot prin in termediul MSC, un utilizator din rețeaua GSM poate contacta un
utilizator dintr -o rețea de telefonie fixă. [8]
c) General Packet Radio Service Core Network (GPRS Core Network)
Este cea de -a treia principală componentă a unei rețele GSM și este responsabilă de
managementul serviciului de date GPRS. Acesta reprezintă un serviciu de telefonie mobilă
pentru transmisia de date, bazat pe împărțirea fluxului de date în pachete. Un avantaj a
folosirii acestei tehnologii îl reprezintă faptul că utilizatorul se poate con ecta oriunde și
oricând la internet. [8]

12

Fig. 1 .7. Structura unei rețele GSM [8 ]
1.2.2 Modul de funcționare al unei rețele GSM
Rețeaua GSM folosește o combinație de tehnici de acces la canalul radio:

– multiplexarea în frecvența (FDMA – Frecquency Division Multiple Access)
– multiplexarea în timp (TDMA – Time Division Multiple Access).

Rețelele GSM lucrează în 4 benzi de frecvență și anume: 850MHz, 900MHz,
1800MHz, 1900MHz. O mare parte din rețele folosesc benzile 900MHz, 1800MHz însă în
Statel e Unite ale Americii și Canada se folosesc și benzile 850MHz, 1900MHz. [8]
1.2.3 Evoluția în timp rețelei GSM
Apariția rețelei GSM poată fi considerată o revoluție în domeniul telefoniei mobile. O
rețea GPS modernă asigură transmisii de voce și date integra te într -un singur sistem,
transmiterea de mesaje scurte (SMS), mesaje multimedia (MMS), apeluri de urgență, folosirea
serviciului GSM atunci când un utilizator călătorește în afara granițelor (roaming), realizarea
unor apeluri tip conferință în care pot fi incluși mai mult de doi utilizatori, apeluri în așteptare,
atunci când utilizatorul telefonului mobil este ocupat sau nu dorește să răspundă, indicații
detaliate privind apelurile, realizarea de plăți comerciale pentru utilități, utilizarea unei
"cartele inteligente" (SIM card) în care se află stocate numărul (codul) echipamentului și
numărul.
Sistemul GSM este mai avantajos față de sistemele analogie deoarece asigură o
securitate și protecție sporită împotriva interceptării transmisiilor prin cripta rea semnalelor
digitale, calitatea transmisiei este net superioară deoarece folosește coduri detectoare ci

13
corectoare de erori iar lărgimea de bandă este mai îngustă pentru un canal datorită utilizării
algoritmilor de compresie a vocii.
Astfel device -urile din industria telefoniei mobile devin tot mai mici și portabile, mai
eficiente energetic, iar popularitatea lor crește, devenind tot mai ieftine. Industria telefonului
mobil ia amploare. Toate acestea se datorează diverselor inovații tehnologice, at ât în
domeniul electronicii (miniaturizarea și creșterea eficienței componentelor), cât și al
acumulatorilor dar și creșterii nevoilor utilizatorilor. Era imperios necesar ca noile device -uri
să aibă posibilitatea de a rula aplicații customizate care să în deplinească cerințele clientului
privind funcționalitatea și conectivitatea.
Apar noi device -uri numite smartphone -uri, care în timp au ajuns la performanță
comparabilă de a fi un computer de dimensiuni mai mici. Aceste soluții apar la început din
partea unor companii precum RIM, Palm. Cu toate acestea, pe piața se impun doar două mai
companii și anume Google prin sistemul de operare Android și Apple prin sistemul de operare
iOS.
Chiar dacă ambele companii oferă soluții eficiente care acoperă în mare parte cerințele
utilizatorilor în funcție de device -urile folosite, între acestea există o oarecare diferența. Una
dintre primele diferențe între cele două este platforma hardware pe care rulează. În timp ce
iOS este predestinat pentru device -urile p roduse doar de către compania Apple (iPhone, iPad
etc), sistemul de operare Android care este bazat pe sistemul de operare open source Linux,
poate rula pe o mulțime de device -uri. Astfel o multitudine de companii au ales ca sistem de
operare pentru device urile produse, Android.
1.3 Sistemul de operare Android
Sistemul de operare Android, a fost dezvoltat de către Google în parteneriat cu Open
Handset Alliance care reprezintă un consorțiu de 86 de firme din domeniul hardware,
software și telecomunicații ce au ca scop dezvoltarea de standarde deschise pentru device –
urile mobile.
Este un sistem de operare bazat pe Linux, customizat pentru device -uri precum
telefoane mobile, smartphone -uri, tablete și este caracterizat prin faptul că pe rmite
dezvoltatorilor să facă uz de toate feat -urile device -ului. De asemenea acesta urmează un
design tolerant la erori, cu grad de securitate ridicat și eficient. Este compus din aplicații de
bază precum browser, contacte; un schelet al aplicației care s ă permită refolosirea și
înlocuirea componentelor; diferite biblioteci pentru multimedia baze de date, securitate; un
nucleu Linux care este responsabil pentru managementul memoriei și probleme de securitate.
1.3.1 Componentele sistemului de operare Android
Principalele componente ale unui sistem Android pot fi diferențiate pe diferite nivele
la fel ca în Fig 1.8.

14

Fig. 1.8 Vedere de ansamblu asupra arhitecturii Android [ 9]
Fiecare nivel din arhitectura de mai sus oferă diferite servicii pentru nivelul aflat
deasupra lui.
a) Nucleul Linux
Nivelul de bază pe care sunt construite toate celelalte nivele este nucleul Linux.
Acesta utilizează sistemul de operare Linux pentru a efectua toate serviciile de bază ale
sistemului, cum ar fi gestio narea memoriei, rețeaua, setările de securitate, setările de
gestionare a memoriei. Este nivelul care interacționează cu hardware -ul și include toate
driverele necesare pentru hardware -ul existent. [10]
Driverele sunt programe software care controleaz ă și comunică cu echipamentele
hardware. De asemenea acest nivel acționează ca un nivel de abstractizare între hardware și
celelalte nivele.
b) Android runtime și biblioteci
Sistemul de operare Android folosește propria mașină virtuală numită Dalvik Virtual
Machine. Aceasta este un interpretor și a fost dezvoltat de către Dan Bornstein de la Google.
Dalvik Virtual Machine nu este compatibilă cu Java Virtual Machine deoarece es te
specializată și optimizată pentru sisteme mici care au putere de procesare redusă și memorie
scăzută. [9]

15
Așa cum se arata în Fig. 1.9. Codul java este compilat de către compilatorul Java și se
generează fișierele .Class. În Android aceste fișiere s unt convertite în fișiere .Dex (dalvik
executable format) în timpul compilării și apoi sunt interpretate de către Dalvik Virtual
Machine.

Fig. 1.9. Transformarea codului.java în cod. Dex [ 11]
Dalvik Virtual Machine este astfel concepută încât să su porte mai multe procese de
mașini virtuale oferind astfel eficiență maximă, în cazul unor medii cu resurse limitate.
Sistemul de operare Android conține un set de biblioteci C și C++ care sunt
responsabile de optimizarea performanței și eficienței. A cest set include biblioteca de sistem
C care este o implementare a bibliotecii sistem standard C (libc), proiectată pentru dispozitive
embedded bazate pe Linux. Unele dintre cele mai importante biblioteci sunt: Surface
Manager, OpenGL, Media Framework, Fre eType, SSL, SQLite, WebKit. [11]
c) Scheletul aplicației
Acest nivel interacționează direct cu nivelul aplicație. Reprezintă un set de
instrumente care permite reutilizarea componentelor. O aplicație poate să își expună o parte
din componente, astfel că și alte aplicații pot folosi ac ele compo nente. Dezvoltatorii au acces
direct la componente, astfel că le pot înlocui sau le pot implementa într -un mod diferit.
Componente importante ale scheletului aplicației sunt: Activity Manager, Content Providers,
Telephony Manager, Location Manager, Resource Manager, View System, Notification
Manager.
d) Aplicațiile
Acest nivel reprezintă o serie de aplicații care sunt scrise în limbajul de programare
Java. De exemplu: aplicație client de email, web browser, calendar, hărți, etc.
Toate aplicațiile sunt scrie în limbajul de programare Java. Android SDK tools
compilează toate datele și resursele într -un pachet Android care este un fișier cu extensia .apk.
Acest fișier este considerat ca o aplicație și este folosit pentru a fi instalat pe orice dispozitiv
Android.
Odată instalată pe un dispozitiv, sistemul de operare Android tratează fiecare aplicație
ca un utilizator diferit, făcând astfel sistemul de operare Android un sistem Linux multi -user.
Sistem ul atribuie un ID de utilizator aplicației, setează permisiunile pentru toate fișierele de
care are nevoie aplicația. Fiecare aplicație rulează propriul proces Linux, fiecare proces are
propria mașină virtuală, așadar codul unei aplicații rulează independe nt de alte aplicații.

16
În mod normal fiecare aplicație are acces doar la propriile componente și nu poate
accesa orice altă parte a sistemului fără permisiuni, devenind astfel un mediu foarte sigur.
Totuși este posibil pentru o aplicație să aibă acces la alte aplicații sau servicii ale sistemului.
Două aplicații pot face schimb de informații între ele prin share -uirea aceluiași ID de
utilizator. O aplicație poate cere permisiuni pentru a avea acces la date precum contactele,
cameră, apeluri, permisiuni ce se pot acorda în momentul instalării aplicației.
Aplicațiile Android sunt compuse din una sau mai multe componente care formează
blocurile esențiale ale unei aplicații și care contribuie la comportamentul general al aplicației.
Amintim 4 tipuri d e componente:
– Activități:
O activitate reprezintă un ecran prin care utilizatorul interacționează cu aplicația.
Fiecare activitate rulează independent și o aplicație poate porni o activitate a unei alte
aplicații.
– Servicii:
Această componentă nu prezintă o interfață cu utilizatorul. Rulează în background
pentru a efectua operațiuni îndelungate sau pentru a lucra asupra proceselor de la distanță. Un
exemplu concludent în acest caz este acela de a reda muzică în fundal în timp ce utili zatorul
accesează o altă aplicație.
– Furnizori de conținut
Această componentă oferă o modalitate de a gestiona datele într -o aplicație. Folosind
această componentă, datele pot fi create, recuperate sau modificate într -o aplicație.
– Receptori de broadca st
Această componentă are rolul de a răspunde la anunțurile de interes general din sistem
(stingerea ecranului, reîncărcarea bateriei, refacerea conexiunii wireless). Receptorii de
broadcast nu au interfață cu utilizatorul, însă pot crea notificări ș i pot semnala alte
componente ale aplicației.

17
2. Formularea problemei

2.1 Identificarea problemei
Ideea creării unui sistem de monitorizare i -a aparținut, prima oară, americanului J.W.
Jones. Acesta inventase, în 1909, „Jones Live Map”, un sistem dedicat automobiliștilor.
Deplasarea cu ajutorul invenției lui Jones era însă destul de anevoioasă, presupunând
identificarea rutelor cu ajutorul unor hărți imprimate pe discuri și a unor cadrane speciale.
Localizarea GPS poate fi utilizată în diverse scopuri : Lo calizare, navigație, urmărire
sau mapare grafică. Scopul acestei lucrari este acela de realiza un sistem de urmărire.
Sistemele de urmarire prin GPS au 3 componente principale:
1. un server conectat în permanență prin Internet/GPS cu receptorii
2. un receptor de GPS (un telefon mobil e suficient)
3. un program de monitorizare, care rulează și hărțile traseului pe care
se deplasează receptorul.
Un sistem de urmărire poate fi folosit pentru creearea de diverse aplicații:
– În industria de transporturi de ma rfă, cu un astfel de sistem se poate monitoriza
întreaga flotă de transport a unei companii, poate fi folosită pentru: tiruri,
trenuri marfare, transporturi maritime etc.

– Poate deservi ca metodă de inforamre pentru transportul de persoane, un astfel
de di spozitiv se poate monta pe mijloacele de transport: tramvaie, autobuze și
autocare iar clienții prin intermediul unei aplicații pot afla în timp real loca ția
mijlocului de transport și la ce ora ajunge acesta in sta ție.

– Poate deservi la monitorizarea util ajelor agricole, urmărind traseul pe care l -au
urmat combinele, spre exemplu, un fermier iși poate da seama dacă erbicidele
și pesticidele au fost aplicate pe întreaga suprafață cultivată .

– Se poate folo si și ca metodă de localizare a obiectelor furate, un astfel de
dispozitiv poate fi montat în mașină sau pe motocicletă, iar în cazul în care
aceasta a fost furată, se poate detecta poziția vehicului și găsirea acestuia în
timp util.
Un astfel de sistem de urmărire este un dispozitiv electr onic care poate fi folosit pentru
a monitoriza locația unui obiect folosind semnalele radio sau semnalele de la sateliți. În mod
normal designul unui asemenea dispozitiv depinde de câțiva factori precum natura obiectului
urmărit, informațiile de care este nevoie, și bugetul de care se dispune. Sistemele de urmărire

18
indoor sunt disponibile într -o varietate de tehnologii precum ultrasunete, mecanic, infraroșu,
măsurare semnal radio, etc. GPS -ul este sun sistem de urmărire mai eficient folosit cu
precădere în mediul exterior.
Sistemele de urmărire, se pot grupa în două categorii în funcție de raza de acțiune. În
cazul în care este vorba de o rază de acțiune mică, local, nu este necesară neapărat localizarea
prin GPS, ci sunt suficiente tehnologii precum Wi -Fi, Bluetooth sau RIFD. Însă dacă vorbim
de o rază de acțiune mai mare, trebuie folosite semnalele de la sateliții pentru a obține
informația dorită. De asemenea sistemele de urmărire se mai pot grupa în dispozitive active
sau pasive. Dispozitivele active sunt cele care transmit constant informații pe când cele pasive
transmit informații doar când utilizatorul lansează o interogare
2.2 Scopul proiectului
Conceptul general al acestui pro iect este prezentat în Fig. 2.1 și constă dintr -un sistem
activ de urmărire prin GPS, care o dată activat va transmite utilizatorului, informații privind
locația curentă a vehiculului urmărit.
Deoarece un astfel de sistem de urm ărire poate fi folosit pentru îndeplinirea mai
multor cerin țe, acest proiect este dezvoltat într-o maniera general ă astfel încât acesta s ă poată
fi folosit ulterior în diferite scopuri în func ție de ce își doreste clientul.
Datele de ieșire ale unui astfel de sistem vor fi datele primite de la receptorul GPS,
mai exact poziția pe hartă a vehiculului urmărit. Datele de la receptorul GPS vor fi trimise
printr -un modul GSM către un dispozitiv mobil, care va afișa datele pe o hartă. Dispozitivul
mobil va putea fi folosit și în cazul în care se dorește să se transm ită date către receptorul GPS
tot prin intermediul modulului GSM

Fig. 2.4. Conceptul gen eral al sistemului de alarmă
Scopul acestui proiect de diplomă este de a integra tehnologia GPS și GSM pentru
localizarea exactă și în timp real al unui vehicu l, folosind Google Maps . Proiectul în sine este

19
împărțit în două părți și anume: partea de localizare și partea de afișare a locației pe hartă.
Pentru partea de localizare, s -a folosit o placă de dezvoltare echipată cu modul GPS și GSM
precum și un microco ntroller, iar pentru partea de afișare a locației pe hartă s -a folosit o
aplicație Android instalată pe un telefon mobil. Modulul GPS este cel care oferă informații în
timp real despre locație și trimite coordonatele către modulul GSM care la rândul său tr imite
datele spre un dispozitiv mobil prin SMS. O dată recepționate datele de către telefonul mobil,
acesta le prelucrează și le afișează pe hartă. Locația curentă a clientului va fi transmisă
automat din două în două minute, fiind astfel actualizată și po ziția pe hartă.
Sistemul de urmărire a unui vehicul nu este utilizat doar în cazul în care se dorește
găsirea lui în caz de furt. Acestea sunt folosite și de firme de transport pentru mașini, în care
se dorește monitorizarea continuă a conducătorului , a modului cum acesta conduce. Același
principiu se poate aplica de exemplu în cazul unui centru de închirieri de biciclete. Pentru a ști
tot timpul unde se află clientul, se poate monta pe biciclete astfel de sisteme de urmărire prin
GPS.
Lucrarea de față este structurată în șase capitole. Primul capitol oferă o introducere în
ceea ce înseamnă GPS, GSM și Android, adică tehnologiile folosite în elaborarea acestui
proiect. Se creionează o evoluție a acestor tehnologii, de la începuturile lor până în momentul
de față. Cel de -al doilea capitol se concentrează asupra backgroundului proiectului, a
motivului dezvoltării acestui proiect respectiv a scopului și obiectivele acestui proiect.
Capitolul trei reprezintă fundamentele teoretice ale lucrării de față , arhitectura sistemului și
echipamentele folosite. În cel de -al patrulea capitol se vorbește despre implementarea propriu
zisă a proiectului. Sunt descri se limbajele de programare folosite, tehnicile utilizate împreună
cu o vedere de ansamblu a codului su rsă. Capitolul cinci prezintă concluziile și tendințele
viitoare de dezvoltare iar în capitolul șase sunt prezentate referințele bibliografice.

20
3. Arhitectura aplicației

Aplicația dezvoltată este o aplicație de urmărire prin GPS și este compusă din două
părți:
1. Dispozitivul de urmărire – o plăcuță de dezvoltare echipată cu un modul GPS și GSM
care preia coordonatele și le transmite prin SMS către utilizator.
2. Interfața cu utilizatorul – o aplicație Android care permite configurarea sistemului de
alarmă și indică pe hartă, poziția vehiculului urmărit.

Fig. 3.1. Arhitectura aplicației

3.1 SIM908 EVB
Placa de dezvoltare (Fig. 3.2. a, Fig. 3.2. b), este prevăzută să suporte două moduri de
poziționare și anume: GPS prin satelit și GSM LBS (Location Based Service). Suportă SMS,
GPRS, conectivitate la internet pentru transferul de date, prin aceste căi putând fi transmise
latitudinea, longitudinea și multe alte informații în timp real. De asemenea este echipată cu
modulul SIM908, ce lucrează în benzile de frecvență: 850 MHz, 900 MHz, 1800 MHz, 1900
MHz și un microcontroller STM32F103RBT6 care suportă I2C, 2xSPI, 2xUART, 3xADC
etc.[17]

21

Fig. 3.2. a. Top view SIM908 EVB [ 17]

Fig. 3.2. b Bottom view SIM908 EVB [ 17]
3.1.1 Modulul SIM908
Conceput pentru a fi utilizat la nivel global, SIM908 este un integrat ce conține 2
„motoare ” de mare performanță și anume: un „motor ” GPS și un „motor ” GSM/GPRS.
Motorul GSM/GPRS este un modul ce lucrează în patru benzi de frecvență și anume: 850
MHz GSM, 900 MHz EGSM, 18000 MHz DCS, 1900 MHz PCS și suportă patru scheme de
codare GPRS: CS -1, CS -2, CS -3 și CS -4. Motorul GPS oferă cea mai bună achiziție de date și
prezintă o acuratețe ridicată. [18]

22
Datorită dimensiunilor sale, de 30x30x3.2mm, modului S IM908 poate îndeplini
aproape orice cerință într -o aplicație, precum un M2M, smartphone, PDA, și chiar un
dispozitiv de urmărire.
Prevăzut cu 80 de pini SMT, modulul SIM908 prezintă toate interfețele hardware
necesare pentru a comunica cu placa de de zvoltare:
– Port serial și port pentru debug, care ajută utilizatorul să dezvolte aplicații cât
mai ușor
– Port serial GPS
– Două canale audio care includ două intrări audio și două ieșiri audio. Acestea
pot fi configurate prin comenzi AT
– Interfața de încărcare
– Pini GPIO
– Tastatură și display care îi oferă utilizatorului posibilitatea de a dezvolta
aplicații customizate

Schema bloc a modulului SIM908
Schema bloc a modulului SIM908 cuprinde:
– „Motorul ” GPS
– „Motorul ” GSM
– Memoria Flash
– Partea de radio frecv ență GSM
– Antenele
– Alte interfețe

23

Fig. 3.3 Schema bloc a modulului SIM908 [ 18]
a) Interfața serială
SIM908 oferă două porturi seriale asincrone. Unul este portul serial, iar celălalt este
portul de debug. Modulul este proiectat ca un DCE (Data Commu nication Equipment). Fig.
3.4 p rezintă conexiunea între module și client (DTE).

Fig. 3.4. Conexiunea între DCE și DTE [ 18]
În cazul în care doar RXD și TXD sunt utilizați, ceilalți pini trebuie să rămână
neconectati.
Portul serial:
– Este un dispozitiv full modem
– Conține liniile de date TXD și RXD, liniile de hardware flow control RTS și
CTS precum și l inile de stare DTR, DCD, RI.
Analog base
bandDigital base
bandPower management unit
FLASHRadio
Frequency Power
supply
Analog Interface
Audio
ADCDigital Interface
UARTSIM
Keypad/
GPIOs
LCD/SPII2CPWMsRTC
GPS
Receiver
GPS
UART
TXD
RXD
RTS
CTS
DTR
DCD
RITXD
RXD
RTS
CTS
DTR
DCD
RINGMODULE (DCE) CUSTOMER (DTE)
Serial port1 Serial port
Debug port Serial port2
GPS/DBG_RXGPS/DBG_TX TXD
RXD

24
– Poate fi folosit pentru FAX CSD, servicii GPRS și comunicație prin comenzi
AT
– Suportă următoarele baud -rate: 1200, 2400, 4800, 9600, 19200, 38400, 57600
și 115200 bps
– Prezintă funcționalitatea de autobauding care acceptă doar următoarele baud –
rateuri: 1200, 2400, 4800, 9600, 19200, 38400 și 57600bps
– Setarea implicită este autobauding
Setarea de autobauding permi te modulului SIM908 să detecteze automat baud -rate-ul
dispozitivului gazdă, însă trebuie avut în vedere sincronizarea între DTE și DCE precum și
restricțiile de operare.
Portul de debug:
– Folosit pentru debug și pentru upgrade de software
– Suportă rată de tr ansfer de 115200 bps

Fig. 3.5. Conexiunea pentru upgrade de software și debug [ 18]
Portul serial și portul de depa nare suportă nivelul CMOS. Dacă utilizatorul conectează
modulul la calculator, level shifter -ul trebuie să fie adăugat între DCE și DTE la fel ca în
figură de mai sus.
b) Interfața audio
Modulul SIM908 oferă două intrări analogice MIC1P/1N și MIC2P/2N, care ar putea
fi folosite în cazul utilizării unui microfon, respectiv două ieșiri analogice, SPK1P/1N și
SPK2P/2N.
c) Interfața pentru cartela SIM

TXDRXD
GNDGPS/DBG_RXDGPS/DBG_TXD
GNDPWRKEYMODULE
VBAT
TXD_IN
RXD_IN
GNDRS232
C1TXD_OUT
RXD_OUTPC
VBAT

25
Interfața SIM este în conformitate cu standardul de specificații GSM Phase 1 și cu
GSM Phase 2 pentru cartele SIM FAST 64kbps. Sunt acceptate cartele SIM de 1.8V respectiv
3V.
d) LCD Display/Interfața SPI
Modulul oferă o interfață serială pentru ecran LCD care poate fi folosită ca și interfața
serială în cazul unor aplicații bazate pe comenzi AT.
e) Interfața pentru tastatură
Configurația de bază constă într -o matrice de 3 coloane și 3 rânduri, ceea ce înseamnă
un total de 9 taste.
f) ADC
SIM908 oferă un ADC auxiliar, care poate fi utilizat pentru a măsura diferite tensiuni.
g) Pini GPIO (General Purpose Input/Output)
SIM908 oferă până la 6 pini GPIO, al căror nivel de tensiune la ieșire poate fi setat
prin co menzi AT.
h) PWM
SIM 908 oferă 3 ieșiri de PWM care sunt folosite pentru a controla un buzzer sau
lumina de fundal de la tastatură sau LCD. Frecvența de ieșire pentru canalele de PWM 1 și 2
variază între 25.6KHz și 3.25MHz. Pentru aceasta sunt folosiți 2 regiștrii de 7 biți fără semn,
care controlează perioadă și factorul de umplere. Canalul 3 este folosit pentru controlul unui
buzzer, și scoate la ieșire un semnal dreptunghiular.
i) I2C
Interfața I2C oferită de modulul SIM908 este folosită doar în apli cațiile AT embedded.
j) Antena GSM & GPS
Pentru a obține performanțe excelente atât din punct de vedere al obținerii locației, dar
și din punctul de vedere al transmiterii acesteia, sunt folosite antene GPS și GSM. Plasarea
corectă a acestora vă asigura măsurători precise.
Sintaxa comenzilor AT
Așa cum am văzut, majoritatea funcționalităților modulului SIM908 pot fi controlate
prin comenzi AT. Pentru a face mai ușoară înțelegerea acestor comenzi în cadrul aplicației de
față, menționăm că dis pozitivul de control (microcontrollerul) controlează modulul GSM prin
trimiterea de co menzi AT via interfața serială.[19]

26
Prefixul „AT” sau „at” trebuie să fie trimis la începutul fiecărei linii de comandă.
Pentru a termina o line de comandă trebuie introdus terminatorul <CR>. De obicei comenzile
sunt urmate de răspuns care include „<CR><LF><răspuns><CR><LF>”.

Comenzile AT se pot împărți în trei categorii în funcție de sintaxă:
1) Sintaxa de bază
Aceste comenzi AT au următorul format „AT<x><n>” sau „AT&<x><n>” unde
„<x>” reprezintă comanda iar „<n>” argumentul/argumentele comenzii.
2) Sintaxa S Parameter
Aceste comenzi AT au următorul format „ATS<n>=<m>” unde „<n>” este indexul
registrului S iar „<m>” este valoarea care trebuie asig nată, care este opțională. În cazul în care
lipsește, o valoare default este atribuită.
3) Sintaxa extinsă
Aceste comenzi pot opera în mai multe moduri și anume:
a) Comenzi de test
Formatul acestei comenzi este „AT+<x>=?”. Echipamentul mobil răspunde cu lista de
parametrii și cu intervalul de valori corespunzător pentru fiecare parametru.
b) Comenzi de citire
Formatul acestei comenzi este „AT+<x>?”. Această comandă returnează setul de
valori pentru parametrii caracteristici.
c) Comenzi de scriere
Formatul acestei comenzi este „AT+<x>=<… >”. Această comandă setează valorile
pentru parametrii definiți.
d) Comenzi de execuție
Formatul acestei comenzi este „AT+<x>”. Această comandă citește parametrii statici
afectați de către procese le interne ale modulului GSM
O parte din comenzile folosite în aplicație sunt prezentate mai jos:
– ATE<va lue> – acesta comandă setează sau nu modul ecou. În cazul în care
parametrul <val ue> este setat pe 0 modul ecou este dezactivat iar în cazul în
care <va lue> este setat pe 1, modul ecou este activat. În cazul de față s -a folosit
comanda ATE0, deoarece se dorește ca modul ecou să fie dezactivat.
– ATI – terminal adapterul (parte a modulului GSM) oferă informații despre
dispozitiv

27
– AT+CREG – această comandă se referea la înregistrarea în rețea. Având o
sintaxă extinsă, această comandă poate fi de test, de citire sau de scriere. Pentru
aplicația curentă s -a folosit comanda de citire.
Răspunsul aceste comenzi are următorul format:
+CREG:<n>,< stat> [,<lac>,<ci>] OK
Unde,
<n> = 0 – înregistrarea în rețea este dezactivată
1 – înregistrarea în rețea este activată
2 – înregistrarea în rețea este activată împreună cu informațiile opționale despre
locație
<stat> = 0 – modulul nu este înregistrat și nici nu încearcă să se înregistreze la alt
operator GSM
1 – modulul este înregistrat la rețea
2 – modulul nu este înregistrat, dar încearcă să se conecteze la alt operator GSM
3 – înregistrarea nu este permisă
4 – necunoscut
5 – modulul este înregistrat și are roaming
<lac> – codul zonei de localizare
<ci> – identificatorul celulei UTRAN/GERAN
În caz de eroare răspunsul comenzii este +CME ERROR:<err> unde <err> reprezintă
un cod de eroare corespunzător.
– AT+CPIN – această comandă se referă la validarea codului pin. Având o
sintaxă extinsă, această comandă poate fi de test, de citire sau de scriere. Pentru
aplicația curentă s -a folosit comanda de citire.
Răspunsul aceste comenzi are următorul format:
+CPIN:<code> OK
Unde,
<code> reprezintă un string care indică faptul că este necesară sau nu introducerea
codului pin: READY – nu este necesară introducerea codului pin
SIM PIN – trebuie introdus codul PIN
SIM PUK – trebuie introdus codul PUK
PH_SIM_ PIN, PH_SIM PUK, SIM PIN2, SIM PUK2
În caz de eroare răspunsul comenzii este +CME ERROR:<err> unde <err> reprezintă
un cod de eroare corespunzător.
– AT+CGPSPWR – această comandă se r eferea la alimentarea modulului GPS.
Pentru aplicația curentă s -a folosit comanda de scriere. Formatul comenzii de
scriere este AT+CGPSPWR=<mode> unde dacă parametrului mode îi este

28
atribuită valoare 0, modulul GPS nu este alimentat iar dacă îi este atribu ită
valoarea 1, acesta este alimentat.
– AT+CGPSRST – această comandă se referea modul de reset al modulului GPS
(modul COLD start sau autonomy). Pentru aplicația curentă s -a folosit
comanda de scriere. Formatul comenzii de scriere este
AT+CGPSRST=<mode> un de dacă parametrului mode îi este atribuită valoare
0, modulul GPS este resetat în modul COLD start iar dacă îi este atribuită
valoarea 1, acesta este resetat în modul autonomy.

– AT+CGPSINF – această comandă se referea la preluarea locației GPS. Pentru
aplicația curentă s -a folosit comanda de scriere. Formatul comenzii de scriere
este AT+CGPSINF=<mode> unde dacă parametrului mode îi este atribuită
valoare 0 răspunsul comenzii va fi de tipul
<mode>,<longitude>,<latitude>,<altitude>,<UTC
time>,<TTFF>,<num>,< speed>,<course> OK, cu semnificația:
<longitude> – longitudine
<latitude> – latitudine
<altitude> – altitudine
<UTC time> – timp UTC în format yyyymmddHHMMSS
<TTFF> – time to first fix
<num> – sateliții folosiți pt localizare
<speed> – viteza
<course> – traseu
Parametrul <mode> poate lua însă și alte valori, în funcție de valoarea luată, răspunsul
având un anumit format. Dacă <mode>=
2 – răspunsul va fi în format GPGGA
4 – răspunsul va fi în format GPGLL
8 – răspunsul va fi în format GPGS A
16 – răspunsul va fi în format GPGSV
32– răspunsul va fi în format GPRMC
64 – răspunsul va fi în format GPVTG
128 – răspunsul va fi în format GPZDA

29
– AT+CMGF – această comandă se referă la formatul SMS -ului. Pentru aplicația
curentă s -a folosit comanda de scriere. Formatul comenzii de scriere este
AT+CMGF=<mode> unde dacă parametrului mode îi este atribuită valoare 0,
formatul mesajului este de tip PDU, iar în cazul în care valoarea atribuită este
1, formatul mesajului este de tip TEXT
– AT+CSCS – această com andă se referă la setul de caractere folosit. Pentru
aplicația curentă s -a folosit comanda de scriere. Formatul comenzii de scriere
este AT+CSCS=<chset>, unde <chset> poate fi „GSM”, „UCS2”, „IRA”,
„HEX”, „PCCP”, „PCDN”, „8859 -1”.
În caz de eroare ră spunsul comenzii este +CME ERROR:<err> unde <err>reprezintă
un cod de eroare corespunzător.
– AT+CMGS – această comandă este folosită pentru trimiterea unui SMS.
Pentru aplicația curentă s -a folosit comanda de scriere. Dacă anterior s -a setat
pentru formatul SMS -ului, modul text atunci formatul comenzii este
AT+CMGS=<da> [,<toda>] <CR>text îs entered<ctrl -Z/ESC>, unde <da>
reprezintă destinatarul mesajului, urmat de textul dorit. Răspunsul primit în
urma acestei comenzi este +CMGS:<ms>, unde <mr> este un iden tificator de
mesaj și reprezintă faptul că mesajul a fost trimis corect.
În caz de eroare răspunsul comenzii este +CME ERROR:<err> unde <err>reprezintă
un cod de eroare corespunzător.
– AT+CMGL – această comandă este folosită pentru listarea tuturor me sajelor.
Pentru aplicația curentă s -a folosit comanda de scriere. Dacă anterior s -a setat
pentru formatul SMS -ului, modul text atunci formatul comenzii este
AT+CMGL=<stat> [,<mode>], unde <stat> reprezintă statusul mesajului care
poate fi:
▪ REC UNREAD – mesaj primit și necitit
▪ REC READ – mesaj primit și citit
▪ STO UNSENT – mesaj stocat și netrimis
▪ STO SENT – mesaj stocat și trimis
▪ ALL – toate mesajele
Răspunsul primit în urma acestei comenzi este +CMGL: <index>,<stat>,<oa>,
[<alpha>], [<scts>] <CR><LF>< data><CR><LF> OK, unde
<index> – reprezintă numărul curent al sms -ului
<stat> – reprezintă statusul mesajului
<oa> – reprezintă expeditorul mesajului

30
<alpha> – reprezintă numele expeditorului dacă acesta se află memorat în agendă
<scts> – data și ora la care a fost primit mesajul
<data> – conținutul mesajului
În caz de eroare răspunsul comenzii este +CME ERROR:<err> unde <err>reprezintă
un cod de eroare corespunzător.
– AT+CMGD – această comandă este folosită pentru ștergerea tuturor mesajelor.
Pentru aplicația curentă s -a folosit comanda de scriere. Formatul comenzii este
AT+CMGD=<index> [,<deflag>], unde <index> este un întreg ce reprezintă
locația mesajului care se dorește a fi șters din zona de stocare, iar <delflag>
indică faptul dacă un mesaj să fie șters sau nu în funcție de statusul său.
Astfel dacă <delflag> este:
0 – se șterge doar mesajul stocat la indexul dat din zona de stocare. Aceasta este
valoarea implicită.
1 – se ignoră valoarea precizată pentru index și se șterg mesajele din zo na de
stocare cu statusul primit și citit
2 – se ignoră valoarea precizată pentru index și se șterg mesajele din zona de
stocare cu statusul primit și citit sau stocat și trimis
3 – se ignoră valoarea precizată pentru index și se șterg mesajele din zona de
stocare cu statusul primit și citit, stocat și trimis sau stocat și netrimis
4 – se ignoră valoarea precizată pentru index și se șterg toate mesajele din zona
de stocare
Răspunsul primit în urma acestei comenzi este OK. In caz de eroare răspunsul
comenzii este ERROR.
3.1.2 Microcontrolerul STM32F103xxx
STM32 este o familie de circuite integra te pe 32 de biți, produse de câte firma
STMicroelectronics. Cipurile STM32 sunt grupate în serii ce au la bază același procesor ARM
pe 32 de biți, precum Cortex -M4F, Cortex -M3, Cortex -M0 +, sau Cortex -M0. Intern, fiecare
microcontroller constă din nucleul procesorului, memoria RAM statică, memoria flash,
interfața de depa nare și diverse periferice. [20]
Seria STM32 F1 a fost primul grup de microcontrolere STM 32 bazate pe nucleul
ARM Cortex M3 și sunt considerate ca fiind de bază. Seria F1 a evoluat în timp prin creșterea
vitezei procesorului, dimensiunea memoriei interne, diverse periferice. [20]
Familia de microc ontrolere STM32F103xx (Fig. 3.6 ) este e se rie de microcontrolere
de performanță medie, ce încorporează performanța procesorului ARM Cortex ™ -M3 32 -bit

31
RISC care funcționează la o frecvență de 72 MHz, memorii încorporate de mare viteză
(memorie flash de până la 128 Kbyte și ȘRAM de până la 20 de Kb ytes), și o gamă largă de
intrări/ieșiri și periferice conectate la două magistrale APB. Toate dispozitivele oferă două
ADC -uri pe 12 biți, trei timere de uz general pe 16 biți, plus un timer PWM precum și
interfețe standard și avansate de comunicație: dou ă I2C și SPI, trei USART -uri, un USB și un
CAN. [20]
Dispozitivele operează între 2.0V și 3.6V tensiune de alimentare la temperaturi între –
40 grade Celsius și 105 grade celsius pentru varianta extinsă. Prevăzute cu un set de moduri
de economisire a energiei, acestea permit proiectarea de aplicații low -power. [20]
Toate aceste caracteristici fac ca această clasă de microcontrolere să se preteze pentru
o gamă largă de aplicații cum ar fi drivere de motor, echipament medical, aplicații de control,
platforme GPS, aplicații industriale, automate programabile, invertoare, imprimante, scanere,
sisteme de alarmă, etc.

Fig. 3.6 Diagramă bloc pentru familia de microcontrolere STM32F103xxx [20]

32
a) Procesorul ARM Cortex M3
Procesorul ARM Cortex -M3 reprezintă cea mai nouă generație de procesoare ARM
pentru sistemele încorporate. Acesta a fost dezvoltat pentru a oferi o platformă low -cost care
să vină în întâmpinarea nevoilor, cu un număr redus de pini și consum redus de energie,
asigurând în același timp performanțe remarcabile de calcul și răspuns avansat la întreruperi.

b) Memoria flash și ȘRAM încorporată

Microcontrolerul folosit în cazul de față este prevăzut cu 128 Kbytes de memorie flash
disponibilă pentru a stoca program și date și cu 20 Kbytes de memorie ȘRAM

c) Interfața I2C

Prevăzut cu 2 interfețe I2C, care pot funcționa în modul multimaster sau slave și care
suportă modul de operare standard sau rapid.

d) Interfața USART

Una dintre interfețele USART este capabilă să comunice la viteze de până la 4,5
Mbit/s. Celelalte interfețe pot să comunice la viteze de până la 2.25 Mbit/s. Ele oferă
posibilitate hardware de gestionare a semnalului CTS și RTS, suport pentru IrDA SIR
ENDEC, sunt conforme cu standardul ISO 7816 și au capacitatea de LIN Master/Slave.

e) Interfața SPI

Microcontrolerul este prevăzut cu 2 interfețe SPI care sunt capabile să comunice cu
viteze de până la 18 Mbiți/s în modurile de slave și master în full duplex și simplex. Divizorul
de 3 biți oferă 8 moduri de frecvență.

f) Pinii GPIO

Oricare dintre pinii GPIO poate fi configurați din software ca fiind de ieșire (push -pull
sau open -drain), de intrare (cu sau fără pull -up sau pull -down) sau cu funcție de periferic. Cei
mai mulți dintre pin i GPIO au funcții digitale sau analogice alternative.
3.2 Interfață cu utilizatorul
Interfaț a cu utilizatorul constă dintr -o aplicație Android care permite configurarea
sistemului de alarmă precum și vizualizarea pe hartă a locației. Pentru a putea descrie cum
funcționează aplicația, trebuie mai întâi să facem o trecere în revistă a elementelor fo losite
pentru crearea aplicației.
a) Activity

33
O activitate reprezintă o interfață cu utilizatorul, un ecran, o fereastră sau un formular.
O aplicație Android poate avea una sau mai multe activități. Fiecare activitate are pr opriul
ciclu de viață (Fig. 3 .7), indiferent de ciclul de viață al procesului asociat aplicației, are
propria stare și datele activității respective pot fi salvate sau restaurate.

Fig. 3.7 Ciclul de viață al unei activități [21]
O aplicație poate avea mai multe activități, îns ă doar una este în prim plan. Utilizând
managerul de activități, sistemul Android gestionează o stivă de activități care se găsesc în
stări diferite (pornită, în execuție, întreruptă, oprită, distrusă).
Cu toate că o activitate reprezintă o parte func țională în cadrul unei aplicații, ea trebuie
să poată comunica cu alte activități și nu numai. Pentru aceasta, sistemul de operare Android
pune la dispoziția dezvoltatorilor un sistem de servicii și broadcast/receive. Această
comunicare dintre componente s e realizează prin intermediul “intenturilor”. Mai simplu,
utilizatorul își declară intenția de a efectua o activitate.
b) Intent
Un intent reprezintă un mecanism special în sistemul Android, fiind folosit pentru a
porni activități, servicii și pentru a emite broadcast -uri (Fig. 3.8 ). Intent -ul în sine nu prezintă
multă funcționalitate. Este un simplu obiect care are rolul de a stoca informația necesară
pentru ca o activitate să pornească, partea de funcționalitate prezentă fiind legată exclusiv de
aceast a.

34

Fig. 3.8. Relația Activity – Intent – Activity [22]
Pentru a crea un Intent avem două posibilități și anume:
– Explicit prin atribuirea unui identificator sub forma unui str ing
– Implicit prin specificarea instanței clasei care emite intenția și specificarea
clasei de tipul căreia se dorește a fi instanța creată
La nivelul limbajului de programare, un intent este un obiect ce definește un mesaj
transmis către o altă componentă pentru a anunța o operațiune;
O activitate poat e fi apelată pentru a returna un rezultat, caz în care activitatea apelată
răspunde la rândul ei cu un intent.
c) Broadcast receiver

O altă componentă importantă a unei aplicații Android o reprezintă broadcast reveicer
(Fig. 3.9). Acesta permite identificarea evenimentelor generate de sistem sau de o aplicație.
Fiecare „ascultător” înregistrat pentru un anumit eveniment va fi notificat de sistem imediat ce
evenimentul respectiv apare.

Cu alte cuvinte un broadcast receiver răspunde la mesaje le transmise de alte aplicații
sau de sistemul în sine. Aceste mesaje sunt numite simplu evenimente. De exemplu o aplicație
poate iniția un eveniment pentru a informa altă aplicație că s -au downloadat anumite date pe
dispozitiv și acestea sunt disponibile pentru utilizare. Așadar acesta este un broadcast receiver
care va intercepta aceste mesaje și va iniția o acțiune corespunzătoare.

Pentru a face ca un broadcast receiver sa funcționeze, trebuie realizați următorii doi
pași:
a) Crearea broadcastului
b) Înregistrarea acestuia

35

Fig. 3.9 Broadcast receiver [23]

36
4. Implementarea aplicației.
4.1 Descrierea generală a implementării
Aplicația de bază a fost dezvoltată în limbajul de programare C, folosind uVision IDE
dezvoltat de către compania Keil. A cest IDE este un sistem de management al proiectelor, cu
posibilitatea de editare a codului sursă, de debug a programului și simulare completă, toate
într-un singur mediu. Platforma de dezvoltare uVision este ușor de utilizat și ajută la crearea
de proiecte cu grad de dificultate ridicat. Editorul de cod sursă și debuggerul sunt integrate și
ele în acest mediu de integrare, ceea ce oferă flexibilitate și continuitate în dezvoltarea unui
proiect.
În cazul interfeței cu utilizatorul, pentru crearea acesteia s -a folosit ADT (Android
Development Tools), care este un plug -in pentru Eclipse IDE și care este proiectat pentru a
oferi un mediu puternic, integrat , în care se pot construi aplicații Android. ADT extinde
capacitățile Eclipse și permite crearea rapidă a unor n oi proiecte Android, oferă posibilitatea
de a crea o interfață grafică pentru aplicație, de a adăuga pachete bazate pe API Framework
Android, d e a depa na aplicațiile utilizând instrumentele SDK Andr oid, și de a exporta fișierele
.apk cu scopul de a distrib ui o aplicație.
4.2 Implementarea codului C pentru dispozitivul de urm ărire
În Fig. 4.1. Este prezentat un flowchart pentru aplicația de bază. Ac esta este bazat pe
codul sursă.

37

Fig. 4.1 Flowchart aplicația de urm ărire

Funcționarea se bazează pe următorul scenariu:
În mod continuu se citește statusul curent, adică comenzile pe care modulul SIM908 le
primește de la un utilizator. Această citire face într -o buclă while, unde se verifică exact ce
comandă primește modulul și în funcție de aceasta se execută acțiunea corespunzătoare.

while (1)
{ status_read_cmd=read_gsm_data();
clear_buf_uart2();

Funcția de citire nu face decât să trimită către modul, o comandă prin care cere listarea
tuturor mesajelor existente și în funcție de conținutul mesajului (conținut ce reprezintă ceea ce
trebuie să execute modului) să returneze un anumit status. După fiecare citire, mesajele sunt
șterse astfel că tot timpul în buffer nu avem decât un singur mesaj și avem siguranța că la
următoarea ci tire bufferul este gol, și nu apar suprapunneri care pot duce la pierderea unor
mesaje importante.

int read_gsm_data()
{ memset(buf,0,100);
send_string_uart2(GSM_LIST_SMS);

38
send_data_uart2(0x1A);
delay_GSM(20000);
strcat(buf, buf_uart2.buf);
PUT(buf);
indexx= -1;
pbuf=buf;
while(strlen(pbuf)>5)
{ if(strncmp(pbuf,"cmgs:",5)==0)
{ pbuf=pbuf+5;
memcpy(phone_number,pbuf,10);
for(indexx=0;indexx<10;indexx++)
if(phone_number[indexx]<'0'||phone_number[indexx]>'9')
indexx=100;
if((indexx!=100) )
return 1;
}
if(strncmp(pbuf,"location?",9)==0)
{
return 2;
}
if(strncmp(pbuf,"stop",4)==0)
{
return 3;
}
pbuf++;
}
return 0;}
Datorită modului de implementare, conținutul unui mesaj este interpretat și în funcție
de aceasta se ia o decizie.

Astfel dacă se primește un mesaj cu următorul conținut „cmgs: xxxxxxxxxx”, unde x
reprezintă o cifră între 1 și 9, înseamnă că se dorește configurarea dispozitivului de urmărire,
ca să trimită informații despre localizare către numărul „xxxxxxxxxx”, extras din conținutul
mesajului. Dacă numărul este corect, adică format din 10 cifre atunci funcția read_gsm_data
() returnează valoarea 1. Valoarea returnată este interceptată în funcția main (), de unde se
trimite și un mesaj de confirmare, pentru a informa uti lizatorul că numărul a fost setat.

case 1:
PUT("numarul este:");
strcpy(numar,phone_number);
PUT(numar);
delete_all_sms();

39
clear_buf_uart2();
send_gsm_text((unsigned char *)nrsetat,1);
send_gsm_data(nrsetat,1);
break ;

Mesajul este transmis cu ajutorul funcțiilor send_gsm_text () și send_gsm_data (). Cu
ajutorul primei funcții i se trimite modulului comanda „AT+CMGS”, urmată de numărul de
telefon extras anterior, prin care i se indică faptul că se dorește trimiterea unui mesaj text către
numărul dat.

init_sms_to_send();

if(current_status != GSM _TEXT_MODE_FINISH)
return ;

memset(GSM_SEND_TEXT2,0,35);
strcat(GSM_SEND_TEXT2,"AT+CMGS= \"");
strcat(GSM_SEND_TEXT2,numar);
strcat(GSM_SEND_TEXT2," \"\x00D \x00A \"");
PUT(GSM_SEND_TEXT2);
clear_buf_uart2();
send_string_uart2(GSM_SEND_TEXT2);

După trimiterea comenzii se așteaptă și conținutul mesajului, care este transmis cu
ajutorul celei dea două funcții.

void send_g sm_data(char * buf , unsigned int count)
{unsigned int i ;
#if 1
for( i = 0 ;i < count ; i ++)
{
for ( i = 0 ; i < strlen((const char*)buf) ; i ++)
{send_data_uart2(buf[i]);
send_data_uart1(buf[i]);
}
}
send_data_uart2(0x1A);
send_data_uart1(0x1A);
#endif
delay_GSM(10000);
}

40
În cazul în care se primește un mesaj, al cărui conținut este interpretat și se găsește
sintaxa „location?”, funcția read_gsm_data () returnează valoarea 2. Acest lucru se referă la
faptul că utilizatorul dorește să localizeze vehiculul. În funcția main () unde se preia valoarea
returnată de funcția read_gsm_data() , datele primite de la modului GPS sunt trimise că
parametrii unei alte funcții, care le prelucrează și le trimite prin mesaj utilizatorului. În cazul
în care utilizatorul dorește să oprească locali zarea, aceste trebuie să trimită doar un mesaj ce
conține sintaxa „stop”, sistemul trecând astfel într -o stare inactivă, până la primirea unei alte
comenzi.

case 2:
PUT("a intrat in localizare");
sw=1;
while(sw)
{
if(is_gps_analysising())
{ if(strlen((const char *)buf_uart3.buf)>0)
{ memset(coordonate,0,DATA_SIZE);
strcat(coordonate,buf_uart3.buf);
PUT(" \r\n");
PUT(coordonate);
GPS_RMC_Parse(coordonate);
clear_buf_uart2();
clear_buf_uart3();
}
clean_gps_flag();
}
delete_all_sms();
clear_buf_uart2();
delay_GSM(100000);

if(read_g sm_data()==3)
sw=0;
}
if(sw==0)
{
PUT("stop");
delete_all_sms();
clear_buf_uart2();
}
break ;

41
Datele returnate de către modulul GPS se află într -un format standard numit NMEA
GPRMC (Recommended minimum specific GPS/Transit data). NMEA este un protocol
standard, utilizat de receptoarele GPS pentru a transmite date. Fiecare răspuns începe cu
semnul dolar ($) și se termină cu o linie de carriage return linefeed (<CR> <LF>). Datele sunt
delimitate prin virgulă. Unele informații pot lipsi deoarece sunt receptoare GPS care nu
transmit toate datele.

Din datele primite, în funcția GPS_RMC_Parse (), se extrag doar latitudine și
longitudinea, care mai apoi sunt trimise tot prin int ermediul funcțiilor send_gsm_text () și
send_gsm_data () către utilizator.

void GPS_RMC_Parse(char *line)
{ unsigned char ch, status;
char *buf = line;
ch = buf[5];
status = buf[GetComma(2, buf)];

if (ch == 'C')
{ if (status == 'A')
{ latitude = Get_Double_Number(&buf[GetComma(3, buf)]);
sprintf(coord,"%f",latitude);
strcat(coord inates,"Latitudine: ");
strcat(coordinates,coord);
longitude = Get_Double_Number(&buf[GetComma(5, buf)]);
sprintf(coord,"%f",longitude);
strcat(coordinates," Longitudine: ");
strcat(coordina tes,coord);
PUT(" \r\n");
send_gsm_text((unsigned char *)coordinates,1);
send_gs m_data(coordinates,1);
memset(coordinates,0,30);
}
}}

Dacă se primește un mesaj în al cărui conținut se găsește sintaxa „stop”, funcția
read_gsm_data () va returna valoarea 3. În funcția main (), când această valoare este
interceptată, toate mesajele sunt sterse, sistemul trece într -o stare inactivă și așteaptă o nouă
citire, în funcție de care va executa una din comenzile descrie anterior.

case 3:
PUT("stop");
delete_all_sms();

42
clear_buf_uart2();
break ;

4.3 Implementarea codului Java pentru interfața cu utilizatorul
Interfață cu utilizatorul se realizează printr -o aplicație Android, simplistă, care permite
acestuia să configureze urmarirea, și să poată vizualiza pe hartă, informațiile primite de la
modulul GPS. Aplicația constă din 4 activități.
O activitate nu mită Settin gsActivity (Fig. 4.2 ), care permite utilizatorului să selecteze
dispozitivul GPS pe care dore ște să îl monitorizeze, introduc ând numarul de telefon al cartelei
acestuia.

Fig. 4.2 Activitatea SettingsActivity

43
În activitatea de față, utilizatorului îi este permis să seteze numărul de telefon către
care se vor trimite informațiile de localizare. Acest număr se introduce în EditTextul
corespunzător stringului „Enter SIM no. For sending data”, într -un format special și anume
„cmgs: xxxxxx xxxx”. S -a folosit această codificare pentru a introduce un nivel de securitate.
Astfel că utilizatorul trebuie să fie atent la introducerea numărului, să corespundă formatului
implementat. De asemenea trebuie introdus și numărul de telefon al cartelei SIM aflată pe
placă, către care se vor trimite informațiile de configurare și comanda de urmărire. Acest
număr se introduce în EditTextul corespunzător stringului „Set SIM number of GSM
module”. O dată introduse acest e informații, informația poate f i salvată, cu ajutorul butonului
„Save settings”. În urma apăsării butonului „Save settings”, informațiile introduse în
câmpurile respective sunt preluate și salvate în atribute reprezentative p entru a fi utilizate mai
târziu, și se face trecerea înapoi c ătre activi tatea principal ă.

saveSettings .setOnClickListener( new OnClickListener() {
@Override
public void onClick(View arg0) {
GSM_Module_number =gsmModuleNumber .getText().toString();
setnumbertosend =Setnumbertosend .getText().toString();
SharedPreferences sharedPrefs = context .getSharedPreferences( "GPSALARM" ,
context .MODE_PRIVATE );
SharedPreferences.Editor editor = sharedPrefs.edit();
editor.putString( "GSM_MODULE_NUMBER" ,GSM_Module_number );
editor.putString( "START_TRACKING_MESSAGE" , setnumbertosend );
editor.commit();
context .finish();
}
});

De asemenea există posibilitatea de a renunța la configurarea sistemului de alarmă.
Acest lucru este posibil prin utilizarea butonului „Cancel” care face trecerea înapoi spre
activitatea principală.

cancelSettings .setOnClickListener( new OnClickListener() {
@Override
public void onClick(View arg0) {
context .finish();
}
});

O altă activitate, care reprezintă și activitatea principală, cea care apare atunci când se
deschide aplica ția este MainActivity (Fig. 4.3 ).

44

Fig. 4.3 MainActivity

Mult mai simplă decât cea anterioară, aceasta este prevăzută cu doar trei butoane însă
în codul acestei activități, este realizată tr ansmiterea unui SMS.

Primul buton din această activitate, deschide o fereastr ă nouă în care afișează întregul
istoric de monitorizare al dispozitivului GPS . Se poate observa în (Fig. 4.4) cum informa țiile
sunt afi șate în ordine cronologica, precum și coorodonatele GPS primite de la dispozitiv.
Astfel sa creat un istoric al monitoriz ării dispozitivului.

45

Fig. 4.4 Activitatea SHOWHISTORY

Al doilea buton, „Start tracking”, trimite modulului informațiile introduse anterior în
activitatea Settings Activity în cazul în care acestea sunt corecte (adică a fost introdus și
numărul modulului și numărul către care să se trimită informațiile de localizare), î n caz
contrar, afișând un mesaj de atenționare.

startTracking .setOnClickListener( new OnClickListener() {
@Override
public void onClick(View arg0) {
if (SettingsActivity. GSM_Module_number .length()>0 &&
SettingsActivity. setnumbertosend .length()>0)
{

46
sendSMS(SettingsActivity. GSM_Module_number ,SettingsActivity. setnumbertosend );
}
else
Toast. makeText (context , "Please enter both phone number." , Toast. LENGTH_SHORT ).show();
}
});
Ordinea de acționa re a butoanelor este obligatorie în ordinea așezării ultemelor dou ă,
apasarea primului buton este facultativ ă, adică prima dată se trimite configurația sistemului de
monitorizare iar mai apoi, se începe localizarea, prin acționarea celui de -al treilea buton, „Get
location”. Acest buton nu face decât să trimită modulului GPS, un string, care reprezintă
intenția utilizatorului de a începe urmărirea prin GPS.

buttongetlocation .setOnClickListener( new OnClickListener() {
@Override
public void onClick(View arg0) {
if (SettingsActivity. GSM_Module_number .length() > 0) {
sendSMS(SettingsActivity. GSM_Module_number ,
"location?" );
Intent myIntent = new Intent(context,
MapActivity. class);
context.startActivity(myIntent);
}
else
Toast.makeText (context,"Please enter both phone
number." ,
Toast.LENGTH_SHORT ).show();
}
});

La fel ca și pentru celălalt buton din această activitate, în cazul în care datele nu au
fost introduse corect în activitatea SettingsActivity, se afișează un mesaj corespunzător. În
cazul în care acestea sunt valide, odată acționat butonul, acesta face trecerea către o nouă
activitat e, MapActivity (Fig. 4.5 ), care reprezintă o hartă, unde vor fi afișate informațiile
despre localizare, ce vor fi actualizare la un interval de timp predefinit.

47

Fig. 4. 5 Activitatea MapActivity

O dată lansată cererea de urmărire, informațiile sunt primite prin SMS, la un interval
de timp predefinit, ales de către dezvoltator. Informațiile sunt decodificate corespunzător
codului de mai jos, deoarece ele sunt primite într -un anumit format, pentru introducerea lor pe
hartă fiind neces ar un format diferit, iar pe hartă este pus un marker, pentru a indica poziția
obiectului urmărit.

@Override
protected void onResume() {
super .onResume();
IntentFilter intentFilter = new IntentFilter( "SmsMessage.intent.MAIN" );
mIntentReceiver = new BroadcastReceiver() {

48
@Override
public void onReceive(Context context, Intent intent) {
String msg = intent.getStringExtra( "get_msg" );
try{

String[] latLng=msg.split( "\\s*\\n*[a -zA-Z]*:\\s*");

Double lat= Double. parseDouble (latLng[2]);
Double lng= Double. parseDouble (latLng[3]);

int lat_degree=( int)(lat/100);
Double lat_min_temp= lat -lat_degree *100;
int lat_min=lat_min_temp.intValue();
Double lat_sec_temp=(lat_min_temp -lat_min)*60;
int lat_sec=lat_sec_temp.intValue();
int lng_degree=( int)(lng/100);
Double lng_min_temp= lng -lng_degree*100;
int lng_min=lng_min_temp.intValue();
Double lng_sec_temp=(lng_min_temp -lng_min)*60;
int lng_sec=lng_sec_temp.intValue();

Double latitude= lat_degree +(double )lat_min/60+( double )lat_sec/3600;
Double longitude=lng_degree+( double )lng_min/60+( double )lng_sec/3600;

mMap .addMarker( new MarkerOptions()
.position( new LatLng(latitude,longitude))
.title( "Location" ));
mMap .moveCamera(CameraUpdateFactory. newLatLngZoom (new
LatLng(latitude,longitude), 15));}
catch (Exception e)
{ }
}
};
this.registerReceiver( mIntentReceiver , intentFilter);
}

În cazul în care se dorește oprirea urmăririi prin GPS, există butonul „Stop”, care
trimite un string modulului, informându -l pe acesta că utilizatorul nu mă dorește continuarea
localizării.

@Override
protected void onCreate(Bundle savedInstanceState) {

49
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_map );
setUpMapIfNeeded();
this.context =this;
stop = (Button) findViewById(R.id. buttonStop );
stop .setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
sendSMS(SettingsActivity. GSM_Module_number , "stop" );
}
});
}

Pentru integrarea hărtiilor Google, este nevoie de utilizarea unor servicii oferite
de către Google. Astfel, este necesară crearea unui Google Maps API key. Acest cod este liber
și poate fi folosit în orice aplicație care utilizează Maps API, suportând de asemene a un
număr nelimitat de utilizatori. Această cheie se poate obține prin Google APIs Console tot
ceea ce trebuie făcut este furnizarea cheii semnăturii aplicației și numele pachetului aplicației.
Aceasta este bazată pe cheia care se obține în momentul lansă rii unei aplicații Android. În
cazul dezvoltării aplicației în Eclipse, acesta crează și utilizează automat o cheie de
debug. [24]
Android folosește o politică bazată pe permisiune în care toate permisiunile necesare
unei aplicații trebuie să fie speci ficate în fișierul AndroidManifest.xml. În acest mod, când
este instalată aplicația va fi clar pentru utilizatorul ce permisiuni de acces sunt cerute de către
aplicația în cauză.
Pentru că utilizarea Google Maps să fie întru totul posibilă într -o aplicație Android,
este nevoie de adăugarea de informații suplimentare în fișierul AndroidManifest.xml unde se
specifică diferite permisiuni și feature -uri.
<uses -permission android:name ="android.permission.ACCESS_NETWORK_STATE" />
<uses -permission android:name ="android.permission.INTERNET" />
<uses -permission android:name ="android.permission.ACCESS_WIFI_STATE" />
<uses -permission android:name ="android.permission.ACCESS_COARSE_LOCATION" />
<uses -permission android:name ="android.permission.ACCESS_FINE_LOCATION" />
<uses -permission android:name ="android.permission.WRITE_EXTERNAL_STORAGE " />
<uses -feature android:glEsVersion ="0x00020000"
android:required ="true" />

ACCESS_NETWORK_STATE – pentru a verifica statusul rețelei, dacă pot fi descărcate sau
nu date
INTERNET – pentru a verifica starea conexiunii la internet

50
ACCESS_WIFI_STATE – pentru a accesa informații despre rețelele WI -FI
ACCESS_COARSE_LOCATION – pentru a determina locația utilizatorului, folosind Wi -Fi
și de rețeaua de date mobile
ACCESS_FINE_LOCATION – pentru a determina locația utilizatorului prin GPS
WRITE_EXTERNAL_STORAGE – pentru a scrie într -un mediu de stocare extern
OpenGL ES V2 – Necesar pentru Google Maps V2

Deoarece trimiterea de mesaje SMS poate aduce costuri suplimentare utilizatorului,
este necesar ca și pentru aceste operații să se i ndice permisiunile din fișierul
AndroidManifest.xml, care vor permite utilizatorului să decidă dacă permite sau nu instalarea
aplicației. Astfel în fișierul AndroidManifest.xml se mai adăugă următoarele permisiuni:

<uses -permission android:name ="android.permission.SEND_SMS" />

Cu următoarele semnificații:
SEND_SMS – permite trimiterea unui SMS

Similar cu trimiterea unui SMS, pentru recepționarea unui SMS este necesară
specificarea unor permisiuni în fișierul AndroidManifest.xml, pentru ca acesta să fie
interceptat:

<uses -permission android:name ="android.permission.RECEIVE_SMS" />
<uses -permission android:name ="android.permission.READ_SMS" />

Cu următoarele semnificații:
RECEIVE_SMS – permite primirea unui SMS
READ_SMS – permite citirea conținutului unui SMS

51
5. CONCLUZII

Lucrarea de față și -a propus realizarea unei aplicații ce folosește în paralel tehnologiile
GPS respectiv GSM pentru obținerea de informații cu privire la poziția unui vehicul urmărit.
Sistemul dezvoltat are o acoperire largă datorită densității suficiente a stațiilor GSM de
transmisie – recepție.
Aplicația este una modulară, prin aplicație modulară înțelegându -se o aplicație care
este compusă din mai multe componente ca re comunică între ele pentru a rezolva sarcinile
asociate.
Astfel întreaga aplicație este structurata în două părți:
– Partea de localizare pentru care s -a folosit o placă de dezvoltare
echipată cu modul GPS și GSM precum și un microcontroler, care preia coordonatele
coordonatele de la sateliți și le transmite prin SMS utilizatorului
– Interfața cu utilizatorul, pentru afișarea locației pe Google care constă
dintr -o aplicație Android instalată pe un telefon mobil. Aplicația Android oferă
utilizatorului și posibilitatea de configurare a sistemului de alarmă.
5.1 Tendințe viitoare
Pe piață există în momentul actual diferite tipuri de platforme mobile precum
Blackberry, Android, iOS, WindowsPhone, etc. Interfața cu utilizatorul pentru aplicația de
față a fost realizată doar pe platformă Android dar pe viitor se poate dezvolta și pentru alte
tipuri de platforme pentru a elimina dependența de platforma telefonului mobil, acaparând
totodată și utilizatori din sfera altor platforme mobile
O tendință de d ezvoltarea este accea de a înlocui modalitatea de trimitere a
informațiilor de localizare . Aceasta să nu se mai facă prin SMS, ci informațiile să fie trimise
către un server web, unde să existe posibilitate ca acestea să fie stocate și accesate după o
anum ită perioadă de timp.
O altă tendință de dezvoltarea ar fi aceea de a dezvolta aplica ția astfel încat s ă se poat ă
determina viteza de deplasare a vehiulului și urmarirea deplasarii acestuia în timp real. Ar mai
fii de ad ăugat calcularea distan ței și timpului parcurs de la un punct de plecare c ât și
calcularea distan ței și totodat ă a timpului parcurs p ână la o anumit ă destina ție.

52

53
6. BIBLIOGRAFIE

[1]. http://www.mio.com/technology -history -of-gps.htm
[2]. http://www.nasa.gov/multimedia/imagegallery/image_featur e_924.html
[3]. Robert J. Danchik, „An Overview of Transit Development” , Johns Hopkins APL
Technical Digest, Volume 19, Number 1 (1998)
[4]. Lim Sy Ai, „People Tracking System Using Global Positioning System and Global
System for Mobile Communication ”, Universit i Teknlologi Malaysia, June 2013
[5]. http://www.gps.gov/systems/gps/space/
[6]. Sophia Y. Zheng, „Signal Acquisition and Tracking for a Software GPS Receiver ”,
Virginia Polytechnic Institute , February 2005
[7]. http://www.simtel.ro/telecomunicatii/content/anchor/9
[8]. Hillebrand, Friedhelm, „GSM and UMTS; The creation of Global Mobile
Communication” , Wiley 2002
[9]. http://elinux.org/Android_Architecture
[10]. Sirisha Jonnalagadda , „Android Application for Library Resource Access ”, San Diego
State University, 2012
[11]. http://www.ziare.com/europa/germania/in -germania -cea-civilizata -bicicletele -se-fura-ca-
n-codru -1241150
[12]. http://www.bbc.com/news/uk -england -london -19266516
[13]. http://www.automatizari -utilaje.ro/electronica/radioco manda_sms
[14]. http://www.ssc.ro/manuale/gps/manual -instalare -utilizare -echipament -gps-auto.pdf
[15]. http://weblocator.eu/oferta -preturi/oferta -localizatoare -gps/localizatoare -gps-pentru –
vehicule/
[16]. Kyle Geske, „Development of a Wireless PositionTracking System” , University of
Manitoba, March 200 0
[17]. SIM908_EVB_kit_User Guide_v1.00.pdf
[18]. SIM908_Hardware_Design_v2.00.pdf
[19]. http://www.simcom.us/act_admin/supportfile/SIM908_AT%20Command%20Manual_V
1.01.pdf
[20]. http://www.st.com/st -web-
ui/static/active/en/resource/technical/document/datasheet/CD00161566.pdf
[21]. http://blog.zeltera.eu/?p=3398
[22]. http://itassistant.org/program are/android/invata -sistemul -de-operare -android -partea -7
[23]. http://magdabadita.files.wordpress.com/2012/11/broadcast_receiver.png
[24]. http://code.tutsplus.com/tutorials/android -sdk-working -with-google -maps -application –
setup –mobile -15771
[25]. Android Programming for Beginners

Similar Posts