Professional Documents
Culture Documents
Izjava
Danas, mobilni telefoni imaju velike ekrane osetljive na dodir sa mnogo boja i zasnivaju se
na brzim procesorima, kao što je ARM porodica. Većina mobilnih telefona sadrži dodatne
hardverske funkcije, kao što su akcelerometri, kompasi, svetlosni senzori, zvučni senzori,
GPS i tako dalje. Mobilni telefoni komuniciraju jedni sa drugima i sa internetom pomoću
GSM mreže. Iako svaka zemlja ima svoju GSM mrežu, sve mreže su međusobno
kompatibilne i ljudi mogu da koriste mobilne telefone u svakoj zemlji, sve dok je radna
frekvencija telefona kompatibilna sa radnom frekvencijom mreže te zemlje. Svaki mobilni
telefon sadrži GSM/GPRS modem koji mu omogućava da komunicira sa spoljnim svetom. Uz
pomoć GSM modema korisnici mogu da uspostave audio razgovore i da šalju i primaju SMS
tekstualne poruke. Pored toga, GPRS modem omogućava korisnicima da se povežu sa
internetom i da preko njega šalju i primaju velike datoteke, kao što su slike i video.
Ova knjiga je namenjena onima koji žele da nauče kako da koriste GSM i GPRS modeme u
projektima koji se zasnivaju na mikrokontrolerima. U ovoj knjizi su razmatrana dva tipa
popularnih porodica mikrokontrolera: PIC mikrokontroleri i Arduino. Veoma popularni
mikrokontroler PIC18F87J50 srednjih performansi koristi se u projektima koji se zasnivaju
na PIC mikrokontroleru, zajedno sa GSM Click pločicom. Osim toga, u Arduino Uno
projektima koristi se SIM900 GSM/GPRS modul. U ovoj knjizi su sadržani projekti koji se
zasnivaju na GSM-u i GPRS-u.
Dogan Ibrahim
Ahmet Ibrahim
London, 2017.
O autorima
Prof. dr Dogan Ibrahim ima diplomu inženjera elektronike, magistarsku titulu iz automatske
kontrole procesa i doktorsku titulu iz digitalne obrade signala. Prof. Ibrahim je autor preko
60 tehničkih knjiga i preko 200 tehničkih članaka o mikrokontrolerima, mikroprocesorima i
povezanim oblastima. On je ovlašćeni elektro inženjer i uvaženi član Instituta inženjerskih
tehnologija.
Neki ljudi poseduju druge mobilne telefone koje čuvaju u tajnosti i koriste ih u
aktivnostima, kao što su vanbračne afere ili tajni poslovi.
Većini TV kanala se sada može pristupiti pomoću mobilnih telefona, koji ljudi koriste
da bi gledali njihove omiljene filmove kada su u pokretu.
U Evropi GSM radi u opsezima od 900 MHz i 1,8 GHz, a u SAD-u u opsezima od 850 MHz i
1,9 GHz. Mnoge latinoameričke zemlje, Australija i Kanada, takođe, koriste opseg od 850
MHz. GSM mreža omogućava pojedincima da pristupe mobilnim uslugama u njihovim
zemljama i inostranstvu. Zahvaljujući mogućnostima međunarodnog roaminga, ljudi koji
putuju u inostranstvo na odmor ili zbog posla mogu da se povežu i da koriste GSM mreže
zemlje u kojoj se tada nalaze. Trenutno, zemaljske GSM mreže „pokrivaju“ više od 90 odsto
svetske populacije. Lista GSM operatera u nekim evropskim zemljama data je u tabeli 1.1.
Mobilna stanica se sastoji od mobilnih telefona i to je deo mreže koji korisnici vide i koriste.
Hardver se sastoji od mobilnog telefona koji sadrži elektronski procesor, ekran, kućište,
bateriju i karticu sa modulom identiteta pretplatnika (SIM, engl. Subscriber Identity
Module). SIM kartica skladišti različite informacije, kao što su identitet korisnika na mreži,
telefonski imenik itd. Svaki mobilni telefon ima jedinstveni broj poznat kao Međunarodni
identitet mobilne opreme (IMEI, engl. International Mobile Equipment Identity) koji je deo
telefona i ne može se menjati.
NSS sadrži niz modula, kao što su centrala sistema mobilne telefonije (MSC, engl. Mobile
Services Switching Centre), registar matičnih pretplatnika (HLR, engl. Home Location
Registar), registar gostujućih pretplatnika (VRL, engl. Visitor Location Register), registar
identifikacione opreme (EIR, engl. Equipment Identity Register), centar za autentikaciju
(AC, engl. Authentication Center), komutacioni centar mrežnog prolaza mobilne telefonije
(GMSC, engl. Gateway Mobile Switching Center) i SMS mrežni prolaz (SMSG, engl. SMS
Gateway).
MSC obavlja autentikaciju, registraciju, lociranje poziva, usmeravanje poziva na mobilne i
fiksne telefone i tako dalje. Takođe, MSC obavlja povezivanje sa drugim mrežama.
HLR sadrži bazu podataka sa svim detaljima o svakom pretplatniku i postoji samo jedan HRL
u mreži. Pored detalja, u bazi podataka se skladište najnovije poznate lokacije pretplatnika.
Na primer, kada korisnik uključi telefon, lokacija korisnika se upostavlja i korisnik se
registruje na mrežu. Na ovaj način, sistem zna kako i gde da usmeri pozive. Sistem
periodično ponovo registruje korisnika, tako da je najnovija lokacija korisnika poznata u bilo
kom trenutku.
VRL sadrži informacije o pretplatniku, kao što je HLR, koje ubrzavaju i olakšavaju pristup.
EIR određuje da li navedenim mobilnim telefonima može biti dozvoljen pristup mreži. IMEI
brojevi mobilnih telefona se proveravaju prilikom povezivanja sa mrežom.
GMSC se koristi za pribavljanje broja u roamingu iz HLR-a koji se zasniva na ISDN broju
mobilnog korisnika, tako da poziv može da se usmeri na odgovarajući centar.
1G
1G odnosi se na prvu generaciju mobilnih telefona koju je prvi put predstavila kompanija
„Nippon Telegraph and Telephone“ 1979. godine u Japanu. 1G telefoni su podržavali samo
glasovnu komunikaciju i nije postojala razmena podataka. Nedostatak 1G telefona je bio taj
što nije postojalo šifriranje i svako sa odgovarajućim skenerom frekvencija mogao je da
prati i sluša razgovore. Kao što je prikazano na slici 1.1, 1G mobilni telefoni su bili veliki sa
dugačkim antenama.
Slika 1.1 - Tipični 1G mobilni telefon
2G
3G
3G odnosi se na treću generaciju mobilnih telefona koja je zamenila 2G. Iako su pre 3G
postojale druge tehnologije, kao što su 2.5G (druga i po generacija) i 2.75G (poznata i kao
EDGE), glavna konkurencija 2G generaciji je bila 3G generacija. 3G tehnologija uvela je
brzine prenosa informacija iznad 200 Kbita/s. Spektar komunikacije od 400 MHz do 3 GHz je
dodeljen 3G generaciji. Prvi komercijalni 3G sistem je predstavljen u Japanu 1998. godine.
3G je bio toliko uspešan da je do 2007. bilo više od 200 miliona pretplatnika ove usluge. 3G
obezbeđuje veći propusni opseg, više bezbednosti, interoperabilnost između različitih mreža,
povezivanje zasnovano na paketu i bogate multimedijalne usluge. Zbog većeg propusnog
opsega dostupne su sledeće usluge u 3G mreži: usluge lokacije, pristup internetu, mobilni
TV, video konferencija, telemedicina itd. 3G mobilni telefoni imaju velike, šarene ekrane
osetljive na dodir. Neki nedostaci 3G mreže su: sistem je veoma skup za izgradnju i
održavanje, potrošnja energije je velika i bazne stanice treba da budu blizu radi dobrog
prijema. Tipični 3G mobilni telefon je prikazan na slici 1.3.
Slika 1.3 – Tipični 3G mobilni telefon
4G
5G
Ovo je predstojeća peta generacija mobilnih telefona koja se očekuje 2020. godine. Iako 5G
još uvek nije dostupan, očekuje se da ponudi mnogo veći propusni opseg od postojećih
mreža mobilne telefonije. Predviđa se da 5G može ponuditi brzinu od približno 10 Gbps. To
će ubrzati opšte vreme odziva i pristupe internetu. Današnji mobilni telefoni nisu
kompatiblini sa 5G mrežom jer ova tehnologija još uvek nije implementirana.
Neki projekti koji se mogu uraditi korišćenjem GSM/GPRS modema dati su u nastavku:
Praćenje pacijenta
Detekcija upada
1.5 GPRS
GPRS sistem nudi sledeće usluge korisnicima:
Pristup Internetu
X.25 veze
TCP/IP usluge uz dodelu IP adrese
HTTP usluge
B klasa: Ove klase terminala mogu da upravljaju paketnim podacima ili glasom u bilo kom
trenutku. Troškovi su niski, pošto nisu potrebna dva primopredajnika. Većina GPRS uređaja
su tipovi B klase.
C klasa: Ove klase terminala mogu da upravljaju samo paketnim podacima ili samo
glasom. Oni se koriste u posebnim uređajima, kao što su ugrađeni sistemi.
Da bi korisnik uspostavio GPRS vezu, mora da navede APN (Naziv pristupne tačke),
korisničko ime i lozinku, a u nekim slučajevima i IP adresu koju je dobio od mrežnog
operatera. APN je jednostavno mrežni prolaz između GPRS-a i druge mreže računara, kao
što je Internet, i definiše vrstu usluge, kao što je bežični protokol za aplikacije (WAP), SMS,
MMS i pristup Web adresi. APN se sastoji iz dva dela: identifikatora mreže i identifikatora
operatera. Nakon što je definisan APN, možemo da dobijemo IP adresu i uspostavimo vezu
sa mrežom, na primer, putem TCP/IP protokola. Podaci zatim mogu biti poslati ili primljeni
preko GPRS-a.
1.6 Rezime
U ovom poglavlju razmatrali smo osnovnu arhitekturu GSM mreže. U kratkim crtama
opisane su različite generacije razvoja mobilne telefonije. Osim toga, data je lista zanimljivih
projekata koji se mogu implementirati korišćenjem GSM/GPRS modema. Na kraju su u
kratkim crtama opisane osnovne funkcije GPRS modema.
U sledećem poglavlju ćemo razmatrati dva tipa pločice GSM/GPRS modema koji se mogu
koristiti u projektima za mikrokontroler. Osim toga, biće dati primeri AT komandi radi
prikaza kontrole modema.
Poglavlje 2 – GSM/GPRS pločice
U ovom poglavlju ćemo detaljno razmatrati dva različita tipa GSM/GPRS pločica koje mogu
da se koriste u aplikacijama mikrokontrolera: Jedna pločica se koristi u projektima
zasnovanim na PIC mikrokontrolerima, a druga se koristi u projektima zasnovanim na
Arduinu.
Mi ćemo koristiti GSM Click pločicu u svim projektima zasnovanim na PIC mikrokontroleru u
ovoj knjizi. Važno je pogledati funkcije GSM Click pločice pre nego što je budete koristili u
projektima zasnovanim na mikrokontroleru.
Na slici 2.1 prikazana je prednja strana GSM Click pločice, a na slici 2.2 zadnja strana
pločice.
Ugrađenu antenu
Rad na 3,3 V i 5 V
Za rad GSM/GPRS modema potrebna je SIM kartica. SIM kartica (Modul identiteta
pretplatnika) je mala smart kartica koja se koristi za skladištenje informacija o pretplatniku i
identifikovanje pretplatnika na mobilnoj mreži. Pored toga, SIM kartica može da skladišti i
druge informacije, kao što su detalji o kontaktu, poruke i tako dalje. Korisnik može da
promeni telefon tako što će jednostavno ukloniti SIM karticu iz jednog telefona i staviti je u
drugi telefon. Upotreba SIM kartice u mobilnom telefonu je obavezna, jer sadrži broj
identiteta pretplatnika (IMS, engl. Mobile Subscriber Identity), bezbednosnu autentikaciju i
šifriranje podataka, lozinku (broj pin kartice), podatke iz telefonskog imenika, evidenciju
poslatih i primljenih poruka, evidenciju primljenih i biranih brojeva, i tako dalje.
SIM kartica ima 8 pinova (neke kartice imaju samo 6 pinova) i nalazi se u držaču za SIM
karticu. Pinovi kartice imaju sledeću definiciju (koja je određena standardom ISO 7816):
Pin 1 (VCC): Ovaj pin obezbeđuje napajanje kartice. SIM kartica obično radi na naponima
između 1,8 V i 5 V.
Pin 2 (RST): Ovo je pin za resetovanje (RESET). Nizak nivo na ovom pinu vraća karticu u
poznato stanje.
Pin 3 (CLK): Ovaj pin obezbeđuje karticu sa signalima radnog takta. Radni takt je obično
između 1 i 5 MHz, uz radni ciklus između 40% i 60%.
Pin 7 (I/O): Ovo je ulazni i izlazni pin kartice. Za upisivanje i čitanje podataka na kartici
koristi se poludupleksna asinhrona serijska komunikacija.
Nakon što se aktiviraju kontakti na kartici, RST pin se zadržava na niskom nivou i
primenjuje se VCC napajanje. Nakon održavanja RST signala na niskom logičkom nivou od
najmanje 40.000 taktnih ciklusa, on se povećava na visoki nivo i komunikacija sa karticom
počinje tako što se pokreće U/I linija kada je RST na visokom nivou.
Na slici 2.5 prikazana je električna šema GSM Click pločice. Na sredini strujnog kola nalazi
se GL865 čip modema. mikroBUS konektor je u gornjem levom uglu dijagrama ispod kojeg
se nalazi čip TXB106 naponskog pretvarača. SIM kartica se nalazi na sredini donjeg dela
kola. Priključak za mikrofon i LED-ove za prenos i status možete videti na desnoj strani kola.
Slika 2.5 – Električna šema GSM Click pločice
Signali interfejsa mikroBUS-a GSM Click pločice prikazani su na slici 2.6. Važni signali od
interesa su serijske komunikacione linije TX i RX.
Uputstvo za korišćenje mikroC Pro za PIC ugrađeni terminalski emulator je dato u nastavku:
U upravljaču uređajem (Device Manager) potražite broj serijskog porta. U ovom primeru to
je COM2, kao što je prikazano na slici 2.9.
Data Bits: 8
Parity: None
Stop bits: 1
Iako postoji standardni skup AT komandi koji koriste svi modemi, neki proizvođači imaju
dodatni skup komandi za podršku njihovim proizvodima. U ovom odeljku ćemo razmatrati
neke od AT komandi koje se najčešće koriste za GSM Click pločicu (Telit GL865).
Za dobijanje informacija o mobilnom telefonu ili GSM/GPRS modemu, kao što su broj
modela, podaci o proizvođaču, verzije firmvera i hardvera, IMEI (Međunarodni
identitet mobilne opreme) i tako dalje.
Za dobijanje informacija o pretplatniku, kao što su broj mobilnog telefona, IMSI broj
(Međunarodni identitet pretplatnika), jačina signala, podaci o mobilnoj mreži, status
baterije i tako dalje.
Postoje dve vrste AT komandi: Basic (osnovne) komande u kojima ne postoji „+“, kao što
su ADT (Biranje), ATA (Odgovor) i tako dalje, i Extended (proširene) komande koje sadrže
„+“, kao što su AT+CMGS (Slanje SMS poruke), AT+CMGR (Čitanje SMS poruke) i tako
dalje.
Pravilo 1: Sve komande moraju započeti slovima AT i završiti se znakom za početak novog
reda (<CR>). Na primer:
AT+CGMM <CR>
Pravilo 2: Dozvoljeno je izdati više komandi u jednom redu. U takvim slučajevima, samo
prva komanda mora sadržati prefiks AT i obavezna je upotreba znaka tačka-zarez da bi se
komande odvojile. Komande treba završiti znakom za početak novog reda. Na primer:
AT+CGMM;+GMI <CR>
Pravilo 3: Ako se na kraju komande nalazi niz znakova, onda se on mora zatvoriti
dvostrukim znacima navoda. Na primer:
AT+CPIN=”password” <CR>
Pravilo 4: Dostupne opcije parametra mogu da se prikažu upotrebom znaka pitanja posle
komande. Na primer:
AT+CALM=?
Pravilo 5: Trenutna vrednost parametra može da se prikaže upotrebom znaka pitanja posle
komande. Na primer:
AT+CALM?
Pravilo 6: Vrednost postavke može da se promeni upotrebom znaka jednakosti iza kojeg
sledi nova vrednost. Na primer:
AT+CALM=1
Postavlja režim upozorenja na vrednost 1.
Pravilo 7: Rezultujući kodovi i odgovori na informacije započinju i završavaju se znakom za
povratak na početak reda i znakom za novi red.
0 OK
1 CONNECT
ili
CONNECT <text>
2 RING
3 NO CARRIER
4 ERROR
5 CONNECT 1200
6 NO DIALTONE
7 BUSY
8 NO ANSWER
10 CONNECT 2400
11 CONNECT 4800
12 CONNECT 9600
15 CONNECT 14400
23 CONNECT 1200/75
Tekst ERROR će biti vraćen ako postoji sintaksička greška u komandi, ako je naveden
nevažeći parametar ili ako modem ne podržava navedenu komandu.
Primeri AT komandi za opštu namenu u ovom odeljku dati su slanjem komandi na GSM Click
pločicu.
AT: Ova komanda sama po sebi privlači pažnju modema. Modem odgovara tekstom OK. Na
slici 2.14 primećujete da modem vraća unetu komandu.
ATE: Ova komanda omogućava ili onemogućava komandni eho:
ATS3?: Ova komanda prikazuje znak za završetak komande (u ovom slučaju znak za
povratak na početak reda).
AT\Q: Ova komanda upravlja kontrolom toka serijske komunikacije. Opcije su sledeće:
Na slici 2.20 prikazano je kako se može pokazati trenutna kontrola toka serijske
komunikacije.
AT+IPR=19200<CR>
AT+ICF: Ova komanda se koristi za podešavanje (ili prikaz) formata podataka serijske
komunikacije (broja bitova podataka i pariteta) pri fiksnim vrednostima. Opcije su prikazane
na slici 2.22. Na ovoj slici je, takođe, pokazano kako se može prikazati trenutna postavka.
Primetite da 0,0 označava automatsku detekciju formata podataka i paritet. Opcije su
sledeće:
format,parity
gde format može biti:
0 - autodetection
1 - 8 Data, 2 Stop
3 - 8 Data, 1 Stop
0 - Odd
1 - Even
AT+CPBR: Ova komanda čita i prikazuje stavke iz telefonskog imenika. Na slici 2.23
prikazana je komanda koja je uneta za prikaz broja trenutnih stavki (u ovom primeru to je
20). Prikaz je u sledećem formatu:
(<minIndex> - <maxIndex>),<nlength>,<tlength>
gde je:
Na primer, komanda AT+CPBR=1,4 vraća prve 4 stavke u telefonski imenik, kao što je
prikazano na slici 2.23. Format je sledeći:
index number in the phonebook, phone number, type of phone number, text
Vrste telefonskog broja su sledeće:
Na primer, na slici 2.23 stavka 2 sadrži međunarodni telefonski broj 3799499 i ime za ovaj
broj je Kemal Sureyya.
Slika 2.23 Stavke iz telefonskog imenika
AT+CPBF: Ova komanda se koristi za pronalaženje tekstualnog unosa u telefonskom
imeniku. Na slici 2.24 prikazan je primer u kome je pronađena stavka sa imenom Sacit Usta
i vraćeni detalji.
Slika 2.24 – Pronalaženje stavki u telefonskom imeniku
<index>,<number>,<type>,<text>
gde je:
Napomena: Ako je <index> ili <index>=0 izostavljen, broj <number> se skladišti na prvoj
slobodnoj lokaciji u telefonskom imeniku.
Na slici 2.25 prikazan je primer u kome je stavka 2 izmenjena u lokalni broj 1234567, a
ime u John Adams.
AT+CCLK: Ova komanda se koristi za vraćanje ili podešavanje sata realnog vremena. Na
slici 2.26 prikazano je kako se trenutno vreme može čitati i kako se može podesiti. U ovom
primeru vreme je promenjeno iz 16 sati u 18 sati.
AT+CALM: Ova komanda se koristi za izbor opšteg režima zvuka upozorenja za uređaj.
Opcije su sledeće:
0 – normalan režim (normal mode)
1 - tihi režim (silent mode); uređaj neće generisati zvuk, osim za zvuk alarma
Napomena: ako je izabran tihi režim, onda dolazni pozivi neće proizvoditi upozoravajući
zvuk, već samo neželjene poruke RING ili +CRING
Na slici 2.27 prikazan je zvuk upozorenja za modem koji je podešen na normalan režim.
AT+CRSL: Ova komanda podešava nivo zvuka zvona dolaznog poziva. Opcije su sledeće:
0 – isključeno (off)
1 – nisko (low)
2 – srednje (middle)
3 – visoko (high)
4 – progresivno (progressive)
Na slici 2.28 prikazan je nivo zvuka zvona modema koji je u ovom primeru podešen na
HIGH (visoko).
AT+COPS: Ova komanda podešava ili prikazuje operatera GSM mreže. Parametri su
sledeći:
<mode>,<format><operator>
gde je,
<mode>
1 – ručni odabir je otključan (mreža će se zadržati sve dok bude dostupna, a zatim se može
zameniti nekim drugim odgovarajućim mrežama kako bi se obezbedila usluga)
2 – odjava sa GSM mreže; MODULE neće biti registrovan dok ne bude izdata komanda
+COPS koja sadrži <mode>=0, 1, 4 ili 5
4 – ručno/automatski (biće prisutno polje <oper>); ako ručni odabir ne uspe, ulazi se u
automatski režim (<mode>=0)
5 – ručni odabir je zaključan (mreža je fiksna, a ako izabrana mreža nije dostupna,
onda mobilni telefon nema signal)
<format>
2 – numerička vrednost od 5 ili 6 cifara ([pozivni broj za zemlju (3) + kod mreže (2
ili 3)]
<rssi><ber>
Gde je,
1 - (-111) dBm
0 – manje od 0,2%
1 – od 0,2% do 0,4%
2 – od 0,4% do 0,8%
3 – od 0,8% do 1,6%
4 – od 1,6% do 3,2%
5 – od 3,2% do 6,4%
6 – od 6,4% do 12,8%
7 – više od 12,8%
<mode><on_duration><off_duration>
gde je,
U primeru koji je dat na slici 2.33 LED statusa trepće svake sekunde.
AT#HSRECG: Ova komanda vraća ili podešava dobitak prijemnika. Važeće vrednosti su od
0 do 6 dB/po koraku. Fabrički podrazumevana vrednost je 0.
Na slici 2.34 prikazani su primeri prikaza dobitaka mikrofona i prijemnika.
Slika 2.34 – Dobici mikrofona i prijemnika
GSM Click pločica sadrži priključak za mikrofon i ulaze za zvučnike koji se mogu koristiti
prilikom pozivanja ili odgovaranja na glasovne pozive. Postoji nekoliko AT komandi za
pozivanje i odgovaranje na glasovne pozive. One su opisane u nastavku.
ATD<number>;: Ova komanda poziva dati telefonski broj. Komanda AT+FCLASS odlučuje
koja je to vrsta poziva. Ako se komanda završava znakom tačka-zarez, onda se uspostavlja
glasovni poziv, bez obzira na trenutnu vrednost FCLASS. Komanda AT+FCLASS može imati
sledeće vrednosti (pogledajte sliku 2.35):
0 – podaci (data)
8 – glas (voice)
Parametri:
ATA: Ova komanda se koristi za odgovor na poziv (ako nije omogućen automatski
odgovor).
ATH: Ova komanda se koristi za zatvaranje (tj. prekidanje) trenutnog poziva. Ako druga
strana prekine poziv, onda modem odgovara porukom NO CARRIER (Nema operatera).
SMS (kratka tekstualna poruka) se koristi za slanje i primanje poruka između mobilnih
uređaja. Ova vrsta poruke je prvi put postala dostupna 1992. godine i uvrštena je u GSM
standarde i trenutno je podržavaju svi GSM mobilni telefoni. SMS je kratka poruka i može
da sadrži najviše 160 znakova podataka uz 7-bitno kodiranje (poput engleskih znakova) i
najviše 70 znakova podataka ako se koristi 16-bitno Unicode kodiranje (poput kineskih
znakova). Pored teksta, pomoću SMS usluge mogu, takođe, da se šalju i primaju binarni
podaci. Stoga, SMS poruke mogu da sadrže slike, logotipe, melodije zvona i druge binarne
podatke.
Neke prednosti SMS poruka su:
SMS poruke se mogu poslati na telefon koji nije na mreži. GSM sistem će uskladištiti
poruke i poslati ih na odgovarajući telefon kada on bude na mreži
SMS poruke obrađuje SMS centar (SMSC). Kada se pošalje SMS poruka, ona prvo pristigne
u SMS centar iz kojeg se zatim prosleđuje na odredište ako je telefon na mreži ili skladišti
ako odredišni uređaj nije na mreži i isporučuje se primaocu kada postane dostupan. Da biste
koristili SMS usluge, u uređaj morate uneti broj SMS centra mrežnog operatera.
SMS poruka se privremeno skladišti ako je uređaj primaoca izvan mreže. To vreme (koje se
zove period važenja) može da navede korisnik, pa će poruka nakon tog vremena biti
izbrisana iz SMS centra i neće biti prosleđena na odredište.
SMS poruke mogu da pošalju uređaji koji se nalaze na istoj mreži ili na drugim mrežama.
Kada se koriste različite mreže, za obradu poruka koriste se SMS mrežni prolazi (SMS
Gateways). Poruke se, takođe, mogu slati u inostranstvo.
U tabeli 2.2 prikazane su komande koje se mogu koristiti pomoću GSM Click pločice za
obradu SMS poruka.
AT+CSCA: Ova komanda postavlja ili vraća adresu SMS servisnog centra kao telefonski
broj. Parametri su <number>,<type> gde je,
Slanje
Slanje SMS poruke u tekstualnom režimu je veoma jednostavno i na slici 2.38 dat je primer
u kome je prikazano kako poruka Sending test SMS Message! može biti poslata na broj
mobilnog telefona +447415987053. Pretpostavlja se da je broj SMS servisnog centra već
učitan na SIM karticu i da je lozinka uneta:
AT+CMGF=1
Podesite režim znakova na GSM:
AT+CSCS = “GSM”
AT+CSMP = 17,167,0,241
AT+CMGS=”+447415987053”
Komanda AT+CMGF bira format poruke koji se koristi u SMS poruci. Komanda sadrži
parametar <mode> koji može da preuzme sledeće vrednosti:
<mode>
0 - PDU režim
1 - tekstualni režim
<fo>,<vp>,<pid>,<dcs>
gde je,
<vp> - bira period važenja poruke, a vrednost od 144 do 167 bira period na sledeći način:
Primanje
Komanda AT+CMGL može da se koristi za prikaz svih poruka uskladištenih na SIM kartici.
Kao što je prikazano na slici 2.39, unosom komande AT+CMGL=? prikazuju se svi
parametri te komande.
Možemo da prikažemo sve primljene i pročitane SMS poruke na SIM kartici tako što ćemo
uneti komandu AT+CMGL=”REC READ”. Deo izlaza je prikazan na slici 2.40. Nepročitane
poruke možemo da prikažemo pomoću komande AT+CMGL=”REC UNREAD”. Isto tako,
sve pročitane i nepročitane poruke mogu da se prikažu pomoću komande
AT+CMGL=”ALL”.
AT+CMSS=2,”+447415987053”
Komanda AT+CMGW se koristi za skladištenje telefonskog broja da ne bismo morali svaki
put da ga unosimo. U nastavku je prikazano kako možemo da sačuvamo telefonski broj, a
zatim možemo da koristimo komandu AT+CMSS da bismo poslali SMS. U ovom primeru,
telefonski broj i poruka My Message! su uskladišteni na indeksnom broju 6. Komanda
AT+CMSS se zatim koristi za slanje poruke na navedeni mobilni telefon.
AT+CMGW=”+447415987053”
>My message!
+CMGW: 6
OK
AT+CMSS=6
+CMSS: 9
OK
SMS poruke mogu da sadrže najviše 160 7-bitnih znakova ili 140 8-bitnih znakova. 16-bitne
poruke mogu da sadrže najviše 70 znakova i koriste Unicode.
PDU režim se koristi za slanje i primanje binarnih podataka i u ovom režimu je teže poslati
podatke, jer osim podataka sadrži i informacije o pošiljaocu, broj SMS servisnog centra,
vremensku oznaku itd. Znakovi u PDU režimu su u heksadecimalnom formatu pod nazivom
okteti i u decimalnom formatu pod nazivom poluokteti.
U nastavku je dat primer koji prikazuje uputstvo za slanje poruke u PDU režimu:
AT+CMGF=0
Odredite broj znakova za slanje (isključujući dve početne nule), a zatim i podatke koji se
šalju. Na primer, poruka „hello“ se šalje na sledeći način:
AT+CMGS=19
>0011000B913201183451F60000AA05E8329BFD06[Cntrl-Z]
Ova poruka sadrži 38 znakova (19 okteta) isključujući početne 00. Nakon što odredite broj
znakova, treba da unesete podatke o poruci kada se prikaže znak >. Podatke o poruci treba
da odredite pomoću znaka Cntrl-Z.
Format PDU poruke je sledeći:
Slika
Polja imaju sledeće definicije:
11 PDU tip. To znači da je ovo polje Submit Message. Ovo polje ne morate da
menjate ako šaljete poruku
00 MR. Ovo je referentni broj poruke koji se povećava od 0 do 255. Ovo polje
treba da bude podešeno na 00 i njime upravlja mobilni telefon.
05 UDL. Dužina korisničke poruke. U ovom primeru poruka je „hello“, koja sadrži
5 znakova.
E8329BFD06 UD. Korisnička poruka. U ovom primeru poruka je „hello“. Ova poruka je
kodirana kao što je opisano u nastavku.
Proces kodiranja PDU poruke je opisan u nastavku (više detalja možete pronaći u
dokumentu GSM 0.3.38 Instituta European Telecommunications Standards):
b7 b6 b5 b4 b3 b2 b1
a b c d e f g
7 6 5 4 3 2 1 0
0 1a 1b 1c 1d 1e 1f 1g
Ako postoje dva znaka, onda se kreiraju dva okteta sa dve vodeće nule na sledeći način:
7 6 5 4 3 2 1 0
2g 1a 1b 1c 1d 1e 1f 1g
0 0 2a 2b 2c 2d 2e 2f
Ako postoje tri znaka, onda se kreiraju tri okteta sa tri vodeće nule na sledeći način:
7 6 5 4 3 2 1 0
2g 1a 1b 1c 1d 1e 1f 1g
3f 3g 2a 2b 2c 2d 2e 2f
0 0 0 3a 3b 3c 3d 3e
Ako postoje četiri znaka, onda se kreiraju četiri okteta sa četiri vodeće nule na sledeći
način:
7 6 5 4 3 2 1 0
2g 1a 1b 1c 1d 1e 1f 1g
3f 3g 2a 2b 2c 2d 2e 2f
4e 4f 4g 3a 3b 3c 3d 3e
0 0 0 0 4a 4b 4c 4d
Isto tako, ako postoji pet znakova kao u našoj poruci, onda se kreiraju pet okteta sa pet
vodećih nula na sledeći način:
7 6 5 4 3 2 1 0
2g 1a 1b 1c 1d 1e 1f 1g
3f 3g 2a 2b 2c 2d 2e 2f
4e 4f 4g 3a 3b 3c 3d 3e
5d 5e 5f 5g 4a 4b 4c 4d
0 0 0 0 0 5a 5b 5c
I tako dalje, bitovi novih znakova se pomeraju. Za našu poruku „hello“ kodiranje je
sledeće:
h 110 1000 68
e 110 0101 65
l 110 1100 6C
l 110 1100 6C
o 110 1111 6F
11101000 E8
00110010 32
10011011 9B
11111101 FD
00000110 06
Taster za napajanje
Utičnica za antenu
Držač baterije
Usluga slanja kratkih poruka – za slanje male količine podataka preko mreže (ASCII
ili sirovi heksadecimalni podaci)
Podrška za RTC
2PWM-a i ADC
Broj serijskog porta pronađite u upravljaču uređajem (Device Manager), kao što je
prikazano na slici 2.9.
Pokrenite HyperTerm program i unesite naziv veze (npr. GSM), kao što je prikazano
na slici 2.10.
Izaberite broj serijskog porta (COM2 u ovom primeru) i kliknite OK kao na slici 2.11.
Data Bits: 8
Parity: None
Stop bits: 1
Omogućite lokalni eho da biste videli komandu koju kucate: Kliknite File ->
Properties -> Settings -> ASCII setup, a zatim kliknite Echo typed characters
locally. Kliknite OK i izađite iz menija.
Povežite GND pin USB-TTL adaptera sa GND pinom modula. Takođe, povežite TX pin
USB-TTL adaptera sa pinom D7 (RX) modula i povežite RX pin USB-TTL adaptera sa
pinom D8 (TX) modula.
Na slici 2.47 prikazan je blok dijagram veze između računara i modula. Stvarna veza
je prikazana na slici 2.48.
Na slici 2.49 i 2.50 prikazani su odgovori na neke AT komande koje podržava modul SIM900
GSM/GPRS u kojima:
http://m2msupport.net/m2msupport/module-tester/
Nakon što ste instalirali program, kliknite ikonu AT Command Tester da biste ga pokrenuli.
U nastavku su dati koraci za konfigurisanje i upotrebu AC Command Tester-a:
Kliknite Find Ports da biste videli dostupne serijske portove i izaberite port sa kojim je
povezan GSM/GPRS modem preko USB-TTL adaptera. U ovom primeru se koristi COM2.
Izaberite brzinu prenosa (u ovom primeru je 9600) i kliknite Connect. Na slici 2.51
prikazan je modem koji je povezan sa COM2 računara.
Nakon uspešnog uspostavljanja veze, modemu će automatski biti poslat niz AT komandi radi
prikaza broja modela i šifre proizvođača, kao što je prikazano na slici 2.51.
U sledećem poglavlju biće reči o tome kako da razvijete projekte korišćenjem ovih pločica u
sistemima zasnovanim na mikrokontroleru.
2.7 Vežbe
1. Opišite kako se GSM Click modem može povezati sa računarom i kako se AT
komande mogu poslati na modem.
3. Potrebno je poslati SMS tekstualnu poruku „Testing the SMS“ na mobilni telefon koji
ima lokalni broj „07678321345”. Prikažite u koracima kako to možete uraditi pomoću
AT komandi.
8. Potrebno je poslati kodiranu poruku iz vežbe (7) iznad na mobilni telefon. Opišite
kako se to može uraditi i navedite sve potrebne AT komande.
Poglavlje 3 – Programerske alatke mikrokontrolera
Razvoj sistema zasnovan na mikrokontroleru je složen proces. U programerske alatke
spadaju hardverske i softverske alatke koje pomažu programerima da programiraju i
testiraju sisteme u veoma kratkom vremenu.
Ako je programer zadovoljan radom programa u fazi simulacije, sledeća faza razvojnog
ciklusa je otpremanje izvršivog koda u programsku memoriju ciljnog mikrokontrolera koje
se obično obavlja pomoću uređaja za programiranje mikrokontrolera. Završni sistem se
zatim testira pomoću mikrokontrolera i njegovih pridruženih uređaja interfejsa koji su
povezani sa ulazima i izlazima mikrokontrolera. Tokom ovog ciklusa različite softverske i
hardverske alatke, kao što su debageri ili emulatori ugrađeni na kolu, mogu da se koriste za
analiziranje rada programa u stvarnom vremenu i na stvarnom hardveru. Promenljive
programa i sadržaj registra mikrokontrolera se mogu ispitati i modifikovati, a program se
može izvršiti u režimu „korak po korak“. Tačke prekida se mogu podesiti u programu da bi
se zaustavilo izvršenje i ispitalo stanje sistema u stvarnom vremenu.
Uređivači teksta
Asembleri i kompajleri
Simulatori
3.1.1 Uređivači teksta
Korisnički programi (koji se nazivaju i izvorni kod) kreiraju se pomoću uređivača teksta.
Uređivač teksta je računarski program koji radi na računaru i omogućava programeru da
kreira ili modifikuje programe i tekstualne datoteke. Notepad je jednostavan aplikacijski
program za uređenje teksta koji se isporučuje sa operativnim sistemom Windows i može da
se koristi za kreiranje novih programa, za modifikovanje postojećih programa ili za prikaz ili
ispis programa. Važno je da znate da programe koji se koriste za obradu teksta, kao što je
Word u Windows-u, nije moguće koristiti kao uređivače teksta. To je zato što programi za
obradu teksta nisu stvarni uređivači teksta, jer sadrže specijalne znakove za formatiranje
koji se koriste za promenu izgleda znakova pomoću ugrađenih alatki, kao što su podvučeno,
podebljano, kurziv, eksponent, indeks itd.
Većina asemblera i kompajlera imaju veoma moćne ugrađene uređivače teksta sa posebnim
dinamičkim programerskim alatkama koje pomažu programerima da napišu čitljive
programe bez sintaksičkih grešaka. Pomoću ovih uređivača možemo da napišemo program i
zatim da obavimo asembliranje ili kompajliranje tog programa, a da pritom ne moramo da
izađemo iz uređivača. Takođe, većina takvih uređivača sadrži dodatne funkcije, kao što su
automatsko isticanje ključnih reči, provera sintakse, uparivanje zagrada, identifikacija linije
komentara i tako dalje. Pored toga, različiti delovi programa se mogu prikazati u različitim
bojama da bi program postao čitljiviji i održiviji. Na primer, komentari se mogu prikazati
jednom bojom, ključne reči drugom bojom, rezervisane reči programa trećom bojom i tako
dalje. Ove funkcije mogu da ubrzaju proces razvoja programa, jer sve sintaksičke greške
mogu da se eleminišu u fazi razvoja programa.
Asembleri i kompajleri su veoma važne softverske alatke koje se koriste tokom razvoja
sistema zasnovanom na mikrokontroleru. Asembleri generišu izvršivi izvorni kod iz
programa u asemblerskom jeziku. Generisani kod se učitava u programsku memoriju ciljnog
mikrokontrolera da bi se ceo sistem mogao testirati.
Slično tome, kompajleri generišu izvršivi kod iz programa u jeziku visokog nivoa. Neki
kompajleri za mikrokontrolere koji se najčešće koriste su BASIC, C i PASCAL.
Asemblerski jezik trenutno nije mnogo popularan i koristi se samo u vremenski kritičnim
aplikacijama u kojima mikrokontroler treba da odgovori na spoljne događaje što je brže
moguće i u stvarnom vremenu. Glavni nedostatak asemblerskog jezika je taj što je pomoću
njega teško razviti složene programe. S druge strane, jezici visokog nivoa su mnogo lakši za
učenje i upotrebu. U današnje vreme, većina velikih i složenih programa su razvijeni
korišćenjem jezika visokog nivoa. U poređenju sa asemblerskim jezikom, glavna prednost
korišćenja jezika visokog nivoa je da programi visokog nivoa mogu da budu razvijeni mnogo
brže, a razvijeni program lako može da se testira i održava. Na primer, razvoj rutine
množenja brojeva s pokretnim zarezom u asemblerskom jeziku je komplikovan i oduzima
veoma mnogo vremena, jer zahteva mnogo redova asemblerskog koda. S druge strane,
upotreba jezika visokog nivoa, kao što je rutina množenja, može da se implementira
pomoću jedne naredbe.
U svim projektima iz ove knjige koristiće se jezik C. Projekti za PIC mikrokontroler će biti
razvijeni korišćenjem veoma popularnog mikroC Pro for PIC jezika. Ovaj jezik sadrži veoma
veliku biblioteku funkcija koja pomaže programerima da napišu složene programe. Arduino
programi u knjizi će biti razvijeni pomoću klasičnih i popularnih Arduino skriptova.
3.1.3 Simulatori
Simulatori u jeziku visokog nivoa, poznati i kao izvorni debageri, su jednostavni računarski
programi koji rade na računaru. Izvorni debager omogućava da pronađemo logičke greške u
našim programima visokog nivoa. Možemo da podesimo tačke prekida u naredbama visokog
nivoa, izvršimo program do tih tačaka prekida, a zatim da na tim tačkama prekida
prikažemo vrednost različitih promenljivih programa, sadržaj registara, U/I portove i
lokacije memorije. Takođe, na ovim tačkama prekida možemo da promenimo vrednost
promenljivih i registara. Većina kompajlera u jeziku visokog nivoa, takođe, sadrži ugrađene
izvorne debagere.
Takođe, izvorni debager može da aktivira debagiranje koje se zasniva na hardveru koristeći
namenski uređaj za debagiranje hardvera. Na primer, korisnički program na ciljnom
mikrokontroleru se može zaustaviti i mogu se lako pregledati i ispitati vrednosti različitih
promenljivih i registara.
Razvojne ploče
Uređaji za programiranje
Ugrađeni debager
Ugrađeni emulator
Prototipske ploče
U ovom odeljku ćemo pogledati specifikacije nekih popularnih komercijalnih razvojnih ploča
PIC mikrokontrolera i Arduina. Zainteresovani čitaoci mogu da potraže više informacija o
razvojnim pločama na veb sajtovima proizvođača.
36 dugmadi
36 LED-ova
USB priključak
I2C EEPROM
Piezo zujalica
Uređaj za programiranje
Analogni ulazi
Dugme za resetovanje
Dobra stvar kod razvojne ploča EsayPIC V7 je da podržava mikroBUS interfejs, pa zato
veliki broj (trenutno preko 200) periferijskih pločica, kao što su senzori, aktuatori i displeji
(koji se zovu Click pločice), može da se poveže na razvojnu ploču putem mikroBUS
konektora koji se nalaze na ploči. Na primer, slika 3.2 prikazuje primer Click pločicu
akcelerometra.
Rad do 48 MHz
Unutrašnji oscilator
miniUSB priključak
Prekidač za resetovanje
Prekidač za uključivanje/isključivanje
2 x mikroBUS konektora
2 x prekidača tastera
2 x LED-ova
3,3 V napajanja
12 10-bitnih ADC-a
3 x PWM porta
U ovom odeljku ćemo kratko pogledati detalje o razvojnoj ploči Arduino Uno koju koriste
mnogi studenti, istraživači i hobisti.
6 analognih ulaza
2 KB SRAM memorije
1 KB EEPROM memorije
USB veza
Priključak za napajanje
ICSP zaglavlje
Dugme za resetovanje
Nakon pisanja i pretvaranja programa u izvršivi kod, rezultujuća HEX datoteka treba da se
učita u programsku memoriju ciljnog mikrokontrolera. Uređaji za programiranje se koriste
za učitavanje programske memorije stvarnog čipa mikrokontrolera. Vrsta uređaja za
programiranje koji će se koristiti zavisi od tipa mikrokontrolera koji se programira. Na
primer, jedni uređaji za programiranje mogu samo da programiraju PIC16 seriju, drugi
mogu da programiraju serije PIC16 i PIC18, a treći se koriste za programiranje različitih
modela mikrokontrolera (npr. serije Intel 8051).
Umesto toga se tokom faze razvoja kola komponente obično sklapaju na ploči bez lemljenja.
Obična prototipska ploča (pogledajte sliku 3.5) sastoji se od redova i kolona rupica koje su
raspoređene tako da se integrisana kola i druge komponente mogu postaviti unutar njih.
Rupice imaju opruge tako da su vodovi komponenata čvrsto pričvršćeni. Postoje različiti
tipovi i veličine prototipskih ploča koje su pogodne za kola različite složenosti. Prototipske
ploče mogu da se spoje da bi se napravile veće ploče za složenija kola. Na slici 3.6 prikazan
je unutrašnji sloj povezivanja prototipske ploče koja je data na slici 3.5.
Kliknite Project -> New Project i izaberite stavku Standard Project, kliknite Next,
kao što je prikazano na slici 3.9.
Izaberite opciju Include All Files kao na slici 3.11 i kliknite Finish.
Slika 3.11 – Izaberite opciju Include All Files
Sada treba da se pojavi prazan ekran. Unesite program koji je dat na slici 3.8.
Sada smo spremni da kompajliramo naš program. Ali pre toga, potrebno je da
konfigurišemo radni takt, pošto PIC18F87J50 mikrokontroler ima nekoliko opcija radnog
takta. Na slici 3.12 prikazan je deo konfiguracije radnog takta. U ovom primeru imamo ulaz
radnog takta od 8 MHz na ulazima OSC1 i OSC2. Izabraćemo deljenje radnog takta pomoću
2 PLL preskalera tako da izlaz preskalera bude 4 MHz i radni takt sistema 48 MHz. Takođe
ćemo se pobrinuti da nema postskalera radnog takta i da je omogućen PLL.
Sada bi trebalo da vidite LED na portu RD4 (na donjoj levoj strani ploče) koji treperi svake
sekunde.
Simuliranje programa
U ovom odeljku videćemo kako se program može simulirati bez hardvera. Koraci su dati u
nastavku:
Kliknite Run -> Start Debugger. Trebalo bi da vidite plavu traku na ekranu i neke
dodatne prikaze na desnoj strani ekrana. Plava traka označava gde se trenutno
nalazi brojač programa, a trebalo bi da se nalazi na prvoj izvršivoj naredbi programa.
Sada ćemo dodati promenljive koje hoćemo da pratimo. Otvorite okvir sa listom pod
nazivom „Select variable from list“ i izaberite PORTD.
Kliknite dugme Add da biste dodali ovu promenljivu listi za praćenje, kao što je
prikazano na slici 3.18.
Asemblerski listing
Možemo da vidimo asemblerski listing našeg programa tako što ćemo kliknuti view ->
listing. Na slici 3.21 prikazan je deo asemblerskog listinga programa.
Slika 3.21 – Deo asemblerskog listinga
Statistika
Statistiku potrošnje memorije možemo da vidimo tako što ćemo kliknuti na view ->
statistics. Na slici 3.22 prikazana je potrošnja RAM memorije našeg programa.
Druge funkcije
Integrisano razvojno okruženje mikroC Pro for PIC obezbeđuje neke druge korisne funkcije,
kao što su ASCII tabela, USART terminal, 7-segmentni uređivač, pomoćni program za
obradu prekida i tako dalje.
3.5 Rezime
U ovom poglavlju su opisani detalji o hardveru razvojnih ploča Clicker 2 za PIC18FJ i
Arduino Uno. Pored toga, za svaku razvojnu ploču dati su primeri programa da bi se
prikazalo kako program može biti napisan i otpremljen u fleš memorije ovih mikrokontrolera
putem programa Bootloader.
U sledećem poglavlju ćemo razmatrati razvoj GSM projekata na razvojnoj ploči Clicker 2 za
PIC18FJ.
3.6 Vežbe
1. Opišite različite faze razvojnog ciklusa sistema zasnovanom na mikrokontroleru.
4. Objasnite zašto simulator može da bude korisna alatka tokom razvoja proizvoda
zasnovanim na mikrokontroleru.
4.1.1 Hardver
Na slici 4.1 prikazan je blok dijagram projekta. U/I kratkospojnik nivoa GSM Click pločice
mora da bude priključen na 3,3 V (Važno je znati da kada je kratkospojnik u tom položaju,
pločica može da radi iz jednog napajanja od +3,3 V, tj. nije potrebno napajanje od 5 V).
SIM kartica se postavlja u GSM Click pločicu. Pobrinite se da SIM kartica ne bude zaštićena
lozinkom, u suprotnom uklonite lozinku pre umetanja kartice u GSM Click pločicu. GSM Click
pločica se zatim priključuje na mikroBUS konektor 2 razvojne ploče Clicker 2 za PIC18FJ.
Električna šema projekta je prikazana na slici 4.2. TX i RX pinovi GSM Click pločice se
povezuju sa UART pinovima (RC6 i RC7) razvojne ploče mikrokontrolera. Tokom rada GSM
Click pločica može da obezbedi vršnu struju preko 2 A. Maksimalnu struju koju USB
priključak za napajanje može da obezbedi kada je povezan sa računarom je oko 500 mA.
Zbog toga je neophodno da na pločicu priključite spoljno napajanje. Postoje dve opcije:
punjiva litijum-jonska baterija može da se poveže sa GSM Click pločicom, kao što je opisano
u korisničkom priručniku, ili druga i poželjna opcija, spoljno napajanje od +5 V koje može
da isporuči 2,5 A struje i da se poveže sa Vsys pinom (pin sa gornje desne strane) GSM
Click pločice. U projektu je korišćena druga opcija.
RA1 RG0
RD0 RB2
RC4 RD6
RC5 RD5
3,3V 5V
GND GND
PWR GP2
RST CTS
RTS TX
NC RX
NC NC
NC NC
3,3V 5V
GND GND
4.1.2 Softver
Softver projekta je razvijen pomoću mikroPro for PIC jezika i IDE-a. Na slici 4.3 prikazan je
rad softvera kao Jezika za opisivanje programa (PDL, engl. Program Description Language).
Slika
Unutar glavnog programa GSM Click modem se inicijalizuje pozivanjem funkcije Init_GSM
u kojoj je brzina prenosa preko UART-a podešena na 9600. Ostatak programa šalje
potrebne AT komande na modem radi podešavanja, a zatim se šalje SMS poruka. Funkcija
Sent_To_Modem prima znakovni niz kao komandu modema i zatim šalje tu komandu na
modem. Znak za povratak na početak reda (0x0D) se šalje posle AT komande:
Slika
Komande se šalju po redosledu datom u nastavku. Primetite da je broj mobilnog telefona u
ovom primeru 07415987053:
Trebalo bi da vidite svetlo statusa kako brzo treperi na ploči modema i SMS poruku koja će
biti poslata iz mikrokontrolera na mobilni telefon.
Slika 4.4 – Listing programa projekta
Na slici 4.5 prikazan je hardver projekta sa GSM Click pločicom koja je priključena na
mikroBUS konektor 2 razvojne ploče Clicker 2 za PIC18FJ.
U programu koji je dat na slici 4.4 odgovor modema se ne proverava i program čeka
nekoliko sekundi nakon slanja komande, pa je modem spreman da prihvati novu komandu.
Iako program funkcioniše, ne postoji način na koji možemo proveriti da li modem pravilno
odgovara na naše komande.
U ovom odeljku ćemo modifikovati program tako se odgovor modema proverava nakon
slanja svake komande na modem. Ova verzija programa je profesionalnija, jer se odgovor
svake komande proverava. Pored toga, brzina prenosa se automatski detektuje tako što se
šalju AT komande i traži tačan odgovor na početku programa.
Na slici 4.6 prikazan je PDL programa. Program se zasniva na UART prekidima tako da
program svaki put kada primi znak preko UART-a (tj. nakon prijema znakova u odgovoru
modema) prelazi na rutinu za obradu prekida. Pod pretpostavkom da je očekivani odgovor
modema OK, iza kojeg sledi znak za povratak na početak reda (0x0D) i znak za novi red
(0x0A), rad mašine stanja je sledeći. Na početku će stanja početi od 0. Kada primi znak O,
stanje se pomera na 1 i očekuje se znak K kao sledeći znak. Ako je u stanju 1 primljen znak
K, onda se sledeće stanje podešava na 2. U stanju 2 se očekuje znak za povratak na
početak reda (0x0D). Ako je očekivani znak primljen, onda se sledeće stanje podešava na 3.
U stanju 3 se očekuje znak za novi red i ako je primljen, onda se pretpostavlja da je tačan
odgovor OK primljen sa modema i da je zastavica primljenog odgovora response_rcvd
podešena u skladu s tim.
Slika 4.6 – PDL modifikovanog programa
Na slici 4.7 prikazan je listing modifikovanog programa (pod nazivom Send-SMS2.c). Na
početku programa definisani su odgovori modema, AT komande koje će se koristiti i pinovi
modema. Unutar glavnog programa brzina prenosa je podešena na 9600 pozivanjem
funkcije Init_GSM i prekidi za UART1 omogućeni su pozivanjem funkcije
Init_UART1_Interrupts.
Program zatim šalje AT komande na modem više puta i proverava da li je odgovor OK. Ova
mala rutina automatski podešava brzinu prenosa modema na istu brzinu prenosa koju
koristi razvojna ploča i izlazi nakon što je primljen tačan odgovor:
while(1)
{
Send_To_Modem(AT);
Delay_Ms(200);
if(Modem_Response() == OK)break;
}
Ostatak programa šalje potrebne komande na modem i proverava odgovor koji je vratio
modem. Kod mašine stanja proverava odgovore modema unutar rutine za obradu prekida.
Slika 4.7 – Listing modifikovanog programa
4.2.1 Hardver
Na slici 4.8 prikazan je blok dijagram projekta. U/I kratkospojnik nivoa GSM Click pločice
mora biti priključen na 3,3 V kao u prethodnom projektu, a SIM kartica mora biti umetnuta
u GSM Click pločicu. Uverite se da SIM kartica nije zaštićena lozinkom, u suprotnom uklonite
lozinku pre umetanja kartice u GSM click pločicu. GSM Click pločica se zatim priključuje na
mikroBUS konektor 2 razvojne ploče Clicker 2 za PIC18FJ kao i pre.
Slika 4.8 – Blok dijagram projekta
Poluprovodnički analogni senzor koristi se kao senzor temperature. Mikrokontroler pretvara
izlazni napon senzora iz analognog u digitalni. Temperatura se zatim šalje na mobilni telefon
kao SMS poruka preko GSM Click pločice modema.
U ovom projektu se koristi 3-pinski TMP36 tip čipa analognog senzora temperature
(pogledajte sliku 4.9). Ovaj čip senzora ima sledeće funkcije:
Preciznost ±2 ºC
T = (Vo – 500) / 10
Na slici 4.10 prikazana je električna šema projekta uz izlaz TMP36 senzora koji je povezan
sa pinom RA0 mikrokontrolera. Kao i pre, razvojna ploča i pin Vsys se napajaju iz spoljnog
napajanja od +5 V (na 2,5 A).
4.2.3 Softver
Listing programa (pod nazivom SMS-TEMP.c) je prikazan na slici 4.12. Program je veoma
sličan onom sa slike 4.7, osim što se ovde ambijentalna temperatura šalje kao SMS
tekstualna poruka. Temperaturu čita funkcija Read_Temperature:
Slika koda
Analogni izlazni napon senzora TMP36 čita kanal 0 ADC konvertora koristeći funkciju
biblioteke ADC_Read i skladišti se u celobrojnu promenljivu Vin. Zatim se pretvara u
napon u milivoltima i skladišti se u promenljivoj s pokretnim zarezom mV. Stvarna fizička
temperatura u stepenima Celzijusa se zatim izračunava kao što je opisano u listi sa
podacima o senzoru TMP36, tj. oduzimanjem 500 mV i deljenjem rezultata sa 10.
Temperatura se zatim skladišti kao celobrojna vrednost u promenljivu Vin radi
jednostavnosti (temperaturu je moguće poslati i kao promenljivu u formatu pokretnog
zareza).
4.31 Hardver
Na slici 4.13 prikazan je blok dijagram projekta. U/I kratkospojnik nivoa GSM Click pločice
mora biti priključen na 3,3 V kao u prethodnom projektu, a SIM kartica mora biti umetnuta
u GSM Click pločicu. Uverite se da SIM kartica nije zaštićena lozinkom, u suprotnom uklonite
lozinku pre umetanja kartice u GSM Click pločicu. GSM Click pločica se zatim priključuje na
mikroBUS konektor 2 razvojne ploče Clicker za PIC18FJ, kao u prethodnim projektima.
Takođe, pločica Relay Click se priključuje na mikroBUS konektor 1 ploče Clicker 2 za
PIC18FJ.
Slika 4.13 – Blok dijagram projekta
2 nezavisna releja
RA0 RG3
RD2 RB3
RD3 RG2
RC3 RG1
RC4 RD6
RC5 RD5
3,3V 5V
GND GND
Na slici 4.15 prikazana je električna šema Relay Click pločice. Dva releja su nazvana REL1 i
REL2. Kada su REL1 i REL2 umetnuti u mikroBUS konektor 1, oni se kontrolišu iz pinova
RG3 i RD2, tim redom. U ovom projektu se koristi samo REL1, radi jednostavnosti.
5 Trenutni odgovor
U trenutnom odgovoru, kada je SMS primljen, detalji o SMS-u se odmah šalju na matični
računar putem CMT komande. Režim trenutnog odgovora se podešava pomoću dve
komande:
Primera radi, kada je SMS primljen u ovom režimu, poruka slična ovoj šalje se na matični
računar:
6 Obaveštenje
Kod odgovora u vidu obaveštenja modem šalje obaveštenje kada stigne SMS. Matični
računar treba zatim da pošalje AT komandu da bi izdvojio detalje o poruci. Metoda
obaveštenja se podešava na sledeći način:
Primera radi, kada je SMS primljen u ovom režimu, poruka slična ovoj šalje se na matični
računar. Ovde se poruka nalazi na indeksu 3 u lokaciji memorije:
+CMTI:
“SM”,3
AT+CMGR=3
+CMG:”REC READ”,”123456789”,,”03/10/25,20:12:00+40”
Nakon slanja poruke, treba da bude poslata sledeća AT komanda da bi se izbrisala lokacija
memorije:
AT+CMGD=3
7 Provereni odgovor
U ovom režimu AT komanda se šalje na modem da bi se prikazale nove (UNREAD) poruke.
Stoga, modem ne daje nikakvo upozorenje da je SMS poruka primljena. Potrebne su
sledeće komande:
Nakon što je poruka primljena, preporučuje se da izbrišete sve poruke iz memorije kako bi
ste oslobodili mesto za sledeću novu poruku:
AT+CMGD=1,4
Na slici 4.17 prikazane su pločice Relay Click i GSM Click koje su priključene na mikroBUS
konektor 1 i konektor 2 razvojne ploče Clicker 2 za PIC18F, tim redom.
4.3.2 Softver
Unutar glavnog programa port RG3 (bit 3 za PORTG) releja REL1 se konfiguriše kao izlaz i
relej se deaktivira da bi se pokrenuo tako što će izbrisati PORTG.RG3 = 0. Zatim se
inicijalizuje GSM tako što se brzina prenosa podešava na 9600 i omogućavaju se UART1
prekidi tako da kada je znak primljen sa modema, program prelazi na rutinu za obradu
prekida pod nazivom interrupt.
Program zatim podešava brzinu prenosa modema tako što šalje AT komande i proverava da
li je tačan odgovor OK. Eho modema se zatim onemogućava i SMS režim se podešava na
text. Sve postojeće poruke se zatim brišu iz SIM kartice i program ulazi u beskonačnu
petlju pomoću naredbe while.
Slika koda
Nakon obrade primljene komande, sve poruke se brišu iz memorije SIM kartice, a zatim
program čeka 10 sekundi i petlja se ponavlja tražeći novu komandu.
Unutar rutine za obradu prekida program proverava da li su odgovori modema OK, #ON ili
#OFF. U odgovoru na komandu AT+CMGL=”REC UNREAD” modem vraća OK ako nema
novih (UNREAD) poruka, ili ako nova poruka nije dostupna onda modem daje indeksni broj
ove poruke, telefonski broj pošiljaoca, datum, vreme i stvarnu poruku, kao što smo ranije
opisali. Unutar rutine za obradu prekida svaki znak koji daje modem se proverava redom
jedan po jedan i kada se detektuje #ON ili #OFF, onda se promenljiva SMS_Available
podešava na 1 da bi se glavnom programu ukazalo da je pristigla nova poruka.
Slika 4.18 – Listing programa projekta
4.3.3 Poboljšani program
Program koji je prikazan na slici 4.18 može da se poboljša tako da se povratna poruka
pošalje nazad na mobilni telefon da bi se potvrdilo da li je relej aktiviran ili deaktiviran. U
ovoj modifikovanoj verziji programa poruka Relay is ACTIVE će biti poslata na mobilni
telefon kada je relej uspešno aktiviran, a poruka Relay is NOT ACTIVE kada je relej
uspešno deaktiviran.
Slika koda
Na slici 4.20 prikazan je snimak ekrana mobilnog telefona.
Slika 4.19 – Modifikovani program
Slika 4.20 – Snimak ekrana mobilnog telefona
Ovaj projekat može da se dodatno poboljša sledećim dodacima i modifikacijama:
Više releja može da se doda sistemu radi kontrole dodatnih uređaja. Na primer,
komanda za aktiviranje releja n može da bude #Onn i tako dalje.
Potvrda o aktiviranju ili deaktiviranju releja može biti poslata samo na ovlašćeni broj
koji postavi zahtev. To će zahtevati od programa da izdvoji telefonski broj iz
primljene poruke i da pošalje potvrdu na taj broj, pod pretpostavkom da je broj
ovlašćen da postavi zahtev.
Glasovni pozivi mogu biti dodati u program, a releji mogu biti kontrolisani obradom
ovih glasovnih komandi.
U ovom programu se koristi Relay Click pločica. Takođe, možete da koristite bilo koji tip
malog releja sa NPN tranzistorskim prekidačem, kao što je prikazano na slici 4.21.
4.4 Rezime
U ovom poglavlju videli smo razvoj projekata zasnovanim na PIC mikrokontroleru
korišćenjem GSM Click pločice. Opisana su dva projekta u ovom poglavlju: Slanje SMS-a na
mobilni telefon i slanje temperature kao SMS poruke.
U sledećem poglavlju ćemo razmatrati GSM projekte na razvojnoj ploči Arduino Uno.
Poglavlje 5 – GSM projekti za Arduino Uno SIM900
GSM/GPRS modul
U ovom poglavlju ćemo razmatrati nekoliko projekata da bismo videli kako GSM/GPRS
moduli mogu da se koriste u projektima zasnovanim na Arduinu. U projektima iz ovog
poglavlja koriste se razvojna ploča Arduino Uno i GSM/GPRS modul.
5.1.1 Hardver
Na slici 5.1 prikazan je blok dijagram projekta. SIM900 GSM/GPRS modul je priključen na
gornji deo ploče Arduino Uno. Uverite se da je SIM kartica koja nema lozinku umetnuta u
držač SIM kartice koji se nalazi na zadnjoj strani SIM900 GSM/GPRS modula. Takođe,
antena mora da bude povezana sa modulom. Modul radi pomoću napajanja od +5 V, ali
može da obezbedi vršnu struju od preko 2,0 A. Zato je neophodno da priključite spoljno
napajanje od 5 V 2,5 A u priključak za napajanje SIM900 GSM/GPRS modula.
Neki SIM900 GSM/GPRS moduli su dizajnirani za rad samo u određenim zemljama. Način na
koji možete da proverite da li je modul kompatibilan sa vašom zemljom je da napajanje
priključite na modul i pritisnete dugme ON/OFF 2 sekunde. Sačekajte oko 30 sekundi.
Zelena lampica za napajanje i crvena statusna lampica treba da svetle, a plava lampica
treba da treperi 64 ms i da se isključuje svake 3 sekunde. To znači da je modem registrovan
na lokalnu GSM mrežu. U suprotnom, možda ćete morati da nadogradite firmver u čipu
modema (instrukcije za nadogradnju su izvan opsega ove knjige i dostupne su na
Internetu).
5.1.2 Softver
Softver projekta je razvijen pomoću programa Arduino Sketch. Na slici 5.3 prikazan je rad
softvera kao jezika za opisivanje programa (PDL).
Slika 5.3 – PDL programa
Na slici 5.4 prikazan je ceo listing programa projekta (pod nazivom Rcv-SMS.c). Program je
pojednostavljen tako da nakon slanja AT komande na modem ne proverava odgovor sa
modema, ali čeka neko vreme da modem bude spreman za prihvatanje sledeće komande.
Program je veoma sličan onom iz poglavlja 4, koji je napisan za PIC mikrokontroler. Na
početku programa definišu se AT komande koje se koriste. Rutina za podešavanje
inicijalizuje brzinu prenosa na 19200 bps, što je podrazumevana postavka za SIM900
GSM/GPRS modem.
Unutar petlje glavnog programa, program je podešen na noecho, SMS režim je podešen na
text i poruka „Hello from Arduino…“ se šalje na navedeni broj mobilnog telefona.
Slika 5.4 – Listing programa projekta
U programu sa slike 5.4 dodato je kašnjenje od jedne sekunde posle svake komande
modema. Pri normalnom radu, modem odgovara u roku koji je mnogo brži od jedne
sekunde. U ovom odeljku je prikazan poboljšani program koji ne čeka, već u kome mi
proveravamo odgovor koji vraća modem i prelazimo na sledeću komandu ako je vraćen
tačan odgovor. Ako modem nije vratio tačan odgovor, onda se uključuje LED povezan sa
pinom 13 na Arduinu da bi ukazao na grešku.
Poboljšani program je prikazan na slici 5.5. On čita odgovor modema koristeći dostupnu
funkciju softverskog serijskog porta. Ova funkcija vraća broj koji je veći od nule kada su
podaci na serijskom portu dostupni za čitanje. Ako se podaci koji su dostupni čitaju
korišćenjem funkcije softverskog serijskog porta za čitanje. Funkcija Wait_For_Resp čita
odgovor modema i upoređuje ga sa očekivanim odgovorom. LED koji je povezan sa pinom
13 na Arduinu koristi se kao indikator greške. Ako modem vrati tačan odgovor, onda LED ne
svetli. Ako odgovor modema nije tačan, onda se LED uključuje i program se završava.
Slika 5.5 – Poboljšani program
5.2.1 Hardver
Mikrokontroler pretvara izlazni napon senzora iz analognog u digitalni. Arduino UNO ADC
konvertor je 10-bitni i ima nivoe kvantizacije od 0 do 1023. ADC referentni napon je +5 V.
5.2.2 Softver
Listing programa (pod nazivom Send-Temp.c) prikazan je na slici 5.9. Temperaturu očitava
funkcija Read_Temperature:
Slika koda
Kanal 0 ADC konvertora čita analogni izlazni napon senzora TMP36 pomoću funkcije
biblioteke analogRead i skladišti ga u celobrojnu promenljivu val. Zatim se vrednost
pretvara u napon u milivoltima i skladišti u promenljivu s pokretnim zarezom mV. Zatim se
izračunava stvarna fizička temperatura u stepenima Celzijusa, kao što je opisano u listi sa
podacima o senzoru TMP36, tj. oduzimanjem 500 mV i deljenjem rezultata sa 10.
Temperatura se zatim skladišti kao celobrojna vrednost u promenljivu Temperature zbog
jednostavnosti (takođe možete da pošaljete temperaturu kao promenljivu s pokretnim
zarezom). Konačna vrednost se pretvara u niz u promenljivu Msg pomoću ugrađene
funkcije itoa, tako da može da se pošalje kao tekst u SMS poruci. Napominjemo da su prva
dva znaka niza Msg podešena na T=, a vrednost temperature se skladišti počevši
odstupanjem od 2 niza Msg.
5.3.1 Hardver
Na slici 5.11 prikazan je blok dijagram projekta. Modul SIM900 GSM/GPRS je priključen na
gornji deo ploče Arduino Uno. U ovom projektu se koristi Relay Click pločica koja je
priključena na prototipsku ploču, kao i u prethodnom projektu. Napajanje od +5 V na releju
se isporučuje sa Arduina. Relejem se upravlja sa digitalnog pina 2 na Arduinu i aktivira se
kada je kontakt tog releja postavljen na logičku 1. Stoga, bilo koji električni uređaj povezan
sa kontaktima releja može da se uključili ili isključi.
5.3.2 Softver
Na slici 5.14 prikazan je listing programa (pod nazivom Relay-SMS.c). U ovom programu
modem radi u režimu trenutnog odgovora (Immediate Response) i čim je SMS primljen
modem odgovara i šalje detalje o primljenoj poruci.
Na početku programa definišu se AT komande, definiše se pin porta releja i OFF se definiše
kao LOW, a ON kao HIGH. Deo za podešavanje u programu podešava brzinu prenosa na
19200, konfiguriše pin porta 2 kao digitalni izlaz i deaktivira relej da bi se pokrenuo.
Unutar petlje glavnog programa modem je podešen na noecho i SMS režim je podešen na
text.
Sve postojeće SMS poruke se brišu i modem koji je konfigurisan primenom komande
AT+CNMI=1,2,0,0,0 automatski odgovara svaki put kada je primljen SMS. Zatim se
formira beskonačna petlja pomoću naredbe while. Unutar ove petlje poziva se funkcija
Check_Response da bi se proverilo da li je primljena SMS poruka. Ako jeste, promenljiva
SMS_Arrived se podešava na 1. Program zatim traži komandne nizove #ON i #OFF. Ako je
detektovan niz #ON, onda se promenljiva Relay_State podešava na 1. Međutim, ako je
detektovan niz #OFF, onda se promenljiva Relay_State briše na 0:
Slika koda
Ako je poruka primljena, onda glavni program proverava promenljivu Relay_State i aktivira
ili deaktivira relej u zavisnosti od vrednosti te promenljive. Promenljiva SMS_Arrived se,
takođe, briše da bi bila spremna za sledeći put. Gore navedene operacije se ponavljaju
nakon 2 sekunde kašnjenja.
Slika 5.14 – Listing programa projekta
Program koji je prikazan na slici 5.14 može da se poboljša tako da se povratna poruka
pošalje nazad na mobilni telefon da bi se potvrdilo da li je relej aktiviran ili deaktiviran. U
ovoj modifikovanoj verziji programa, poruka Relay Has Been ACTIVATED će biti poslata na
mobilni telefon kada je relej uspešno aktiviran, a poruka Relay Has Been DE-ACTIVATED
kada je relej uspešno deaktiviran.
Na slici 5.15 prikazan je modifikovani program (pod nazivom Relay-SMS2.c). Ovaj program
je veoma sličan onom na slici 5.14, ali ovde se povratna poruka šalje nazad na mobilni
telefon.
Slika koda
Na slici 5.16 prikazana je tipična poruka koja je primljena na mobilni telefon.
Komanda #Rppqq kontroliše relej. pp i qq predstavljaju dva digitalna cela broja, od kojih
je pp potrebna niža temperatura, a qq je viša temperatura sobe u stepenima Celzijusa.
Stoga, ako je sobna temperatura ispod pp stepeni Celzijusa, onda se relej aktivira (tj.
grejač se uključuje). Isto tako, ako je sobna temperatura iznad qq stepeni Celzijusa, onda
se relej deaktivira (tj. grejač se isključuje). Primera radi, komanda #R1525 aktivira relej
ako je temperatura ispod 15ºC, a deaktivira relej ako je sobna temperatura iznad 25ºC.
Komanda #OFF isključuje sistem u potpunosti, tj. relej se trajno deaktivira dok se ne izda
komanda #Rppqq.
Komanda #ST služi da prikaže status sistema. Kada se izda ova komanda, stanje releja i
trenutna sobna temperatura se vraćaju kao SMS poruka na mobilni telefon.
5.4.1 Hardver
Na slici 5.16 prikazan je blok dijagram projekta. Modul SIM900 GSM/GPRS je priključen na
gornji deo ploče Arduino Uno. Kao i u prethodnom projektu, koristi se Reley Click pločica
(koju je proizvela kompanija mikroElektronika, www.mikroe.com) priključena na prototipsku
ploču (možete da koristite i mali relej sa tranzistorskim prekidačem, kao što je opisano u
Poglavlju 4). Kontrolni ulaz releja je priključen na pin porta 2 Arduina i aktivira se kada je
kontrolni ulaz podešen na logičku 1. Temperatura se očitava pomoću čipa analognog
senzora tipa TMP36, kao u projektu 2. Izlaz senzora je povezan sa analognim ulazom A0 na
Arduinu. Napajanje od +5 V na releju i čipu senzora se isporučuje sa Arduina.
5.4.2 Softver
Slika koda
Status releja se šalje kao poruka na mobilni telefon, kao u kodu koji je dat u nastavku.
Stvarna temperatura se očitava i dodaje se na kraju nizova Relay is ON ili Relay is OFF
pomoću funkcije niza strcat:
Slika 5.20 – Listing programa projekta
Na slici 5.21 prikazan je tipičan odgovor na mobilnom telefonu. U ovom primeru, komanda
je #R2230, koja podešava donju granicu za temperaturu od 22 ºC i gornju granicu od 30
ºC.
5.5 Rezime
U ovom poglavlju razmatrali smo razvoj GSM projekata na razvojnoj ploči Arduino Uno. U
poglavlju je dato nekoliko testiranih i radnih projekata uz kompletne listinge programa.
U sledećem poglavlju ćemo razmatrati razvoj GPRS projekata na razvojnoj ploči Arduino
Uno uz pomoć SIM900 GSM/GPRS modula.
Poglavlje 6 – GPRS projekti
Do sada smo razmatrali upotrebu GSM usluga u različitim projektima koji se zasnivaju na
mikrokontroleru. U ovom poglavlju ćemo razmatrati GPRS usluge i razviti projekte koristeći
neke od ovih usluga.
Kao što smo videli ranije, GPRS je paketna usluga za prenos podataka na GSM-u. GPRS
omogućava mobilnim mrežama da prenose i primaju IP pakete na mreže, kao što je
Internet.
Brzu razmenu SMS poruka (30 SMS poruka u minuti, u poređenju sa oko 5 do 8 SMS
poruka u minuti)
Podesite APN. Ovo zavisi od vašeg provajdera usluga i zemlje u kojoj se nalazite. U
ovom primeru se koristi SIM kartica provajdera Vodafone (pogledajte sliku 6.2):
AT+SAPBR=1,1
AT+HTTPINIT
AT+HTTPPARA=”URL”,”http://chortle.ccsu.edu/java5/Notes/appendixA/htmlPar
t1_4.html”
Pokrenite HTTP GET sesiju:
AT+HTTPACTION=0
0, 200, 3870
Broj 3870 predstavlja bajtove, pročitano je 0 znakova, a broj 200 je kod za operaciju
čitanja.
Pročitajte podatke.
AT+HTTPREAD
Na slici 6.4 prikazane su komande za čitanje navedene veb stranice (ovde je prikazan samo
deo podataka za čitanje).
AT+HTTPTERM
Isključite GPRS.
AT+SAPBR=0,1
6.3 Razmena podataka putem TCP i UDP protokola
Postoje dve vrste protokola za razmenu podataka na mreži. Protokol za upravljanje
prenosom (TCP, engl. Transmission Control Protocol) i protokol za korisničke datagrame
(UDP, User Datagram Protocol). Oba protokola se koriste za slanje paketa podataka na
mreži i nadograđeni su na Internet protokol (IP, engl. Internet Protocol). Kada se koristi TCP
ili UDP, paketi podataka se šalju i primaju na IP adresu. Paketi se normalno usmeravaju sa
svojih izvornih računara na odredišne računare putem rutera. U TCP i UDP protokolima
potrebna je IP adresa, a podaci se šalju i primaju preko portova.
TCP je protokol koji garantuje slanje i prijem paketa na odredište po tačnom redosledu i bez
gubitaka. Odredišni računar šalje prihvaćene pakete nazad radi potvrde prijema paketa
podataka tako da svi paketi koji su primljeni greškom ili koji su izgubljeni mogu biti poslati
ponovo.
UDP je protokol bez uspostavljanja direktne veze u kome se podaci šalju ili primaju bez bilo
kakve potvrde. Zbog toga se UDP ne smatra pouzdanim protokolom za razmenu podataka.
U tabeli 6.1 navedena je lista poređenja TCP i UDP protokola. Kao što se može videti iz ove
tabele, za brzu razmenu podataka u kojoj pouzdanost podataka nije važna, primera radi,
ako se podaci ponavljaju, poželjno je da koristite UDP protokol. Za prenos važnih podataka
treba da se koristi TCP protokol. UDP se najčešće koristi i preporučuje se za prenos
podataka na mreži kada su performanse i brzina važniji nego pouzdana isporuka i kada
potvrda isporuke nije neophodna. Druga važna primena UDP-a je u prenosima višesmernog
emitovanja, pošto TCP ne podržava takve prenose.
Višesmerni sistemi
UDP paket se sastoji od zaglavlja (Header) i podataka (Data). Zaglavlje uvek sadrži 4
bajtova i izvorne i odredišne brojeve porta, dužinu poruke i kontrolni zbir, a zatim slede
stvarni bajtovi podataka poruke. Kontrolni zbir se izračunava formiranjem UDP
pseudozaglavlja (UDP Pseudo-Header) koje se sastoji od adresa izvora i odredišta, broja
protokola i dužine podataka. UDP paket se kapsulira unutar IP paketa.
podaci možda neće biti primljeni po tačnom podaci su primljeni po tačnom redosledu
redosledu
U ovom odeljku ćemo videti kako podaci mogu da se šalju upotrebom UDP (ili TCP)
protokola uz pomoć SIM900 GSM/GPRS modula. Modul je povezan sa računarom pomoću
USB-TTL adaptera kao i pre, a komande se šalju na modul pomoću softvera terminalskog
emulatora HyperTerm. Na računaru se koristi UDP serverski program da biste testirali da li
podaci mogu da se šalju i primaju na ekranu računara. U ovom primeru se koristi softver
emulatora UDP/TCP/Serial port kompanije AGGSoftware. Ovaj softver se može preuzeti na
sledećoj veb stranici:
http://www.aggsoft.com/com-port-emulator/download.htm
Pošto je GPRS spoljna veza naše mreže, potrebno je da znamo privatne i javne IP adrese
računara i da koristimo uslužni program rutera „Port forwarding“ da bismo definisali
pretvaranje porta, tako da možemo da komuniciramo sa računarom na spoljnoj IP adresi.
Privatna IP adresa računara može da se pronađe na sledeći način:
Kliknite Start.
Dodajte GPRS:
AT+CGATT=1
Isključite GPRS IP, ako je aktivan.
AT+CIPSHUT
AT+CIPSTATUS
AT+CIPMUX=0
AT+CSTT=”pp.vodafone.co.uk”
AT+CIICR
AT+CIFSR
Pokrenite TCP ili UDP vezu. U ovom primeru je pokrenuta UDP veza i navedeni su daljinska
IP adresa 165.120.247.91 i broj porta 2000 (pogledajte sliku 6.8).
AT+CIPSTART=”UDP”,”165.120.247.91”,”2000”
AT+CIPSEND
>test[Cntrl-Z]
SEND OK
AT+CIPSEND
AT+CIPSHUT
Razmena podataka pomoću TCP protokola je slična, ali naziv protokola u komandi
AT+CIPSTART treba da se promeni u TCP.
6.4 Projekat 1 – Slanje podataka o temperaturi na računar pomoću
UDP protokola
U ovom projektu ambijentalna temperatura se očitava pomoću analognog senzora
temperature TMP36 (pogledajte Poglavlje 5) i zatim se šalje na računar svakog minuta
upotrebom UDP protokola sa razmenom podataka preko GPRS-a. Temperatura se prikazuje
u obrascu na ekranu računara.
6.4.1 Hardver
Mikrokontroler pretvara izlazni napon senzora iz analognog u digitalni. Arduino UNO ADC
konvertor je 10-bitni i ima nivoe kvantizacije od 0 do 1023. ADC referentni napon je +5 V.
Električna šema projekta prikazana je na sledećoj strani.
6.4.2 Softver
Kao što je opisano ranije u ovom poglavlju, računar je povezan sa internetom putem rutera
i računar je za ruter privatni čvor. Međutim, GPRS je za ruter spoljni uređaj i kao što je
pomenuto ranije, neophodno je da uradite prosleđivanje porta (port forwarding) u ruteru
tako da spoljni uređaj može da komunicira sa računarom. U ovom primeru, IP adresa rutera
na javnoj strani je 165.120.247.91.
U ovom projektu postoje dva programa: Arduino program i PC program. Detalji o oba
programa su opisani u ovom odeljku. Na slici 6.12 prikazan je rad celog sistema kao PDL-a.
Na slici 6.13 prikazan je ceo listing programa. Na početku programa definišu se AT komande
i veza čipa senzora. Zatim se inicijalizuje GPRS tako da paketi podataka mogu da se šalju na
računar pomoću UDP protokola.
Unutar glavnog programa formira se beskonačna petlja u kojoj se čita izlaz čipa senzora
korišćenjem funkcije Read_Temperature. Očitavanje se zatim pretvara u stepene
Celzijusa oduzimanjem 500 mV i deljenjem rezultata sa 10, kao što je opisano u listi sa
podacima proizvođača. Temperatura se zatim pretvara u obliku niza u znakovnom nizu Msg,
pre nego što se pošalje na računar putem GPRS-a:
Slika 6.13 – Listing Arduino programa projekta
9 PC program
PC program je razvijen u okruženju Visual Studio (2015) i Visual Basic, a njegov listing je
dat na slici 6.14. Program se zove VB-UDP i sastoji se od jednog obrasca sa dva natpisa,
jednog polja za tekst i jednog dugmeta. Obrazac se učitava kada se program pokrene.
Program kreira UDP vezu za prijem podataka sa porta 2000 na IP adresu 192.168.1.71
lokalnog privatnog računara. Polje za tekst se naziva Txttemp i prikazuje temperaturu kao
znakovni niz. Dugme se koristi za prekid programa i izdavanje komande END kada se
klikne.
PC program radi kontinuirano tako što čeka pakete podataka na portu 2000 i čim je paket
dostupan biće primljen i uskladišten u promenljivu receiveBytes pomoću komande:
receiveBytes = udpClient.Receive(RemoteIpEndPoint)
Primljeni podaci su u obliku bajta i mora da budu pretvoreni u znakovni niz da bi se prikazali
u polju za tekst. To se radi pomoću koda datog u nastavku u kome su primljeni podaci sada
u promenljivoj znakovnog niza returnData:
6.5.1 Hardver
6.5.2 Softver
Kao što je opisano u ovom poglavlju, računar je povezan sa Internetom putem rutera i
računar je za ruter privatni čvor. Međutim, GPRS je za ruter spoljni uređaj i kao što je
pomenuto ranije, neophodno je uraditi prosleđivanje porta u ruteru tako da spoljni uređaj
može da komunicira sa računarom. U ovom primeru, IP adresa rutera na javnoj strani je
165.120.247.91.
U ovom projektu postoje dva programa: Arduino program i PC program. Detalji o oba
programa su opisani u ovom odeljku. Na slici 6.16 prikazan je rad celog sistema kao PDL-a.
PC program
PC program (pod nazivom Module1) je razvijen kao aplikacija konzole pomoću Visual Studia
(2015) i C# programa, a njegov listing je dat na slici 6.18. Program je veoma jednostavan
jer kreira TCP link na portu 2000 lokalnog hosta koji je naš računar. Program zatim prima
podatke o temperaturi sa Arduina i prikazuje ih na konzolu primenom komandi
Console.Write. Pošto se čitanje podataka blokira, program radi kao beskonačna petlja,
prima TCP pakete čim oni pristignu na Arduino i zatim ih prikazuje:
Slika 6.18 – Listing PC programa projekta
Na slici 6.19 pokazani su podaci koje program prikazuje na ekranu računara.
U ovom projektu modul SIM900 GMS/GPRS je priključen na razvojnu ploču Arduino Uno.
Pored toga, senzor temperature TMP36 je povezan sa analognim ulazom A0 Arduina, kao i u
prethodnom projektu. Temperatura se čita svakih 15 sekundi i skladišti u oblaku
korišćenjem HTTP zahteva na GPRS vezi.
6.6.1 Hardver
Na slici 6.22 prikazan je blok dijagram projekta. Ploča SIM900 GSM/GPRS je priključena na
gornjem delu razvojne ploče Arduino UNO i konfigurisana je za korišćenje serijskih
komunikacionih pinova, kao i ranije. Senzor temperature (TMP36) je priključen na
prototipsku ploču i povezan je sa analognim ulazom A0 na Arduino Uno pomoću žica
kratkospojnika.
Slika 6.22 – Blok dijagram projekta
Pre nego što detaljno prikažemo Arduino program, važno je naučiti kako da koristimo
SparkFun uslugu u oblaku (https://learn.sparkfun.com/tutorials/pushing-data-to-
datasparkfuncom/all#introductioon). Da bismo koristili server, moramo da kreiramo
tokove podataka i pribavimo dva ključa: private key (privatni ključ) i public key (javni
ključ). Javni ključ je vidljiv svima onima koji žele da vide naš tok podataka i deo je URL
adrese koja se koristi za pristup toku podataka. Privatni ključ je potreban za postavljanje
svih podataka u oblaku i taj ključ nije javno vidljiv, već je poznat samo vama. Moramo da
kreiramo tok podataka za naše stavke podataka da bismo mogli da skladištimo te podatke.
Za tok podataka potrebni su naslov, opis, polja i tagovi.
Visible: Yes
Fields: Temperature
Tags: weather
Fields: temperature
Tags: weather
http://data.sparkfun.com/input/[publicKey]?
private_key=[privateKey]&temperature=[value]
Na primer, ako je temperatura 22,53 stepeni Celzijusa, onda znakovni niz treba da
bude:
http://data.sparkfun.com/input/g6Q3YvvAoms3E7znGvnG?
private_key=qzw4AxxZd8irnYj6KM6K&temperature=22.53
Slika 6.25 – Deo prikaza
Sada smo spremni da pošaljemo naše podatke o temperaturi u oblak tako što ćemo razviti
Arduino program.
6.6.3 Softver
Slika koda
Program koristi komandu HTTP GET za skladištenje podataka u oblaku. Napominjemo da su
za skladištenje podataka potrebni javni i privatni ključevi.
HTTPACTION: 0, 200, 10
Uskladištenim podacima u oblaku se može pristupiti pomoću sledeće URL adrese uz javni
ključ koji je dodeljen ranije:
http://data.sparkfun.com/streams/g6Q3YvvAoms3E7znGvnG
Na slici 6.27 prikazan je primer podataka koji su uskladišteni u oblaku. U ovom primeru
temperatura je 12 stepeni Celzijusa.
6.7 Rezime
U ovom poglavlju razmatrali smo konfigurisanje GPRS modema i upotrebu SIM900
GSM/GPRS modula u Arduino projektima. Prikazana su tri testirana i radna projekta uz cele
listinge programa. U prvom projektu Arduino očitava ambijentalnu temperaturu i šalje je na
računar pomoću GPRS komunikacije sa UDP protokolom. U drugom projektu se podaci o
temperaturi šalju na računar pomoću TCP protokola na GPRS vezi. U završnom projektu se
podaci o temperaturi skladište u oblaku primenom HTTP komandi za GPRS.