izrada funkcionalnog mobilnog telefona koristeći arduino · arduino platformu potrebno je u ide-u...
TRANSCRIPT
VELEUČILIŠTE U RIJECI
ODJEL TELEMATIKA
Tino Grgurić
Izrada funkcionalnog mobilnog telefona koristeći arduino
platformu
PROJEKTNI ZADATAK
Rijeka, 2013./14.
VELEUČILIŠTE U RIJECI
ODJEL TELEMATIKA
IZRADA FUNKCIONALNOG MOBILNOG TELEFONA
KORISTEĆI ARDUINO PLATFORMU
Mentor: dipl.ing.el. Marino Franušić
Kolegij: Projekt u telematici
Student: Tino Grgurić
MBS: 2427005544/11
Rijeka, 2013./14.
SADRŽAJ 1. UVOD ..................................................................................................................................................1
2. TERMINSKI PLAN IZRADE PROJEKTA ........................................................................................2
3. TEORIJSKA POZADINA MOBILNE TELEFONIJE ........................................................................3
3.1. GSM .....................................................................................................................................3
3.2. MODEL SUSTAVA.............................................................................................................3
3.3. ĆELIJE ................................................................................................................................4
3.4. GPRS ...................................................................................................................................4
3.5. UMTS ..................................................................................................................................5
4. TEORIJSKA POZADINA ARDUINO PLATFORME ......................................................................6
4.1. HARDWARE ......................................................................................................................6
4.2. PROGRAMIRANJE ZA ARDUINO ..................................................................................7
5. PRIMJER POSTOJEĆIH PROJEKATA ............................................................................................8
5.1. ARDUINO MOBITEL S TOUCH SCREENOM ...............................................................8
5.2. ARDUINO MOBITEL .....................................................................................................10
6. ARDUINO UNO ...............................................................................................................................11
6.1 SPECIFIKACIJE, SHEMA, FIZIČKE KARAKTERISTIKE ..........................................11
6.1.1 SPECIFIKACIJE ................................................................................................11
6.1.2 SHEMA ..............................................................................................................11
6.1.3 FIZIČKE KARAKTERISTIKE ..........................................................................13
6.2 NAPAJANJE ......................................................................................................................14
6.2.1 ZAŠTITA RAČUNALA .....................................................................................14
6.3 ULAZNE I IZLAZNE JEDINICE ......................................................................................14
6.4 KOMUNIKACIJA ..............................................................................................................15
7. GPRS/GSM SHIELD ........................................................................................................................16
7.1 SPECIFIKACIJE, SHEMA, FIZIČKE KARAKTERISTIKE ...........................................16
7.1.1 SPECIFIKACIJE ................................................................................................16
7.1.2 SHEMA ..............................................................................................................16
7.1.3 FIZIČKE KARAKTERISTIKE ..........................................................................18
8. PRIMJERI KODA ZA GPRS/GSM SHIELD ..................................................................................19
8.1. PRIMJER KODA ZA SPAJANJE GPRS/GSM SHIELDA NA MREŽU .......................19
8.2. PRIMJER KODA ZA SLANJE SMS-A ...........................................................................20
8.3. PRIMJER KODA ZA SPAJANJE LCD-A .......................................................................21
8.4. PRIMJER KODA ZA USPOSTAVU POZIVA ................................................................22
8.5. PRIMJER KODA ZA USPOSTAVU POZIVA KROZ FAZE ..........................................23
8.6. PRIMJER KODA ZA SLANJE SMS-A KROZ FAZE ....................................................24
8.7. PRIMJER KODA S IZBORNIKOM ................................................................................25
9. OPIS RADA CIJELOG SUSTAVA .................................................................................................27
9.1. PRIKAZ ELEKTRIČNE SHEME .....................................................................................28
9.1.1. SHEMA SPAJANJA ARDUINA I GSM/GPRS SHIELDA .............................28
9.1.2. SHEMA SPAJANJA GSM/GPRS SHIELDA i NOKIA EKRANA .................29
10. ANALIZA RADA ...........................................................................................................................30
11. TROŠKOVNIK ...............................................................................................................................31
12. LITERATURA ................................................................................................................................32
1
1. UVOD
Tema ovog projektnog zadatka je izrada funkcionalnog mobilnog telefona temeljenog
na Arduino Uno platformi. Mobilni telefon bi trebao imati funkcije slanja i primanja SMS
poruka, primanja i upućivanja poziva. U sljedećoj radnji naći će se detaljno opisan način
izrade spomenutog uređaja, terminski plan izrade, teorijska pozadina vezana za Arduino
platformu i mobilnu telefoniju. Od opreme koristit će se Arduino Uno, Arduino GSM/GPRS
shield koji će biti detaljnije opisan, ekran za mobilni uređaj Nokia 5110. U radnji će biti
prikazani neki već postojeći slični projekti koji će također poslužiti i kao primjer za izradu
ovog projekta.
2
2. TERMINSKI PLAN IZRADE PROJEKTA
Ovdje je opisan terminski plan izrade ovog projekta. Ovako sam zamislio terminski
plan, te ću ga se nastojati pridržavati.
DATUM OPIS 14. 10. 2013. - 25. 10. 2013. Pisanje teoretskih dijelova projekta kao što su
teorijska pozadina mobilne telefonije i Arduino
sustava, pregled postojećih Arduino sustava koji
se koriste za mobilnu komunikaciju, pisanje
terminskog plana.
28. 10. 2013. - 9. 11. 2013. Detaljan opis Arduino Uno platforme, detaljan
opis Arduino GSM/GPRS shielda, opis planiranog
rješenja.
12. 11. 2013. - 12. 12. 2013. Sastavljanje sustava te opis njegovih programa i
postavki, spajanja na mrežu, primanje i slanje
SMS-ova, glasovnog poziva, spajanja tipkovnice,
opis rada cijelog sustava.
13. 12. 2013. - 2. 1. 2014. Analiza rada u usporedbi s planiranim terminima i
zamišljenim rješenjem, električne sheme i
troškovnik potreban za izradu projekta.
3. 1. 2014. - 12. 01. 2014. Završavanje rada, rješavanje zaostataka i izrada
powerpoint prezentacije.
3
3. TEORIJSKA POZADINA MOBILNE TELEFONIJE
U početku je mobilna telefonija bila analogna, analogni mobilni uređaji su podržavali
samo govornu komunikaciju. Taj standard naziva se NMT. U početku je radio na frekvenciji
od 450 MHz i kasnije je proširen na frekvencijsko područje od 900 MHz.
3.1. GSM
Kasnije je razvitkom mobilne telekomunikacijske mreže nastao digitalni standard
GSM faze 1. Posebna mogućnost GSM-a naspram NMT-a je bila roaming, odnosno
mogućnost korištenja mobilne komunikacije izvan matične države. Također, GSM je
omogućavao slanje kratkih poruka ili SMS-ova (Short Message Service). GSM je mogao
doseći brzinu prijenosa podataka do 9.600 kbit/s. Sustav je bio potpuno digitalan tako da za
prijenos podataka nisu bili potrebni modemi, nego se sustav mogao integrirati direktno u
mrežu.
Osnovna struktura sustava se sastoji od baznih stanica, njihovih kontrolera te
komunikacijskog sustava koji ih spaja s fiksnom mrežom. GSM je od zlouporabe zaštićen na
par načina: IMEI kodom što je identifikacijski kod uređaja, IMSI kodom (kod SIM kartice),
PIN kodom.
Kasnije, u GSM fazi 2, GSM je zadržao sve svoje mogućnosti samo što su dodane
neke nove ili nadograđene postojeće. U GSM-u faze 2 bilo je moguće tražiti informaciju o
cijeni poziva, omogućen je prikaz broja pozivatelja, omogućeno je ostaviti poziv na čekanju,
uključiti više učesnika u razgovor.
Postoji pet GSM frekvencijskih područja: GSM 450, GSM 800, GSM 900, GSM 1800,
GSM 1900.
3.2. MODEL SUSTAVA
Model mobilnog sustava se koristi na tri razine: razini primjene, razini upravljanja,
razini povezivanja. Razina povezivanja povezuje mobilnu na baznu stanicu i na toj razini
mobilni uređaji dobivaju pristup internetu i fiksnoj liniji. Nakon toga dolazi razina
upravljanja, tamo centrala pregledava registar korisnika i registar preplatnika. I zadnja je
razina primjene, nju koristi korisnik, služi za preuzimanje i slanje MMS-ova, geolokacija,
ringtonova te korištenje ostalih mogućnosti.
4
Slika 1. Model sustava
3.3. ĆELIJE
Ćelija je osnovna jedinica celularnog sustava. Definira je domet pokrivanja jednog
antenskog sustava bazne stanice. Svaka ćelija ima dodijeljen jedinstveni broj CGI (Cell
Global Identity). GSM može imati makro, mikro i piko ćelije. Optimalna mreža za mobilnu
telefoniju se sastoji od velikih i malih ćelija. Tehnika velikih ćelija se koristi tamo gdje je mali
broj preplatnika, dok se tehnika malih ćelija koristi na područjima gdje je velik intenzitet
prometa. Radius ćelije se može proizvoljno smanjivati, no zbog toga može doći do velikog
broj hand off-ova u toku jednog razgovora, što bi moglo predstavljati smetnje u govornoj
usluzi.
3.4. GPRS
GPRS ili General Packet Radio Service je protokol koji omogućava prijenos podataka
bežičnim putem kroz GSM mrežu. GPRS se koristi na 2G i 3G mreži te omogućava brzinu
prijenosa podataka između 56-114 kbit/s. Uglavnom se koristi na 2G mrežama. Taj standard
5
se naziva i 2.5 G mrežom iz razloga što je nastao na prelasku s 2G na 3G mrežu. Za
multipleksiranje koristi TDMA (Time Division Multiple Access). GPRS omogućava slanje i
primanje SMS poruka te njihov broadcasting, stalan internet pristup, MMS (Multimedia
Message Service) za slanje multimedijskog sadržaja putem mobilne mreže, PoC (Push To
Talk) način komuniciranja. PoC je half-duplex način komuniciranja pomoću kojeg se mobitel
mogao koristiti kao walkie talkie. GPRS je omogućavao IM (Instant Messaging), internet
aplikacije, P2P (Point to Point) protokol te P2M (Point to Many) protokol.
3.5. UMTS
UMTS (Universal Mobile Telecomication System) je jedna od treće generacije
mobilne telefonije bazirane na GSM-u. 1885-2025 MHz za uplink (komuniciranje mobitela s
baznom stanicom), 2110-2200 MHz za downlink (od bazne stanice prema mobilnom uređaju),
širina kanala je po 5 MHz. Osnovna brzina je do 384 kb/s. UMTS podržava HSPA+ koji
omogućava prijenos podataka po brzini od 42 Mbit/s te HSDPA koji omogućava 7,2 Mbit/s.
Postoji više načina multipleksiranja za UMTS. To su CDMA, FDMA i TDMA.
6
4. TEORIJSKA POZADINA ARDUINO PLATFORME
Arduino je open-source elektronička platforma koja je nastala 2005. godine na
sveučilištu u Ivery, u Italiji. Arduino sustav se koristi za upravljanje drugim sustavima i
modulima. Lagan je za korištenje te se prodaje u „uradi sam“ paketima kojih je 2011. prodano
oko 300.000.
4.1. HARDWARE
Arduino sustav se sastoji od Atmel 8-bit AVR mikrokontrolera i ostalih dijelova koji
omogućavaju lakše programiranje i spajanje na druge strujne krugove i sustave. Službeni
Arduino sustavi koriste megaAVR čipove. Koriste se linearni regulator od 5 V, kristalni
oscilator od 16 MHz. Najbitnija stvar kod Arduina je lako spajanje novih priključaka i
modula. Moduli za Arduino su poznatiji pod nazivom shield. Mogu se kupiti ili ih možemo
izraditi sami. Svrha modula je davanje novih funkcija Arduino kontroleru kao što su GPS,
ethernet, LCD ekran, bluetooth itd. Arduinov mikrokontroler dolazi s vlastitim bootloaderom
koji omogućava upload napisanih programa na flash memoriju Arduina.
slika 2. Arduino Uno - R3
Prvi prototipi Arduina su za komunikaciju s računalom koristili serijski port RS-232.
Današnji Arduino sustavi koriste USB priključak za programiranje.
7
4.2. PROGRAMIRANJE ZA ARDUINO
Arduino IDE je pisan u Javi te se može koristiti na svim poznatijim platformama kao
što su Linux, Windows i Mac OSx. Novije Linux distribucije dolaze s predinstaliranim
Arduino IDE-om kao npr. Kali Linux. Arduino IDE se može besplatno preuzeti sa službene
web stranice Arduino sustava. Sam Arduinov IDE napravljen je tako da približi programiranje
korisnicama koji njemu nisu vični ili se s još nisu susreli s njim. Sam IDE ima mogućnost
provjere točnosti koda, te upload gotovog napisanog koda na Arduino sustav. Program ili kod
za Arduino se naziva sketch. Sintaksa Arduino IDE-a je slična sintaksi C i C++ programskih
jezika. U sljedećem primjeru možemo vidjeti primjer koda za paljenje i gašenje LED diode na
Arduino platformi na pinu 13.
Primjer koda:
#define LED_PIN 13
void setup ()
pinMode (LED_PIN, OUTPUT); // Omogućava pinu 13 digitalni Output
void loop ()
digitalWrite (LED_PIN, HIGH); // Uključi ledicu
delay (1000); // Pričekaj 1 sec. (1000 milisekundi)
digitalWrite (LED_PIN, LOW); // Isključi ledicu
delay (1000); // Pričekaj 1 sec.
Većina Arduino platformi ima na sebi ugrađen LED i otpornik između pina 13 i
podnožja pločice koji se koriste za testiranje platforme. Za učitavanje prethodno napisanog na
Arduino platformu potrebno je u IDE-u samo kliknuti „Upload to I/O Board“. Time će se kod
učitati, ukoliko nema grešaka. Ukoliko su greške prisutne kod se neće učitati i IDE će javiti
grešku. Nakon što se napisani kod učita Arduino će izvršiti zadani zadatak.
8
5. PRIMJER POSTOJEĆIH PROJEKATA
Pretražujući internet naišao sam na dva projekta slična mojem projektu. U jednom
projektu osoba radi Arduino mobitel s touch screenom složenim u kućištu koje je napravljeno
pomoću 3D printera. U drugom primjeru osoba radi mobitel koje je nešto sličniji ovome koji
će biti napravljen u ovome projektu.
5.1. ARDUINO MOBITEL S TOUCH SCREENOM
Za izradu ovog uređaja bilo je potrebno nabaviti osam komponenti. To su bile: kućište
za mobitel, Arduino Uno platforma, GPRS Shield, TFT touch screen, baterija i modul za
napajanje, Lipo Rider, Groove RTC.
Prvo je bilo potrebno smjestiti bateriju i modul za napajanje u kućište. Kućište je
napravljeno u 3D printeru tako da je prilagođeno svim komponentama. Modul za napajanje
omogućava napajanje Arduino sustava, a Lipo Rider punjenje baterije putem mini USB
kabela. Za čuvanje vremena na satu zaslužan je shield Groove RTC. Nakon što je napajanje
smješteno u kućište potrebno je spojiti GPRS shield u Arduino UNO zajedno s touch
screenom.
Slika 3. Komponente za izradu Arduino mobitela
9
Nakon programiranja ovaj Arduino mobitel je imao omogućene sljedeće funkcije1:
Primanje i slanje poruka.
Primanje i upućivanje poziva.
Prikaz sata na zaslonu.
Prikaz dolaznih i odlazni tel. brojeva.
Mogućnost mijenjanja funkcija uređaja na touch screenu.
Čuvanje vremena sata ukoliko je mobitel ugašen.
Na kraju dolazi završni dio u kojem se slaže kompletno kućište i dobiva oblik mobitela.
Slika 4. Završen uređaj
11
Važno je napomenuti da se gotov kod za ovaj uređaj može downloadati s web stranice
http://yexiaobo-seeedstudio.github.io/ArduinoPhone/ .
10
5.2. ARDUINO MOBITEL
Za razliku od prošlog primjera ovaj uređaj ne koristi TFT touchscreen nego puno
jednostavniji matrični ekran (5x8) ili crno-bijeli Nokia LCD. No, funkcionalnost je slična
prethodnom uređaju.
Za izradu ovo uređaja potreban je LED ili LCD ekran, tiskana pločica, M10 GSM
modul, Arduino Uno, kućište iz 3D printera ili šper ploče, antena, zvučnici, USB priključak.
Slika 5. Arduino mobitel s LED ekranom
Mogućnosti uređaja su2:
Zvanje i primanje poziva telefonskih brojeva
Slanje i pisanje SMS poruka
Alarm
Prikaz mreže
Prikaz dolaznih i odlaznih telefonskih brojeva
2 Software za ovaj uređaj također se može naći za download na web stranici:
https://github.com/damellis/cellphone2.
11
6. ARDUINO UNO
Arduino Uno je uređaj koji je zasnovan na Atmega328 mikrokontroleru. Na njemu se
nalazi 14 input/output pinova od kojih se šest može koristiti kao PWM output. Posjeduje šest
analognih inputa, 16 MHz keramički resonator, USB konektor, utičnicu za napajanje, tipku za
resetiranje i ICSP header. Arduino Uno ima na sebi sve potrebne komponente koje
omogućavaju nesmetan rad mikrokontrolera. Arduino se napaja po potrebi preko USB kabla
kojim se spaja na računalo, preko lokalne mreže ili pomoću baterije.
6.1 SPECIFIKACIJE, SHEMA, FIZIČKE KARAKTERISTIKE
6.1.1 SPECIFIKACIJE
Mikrokontroler Atmega328
Napon potreban za rad 5 V
Preporučen ulazni napon 7-12 V
Maksimalni ulazni napon 6-20 V
Broj digitalnih pinova 14
Izlazna struja po jednom ulazno-izlaznom pinu 40 mA
Izlazna struja za 3.3 V pin 50 mA
Flash memorija 32 KB, 0,5 KB služi za bootloader
SRAM 2 KB
EEPROM 1 KB
Brzina procesora 16 MHz
6.1.2 SHEMA
Na sljedećoj stranici nalazi se prikaz sheme za Arduino Uno koji koristi mikrokontroler
Atmega 328p. Shema spajanja za svaki noviji mikrokontroler je ista.
12
Slika 6. Arduino Uno R3 shema
13
6.1.3 FIZIČKE KARAKTERISTIKE
Arduino sustav dugačak je 6,58 cm i širok 5,12 cm. Najuočljivije komponente su USB
port i port za napajanje. Na rubovima ima četiri rupice za vijke tako da se može pričvrstiti za
željenu površinu. Također je uočljiv razmak izmađu pina 7 i 8 koji iznosi 0,40 cm. S L je
označena testna LED dioda koja se poziva na pinu 13, a ispod nje se nalaze TX i RX diode
koje trepere priliko primanja i slanja podataka. Na srednjoj desnoj strani pločice se nalazi
tipka za reset.
1. USB priključak
2. Regulator napona
3. Priključak za napajanje
4. Digitalni pinovi
5. FTDI USB čip
6. Testna „ledica“ na pinu 13
7. TX i RX diode
8. Dioda koja prikazuje je li Arduino uključen
9. Reset tipka
10. Mikrokontroler
11. Pinovi za napajanje
12. Analogni pinovi
Slika 7. Arduino Uno R2 prikaz komponenti
14
6.2 NAPAJANJE
Arduino se može napajati preko računala putem podatkovnog USB kabla ili preko
vanjskog izvora. Sam Arduino automatski odabire izvor napajanja. Vanjsko napajanje može
biti AC/DC adapter ili baterija. Adapter se spaja u 2,1 mm utičnicu na Arduino sustavu, dok
baterija može biti spojena preko Gnd ili Vin pinova ili preko utičnice za napajanje. Arduino
sustav može funkcionirati na naponu od 6 V - 20 V, ukoliko sustav dobiva manje od 7 V,
moguće je da pinovi neće funkcionirati kako bi trebali. Ukoliko se koristi više od 12 V postoji
mogućnost da će sustav pregoriti.
Za napajanje se mogu koristiti sljedeći pinovi:
VIN: Ovo je pin za ulazni napon koja se nalazi na Arduinu, na njega se može spojiti
AC/DC adapter ili baterija
5V: Ovaj pin daje izlaznih 5 V, može se napajati pute USB-a ili preko vanjskog
izvora.
3V3: 3,3 V koja su generirana na Arduinovom regulatoru, maksimalna struja koju
može dati je 50 mA
GND: uzemljeni pinovi
IOREF: ovaj pin osigurava kontroleru napon s kojim on izvršava zadaću.
6.2.1 ZAŠTITA RAČUNALA
Za zaštitu računala na kojem je spojen Arduino, sustav ima ugrađen resetabilni
osigurač za slučaj da se u Arduinu javi veća struja od dozvoljene. Ukoliko se na USB portu
javi struja veća od 500 mA osigurač automatski prekida vezu između računala i Arduina.
6.3 ULAZNE I IZLAZNE JEDINICE
Arduino ima na sebi integrirano 14 pinova koji imaju mogućnost primanja i slanja
podataka. Pinovi rade na 5 V te svaki pin prima maksimalno 40 mA. Svaki pin ima unutarnji
pull-up otpornik od 20 - 50 k Ω.
Neki pinovi imaju specijalizirane funkcije.
Serial: 0 (RX) i 1 (TX): RX se koristi za primanje, a TX za slanje serijski podataka.
Ovi pinovi su spojeni na pinove mikrokontrolera.
15
Vanjski prekidi 2 i 3: Ovi pinovi reagiraju ukoliko dođe do prekida ili promjene
vrijednosti.
PWM: 3, 5, 6, 9, 10 i 11: omogućavaju 8-bitni PWM izlaz pomoću analogWrite()
funkcije.
SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): Omogućavaju SPI komunikaciju
koristeći SPI knjižnice (libary).
LED 13: Tvornički ugrađena „ledica“ na pinu br. 13 koja se uključuje ukoliko je
vrijednost HIGH, a isključuje ukoliko je vrijednost LOW.
Arduino Uno također ima šest analognih ulaza, na pločici su napisani oznakama od A0 do
A5. Svaki od njih omogućava 10 bita prostora. Po normalnim postavkama analogni pinovi
mogu koristiti od 0 – 5 V, no ta granica se može promjeniti koristeću AREF pin i naredbu
analogReference.
Specijalizirani analogni pinovi:
TWI: A4 ili SDA pin i A5 ili SCI pin podržavaju komunikaciju koristeći Wire
knjižnicu (library).
AREF: Referencira napon za analogne ulaze.
Reset: ukoliko ovaj pin dobije naredbu LOW mikrokontroler se resetira.
6.4 KOMUNIKACIJA
Postoji više načina da se Arduino poveže s računalom, drugim Arduinom ili nekim
drugim mikrokontrolerom. Mikrokontroler Atmega328 omogućava UART TTL serijsko
povezivanje na pinovima 0 [RX] i 1 [TX]. Mikrokontroler Atmega16U2 na Arduino pločici
za serijsku komunikaciju koristi USB port te na računalu stvara virtualne serijske portove pod
nazivom COM#. Da bi računalo prepoznalo Arduino preko virtualnog COM# sučelja
potrebno je instalirati drivere na Windows računalima. Za programiranje se koristi Arduino
IDE. Prilikom slanja ili primanja podataka RX i TX „ledice“ na Arduinu trepere.
Komunikaciju s Arduino digitalnim pinovima omogućava SoftwareSerial knjižnica (Library).
16
7. GPRS/GSM SHIELD
GPRS shield omogućava korištenje GSM mreže za prijenos podataka s neke pristupne
lokacije. Shield omogućava funkcije kao i mobitel, prijenos kratkih tekstualnih poruka ili
SMS, GPRS pristup i audio komunikaciju. Postoje dvije verzije ovog shielda.
GPRS shield je kompaktibilan sa svim mikrokontrolerskim sustavima koji imaju isti
razmještaj pinova kao i GPRS modul. Ovaj shield se najčešće koristi na Arduino i Seeduino
sustavima. GPRS shield se konfigurira i kontrolira pomoću UART-a koristeći AT naredbe.
Shield je baziran na SIM900 modulu, kojeg proizvodi tvrtka SIMCOM. Modul je isti kao i
onaj u mobitelima samo bez korisničkog sučelja. Prilikom korištenja važno je da je SIM
kartica otključana.
7.1 SPECIFIKACIJE, SHEMA, FIZIČKE KARAKTERISTIKE
7.1.1 SPECIFIKACIJE
Modul SIM900
GSM standardi 850/900/1800/1900
GPRS Stanica Klasa B
GPRS multi-slot Kalsa 10/8
Upravljanje AT naredbe
SMS poruke Podržane (ASCII ili heksadecimalni znakovi)
Audio komunikacija Priključci za slušalice i mikrafon
Potrošnja struje (sleep mode) ~1.5 mA
Radna temperatura -40°C do +80°C
Radni napon 5 V
Napajanje Arduino pinovi ili preko AC/DC adaptera
Antena SMA
7.1.2 SHEMA
Na sljedećoj stranici nalazi se shema GPRS modula.
17
Slika 8. GPRS/GSM shield shema
18
7.1.3 FIZIČKE KARAKTERISTIKE
Arduino shield verzije 1.0 dugačaj je 6,5 cm, a širok 5,12 cm. S prednje strane uređaja
nauočljiviji je SIM modul na kojemu piše „SIM900“, vidljivi su priključci za audio
komunikaciju, signalno led svijetlo te priključak za antenu. S donje strane shielda vidljivi su
pinovi za spajanje sučelja na Arduino, Seeduino ili neki drugi podržani mikrokontroler te
konektori i držač za SIM karticu.
1. Priključak za antenu - SMA
2. SIM modul
3. Signalne LED-ice
4. Pinovi za spajanje ekrana
5. Tipke za uključivanje i reset
6. Utičnica za spajanje mikrafona
7. Utičnica za spajanje zvučnika/slušalica
8. Konektori za SIM karticu
9. Pinovi za spajanje na mikrokontrolerski sustav
Slika 9. GPRS/GSM shield komponente
19
8. PRIMJERI KODA ZA GPRS/GSM SHIELD
8.1. PRIMJER KODA ZA SPAJANJE GPRS/GSM SHIELDA
NA MREŽU
Navedeni kod služi da bi Arduino mogao prepoznati GPRS/GSM shield. Ovaj sketch
omogućava kontroliranje GPRS/GSM shelda preko terminalskog sučelja. U ovom konkretno
slučaju koristilo se terminalsko sučelje SSCOM 3.2. i terminalsko sučelje Arduino IDE-a.
Primjer koda:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3);
void setup()
mySerial.begin(19200); //definiramo baud rate za serijsku komunikaciju
Serial.begin(19200);
void loop()
if (mySerial.available()) //definira konstantno primanje naredbi putem serijskog porta
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
Naredbe koje koristimo putem terminala započinu sa AT. Prilikom spajanja shilda
potrebno je na terminalu definirati port na koji se spaja sustav. U ovom konkretno slučaju to
je najčešće bio COM4. Na GPRS shieldu je potrebno držati power tipku sve dok terminal ne
javi da je sustav privaćen.
Poruka prilikom prihvaćanja uređaja:
OK
NORMAL POWER DOWN – javlja se samo ponekad
RDY
+CFUN: 1
+CPIN: READY
Call Ready
Nakon prihvaćene poruke plava dioda ispod koje piše net bi trebala treperiti, to znači
da je shield „uhvatio“ signal. Nakon toga još kao dodatnu provjeru možemo mu poslati upit
20
AT, ukoliko je sve u redu shield će nam odgovoriti OK. U sljedećem primjeru ću prikazati
kako uspostaviti poziv i poslati SMS pomoću terminala.
Slanje SMS-a putem terminala:
AT+CMGF=1; – prvo je potrebno ući u tekstualni mod slanja SMS-a
OK – odgovor na naredbu
AT+CSCA="+385910401"; – potrebno je definirati SMS centar u ovom slučaju Vipov
OK – odgovor na naredbu
AT+CMGS=“#broj mobitela“; – upisujemo željeni broj mobitela
> Ovo je testna SMS poruka –pojavljuju se > nakon kojih pišemo tekst SMS-a
>
> - kada napišemo tekst pritišćemo CTRL+Z ili šaljemo heksadecimalno 1A kako bi terminal
poslao poruku
OK – ukoliko dobijemo ovaj odgovor, poruka bi trebala stići
ERROR – ukoliko dobijemo ovaj odgovor, poruka bi ne bi trebala stići, ali ponekad i stigne.
Čitanje SMS-a putem terminala:
AT+CMGL; – Prikaz dolaznih poruka i bojeva mobitela
AT+CMGR=broj poruke; – Prikaz dolaznih poruke po broju
Uspostavljanje poziva putem terminala:
Uspostavljanje poziva i odgovaranje na dolazni poziv je puno jednostavnije nego slanje
poruke.
ATD Brojmobitela; – uspostavljanje poziva
ATH; – prekid poziva
OK – odgovor
Odgovor na dolazni poziv putem terminala:
ATA – odgovor na dolazni poziv
OK – odgovor
8.2. PRIMJER KODA ZA SLANJE SMS-A
Ovdje je opisan sketch koji se uploada na Arduino i služi za slanje SMS poruke bez
uporabe terminala. Prva i jedna od najbitnijih stvari je ta da kod za SMS poruku nije poželjno
staviti u sekciju void loop(); iz razloga što će Arduino konstantno slati SMS-ove.
Primjer koda:
#include <SoftwareSerial.h>
21
SoftwareSerial mySerial(2, 3);
void setup()
mySerial.begin(19200);
Serial.begin(19200);
mySerial.print("AT+CMGF=1\r"); //omogućava slanje SMS-a u tekstualnom obliku
delay(100);
mySerial.print("AT+CSCA=\"+385910401\"; \r"); //spajanje na Vip SMS centar
delay(100);
mySerial.println("AT + CMGS = \"#broj mobitela\""); //odabir broja mobitela
delay(100);
mySerial.println("#tekst poruke"); //upisuje se tekst SMS-a
delay(100);
mySerial.println((char)26); //slanje signala za slanje poruke, znak 26 zamjenjuje CTRL+Z ili Hex. 1A.
delay(100);
mySerial.println();
void loop()
if (mySerial.available()) //služi za prikaz unesenih naredbi i ispis odgovora od strane shielda u prozor terminala
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
8.3. PRIMJER KODA ZA SPAJANJE LCD-A
Za spajanje ekrana Nokie 5110 na GPRS/GSM shield potrebno je prvo s interneta
preuzeti knjižicu koja omogućava korištenje Nokie 5110 u Arduino IDE-u. Nakon toga se s
lakoćom može ispisati željeni tekst na ekranu. Ekran se spaja na predviđeno mjesto na
GSM/GPRS shieldu baš za taj ekran.
Primjer koda:
#include <LCD5110_Graph.h> //knjižica koja sadrži naredbe za ekran
#include <SoftwareSerial.h> //knjižica koja sadrži naredbe za komunikaciju sa shieldom
LCD5110 myGLCD(9,10,11,12,13); // pinovi na kojima se nalazi ekran
extern uint8_t SmallFont[]; // font koji ekran koristi
#define rxPin 2 //serial input
#define txPin 3 //serial output
SoftwareSerial mySerial(rxPin, txPin); //komunikacija sa inputom i outputom pomoću serial naredbi
void setup()
myGLCD.InitLCD();
22
myGLCD.setFont(SmallFont);
mySerial.begin(19200); //definiramo baud rate-a za serijsku komunikaciju
Serial.begin(19200);
myGLCD.clrScr(); //početno brisanje sadržaja s ekrana
myGLCD.print("Tino", CENTER, 0); //na vrhu ekrana centrirano prikazuje se tekst Tino
myGLCD.print("Grguric", CENTER, 12); // u sredini ekrana prikazuje se tekst Grgurić
myGLCD.print("Telematika", LEFT, 30); //u donjem lijevom dijelu ekrana prikazuje se tekst Telematika
myGLCD.update(); // prehodno definirani tekst se uploada na ekran
void loop()
8.4. PRIMJER KODA ZA USPOSTAVU POZIVA
Za razliku od koda sa slanje SMS poruke kod za uspostavu poziva je puno
jednostavniji. Također nije poželjno da se definira u void loop sekciji.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7,8);
void setup()
mySerial.begin(19200);
Serial.begin(19200);
mySerial.println("ATD + #Brojmobitela;"); //šalje se naredba za poziv i ciljani telefonski broj
delay(100);
mySerial.println();
void loop()
23
8.5. PRIMJER KODA ZA USPOSTAVU POZIVA KROZ FAZE
Ovaj kod prikazuje kod za uspostavu poziva kroz faze za uspostavu poziva koje se
prikazuju na nokiinom ekranu koji je spojen na GSM/GPRS shield.
#include <LCD5110_Graph.h>
#include <SoftwareSerial.h>
LCD5110 myGLCD(9,10,11,12,13);
extern uint8_t SmallFont[];
#define rxPin 2
#define txPin 3
SoftwareSerial mySerial(rxPin, txPin);
void setup()
myGLCD.InitLCD(); //Definiraju se početne postavke ekrana
myGLCD.setFont(SmallFont);
myGLCD.clrScr();
myGLCD.print("POZIV", CENTER, 0);
myGLCD.print("Komunikacija", LEFT, 12); //na ekranu se ispisuje poruka
myGLCD.print("sa shieldom", LEFT, 30);
myGLCD.update();
delay(1000);
mySerial.begin(19200);
Serial.begin(19200);
mySerial.println("ATD +#broj mobitela;" ); // U shield se šalje naredba za svanje određenog telefonskog broja
mySerial.println();
myGLCD.clrScr();
myGLCD.print("POZIV", CENTER, 0);
myGLCD.print("Pozivam", LEFT, 12); //na ekranu se prikazuje tekst i brojtelefona koji se poziva
myGLCD.print("#broj mobitela;", LEFT, 30); // broj telefona se ovdje upisuje ručno ne šalje se automatski
myGLCD.update();
delay(5000);
myGLCD.clrScr();
myGLCD.print("POZIV", CENTER, 0);
myGLCD.print("Poziv je", LEFT, 12); // nakon pet sekundi na ekranu se prikazuje ova poruka
myGLCD.print("Uspostavljen", LEFT, 30);
myGLCD.update();
void loop()
24
8.6. PRIMJER KODA ZA SLANJE SMS-A KROZ FAZE
Ovaj kod prikazuje način slanja sms poruke kroz faze za slanje SMS poruke koje se
prikazuju na ekranu koji je spojen na GSM/GPRS shield.
#include <LCD5110_Graph.h>
#include <SoftwareSerial.h>
LCD5110 myGLCD(9,10,11,12,13);
extern uint8_t SmallFont[];
#define rxPin 2
#define txPin 3
SoftwareSerial mySerial(rxPin, txPin);
char *init1="AT+IPR=19200"; //inicijalizirane su varijable koje se kasnije šalju umjesto naredbi
char *init2="AT+CMGF=1"; //to su naredbe za komunikaciju sa shieldom, definiranje SMS centra te slanje
char *init3="AT+CSCA=+385910401"; //znaka br 13 između naredbi.
unsigned char CR=13;
void setup()
myGLCD.InitLCD();
myGLCD.setFont(SmallFont); //definiranje ekrana
mySerial.begin(19200);
Serial.begin(19200); //definiranje baund rate-a
Serial.println("OK.");
myGLCD.clrScr();
myGLCD.print("SMS", CENTER, 0);
myGLCD.print("GPRS Shield ", LEFT, 12); //početna poruka na ekranu
myGLCD.print("Tino ", LEFT, 30);
myGLCD.update();
mySerial.write(init1); //Unos prethodno definiranih varijabli
mySerial.write(CR);
delay(1000);
mySerial.write(init3);
mySerial.write(CR);
delay(1000);
mySerial.write(init2);
mySerial.write(CR);
delay(1000);
Serial.read();
myGLCD.clrScr();
myGLCD.print("SMS", CENTER, 0);
myGLCD.print("Pripremanje", LEFT, 12);
myGLCD.print("SMS poruke", LEFT, 30); //ispis na ekranu prije slanja poruke
myGLCD.update();
mySerial.write("AT+CMGS=\"#broj mobitela;"\""); //upis broja mobitela na koji se šalje SMS
mySerial.write(CR);
delay(1000);
25
mySerial.write("Probna poruka sa arduino uredaja!"); // tekst poruke
mySerial.write(CR);
delay(1000);
myGLCD.clrScr();
myGLCD.print("SMS", CENTER, 0);
myGLCD.print("Saljem na br.", LEFT, 12); // prikaz broja na koji se šalje poruka
myGLCD.print("#broj mobitela;"", LEFT, 30); // broj se unosi ručno
myGLCD.update();
mySerial.write(26); // zamjenjuje CTRL+Z ili HEX 1A koje je potrebno za potvrdu slanja
delay(3000);
myGLCD.clrScr();
myGLCD.print("SMS", CENTER, 0);
myGLCD.print("Poslano :D", CENTER, 15); //prikaz da je poruka poslana
myGLCD.update();
void loop()
8.7. PRIMJER KODA S IZBORNIKOM
Ovaj kod prikazu prethodno prikazane kodove spojene u jedan sa izbornikom.
Izbornik se koristi putem terminala. Šalje se odabir iz izbornika te shield obrađuje naredbu, za
definiranje izbornika koristi se if/else funkcija.
#include <LCD5110_Graph.h>
#include <SoftwareSerial.h>
LCD5110 myGLCD(9,10,11,12,13);
extern uint8_t SmallFont[];
#define rxPin 2
#define txPin 3
SoftwareSerial mySerial(rxPin, txPin);
void setup()
myGLCD.InitLCD();
myGLCD.setFont(SmallFont); // definiranje ekrana
mySerial.begin(19200);
Serial.begin(19200); // definiranje baund rate-a
Serial.print("izbornik\n\n");
Serial.print("1.SMS\n"); // prikaz izbornika u terminalu
Serial.print("2.Poziv\n");
myGLCD.clrScr();
myGLCD.print("ARDUINO", CENTER, 0);
myGLCD.print("GLAVNI", CENTER, 15); // početni prikaz teksta na ekranu
myGLCD.print("IZBORNIK", CENTER, 30);
myGLCD.update();
void loop()
26
int izbor= Serial.read(); // uneseni odabir se sprema u varijablu izbor
if (Serial.available() > 0)
delay(100);
if(izbor == '1') // ako je izbor broj jedan šalje se poruka
Serial.print("\nsaljem SMS\n"); //u terminalu se ispisuje saljem SMS
myGLCD.clrScr();
myGLCD.print("ARDUINO", CENTER, 0);
myGLCD.print("Priprema SMS-a", LEFT, 12); //na ekranu se ispisuje poruka priprema SMS-a
myGLCD.update();
mySerial.print("AT+CMGF=1\r"); //poruku šaljemo u ascII obliku
delay(100);
mySerial.print("AT+CSCA=\"+385910401\"; \r"); //definiranje SMS centra
delay(100);
myGLCD.clrScr();
myGLCD.print("ARDUINO", CENTER, 0); //Na ekranu se prikazuje proruka slanje poruke
myGLCD.print("Slanje SMS-a", LEFT, 12);
myGLCD.update();
mySerial.println("AT + CMGS = "#broj mobitela\""); //definira se broj mobitela
delay(100);
mySerial.println("poruka sa arduino uredaja"); // tekst poruke
delay(100);
mySerial.println((char)26); // zamjenjuje CTRL+Z ili HEX 1A koje je potrebno za potvrdu slanja
delay(100);
mySerial.println();
delay(500);
myGLCD.clrScr();
myGLCD.print("ARDUINO", CENTER, 0);
myGLCD.print("Poslano :D", CENTER, 15); //Prikazuje na ekranu da je poruka poslana
myGLCD.update();
else if(izbor == '2') //ako je uneseni izbor dva
myGLCD.clrScr();
myGLCD.print("ARDUINO", CENTER, 0); //ekran prikazuje koji tel. Broj se poziva
myGLCD.print("Pozivam", CENTER, 15);
myGLCD.print("#broj mobitela;" , CENTER, 30);
myGLCD.update();
Serial.print("\nPozivam\n"); // terminal ispisuje tekst pozivam
mySerial.print("ATD +#broj mobitela;"); // definira se broj mobitela kojem upučujemo poziv
delay(100);
mySerial.println();
delay(1000);
myGLCD.clrScr();
myGLCD.print("ARDUINO", CENTER, 0);
myGLCD.print("Pozvano :D", CENTER, 15); // ekran ispisuje da je broj pozvan
myGLCD.print(""#broj mobitela;" ", CENTER, 30);
myGLCD.update();
27
9. OPIS RADA CIJELOG SUSTAVA
GSM/GPRS shield primarno funkcionira tako da se na Arduino uploada sketch za
komunikaciju putem terminala, nakon toga se spaja GSM/GPRS shield. Bitno je da shield ima
posebno napajanje koje se spaja na Arduino mikrokontroler jer bez dodatnog vanjskog
napajanja shield se ne može spojiti na mobilnu mrežu. Za spajanje na mrežu potrebno je
shield spojiti u računalo te pokrenuti terminal, nakon spajanja držati „PWR“ tipku na
GSM/GPRS shieldu. Prilikom spajanja na mrežu plava ledica pod nazivom „NET“ počinje
treperiti te shield šalje odgovor u terminal. Terminal mora biti podešen kao i Arduino na
baund rate 19200. Nakon toga shield je spreman za uporabu. Shield se koristi s prethodno
opisanim naredbama, omogućava sve osnovne funkcije kao i normalan mobitel. Prilikom
slanja SMS poruke obavezno je potrebno upisati broj SMS centra operatera čiju SIM karticu
shield koristi jer inače će poruke kasniti ili neće uopće dolaziti. Za uspostavu poziva potrebno
je posjedovati sušalice i mikrofon, no osim tih zahtjeva uspostava poziva je vrlo jednostavna.
Shield se može koristiti i sa sketchevima za Arduino, znači potrebno je u sketchu definirati
sve naredbe redoslijedom te ih slati preko sketcha u shield umjesto preko terminala. Prednost
korištenja sketcha nad terminalom je ta što s njim možemo lakše koristiti ekran Nokie 5110,
možemo shieldu zadati neku automatsku radnju ili smanjiti zahtjeve za unosom naredbi u
terminal. Ekran se spaja na predviđeno mjesto na shieldu te se definira u sketchu , obavezno s
interneta treba preuzeti library s naredbama za taj ekran. Na ekran je potrebno zalemiti pinove
ili žice kako bi se mogao spojiti te dolazi u bijeloj i plavoj boji.
Slika 10. Shema spajanja shielda za uporabu s terminalom
28
9.1. PRIKAZ ELEKTRIČNE SHEME
U narednim shemama prikazana su dvije osnovne sheme spajanja, shema spajanja
Arduino uređaja i GSM/GPRS shielda i spajanje shielda i Nokia 5110 ekrana.
9.1.1. SHEMA SPAJANJA ARDUINA I GSM/GPRS SHIELDA
GSM/GPRS Shield se spaja preko Arduino uređaja te obuhvaća sve njegove pinove
kao što je vidljivo na sljedećoj shemi.
Slika 11. Električna shema spajanja shielda na Arduino uređaj
29
9.1.2. SHEMA SPAJANJA GSM/GPRS SHIELDA i NOKIA EKRANA
Ekran za Nokiu 5110 se spaja na predviđeno mjesto na GSM/GPRS shieldu. Ti pinovi
su na shildu označeni kao „NOKIA5110_LCD“. Ekran ima označene pinove od 1 do 8 te ih je
tim redom potrebno spojiti, ukoliko nisu spojeni tim redom ekran dobiva samo slabo
osvjetljenje.
Slika 12. Električna shema spajanja shielda i ekrana za Nokiu 5110
30
10. ANALIZA RADA
U početku uređaj je trebao imati tipkovnicu koja je trebala omogućiti upravljanje, ali
to nije postignuto. No uređaj i bez tipkovnice radi odlično te obavlja sve funkcije koje se
mogu tražiti od mobilnog uređaja. Može ostvariti i primiti pozive, poslati i primiti SMS
poruke te uz to pokazati podatke na ekranu. Problem koji se javio prilikom izrade uređaja je
kvar na ispravljaču koji je došao uz GSM/GPRS shield. Ispravljač jednostavno nije želio
raditi, nije napajao shield te zbog toga nije bilo moguće isprobati niti jednu funkciju uređaja
osim ispisivanja teksta na ekranu. Nije bilo moguće isprobati niti jednu funkciju mobilnog
uređaja iz razloga što se shield nije mogao spojiti na mrežu. Nakon što sam nabavio novi
ispravljač uređaj je radio izvrsno osim slanja SMS poruka, često su kasnile ili nisu bile
poslane. Problem je bio taj što nisam definirao SMS centar u shieldu, nakon što je to bilo
definirano uređaj je radio super. Kasnije sam izradio sketch koji je omogućio slanje SMS
poruke prikazujući stanje slanja SMS kroz faze na Nokiinom ekranu te sketcheve za zvanje na
druge uređaje, za ispis teksta na ekran. Zamišljeno rješenje je bilo napraviti izbornik kao na
klasičnom mobitelu te navigirati pomoću tipkovnice. To nažalost nije bio slučaj, zbog
nemogućnosti spajanja tipkovnice. No uspio sam napraviti upravljanje uređaja pomoću
terminala. Uređaj omogućava sve kao i što je bilo zamišljeno, jedino što nema spojenu
tipkovnicu. Projekt je bio završen kao što je bilo i predviđeno u terminskom planu.
Slika 13. Prikaz složenog sustava
31
11. TROŠKOVNIK
Sljedeća tablica prikazuje predmete koji su se koristili za izradu projekta te njihovu cijenu. Uređaji su prikazani u stranim valutama te su
cijene pretvorene u domaću valutu.
Kol. NAZIV CIJENA
(HRK)
CIJENA (strana valuta) OPIS
1 Arduino Uno 152.78 20.00€ U ovom projektu koristio se Arduino Uno.
1 GSM/GPRS Shield 278.64 49.99$ Korišten je SIM9000 Shield.
1 USB kabel 19.78 3.55$ Koristi se klasični USB 2.0 kabel kao za printer.
1 Slušalice i mikrofon 279.00 Može se kupiti i odvojeno, ovdje je korišten Plantronics headset. Mogu biti
korištene i jeftinije slušalice.
1 Nokia 5110 ekran 32.83 5,89$ Ekran koji se spaja na shield.
1 Ispravljač 9V 89.12 15,99$ Univerzalni ispravljač.
1 SIM start paket 10.00 U ovom slučaju Vip start paket.
1 Vipme bon 50 kn 50.00 Budući da start paket ima samo 10.00 kn bilo je potrebno nadoplatiti račun.
UKUPNO 912.15
32
12. LITERATURA
[1]Emil Prpić - predavanja s kolegija Mobilna komunikacija
[2]http://www.angelfire.com/ne/svetac/diplomski.htm - Neven Zubak - Razvoj mobilne
telefonije
[3]http://en.wikipedia.org/wiki/General_Packet_Radio_Service - Wikipedia - GPRS
[4]http://en.wikipedia.org/wiki/Universal_Mobile_Telecommunications_System - Wikipedia
- UMTS
[5]http://en.wikipedia.org/wiki/Arduino - Wikipedia - Arduino
[6]http://www.arduino.cc/ - Arduino službena stranica
[7]http://www.instructables.com/id/ArduinoPhone/ - Primjer sličnog projekta br. 1
[8]http://yexiaobo-seeedstudio.github.io/ArduinoPhone/ -Software za primjer projekta br. 1
[9]http://blog.arduino.cc/2013/08/12/diy-cellphone/ - Primjer sličnog projekta br. 2
[10]http://arduino.cc/en/Main/arduinoBoardUno - Opis Arduino sustava
[11]http://www.seeedstudio.com/wiki/index.php?title=GPRS_Shield_v0.9b – Opis
GSM/GPRS Shielda
[12]http://www.robotshop.com/media/files/PDF/gprs-shield-sld33149p.pdf - Opis
GSM/GPRS Shielda
[13]http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield - Upute za korištenje
shielda
[14]http://www.elecfreaks.com/wiki/index.php?title=EFCom_GPRS/GSM_Shield - Upute
za korištenje shielda
[15]http://elecfreaks.com/store/download/datasheet/rf/SIM900/SIM900_AT%20Command%2
0Manual_V1.03.pdf – Detaljan opis naredbi za korištenje GSM/GPRS shielda