You are on page 1of 45

VELEUILITE U RIJECI

Dimitrij Vukeli

UPRAVLJANJE MODELOM VOZILA PUTEM
RAUNALNE MREE I RASPBERRY PI RAUNALA

ZAVRNI RAD

















Rijeka, 2013.


VELEUILITE U RIJECI

Struni studij Telematike









UPRAVLJANJE MODELOM VOZILA PUTEM
RAUNALNE MREE I RASPBERRY PI RAUNALA

(zavrni rad)













MENTOR STUDENT

Marino Franui Dimitrij Vukeli

MBS: 2427004056/10











Rijeka, lipanj 2013.
vELEUerLrSrn u RTJECT
srnudrvr srnDrJ TELEMATTKE
Rijeka, 01.03.2013
ZADATAK
za zavrini rad
Pristupniku Dimitrij Vukelid MBS: 2427004056110
Studentu strudnog studija telematike izdaje se zadatak zavr5ni rad
-
tema zavr5nog rada
pod nazivom:
Upravljanje modelom vozila putem ra6unalne mreie i Raspberry Pi raiunala
Sadriaj zadatkaz
Opisati upravljanje vozilom na daljinu. Opisati Raspberry Pi radunalo. Dati pregled
mogudih primjena Raspberry Pi radunala. Objasniti mogudnost upravljanja putem
radunalne mre?.r- uredajima spojenim na Raspberry Pi radunalo. Povezati volan i radunalo.
Izraditi sklop za povezivanje Raspberry Pi radunala i modela voala. Izraditi potrebne
aplikacije za udaljeno upravljanje vozilom. Prikupiti video pr*laz s kamere postavljene
na vozilo.
Preporuka:
Zainadu sustava preporuda se kori5tenje
javno
dostupnih materijala i projekata koji su se
bavili slidnom tematikom.
Rad obraditi sukladno odredbama Pravilnika o zawlnom radu VeleudiliSta u Rijeci.
T.adano: 01. oZuj ka 2013 Predati do: 5. srpnja 2013
Marino FranuSii, predavad
Voditelj studija:
r -
a""-- Q.D--
Zadattkprimio dana: 01. oZujka 2013
.-.ff
L"/n
Dostavlja se:
-
mentoru
-
pristupniku
Dimitrij Vukelid
IZJAVA
Izjavliujem da sam zawsni rad pod naslovom UPRAVU44'F HoDFAom
cn
ptrierr
P.s&rNArue [ere-F r ?rspBERLY Pt aA;oilsrA izradiosamostalnopod
nadmrom i uz strudnu pomo6 mentora mRetNA lParqutt
dn

SAETAK

Upravljanje na daljinu olakava i ubrzava procese koje ovjek izvodi. Od davnina on
istrauje i izrauje alate koji to ine. Dananjim napretkom tehnologije zrak oko nas
isprepleten je signalima za daljinsku komunikaciju i/ili upravljanje, bilo da se radi o zabavi ili
radnim procesima. Vozila upravljana na daljinu nalaze se u svim sferama ljudskog ivota, od
malih nogu dijete se igra autom ili brodom na daljinsko upravljanje i tako postaje svjestan da
moe upravljati sa strojem. Rover na Marsu ili vozilo za razminiranja primjer su vozila
upravljanih na daljinu koje pomau u istraivanju ili zamjenjuju ovjeka u radnjama opasnima
za ivot. Prvi dio rada obrauje teoretski dio upravljanja na daljinu kao i potrebne elemente
koritene u izradi rada, a drugi dio aplikativni dio potreban za izvedbu upravljanja.

Kljune rijei: upravljanje, daljina, aplikacija, lokalna mrea


SADRAJ
1. UVOD .................................................................................................................................... 1
2. UPRAVLJANJE VOZILIMA NA DALJINU ................................................................... 2
2.1. Princip rada upravljanja vozilom na daljinu ............................................................................................... 4
3. RASPBERRY PI RAUNALO ......................................................................................... 12
4. NAIN POVEZIVANJA NA RAUNALNU MREU ILI INTERNET ..................... 16
5. SUELJE ZA PROGRAMIRANJE APLIKACIJA KOJE SE KORISTI ZA
UPRAVLJANJE ULAZIMA/IZLAZIMA RASPBERRY PI RAUNALA ..................... 18
5.1. Izraeni JavaAPI za povezivanje ...............................................................................................................19
5.1.1. Metoda u klasi za odreivanje parametara konekcije ............................................................................ 19
5.1.2. Metoda definiranja GPIO prikljunica u klasi definicije .......................................................................... 20
5.1.3. Metoda postavljanja atributa prikljunice u klasi definicije ................................................................... 20
5.1.4. Metoda pozivanja makro funkcije definirane na serveru ....................................................................... 21
5.1.5. Metoda slanja HTTP zahtjeva ................................................................................................................. 22
6. IZRADA APLIKACIJE ..................................................................................................... 23
6.1. Izrada dijela aplikacije koji komunicira s volanom ....................................................................................25
6.2. Izrada dijela aplikacije koji prosljeuje naredbe na Raspberry Pi .............................................................27
6.3. Prilagodba serverske aplikacije koji upravlja vozilom ...............................................................................28
6.3.1. Definiranje prikljunica ....................................................................................................................... 29
6.3.2. Definiranje funkcija ............................................................................................................................ 29
6.3.3. Makro naredbe ................................................................................................................................... 30
6.3.4. Sigurnosni mehanizam ....................................................................................................................... 30
6.3.5. Registriranje skripte ........................................................................................................................... 32
6.4. Izrada dijela aplikacije koji prima video prikaz s kamere ..........................................................................32
7. OPIS RADA CJELOKUPNOG SUSTAVA I SVIH FUNKCIONALNOSTI ............... 35
8. ZAKLJUAK ..................................................................................................................... 36
POPIS KRATICA .................................................................................................................. 37
LITERATURA ....................................................................................................................... 37
POPIS SLIKA ......................................................................................................................... 38
zavrni rad

1


1. UVOD

ovjek od svojih samih poetaka kreira alate i strojeve koji bi mu olakali pri
obavljanju poslova. Daljinsko upravljanje moe se definirati kao procesi koji su upravljani
na daljinu, automatizirano ili manualno uz pomo ovjeka. Proces definiramo kao niz
odreenih, smislenih aktivnosti koje imaju odreeni cilj, a upravljati moemo bilo to, radni
stroj, vozilo, softver, kunu automatizaciju pa ak i s ovjekom samim. Iako moda na prvi
pogled nema smisla da je mogue daljinski upravljati s ovjekom, izdavanje radnog zadatka
preko mobilnog ureaja je upravo to. Nadreena osoba je udaljena od radnika koji izvrava
radni proces i zadaje mu radni zadatak. Identino se ponaa i daljinski upravljano vozilo
igraka, dijete eljenu naredbu prenosi kontrolerom beino na vozilo.
Dananja daljinski upravljana vozila ne razlikuju se mnogo od prvih pokuaja
upravljanja ureaja radio valovima Nikole Tesle, 1898. godine kada se i prvi puta spominje
izraz - "teleautomaton" teleautomatika, danas prihvaena kao telematika. Tehniki su,
dananja vozila, superiornija u pogledu veliine, brzine odziva i koliine utroene energije, no
princip rada je ostao potpuno isti. Operator putem daljinskog kontrolera upravlja ureajem. I
dalje se koriste radio signali kao i u Teslinom brodu, a ureaji su napajani baterijama.
Svijet danas je nezamisliv bez daljinskih upravljaa, rijetko da postoji kuanstvo bez
njega. Daljinski upravljana vozila su svoju primjenu nala u svim sferama ljudskog ivota, od
vojske do znanstvene zajednice i medicine. Ubrzanim razvojem tehnologije ovjek se sve vie
prilagoava injenici da mora manje razmiljati jer ga zamjenjuju pametni daljinski
upravljani strojevi koji imaju mogunost ispraviti pogreku operatora u kritinim situacijama
(vozilo koje daljinskim putem dobiva informaciju o moguoj koliziji s drugim vozilom pa
preuzima kontrolu nad vozaem i koi kako bi izbjegao koliziju). Koliko je to poboljanje, a
koliko hendikep pokazat e vrijeme.

zavrni rad

2

2. Upravljanje vozilima na daljinu

Sustav za daljinsko djelovanje (eng. teleoperation) podrazumijeva razliite naine upravljanja
udaljenim ureajem koji je pomou odreenog komunikacijskog medija povezan s osobom
koja na udaljenoj lokaciji upravlja i kontrolira pokrete: vozila, robota i slinih ureaja
smjetenih u stvarnom svijetu. Povezanost operatora s udaljenim ureajem dovodi do osjeaja
fizike prisutnosti na udaljenoj lokaciji, to pridonosi kvaliteti reakcija operatora prilikom
odreenih situacija, pokreta u kojima se sam ureaj nalazi. Taj osjeaj dovodi do poveanja
osjetilno-motornih sposobnosti u rjeavanju zadataka koji se izvravaju na udaljenoj lokaciji;
pomicanje, skretanje, podizanje ili sputanje tereta odnosno openito interakcija s okolinom.
Rukovanje i upravljanje na daljinu dobiva osobiti znaaj u aktivnostima koje zahtijevaju
izrazitu preciznost, tetne su za ivot operatera ili zahtijevaju brzo djelovanje kao to je
primjer u kirurgiji, vojnim aktivnostima, rukovanju opasnim tvarima i slino. Obavljanjem
aktivnosti na udaljenim lokacijama na koje operator nije mogao pristupiti zbog opasnosti po
ivot ili potrebe za brzim djelovanjem na nekoj drugoj lokaciji, poveana je djelotvornost i
uinkovitost te kvaliteta ivljenja.
Iluzija o prisutnosti operatora na udaljenoj lokaciji postignuta je odreenim stupnjem prividne
stvarnosti. Sloeni elektro-kemijski procesi interpretiraju se u mozgu iz svih osjetila na
temelju steenih predznanja o svijetu, odnosno mozak ima referentni model, znanje koje je
pohranjeno u njemu. Ta znanja nisu samo informacije iz okoline ve percepcije osjetila i
mozga koje je ovjek u nekoj situaciji primio iz okoline i pohranio ih u svojoj memoriji.
Memorirana znanja stvaraju osjeaj prividne stvarnosti u trenutku upravljanja na daljinu.
Mogue je potpuno se nalaziti u svijetu prividnosti, operator ne vidi nita drugo osim
prividnog svijeta sa zaslona raunala, ali ako operator nije u potpunosti uivljen u taj svijet
onda se govori o djelominom efektu. Iz toga razloga potrebno je poboljati elemente koji
stvaraju osjeaj prividne stvarnosti. Ako je rije o raunalnoj aplikaciji, potrebno je
unaprijediti kvalitetu elemenata aplikacije koji stvaraju osjeaj virtualne stvarnosti. Dananja
osobna raunala, pametni telefoni i tablet ureaji uskoro bi mogli navoditi ljude u raznim
aktivnostima pa ak i upravljati obuom koja ljude odvodi do eljenog odredita
zavrni rad

3

Upravljanje udaljenim ureajem patentirao je jo davne 1893. godine Nikola Tesla,
koji je osmislio upravljanje vozilima i plovilima pomou radiovalova. Najvea je
komercijalna upotreba daljinskih upravljaa kojima se iz udobnih naslonjaa upravlja
televizorima. Nakon tolike udobnosti ugodnog naslonjaa Nintendova Wii igraa konzola
omoguila je fiziku aktivnost tako da sustav senzora prati ljudske pokrete i na taj nain
zahtjeva aktivan fiziki angaman koji je natjerao svog korisnika da se podigne iz udobnog
naslonjaa. Upravljanje vozilima na daljinu moe se pratiti kroz djeje igrake s obzirom da
su komercijalno najdostupnije. Prve djeje igrake, autii na daljinska upravljanja zapravo to i
nisu s obzirom da su vozilo i daljinski upravlja bili povezani kabelom koji je omoguavao
udaljavanje osobe od vozila tek pokoji metar, koliko je dozvoljavala duina kabela. Neto
kasnije razvile su se igrake, vozila s pravim daljinskim navoenjem do udaljenosti koje je
omoguavao radio signal izmeu vozila i daljinskog upravljaa. No, ni takav nain
upravljanja nije stvorio iluziju stvarnog navoenja vozila. Raunalne igre te ureaji poput
volana koji se povezuje s raunalom i slui upravljanju igrom doveli su do poveanja
stvaranja osjeaja stvarnog upravljanja vozilom koje se zapravo pokree u digitalnom svijetu
odnosno aplikaciji. Takve vrste simulacija koriste se u mnogim granama, kao to su vojne i
medicinske svrhama, odnosno proizvodnja i aktivnosti koje zahtijevaju odreenu preciznost
prilikom navoenja.
Vozila koja bez neposrednog upravljanja ovjeka prikupljaju odreene informacije iz
okoline mogu djelovati potpuno samostalno i razmjenjivati podatke s okolinom jeftinije i
pouzdanije te sigurnije za ovjeka. Primjer je vozilo poslano na Mars kako bi prikupilo
podatke prije nego to ljudska posada posjeti taj planet. Njegov zadatak je prikupljati
uzorke tla i atmosferske podatke, obraivati ih i informacije slati u centar na Zemlji. Vozilo za
razminiranje je primjer vozila koje zamjenjuje ovjeka u opasnim zadatcima. Naalost zbog
visoke cijene nabavke u Hrvatskoj se jako malo ili uope ne koriste.
Vanost automatiziranih sustava u vojnim svrhama je od posebne vanosti to je
posebno vidljivo kod bespilotnih letjelica koje se koriste jo od sredine prolog stoljea i
godinama se njihove sposobnosti i mogunosti samo poboljavaju bez obzira da li djeluju u
zraku, na kopnu ili u vodi. Amerike su vojne snage obavljale pedesetih godina prolog
stoljea, nadgledanja sovjetskih teritorija pomou bespilotnih letjelica koje su upravljane
daljinskim putem prikupljale vane informacije te su ih operatori obraivali u vojnim bazama
zavrni rad

4

bez opasnosti prelaska nedozvoljenih granica. Takvih je primjera u vojnoj industriji veliki
broj, ali nisu svi poznati irokoj javnosti. injenica da danas svatko tko se bavi
automatizacijom moe razvijati vozilo upravljano na daljinu otvara pitanje koliko je daleko
danas otila vojna industrija kada prosjeni ovjek uspijeva automatizirati svoju vlastitu
okolinu.

2.1. Princip rada upravljanja vozilom na daljinu

Svako radijski upravljano vozilo (u daljnjem tekstu RC) sastoji se od dvije osnovne
komponente, prijemnika i predajnika, iako se u naprednijim vozilima nalaze primopredajnici s
obje strane. Predajnik se nalazi kod operatera (unutar upravljaa) i slui za odailjanje
obraenih informacija s upravljaa prema vozilu. Prijemnik u vozilu spojen je na ostatak
upravljake logike, prima i interpretira dobivene informacije te ih alje prema upravljakoj
logici.
Signal se, izmeu operatera i vozila, prenosi beinim putem koristei radijske
frekvencije. Postoji odreen (dodijeljen od strane regulatornih agencija) spektar frekvencija
kao i snaga odailjanja koje se smiju koristiti za upravljanje vozilima. Iako postoje velike
razlike u regulativi meu dravama o koritenju frekvencija, isti raspon se koristi za svaki
ureaj svugdje u svijetu kako slijedi :
Radio kontrola: 35 - 73 MHz (posebni RC kanali)
Telemetrijski Podatci: 868 - 915 MHz (Europa SRD G3 podruje/ISM
podruje)
Radio kontrola / Telemetrija / Video konekcije: 2.4 GHz (ISM podruje)
Podatkovne / Video konekcije : 5 GHz (ISM podruje)
Podruja koja se najee koriste u pojedinim dravama svijeta
(https://pixhawk.ethz.ch/tutorials/frequency):
Austrija
27 MHz RC modeli (sve vrste)
zavrni rad

5

35 MHz RC samo avioni i helikopteri (35.000 - 35.220 MHz)
40 MHz RC modeli
o 40.665 - 40.695 MHz (kanali 50 - 53) za avione, automobile i brodove
2.4 GHz je dozvoljena za koritenje (10 mW i 100 mW)
Francuska
27 MHz RC modeli (sve vrste)
35 MHz (35.000 and 35.010 MHz) Avioni
41 MHz RC modeli
o 41.000 - 41.100 MHz Avioni
o 41.110 - 41.200 MHz svi modeli
72 MHz (72.210 - 72.490 MHz) svi modeli
2.4 GHz je dozvoljena za koritenje (10 mW i 100 mW)

Njemaka
27 MHz RC modeli (sve vrste, standardna frekvencija za jeftine
igrake)
35 MHz RC samo avioni i helikopteri
40 MHz RC modeli
o 40,665 - 40,695 (kanali 50 - 53) za avione, automobile i brodove
o 40,715 - 40,985 (kanali 54 - 92) za automobile i brodove
2.4 GHz je dozvoljena za koritenje (10 mW i 100 mW)

Ako se govori o jednostavnim igrakama, parametri upravljanja su kretanje naprijed,
natrag, lijevo i desno. Takvi upravljai koriste tipkala, popularno zvane digitalne komande,
zbog stanja 0/1 ukljueno iskljueno (Slika 1).
zavrni rad

6

Slika 1: Jednostavni kontroler

Izvor: http://battlemachinesrc.com/images/lg/controller_lg.jpg
Kod naprednijih upravljaa stvari se malo kompliciraju i broj parametara se poveava
zbog naina upravljanja vozilom. Napredniji upravljai koristi analogne komande u obliku
potenciometara, kako bi se moglo upravljati brzinom vozila i finim zakretom kuta prednjih
kotaa. U pravilu kontroliranje ovakvih vozila zahtjeva odreeno prilagoavanje na upravlja
i potrebno je prvo vjebati kako ne bi dolo do unitavanja samog vozila. Tada se koriste
primopredajnici u upravljaima, jer osim to upravlja alje operaterove komande vozilu, on i
prima informacije s vozila, brzinu, stanje napona baterije, trenutnu potronju struje,
temperaturu motora pa ak i video sliku s kamere iz vozila (Slika 2).
Slika 2: Napredni kontroler

Izvor : http://fpvcentral.net/wp-content/uploads/2012/04/osrc.jpg

zavrni rad

7

U vozilu se nalazi upravljaka logika i prijemnik/primopredajnik. Ona upravlja, kako
joj i samo ime kae, motorima vozila. ak i najjednostavnija vozila moraju imati odreeni
sklop kako bi se mogao mijenjati smjer kretanja odnosno vrtnje motora. U tu svrhu koristi se
H-most (Slika 3).
Slika 3: Prikaz rada H-mosta

Izvor: http://blog.solutions-cubed.com/wp-content/uploads/2012/06/h-bridge_thumb.png

Kako je vidljivo na gornjoj slici, zavisno od kombinacije prekidaa mijenja se polaritet
napona na prikljunicama, a time i sam smjer vrtnje motora. H-most, bilo da se govori o
elektromehanikom uz pomo releja (Slika 4) ili elektronikom uz pomo tranzistora ili
gotovih H-most elemenata (Slika 5) slui kako bi se okrenuo polaritet odnosno smjer vrtnje
istosmjernog motora ponaajui se identino kao prekidai na gornjoj slici.
zavrni rad

8

Slika 4: Relejni H-most

Izvor : obrada autora
Slika 5: LM298 H-most

Izvor:http://upload.wikimedia.org/wikipedia/commons/thumb/2/23/L298_IMGP4533_wp.jpg/220px-
L298_IMGP4533_wp.jpg
Ne ulazei u princip rada istosmjernog motora, bitno je znati da se promjenom
polariteta prikljunica mijenja i smjer vrtnje motora, a da bi to bilo mogue bez kratkog spoja
na prikljunicama koristi se H-most.
Brzina vrtnje, kao i zakret kotaa su upravljani pomou PWM Pulse Width
Modulation metode. Princip PWM-a je emulacija analognog napona digitalnim signalom.
Visoko frekventnim izmjenama logikih stanja (0/1), alju se impulsi napona i zbog histereze
gaenja upravljani motor se bre, odnosno sporije kree. Potrebno je paziti na struju
ukljuenja motora tako da svaki motor nee raditi od 0% PWM-a. Najsigurnije je pokuati sa
70% i onda postepeno smanjivati postotak napona ukljuenja. Mjerenjem struje ukljuenja
motora mogue je utvrditi najpogodniji napon ukljuenja.
zavrni rad

9

Zakret kotaa se vri pomou servo motora (Slika 6).
Slika 6: Prikaz servo motora

Izvor: http://www.ermicro.com/blog/wp-content/uploads/2009/02/servo_00.jpg
To je u osnovi okretni aktuator koji dozvoljava preciznu kontrolu stupnja okreta.
Sastoji se od motora uparenog sa senzorom pozicije preko mjenjaa redukcije. Za kontrolu
takvog motora potreban je posebni kontroler. Najee je maksimalni kut zakreta 180 iako
postoje motori s kutom od 360 koji mogu napraviti kruno gibanje. Upravljanje se takoer
vri PWM metodom samo je u ovom sluaju tono odreeno kakav signal i u kojem trajanju
prenosi odreeni stupanj zakreta motora.
Na slikama (Slika 7 i Slika 8) prikazan je PWM signal, 100 i 50 % radnog ciklusa, na
osciloskopu kod upravljanja brzinom, zelena linija, te zakretom kuta servo motora, crvena
linija. Primjetna je razlika u frekvenciji kojom se odailju impulsi. Dok je, na slici 8, kod
100% PWM signala, upravljanje brzinom ravna linija (3.3 V), upravljanje zakretom i dalje
ima impuls odreenog trajanja. Prikaz je informativnog karaktera, koritene su runo izraene
sonde spojene na ulaz audio kartice raunala.
zavrni rad

10

Slika 7: PWM 50%

Izvor : obrada autora
Slika 8: PWM 100%

Izvor : obrada autora
Na slici (Slika 9) prikazana je blok shema elektronike kontrole brzine motora (ESC
eng. Electronic speed control) i kruga za otklanjanje baterije (BEC eng. battery eliminator
circuit). Sva vozila na daljinsko upravljanje vie klase obvezno u sebi imaju ova dva sklopa.
Prvi slui za regulaciju brzine i smjera vrtnje motora (ESC), a drugi za napajanje kontrolera i
aktuatora(BEC).
zavrni rad

11

Slika 9: Shema ESC-a i BEC-a u radu

Izvor: obrada autora
ESC i BEC je autor izradio za potrebe zavrnog rada, jer vozilo nije imalo regulaciju
brzine niti servo podeavanje zakreta kuta vozila pa je bilo potrebno izraditi potpuno novu
elektroniku za upravljanje vozila. Autor je vodio rauna o modularnosti vozila pa su odreene
komponente (napajanje Raspberry Pi-a) odvojive od ostatka elektronike ili univerzalne
(prikljunica za kontroler) kako bi olakao daljnju moebitnu nadogradnju vozila.
zavrni rad

12

3. Raspberry Pi raunalo

Raspberry Pi raunalo, pogonjeno Linux ili RISCOS operacijskim sustavom (OS),
veliine je kreditne kartice koje se prikljuuje na televizor/monitor i periferne jedinice kao
tipkovnica ili raunalni mi. Zamiljeno je za mnogobrojne aktivnosti kao to su obrada
teksta, multimedijalni centar, izrada proraunskih tablica, igranje igara, upravljanje vanjskim
ureajima ali prvenstveno u edukacijske svrhe za uenje programiranja (veinom u Python i
Scratch programskim jezicima) i rada na raunalu. Svojom niskom cijenom, oko tristo
kuna, pa i manje, zavisno od modela, dostupan je svim uenicima i studentima koji ele
savladati prve korake programiranja bez ulaganja velikih iznosa u skupu raunalnu opremu.
Postoje dva modela Pi raunala, model A ima 256MB RAM-a, jedan USB ulaz, dok model B
ima 512MB RAM-a, dva USB ulaza i mreni prikljuak. Oba modela pogoni ARM -
1176JZFS procesor na 700MHz (mogue je napraviti overclock na 1GHz). Grafike
mogunosti su gotovo jednake onima XBox konzole, Videocore 4 grafiki procesor sposoban
dekodirati filmove BlueRay kvalitete pri 1080p rezoluciji, te OpenGL ES2.0 i OpenVG
zahvaljujui 3D jezgri. U prodaji su dostupne memorijske kartice s operacijskim sustavom za
Raspberry Pi, ali one se plaaju dodatno te ako se kupuje bez kartice s operacijskim sustavom,
potrebno je koristiti dodatno raunalo za instalaciju operacijskog sustava na Pi raunalo. To
predstavlja negativnu stranu ovog ureaja odnosno govori o njegovoj nesamostalnosti. Ureaj
tei tek 45 g, a njegova veliina je 85.60mm x 56mm x 21mm. Utor za SD karticu i konektori
malo poveavaju veliinu cijelog ureaja (Slika 10).
Slika 10: Raspberry PI

Izvor: http://www.gadgeterija.net/2013/01/20/recenzija-raspberry-pi-komadic-pite-za-svakoga/#.UWFiGTdj9Sp
zavrni rad

13

Instalacija operacijskog sustava na Pi raunalo vrlo je jednostavna s obzirom na to da
postoje gotove Linux distribucije. Preporueni izvor napajanja je 700mA uz 5V, a za
napajanje se mogu koristiti punjai pametnih telefona. Veina prosjenih korisnika koristit e
Raspbian OS baziran na Debian distribuciji Linux i nee imati velikih problema
prilagodbe na suelje ako su prije radili u Windows okruenju (Slika 11).
Slika 11: Suelje Raspberry PI

Izvor:http://www.gadgeterija.net/2013/01/20/recenzija-raspberry-pi-komadic-pite-za-svakoga/#.UWFiGTdj9Sp

Kao i kod svake Linux distribucije za sve napredne sistemske postavke potrebno je
poznavati rad u terminalu i princip rada Linux kao operacijskog sustava. Distribucije se
redovno osvjeavaju novim mogunostima pa je tako najnovija inaica obogaena duanom
za aplikacije i aplikacijom za spajanje na beine mree to je prije bilo potrebno raditi u
terminalu.
Osim spajanja na monitor i koritenja kao klasino raunalo (monitor, mi,
tipkovnica), Raspberry Pi-u je mogue pristupiti preko SSH (eng. Secure Shell) konekcije,
bilo preko terminala u Linux okruenju ili preko Putty aplikacije u Windows
okruenju.
Posebnost Raspberry Pi raunala je u tome to ima mogunost jednostavne interakcije
s vanjskim svijetom koristei GPIO (eng. General Purpose Input Output) prikljunice. To su
zavrni rad

14

dakle digitalni ulazi i izlazi kojima se pristupa putem prikljunica koje se nalaze na ploi
raunala, a ukupno ih ima 26, dva reda po 13 (Slika 12).
Slika 12: Raspored GPIO prikljunica

Izvor : http://sansgridpdx.com/images/6/68/Raspberry-pi-rev-1-gpio-pin-out1.jpg
Kako je vidljivo na slici iznad, osim naponskih (3V3 i 5V) i minus (Ground)
prikljunica, ostale se mogu koristiti kao digitalni ulazi-izlazi ili imaju specijalnu namjenu,
kao to su serijska konekcija (UART) ili I2C za spajanje elemenata.
Kod spajanja posebno treba obratiti panju da prikljunice Raspberry Pi raunala rade
na 3.3V i svako spajanje s ureajima ili elementima koji koriste 5V signal doveli bi do trajnog
unitenja samog raunala. Primjera radi, ako se Raspberry Pi spaja s Arduino
mikrokontrolerom preko UART, serijske veze, potrebno je koristiti MAX2322 sklop izmeu
zavrni rad

15

kako bi se zatitio Raspberry Pi jer serijska veza na Arduinu koristi 5V signal. Ako ih se spaja
putem USB ulaza tada nema problema jer je to interno rijeeno.
zavrni rad

16

4. Nain povezivanja na raunalnu mreu ili internet

Raspberry Pi je mogue povezati u lokalnu raunalnu mreu, a samim time i na
internet na dva naina, ino i beino. ino se spaja putem UTP kabela kao i svako drugo
raunalo. Za beino spajanje potrebno je koristiti USB beini adapter i pritom je potrebno
pripaziti kod kupnje jer Raspberry Pi koristi Linux koji ne podrava sve adaptere, a i
ogranien je sa strujom napajanja preko USB prikljuka pa je mogue da neki adapteri ne
rade..Prije.kupovine.svakako.je.potrebno.provjeriti.web.sjedite
http://elinux.org/RPi_VerifiedPeripherals i provjeriti je li netko ve imao iskustva sa eljenim
adapterom. Isto se odnosi na sve ulazno-izlazne ureaje koji se spajaju na Raspberry Pi.
Kako bi se proveo postupak spajanja na beinu mreu potrebno je ili spojiti Pi na
monitor te tipkovnicu i mi, ili ga ino spojiti na mreu pa koristiti Putty ili neki drugi
SSH terminal. Potom je potrebno u terminalu naredbom lsusb dobiti popis svih USB ureaja
koji su spojeni i provjeriti da li je mreni adapter na popisu. Ako nije, velika je vjerojatnost da
mreni adapter ne radi s Pi raunalom, Za provjeru je potrebno probati iskljuiti Pi i ponovno
ga ukljuiti dok je kartica u USB utoru. Ne preporuuje se koritenje produnih USB kablova.
Ako je na popisu, postoje dva ispravna naina. J edan je preko grafikog suelja, a drugi u
terminalu. Za poetnike se preporuuje koritenje grafikog suelja, ali je tada pored Putty
programa potreban i VNC softver za grafiki prikaz (ako se spaja putem SSH).
Podeavanje preko terminala:
1. Provjeriti inaicu operacijskog sustava i nadograditi s posljednjim
dostupnim nadogradnjama
sudo apt - get updat e
sudo apt - get upgr ade
2. Ponovno pokrenuti (resetirati) raunalo
sudo r eboot
3. Provjeriti postavke suelja
sudo nano / et c/ net wor k/ i nt er f aces
zavrni rad

17

4. Postaviti kao to je navedeno ispod, pod pretpostavkom da je ukljueno
dinamiko dodjeljivanje adresa (DHCP)
aut o l o
i f ace l o i net l oopback
i f ace et h0 i net dhcp
al l ow- hot pl ug wl an0
aut o wl an0
i f ace wl an0 i net dhcp
wpa- r oam/ et c/ wpa_suppl i cant / wpa_suppl i cant . conf
5. Pohraniti postavke ctrl+X , pa zatim odabrati Yes
6. Upisati naredbu za promjenu konfiguracije
sudo nano / et c/ wpa_suppl i cant / wpa_suppl i cant . conf
7. Postaviti konfiguraciju mree
net wor k={
ssi d=" SSI D- I ME MREE"
pr ot o=RSN
key_mgmt =WPA- PSK
pai r wi se=CCMP TKI P
gr oup=CCMP TKI P
psk=" WI FI - ZAPORKA"
}
8. Snimiti postavke ctrl+X , pa zatim odabrati Yes
9. Ponovno pokrenuti (resetirati) raunalo
sudo r eboot
(http://pingbin.com/2012/12/setup-wifi-raspberry-pi/)
Za postavljanje u grafikom modu postoji intuitivna aplikacija pomou koje je jednostavno
podesiti spajanje na beinu mreu.
zavrni rad

18

5. Suelje za programiranje aplikacija koje se koristi za upravljanje
ulazima/izlazima Raspberry Pi raunala

Komunikacija izmeu klijentskog raunala i Raspberry Pi-a se vri pomou
WebIOPi okvira. Serverski dio napisan je u Python programskom jeziku, a za udaljenu
komunikaciju koristi se HTTP (eng. hyper text transfer protocol protokol za internet
pregledavanje) ili CoAP (eng. Constrained Application Protocol jednostavan protokol
zamiljen za komunikaciju jednostavnih ureaja preko interneta) REST (eng.
Representational State Transfer stil softverske arhitekture koja se koristi na internetu,
najee koritene su GET i POST metode za web komunikaciju) API (eng. application
programming interface odreuje kako pojedine softverske komponente djeluju meusobno).
Autor okvira, Eric Ptak, je preradio Apache web server i prilagodio ga kako bi mogao
komunicirati s GPIO prikljunicama Pi-a. Termin komunicirati je pogodniji od
kontrolirati i/ili upravljati jer kako je ve reeno postoje protokoli komunikacije putem GPIO
pa je mogue putem web stranice proslijediti tekstualnu informaciju kroz serijsku vezu dalje
prema periferijama, kao i iitati tekstualne podatke poslane sa strane periferija. Trenutna
verzija je 0.6+, a autor rada aktivno sudjeluje u razvoju okvira. J edan od razloga zato je
upravo ovaj nain komunikacije odabran za rad je, osim testiranja i promoviranje
jednostavnog, a opet monog servera za komunikaciju s periferijama. Osnovni nain rada i
arhitektura WebIOPi okvira prikazana je na slici ispod (Slika 13). Sve informacije te
postupak instalacije i prilagodbe mogue je nai na web sjeditu -
https://code.google.com/p/webiopi/
Slika 13: WebIOPi arhitektura

Izvor: http://trouch.com/wp-content/uploads/2012/11/webiopi-architecture.png
zavrni rad

19

5.1. Izraeni JavaAPI za povezivanje

Za potrebe rada autor je izradio jednostavan J ava API, jWebIOPi, za spajanje J ava
aplikacija na WebIOPi server putem HTTP protokola. API se sastoji od dvije klase, prva
definira metodu spajanja (adresu,vrata (eng. port), korisniko ime i zaporku), a druga metode
komunikacije preko GPIO prikljunica. Na taj nain programeru je olakano komuniciranje sa
serverom jer je API napravljen intuitivno i slian je Arduino nainu pisanja komandi. Kako je
API raen u suradnji sa autorom WebIOPi servera, sve metode kao i J ava doc
(dokumentacija API-ja koja se generira u kodu pozivajui /** , a slui programeru koji koristi
API u objanjenju pozivanja i svrhe metoda) su na engleskom jeziku. Trenutna inaica je 1.0
RC, a osim standardnih funkcija IN, OUT i PWM podrava jo serijsku komunikaciju te
pozivanje makro funkcija i stalno se nadograuje novim funkcionalnostima pratei razvoj
serverske.aplikacije..Dostupan.je,.pod.Apache.2.0..licencom,.na.web.sjeditu
https://code.google.com/p/java-api-for-webiopi/,.a.J ava.doc.na.
http://ucka.veleri.hr/~dvukeli1/.

5.1.1. Metoda u klasi za odreivanje parametara konekcije

Metodom se definiraju adresa raunala, port i eventualno dodatna putanja servera,
unutar if-a su rijeeni odreeni specifini sluajevi unosa adrese. Prvo metoda provjerava je li
programer unio http:// prefiks, ako nije onda ga ona dodaje, nakon toga provjerava ima li
adresa unos webiopi ili root u sintaksi, ako ima onda ga uklanja jer nije potreban odnosno
moe dovesti do ruenja servera. Sljedea provjera je li programer unio dodatnu putanju do
servera i po tome slae konanu sintaksu koju pohranjuje u modelu veze.
public HTTPWebIOPiConnection(String url, String port , String path ){
if(url.contains("http://")){
if(path.contains("webiopi")||path.contains("root")||
path.equals("")){
setAdress(url + ":" + port + "/");
}
else {
setAdress(url + ":" + port + "/"+ path + "/");
}
zavrni rad

20

}
else {
if(path.contains("webiopi")||path.contains("root")||
path.equals("")){
setAdress("http://" + url + ":" + port + "/");
}
else {
setAdress("http://" + url + ":" + port + "/"+ path + "/");
}
}
}

5.1.2. Metoda definiranja GPIO prikljunica u klasi definicije

J edna od etiri mogue definicije metode za koritenje GPIO prikljunica. Programer
unosi predefiniranu konekciju iz prvog primjera, broj GPIO prikljunice i funkciju
prikljunice: in, out, pwm, a metoda je sprema u model. Ova metoda ne koristi autorizaciju za
pristup serveru i koristi se samo ako nije ukljuena zaporka i korisniko ime na WebIOPi
serveru. Postoje jo identina metoda ovoj samo s autorizacijom, metoda za pristup ureajima
(serijska veza) te metoda kojom se definiraju samo konekcija i autorizacija, a slui za
pozivanje makro funkcija objanjenih u etvrtom primjeru.
public DefineGPIO(HTTPWebIOPiConnection konekcija , int pinNuber , String
function) {
this.konekcija = konekcija;
this.pinNumber = pinNuber;
adress = konekcija.getAdress();
SetGpioFunction(pinNumber, function);
}

5.1.3. Metoda postavljanja atributa prikljunice u klasi definicije

Metoda kojom se postavlja PWM vrijednost GPIO prikljunica. Programer pri
pozivanju metode upisuje vrijednost izmeu 0 i 100% , a ona onda to pretvara u double
vrijednost izmeu 0 i 1 jer je tako odreeno serverom. Metoda po primljenoj vrijednosti
zavrni rad

21

provjerava njenu ispravnost, ako je ispravna poziva send metodu i vraa poruku sa servera, a
ako je neispravno unijeta vrijednost vraa poruku o neispravnosti unosa.
public String SetPWM(int percentRatio ){
double ratio = Double.valueOf(percentRatio)/100;
if(ratio >= 0 && ratio <= 1){
try {
response=String.valueOf(send("GPIO/"+pinNumber+"/pulseRatio/"+ratio));
} catch (IOException e) {
return e.getMessage();
}
}
else {
response = "Ratio must be between 0 and 100";
}
return response;
}

5.1.4. Metoda pozivanja makro funkcije definirane na serveru

Nakon pozivanja metode potrebno je samo upisati naziv makro naredbe, nakon toga
metoda slae sintaksu i poziva metodu objanjenu ispod, a vraa poruku servera.
public String startMacro(String macro){
try {
response = send("macros/"+macro+"/");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return response;
}

zavrni rad

22

5.1.5. Metoda slanja HTTP zahtjeva

Autor za HTTP konekciju koristi Apache server-klijent API. Metoda za slanje HTTP
POST zahtjeva serveru koja se poziva svaki put kada je potrebna pojedinoj metodi za
manipulaciju GPIO prikljunicama. Ona sintaksi dodaje putanju odreenu pozivanjem metode
objanjene u prvom primjeru, brine se za autorizaciju na serveru, i prihvaa odgovor servera
koji zatim alje metodi koja ju je pozvala.
private String send (String order) throws IOException{
URL url = new URL(adress + order);
final HttpURLConnection conn = (HttpURLConnection)
url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
String encodedLogin =
org.apache.commons.codec.binary.Base64.encodeBase64String(logIn.getBytes());
conn.setRequestProperty("Authorization", "Basic " + encodedLogin);
InputStream is = conn.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String response = readAll(rd);
return response;
}

zavrni rad

23

6. Izrada aplikacije

Osnovni cilj je izraditi aplikaciju koja prihvaa komande igraeg volana (Slika 14).
Slika 14: Trust igrai volan

Izvor: http://www.trust.com/_images/products/500/13153-1.jpg
Aplikacija primljene komande prenosi putem lokalne beine mree na Raspberry Pi, a
korisniku na zaslonu prikazuje video prikaz kamere iz vozila. Izraena je u J avaFX
programskom jeziku koji se podosta razlikuje od klasinog programiranja u J ava
programskom jeziku. Grafiki dizajn je potpuno odvojen od softvera za programiranje i tako
doputa laki timski rad jer je mogue potpuno odvojiti dizajn grafikog suelja od logike
aplikacije do samog kraja izrade. Programer koristi posebnu aplikaciju Scene builder koji
sve elemente grafikog korisnikog suelja zapisuje u fxml formatu. Slino kao Android
programiranje grafikog suelja u J ava i fxml je inaica XML. Najvei problem u izradi
aplikacije je nastao jer Oracle, vlasnik J avaFX, iako eli uzeti primat HTML-5 u web
dizajnu, iz nepoznatog razloga ukida podrku za veliki broj video formata pa tako i za mjpeg,
te loe napisan engineza prikaz web stranica.
Prvotna ideja je bila napraviti aplikaciju koja vjerno prikazuje unutranjost vozila i
tako stvoriti dojam proirene stvarnosti (spoj realnih i virtualnih elemenata koji korisniku
stvaraju dojam tjelesne prisutnosti na drugom mjestu ili omoguuju primitak informacija o
neemu, na primjer informacije o zgradi koju gleda kroz kameru na zaslonu svog mobilnog
zavrni rad

24

aparata ) kako bi korisnik imao stvaran dojam da upravlja vozilom (volan se okree sljedei
pokrete korisnika na igraem volanu, a snaga motora i stanje mjenjaa dinamiki se mijenjaju
zavisno od zadanih komandi na monitoru desno od volana (Slika 15 ).
Slika 15: Izraena JavaFX aplikacija

Izvor: obrada autora

Oznake mjenjaa su standardizirana slova kao na automatskom mjenjau: D (eng.
drive - vonja), P (eng. parking parkirna brzina), N (eng. neutral ler,neutralno), R(eng.
reverse rikverc,vonja u natrag) i B (eng. breake - runa konica). Umjesto brzine vozila
prikazana je postotak pritiska papuice gasa od 0% do 100% preslikavajui postotak snage
motora, istovremeni pritisak na papuicu konice razmjerno djeluje na snagu motora
smanjujui je, a time i usporavajui vozilo. Ovdje se autor vodio preglednou podataka jer je
prvotna verzija s kontrolnim satom, iako efektnija i realnija, bila nepregledna za korisnika.
zavrni rad

25

Autor je pokuao koristiti AVR 328p mikrokontroler (osnova Arduino kontrolera) kao
kontroler nie razine koji bi upravljao motorima putem PWM-a, a sa Raspberry Pi-em putem
serijske veze. Ideja je nastala zbog toga to Pi nema hardverski nego softverski PWM koji
ovisi o procesoru, za razliku od AVR-a koji ima hardversku izvedbu. Odustajanje od ove
varijante je uzrokovano s dva problema. Manji problem je razlika u naponu logike PI-a i
AVR-a (Pi radi na 3.3V logici, a AVR na 5V) jer se sniavanjem radnog takta AVR-a sa 16
MHz na 8 MHz, a time i napajanja AVR-a na potrebnih 3.3V, to moglo rijeiti. Vei problem
je serijska komunikacija kao izvedba protokola na WebIOPi serveru. Za razliku od
standardnih komandi koje se alju serveru preko zaglavlja HTTP POST metode, serijska
komunikacija se odvija na sljedei nain u zaglavlju se alje korisniko ime i zaporka, a u
tijelu poruke se alje tekstualna naredba. Ovaj nain poprilino usporava komunikaciju jer
nakon primitka Pi prvo obrauje primljenu informaciju, prekodira je te serijski alje naredbu
AVR-u. AVR je dekodira i pretvara u komandu i bilo bi nebitno da se radi o recimo
zatvaranju zavjesa gdje 300 ili 500 mili sekundi kanjenja ne igra znaajnu ulogu, ali vozilo
treba to prije dobiti informaciju kako ne bi na primjer dolo do kolizije s nekim predmetom u
okolini. Autor WebIOPi servera ima informaciju i pokuava rijeiti problem kako bi
uspjeno spojili Raspberry Pi i Arduino u budunosti, bilo poboljanom izvedbom serijske
komunikacije ili na neki drugi nain.

6.1. Izrada dijela aplikacije koji komunicira s volanom

Poto se J ava aplikacija izvodi u J ava virtualnoj maini, za pristup periferijama
kao to je kontroler potrebno je koristiti nativne biblioteke (eng. Native libraries) operativnog
sustava na kojem se izvodi. Autor koristi jinput API u kombinaciji sa J inputJ oystick
klasom, koja pojednostavljuje uporabu API-ja definirajui samo bitne metode za
komunikaciju. Uz klasu i API potrebno je kopirati nativne biblioteke u isti direktorij gdje se
nalazi sama aplikacija (Slika 16).
zavrni rad

26

Slika 16: Nativne biblioteke

Izvor: obrada autora

Kako je vidljivo iz gornje slike, kopirane su sve biblioteke i time je omogueno
koritenje aplikacije na svim operacijskim sustavima (Windows 32 i 64 bit, Linux 32 i 64 bit
te OSX) te je time zadrana ideja vieplatformske aplikacije.
Samo koritenje API-ja je izuzetno jednostavno, potrebno je definirati novu instancu
kontrolera i nakon toga samo pozivati informacije koje su potrebne iz kontrolera.
JInputJoystick joystick;
joystick = new JInputJoystick(Controller.Type.WHEEL,Controller.Type.STICK);
Mogue je u isto vrijeme definirati dvije vrste kontrolera, u radu se definira volan i gamepad
tako ostavljajui mogunost upravljanja vozilom s razliitim kontrolerima.
zavrni rad

27


Izuzetno je bitno definirati broj tipki samog kontrolera, jer razliite izvedbe samog
ureaja imaju i razliiti broj tipki, kako ne bi dolo do pogreke pri itanju stanja tipki (true
pritisnuta, false ne pritisnuta).
int brTipki = joystick.getNumberOfButtons();
izlaz = joystick.getButtonValue(0);
Tipke su prilagoene igraem volanu koji se koristi u radu te bi za potrebe spajanja
razliitih modela trebalo napraviti klasu za postavke kontrolera te kalibraciju istog. Podatci o
X i Y osi kontrolera (X je volan, Y su pedale) se mogu itati na 3 mogua naina:
joystick.getXAxisPercentage()
joystick.getXAxisValue()
joystick.getXRotationPercentage()
Razlika je u brojanoj vrijednosti koju API vraa. U prvom i treem sluaju vraa
postotak od 0% do 100% to je pogodno za upravljanje servo motorom, kojem se u API-ju za
komunikaciju odreuje maksimalni kut, jer se tako dinamiki odreuje sam kut zakreta.
Nasuprot tome kod druge metode vraene vrijednosti su tipa double s vrijednostima od -1 do
1, pa su pogodne za pedale vozila jer nepotisnute daju vrijednost 0, pritiskom pedale za gas
vrijednost raste prema 1, ali se istovremeno zbraja s pritiskom pedale konice. To za rezultat
ima situaciju ako su pritisnute obje pedale da je vraena vrijednost 0 (-1 +1=0). Tako je
mogue dobiti efekt smanjenja brzine vozila kada operater uz pritisnutu papuicu gasa krene
stiskati papuicu konice.

6.2. Izrada dijela aplikacije koji prosljeuje naredbe na Raspberry Pi

Za dio aplikacije koja prosljeuje naredbe Pi-u koriten je vlastiti API odnosno
jWebIOPi. Kako je ve navedeno izrada API-ja voena je principom Arduino sintakse
pisanja koda. Postoji i slubeni J ava API autora WebIOPi servera, koji je napisan s
zavrni rad

28

verzijom servera 0.6 koji koristi oba naina komunikacije HTTP i CoaP, ali za ovaj rad
odabran je vlastiti API.
Primjer definiranja GPIO prikljunica
DefineGPIO kutSretanja = new DefineGPIO(spajanje, login, 18, "pwm") {
};
Ovo je primjer definiranja metode objanjene u poglavlju 5.1., 2. primjer. Programer definira
novu instancu metode koristei adresu i autorizaciju, odreujui da e GPIO prikljunica 18
imati funkciju PWM.
Primjer postavljanja vrijednosti na prikljunice
brzinaVozila.SetPWM(novaBrzina);
kutSretanja.SetServoAnglePercent(zakretVolana);
Dva primjera postavljanja vrijednosti na prikljunice. Iako su obje varijable definirane
funkcijski kao PWM razlikuju se po nainu slanja signala na aktuatore, razlika je objanjena u
poglavlju 2.1. iznad slika (Slika 7 i Slika 8).

6.3. Prilagodba serverske aplikacije koji upravlja vozilom

J ava aplikacija, kako je ve navedeno, alje POST naredbe koje server prosljeuje
Python skripti te ona komunicira s GPIO kontrolerom. Napravljena je Python skripta koja
definira prikljunice, njihove funkcije, makro naredbe te sigurnosni mehanizam ako doe do
prekida komunikacije izmeu aplikacije i vozila.



zavrni rad

29

6.3.1. Definiranje prikljunica

Koriteno je pet prikljunica, tri za upravljanje vonjom dvije za promjenu pravca, 10
i 11 te jedna za promjenu brzine, 9), jedna za promjenu smjera kretanja vozila (18) te jedna za
provjeru veze klijenta i servera.
# Retrieve GPIO lib
GPIO = webiopi.GPIO
VOLAN = 18
BRZINA = 9
NAPRIJED = 10
NATRAG = 11
PROVJERA = 22
Start = 0;

6.3.2. Definiranje funkcija

Iako je skripta pisana u Python programskom jeziku, kod je jako slian Arduino
sintaksi jer je autor servera u komunikaciji s korisnicima zakljuio da ih velika veina ima
iskustva u radu s njim. Nakon pozivanja funkcije GPIO.setFunction potrebno je unutar
zagrada napisati broj ili naziv prikljunice ( ako je definirana kao u 1. primjeru ), te funkciju
iste.
# Called by WebIOPi at script loading
def setup():
webiopi.debug("Script with macros - Setup")
# Setup GPIOs
GPIO.setFunction(VOLAN, GPIO.PWM)
GPIO.setFunction(PROVJERA, GPIO.OUT)


zavrni rad

30

6.3.3. Makro naredbe

Uporabom makro naredbi umanjuje se koliina komunikacije sa samim serverom i
programeru olakava izradu klijentske aplikacije. Definirati izlazne vrijednosti je mogue na
dva naina, ili kao u primjeru iznad ili brojano 0 1 gdje LOW predstavlja 0, a HIGH 1.
Alternativni nain bi bio slanje dvije naredbe za postavljanje GPIO prikljunica, koji
nije neispravan, ali se u tom sluaju radi o dva HTTP POST paketa prema serveru umjesto
jednog i sigurno se ne izvedu istom brzinom kao kada je to napravio sam server.
# Makro naredba za naprijed
@webiopi.macro
def Naprijed():
GPIO.digitalWrite(NAPRIJED, GPIO.HIGH)
GPIO.digitalWrite(NATRAG, GPIO.LOW)

6.3.4. Sigurnosni mehanizam

Sluajno pri jednom testu, aplikacija se sruila i vozilo je nastavilo nekontrolirano
voziti zbog toga to je ostalo u zadnjem primljenom stanju prikljunica. Postoji vie naina
sigurnosnih mehanizama, jedan od kojih je konstantno slati naredbu za pravac, ali traen je
nain kako bi se to vie smanjio broj paketa koji se alje. Na kraju je izabrana vremenska
provjera stanja posebne prikljunice i stavljanja stanja motora u blokadu kod ne odgovarajue
vrijednosti.
Primjer klijentskog dijela pinga
void slanjePinga() {
Timeline javljanje = new Timeline(new KeyFrame(Duration.seconds(1), new
EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
ping.SetStateON(true);
}
zavrni rad

31

}));
javljanje.setCycleCount(Timeline.INDEFINITE);
javljanje.play();
}
U J avaFX programskom jeziku postoji metoda Timeline u kojoj se vremenski
odreuje trajanje radnje koja se poziva unutar njenog tijela. Tako je pojednostavljeno
koritenje vremenskog brojaa kod radnji koje je potrebno izvravati u pravilnim vremenskim
razmacima. U ovom sluaju vrijeme ciklusa je postavljeno na jednu sekundu, a vrijeme
ukupnog izvoenja na beskonano, metoda ping postavlja vrijednost prikljunice 22 na 1.
Primjer serverskog dijela pinga
# Looped by WebIOPi
def loop():
# Provjera konekcije
global Start
Timer = time.time()
value = GPIO.digitalRead(PROVJERA)
if Timer - Start >= 2 and value == 0:
GPIO.digitalWrite(NAPRIJED, GPIO.HIGH)
GPIO.digitalWrite(NATRAG, GPIO.HIGH)
Start = Timer
elif Timer - Start >= 2 and value == 1:
GPIO.digitalWrite(PROVJERA, GPIO.LOW)
Start = Timer
Prikazana beskonana petlja definirana s def loop(): obavlja provjeru, svake dvije sekunde,
stanja prikljunice 22 i ako nije ispravna (vrijednost 1 ) blokira motor vozila, a ako je
postavlja stanje na 0. Ovim nainom provjere osigurani su sluajevi ruenja aplikacije ili bilo
kojeg drugog naina gubitka veze izmeu vozila i aplikacije



zavrni rad

32

6.3.5. Registriranje skripte

Python.skripta.se.nalazi.na.Pi.raunalu,.putanja.je
/home/pi/webiopi/examples/scripts/auto. Potrebno je nakon izrade korisnike skripte, web
stranicu kojom je upravljana i skriptu, spremiti u isti direktorij te naredbom sudo nano
/etc/webiopi/config registrirati putanju na kojoj se nalazi kako bi je server pokrenuo pri
startu te putanju gdje se nalazi korijenski direktorij servera i web stranice (Slika 17).
Slika 17: Config datoteka WebIOPi-a

Izvor: obrada autora


6.4. Izrada dijela aplikacije koji prima video prikaz s kamere

Na Raspberry Pi-u se nalazi MJ PEG Streamer server koji upravlja web kamerom i
vri video prijenos na lokalnom web serveru. Aplikacija se prvo spaja na Pi putem SSH (eng.
zavrni rad

33

Secure shell) konekcije, prijavi se u sustav i pokrene Linux ljuska(shell) skriptu koristei
Ganymed SSH-2 J ava API(http://www.cleondris.ch/opensource/ssh2/).
sess = conn.openSession();
sess.execCommand("./server.sh &");
Naredba sess.execCommand("./server.sh &"); pokree autorovu skriptu za pokretanje
servera koja se nalazi na putanji home/pi/ Pi raunala.
sudo /etc/init.d/webiopi restart
cd mjpg-streamer/mjpg-streamer
./mjpg_streamer -i "./input_uvc.so -n -f 25 -r 160x120" -o "./output_http.so -p$
Parametre video prikaza je mogue mijenjati na Pi raunalu, unutar skripte koristei
nano server.sh naredbu. Preporueni parametri za mijenjanje su iskljuivo brojevi iza f ,
broj slika u sekundi i iza r , rezolucija video prikaza. Trenutno koritena kamera moe
isporuiti samo do 10 slika u sekundi bez obzira na parametar koji je zadan. Bitno je znati da
se zbog formata video prikaza drastino poveava koliina podatkovnog prometa jer se radi o
nizu jpeg fotografija, a ne o pravom video formatu. Naredba za ponovno pokretanje
WebIOPi servera je dodana iz predostronosti ako se isti ne bi pokrenuo pri samom paljenju
raunala.
Server se ne pokree automatski kod paljenja Pi raunala, kako se isti ne bi mogao
zloupotrijebiti za video prikaz ako je automobil upaljen bez aplikacije jer je serveru mogue
pristupiti s bilo kojeg raunala u istoj lokalnoj mrei koristei internet preglednik. Nakon
gaenja aplikacije poziva se naredba sess.execCommand("sudo shutdown now"); koja gasi Pi
raunalo, a time i kameru na njemu.
Klijentski dio prikaza videa je rijeen putem webview metode J avaFX-a.
we = video.getEngine();
we.load("http://raspberrypi:8880/javascript_simple.html");
Metoda webview je u stvari jednostavan internet preglednik koji prikazuje odabrano web
sjedite, a koristi se u kombinaciji sa webengine metodom. Trenutni problem koji se javlja
kod prikaza videa je J avascript u web prikazu. Loe napisan engine webview metode uzrokuje
neispravan rad J ava garbage collector alata. Njegov zadatak je oslobaati memoriju od
zavrni rad

34

instanci varijabli koje se vie ne koriste, ali to ne ini pa se video prikaz zna prekinuti
odnosno dolazi do prepunjenosti memorije heap greke. Oracle navodi na svojim stranicama
da je mogue koristi J avascript u webview, ak i da je mogue koristiti metode J avascript
za mijenjanje i kontrolu drugih elemenata u J avaFX grafikom prikazu pa autoru ostaje
nepoznanica zbog ega dolazi do ovog problema. Istu metodu prikaza autor je isprobao u
J ava swing grafikom prikazu i tamo ne dolazi do istog problema, ali zbog superiornosti
J avaFX grafikog prikaza nad swing-om, autor ostavlja ovaj problem kao zadatak koji treba
odraditi, bilo koristei drugu web kameru i drugi format ili priekati da zajednica napie
alternativnu webview metodu koja e koristiti Mozilla ili Chrome engine za
prikaz.Isproban je i prikaz koristei vlcj API koji koristi VLC player, ali dolazi do
kanjenja u prikazu od 1 do 2 sekunde pa je ta metoda prikaza odbaena kao ne prihvatljiva.

zavrni rad

35

7. Opis rada cjelokupnog sustava i svih funkcionalnosti

Operater sjedi za raunalom i igraim volanom upravlja vozilom. Aplikacija prihvaa
informacije iz kontrolera putem USB suelja, obrauje ih i putem lokalne mree HTTP POST
metodom prosljeuje serveru koji se nalazi na Raspberry Pi raunalu. Server beino prima
informacije s klijentskog raunala, obrauje ih i putem GPIO prikljunice vri zadane radnje
na motorima vozila. U isto vrijeme, softver na Pi raunalu, uz pomo web kamere stvara
video zapis, obrauje ga i prikazuje na lokalnom web serveru. Aplikacija za upravljanje
vozilom na klijentskom raunalu spaja se na server i prikazuje sliku operateru. Vozilo ima
osnovne mogunosti upravljanja: kretnje naprijed-natrag, mijenjanje brzine vonje i skretanje
lijevo-desno.
Kako je ve navedeno aplikativni dio rada pokuava na vjeran nain pokazati
unutranjost vozila i donekle prikazati virtualnu realnost operateru kao da se nalazi unutar
vozila. Mogunosti primjene su sama mata operatera u trenutku upravljanja vozilom.
Mogue je vjebati vonju vozila, s automatskim mjenjaem, bez straha od moguih ozljeda
samog vozaa ili vozila. Zatim je mogua primjena u terapijske svrhe osoba koje su imale
veliki stres uzrokovan prometnom nezgodom i sada ih je strah sjesti ponovno za volan vozila.
Proirenja mogunosti vozila su isto ograniena samo matom, financijama i
koliinom slobodnog vremena za rad na vozilu. Trenutno je komunikacija upravljanja
jednosmjerna, od operatera prema vozilu i operater nema povratne informacije o stanju vozila
osim video prikaza iz samog vozila. Prvenstveno bi trebalo opremiti vozilo sustavom protiv
kolizije, zatim sustavom za praenje stanja baterije kako bi operater znao koliko jo moe
upravljati istim. Potrebno je zamijeniti web kameru s nekom koja podrava drugi video
format kako bi se izbjeglo kanjenje signala. Vrlo korisno bi bilo dodati senzor za mjerenje
broja okretaja kotaa, a samim time i trenutne brzine vozila te akcelerometar na osovini koji
bi iskoristio force feedback mogunosti pojedinih volana i tako dodatno poveao realnost
upravljanja. Sve navedeno nije problem dodavati zahvaljujui modularnosti samog sustava
upravljanja i komunikacije. Dodavanjem Arduina ili analogno-digitalnih pretvaraa na
Raspberry Pi mogue je relativno jednostavno proiriti sadanje mogunosti vozila.
zavrni rad

36

8. ZAKLJUAK

U okviru postavljenog zadatka izraena je klijentska aplikacija u skladu s trendom
dizajna grafikog suelja i primjene proirene stvarnosti. U pravilu su aplikacije kopije
fizikih daljinskih upravljaa s dodatkom video prikaza, a proirena stvarnost omoguava
bolji iskustveni doivljaj korisnika. Koriteni nain hardverske izvedbe nije se pokazao kao
potpuno uspjean jer, iako koriteni Raspberry Pi ima jako velik potencijal kod upravljanja
kunom automatizacijom, pada na testu gdje je potrebno informaciju prenijeti u izuzetno
kratkom roku. Ostaje za istraiti da li je problem u nainu komunikacije klijenta i servera ili u
samom raunalu. Pouzdanost raunala jo uvijek nije na istom nivou kao pouzdanost mikro
kontrolera zbog samog operacijskog sustava koji iako rastereen do maksimuma pokazuje
svoje mane u samoj izvedbi zadanih operacija.
Rad moe biti temelj za daljnja istraivanja na polju beinog upravljanja vozilima, a
zbog modularnosti izrade nudi visoki potencijal ponovne izvedbe koristei drugi upravljaki
kontroler. U nekim buduim istraivanjima, moglo bi se iskoristiti Raspberry Pi raunalo kao
upravljaki sklop vieg nivoa, za beinu komunikaciju i video prikaz, a mikro kontroler za
upravljaki sklop nie razine koji e upravljati samim aktuatorima i moe bitnim senzorima
vozila. Komunikaciju izmeu klijenta i mikro kontrolera moglo bi se izvesti tako da Pi
dobivene informacije s klijenta samo proslijedi mikro kontroleru bez ikakve obrade bilo
serijskom vezom ili na neki drugi nain. Potencijalno bolji rezultati bi bili postignuti pisanjem
serverske aplikacije koja ne koristi HTTP POST i GET metode, nego neki drugi
komunikacijski protokol ili da je napisan vlastiti protokol.
Ovaj rad zasnovan na proirenoj stvarnosti primjenjiv je u mnogobrojnim granama
ljudske djelatnosti, ali terapijske svrhe savladavanja straha od upravljanja vozilom nakon
prometne nezgode najrealnija su i ljudski gledano najkorisnija primjena.


zavrni rad

37

POPIS KRATICA

RC Radio Control radio upravljanje
GPIO General Pin Input Output osnovne ulazno-izlazne prikljunice
HTML HyperText Markup Language programski jezik za web
XML Extensible Markup Language univerzalni programski jezik
API - Application programming interface most izmeu softverskih komponenti
BEC - battery eliminator circuit strujni krug za uklanjanje baterije
ESC - electronic speed control elektronska kontrola brzine
SSH - Secure Shell internet protokol
HTTP - Hypertext Transfer Protocol - internet protokol
CoaP - Constrained Application Protocol internet protokol
PWM - Pulse-width modulation nain pretvaranja digitalnog u analogni signal

LITERATURA

2
1. Downey A., Elkner J ., Meyers C., How to Think Like a Computer Scientist - Learning
with Python, Green Tea Press, Wellesley, Massachusetts, 2008.
2. Membrey P., Hows D., Learn Raspberry Pi with Linux, Apress, 2013.
3. Weaver J .L., Gao W., Chin S., Pro J avaFX 2 A Definitive Guide to Rich Clients with
J ava Technology, Apress, 2012
4. Richardson M., Wallace S., Getting Started with Raspberry Pi, OReilly Media,
Inc.,2013.
5. http://www.pfst.hr/~ivujovic/stare_stranice/pdf_zip_word/POGL8.pdf (7.4.2013.)
6. http://www.computerworld.com/slideshow/detail/74332 (7.4.2013.)
7. http://planb.tportal.hr/teme/64677/Daljinski-upravljac.html#.UWFJ nTdj9So
(7.4.2013.)
8. http://www.hrvatski-vojnik.hr/hrvatski-vojnik/1002003/sustav.asp (7.4.2013.)
9. http://www.gadgeterija.net/2013/01/20/recenzija-raspberry-pi-komadic-pite-za-
svakoga/#.UV1yM6J A3lQ (7.4.2013.)
zavrni rad

38

10. http://www.raspberrypi.org/faqs (7.4.2013.)

POPIS SLIKA

Slika 1: J ednostavni kontroler .................................................................................................... 6
Slika 2: Napredni kontroler ........................................................................................................ 6
Slika 3: Prikaz rada H-mosta ...................................................................................................... 7
Slika 4: Relejni H-most .............................................................................................................. 8
Slika 5: LM298 H-most .............................................................................................................. 8
Slika 6: Prikaz servo motora ....................................................................................................... 9
Slika 7: PWM 50% ................................................................................................................... 10
Slika 8: PWM 100% ................................................................................................................. 10
Slika 9: Shema ESC-a i BEC-a u radu ..................................................................................... 11
Slika 10: Raspberry PI .............................................................................................................. 12
Slika 11: Suelje Raspberry PI ................................................................................................. 13
Slika 12: Raspored GPIO prikljunica ..................................................................................... 14
Slika 13: WebIOPi arhitektura ................................................................................................. 18
Slika 14: Trust igrai volan ...................................................................................................... 23
Slika 15: Izraena JavaFX aplikacija ....................................................................................... 24
Slika 16: Nativne biblioteke ..................................................................................................... 26
Slika 17: Config datoteka WebIOPi-a ...................................................................................... 32

You might also like