Upravljanje Modelom Vozila Putem Računalne Mreže i Raspberry Pi Računala

Embed Size (px)

DESCRIPTION

Završni rad

Citation preview

  • 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 RTJECTsrnudrvr srnDrJ TELEMATTKERijeka, 01.03.2013

    ZADATAKza zavrini rad

    Pristupniku Dimitrij Vukelid MBS: 2427004056110Studentu strudnog studija telematike izdaje se zadatak zavr5ni rad - tema zavr5nog radapod nazivom:

    Upravljanje modelom vozila putem ra6unalne mreie i Raspberry Pi raiunala

    Sadriaj zadatkaz

    Opisati upravljanje vozilom na daljinu. Opisati Raspberry Pi radunalo. Dati pregledmogudih primjena Raspberry Pi radunala. Objasniti mogudnost upravljanja putemradunalne mre?.r- uredajima spojenim na Raspberry Pi radunalo. Povezati volan i radunalo.Izraditi sklop za povezivanje Raspberry Pi radunala i modela voala. Izraditi potrebneaplikacije za udaljeno upravljanje vozilom. Prikupiti video pr*laz s kamere postavljenena vozilo.

    Preporuka:

    Zainadu sustava preporuda se kori5tenje javno dostupnih materijala i projekata koji su sebavili 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"/nDostavlja se:- mentoru- pristupniku

    Dimitrij Vukelid

  • IZJAVA

    Izjavliujem da sam zawsni rad pod naslovom UPRAVU44'F HoDFAom cnptrierr P.s&rNArue [ere-F r ?rspBERLY Pt aA;oilsrA izradiosamostalnopodnadmrom 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. Jedan 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 update sudo apt-get upgrade

    2. Ponovno pokrenuti (resetirati) raunalo

    sudo reboot

    3. Provjeriti postavke suelja

    sudo nano /etc/network/interfaces

  • zavrni rad

    17

    4. Postaviti kao to je navedeno ispod, pod pretpostavkom da je ukljueno

    dinamiko dodjeljivanje adresa (DHCP)

    auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 auto wlan0 iface wlan0 inet dhcp wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

    5. Pohraniti postavke ctrl+X , pa zatim odabrati Yes

    6. Upisati naredbu za promjenu konfiguracije

    sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

    7. Postaviti konfiguraciju mree

    network={ ssid="SSID-IME MREE" proto=RSN key_mgmt=WPA-PSK pairwise=CCMP TKIP group=CCMP TKIP psk="WIFI-ZAPORKA" }

    8. Snimiti postavke ctrl+X , pa zatim odabrati Yes

    9. Ponovno pokrenuti (resetirati) raunalo

    sudo reboot

    (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. Jedan 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 Java API, jWebIOPi, za spajanje Java

    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 Java 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.Java.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

    Jedna 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

  • 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 JavaFX

    programskom jeziku koji se podosta razlikuje od klasinog programiranja u Java

    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 Java i fxml je inaica XML. Najvei problem u izradi

    aplikacije je nastao jer Oracle, vlasnik JavaFX, 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 engine za 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 Java aplikacija izvodi u Java 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 JinputJoystick

    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 Java 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

    Java 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() {

    @Override

    public void handle(ActionEvent t) {

    ping.SetStateON(true);

    }

  • zavrni rad

    31

    }));

    javljanje.setCycleCount(Timeline.INDEFINITE);

    javljanje.play();

    }

    U JavaFX 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 MJPEG 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 Java 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 JavaFX-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 Javascript u web prikazu. Loe napisan engine webview metode uzrokuje

    neispravan rad Java 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 Javascript u webview, ak i da je mogue koristiti metode Javascript

    za mijenjanje i kontrolu drugih elemenata u JavaFX grafikom prikazu pa autoru ostaje

    nepoznanica zbog ega dolazi do ovog problema. Istu metodu prikaza autor je isprobao u

    Java swing grafikom prikazu i tamo ne dolazi do istog problema, ali zbog superiornosti

    JavaFX 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 JavaFX 2 A Definitive Guide to Rich Clients with

    Java 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#.UWFJnTdj9So

    (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/#.UV1yM6JA3lQ (7.4.2013.)

  • zavrni rad

    38

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

    POPIS SLIKA Slika 1: Jednostavni 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

    SAETAK1. UVOD2. Upravljanje vozilima na daljinu2.1. Princip rada upravljanja vozilom na daljinu

    3. Raspberry Pi raunalo4. Nain povezivanja na raunalnu mreu ili internet5. Suelje za programiranje aplikacija koje se koristi za upravljanje ulazima/izlazima Raspberry Pi raunala5.1. Izraeni JavaAPI za povezivanje5.1.1. Metoda u klasi za odreivanje parametara konekcije5.1.2. Metoda definiranja GPIO prikljunica u klasi definicije5.1.3. Metoda postavljanja atributa prikljunice u klasi definicije5.1.4. Metoda pozivanja makro funkcije definirane na serveru5.1.5. Metoda slanja HTTP zahtjeva

    6.1. Izrada dijela aplikacije koji komunicira s volanom6.2. Izrada dijela aplikacije koji prosljeuje naredbe na Raspberry Pi6.3. Prilagodba serverske aplikacije koji upravlja vozilom6.3.1. Definiranje prikljunica6.3.2. Definiranje funkcija6.3.3. Makro naredbe6.3.4. Sigurnosni mehanizam6.3.5. Registriranje skripte

    6.4. Izrada dijela aplikacije koji prima video prikaz s kamere

    7. Opis rada cjelokupnog sustava i svih funkcionalnosti8. ZAKLJUAKPOPIS KRATICALITERATURAPOPIS SLIKA