83
UNIVERZA V MARIBORU FAKULTETA ZA ELEKTROTEHNIKO, RAČUNALNIŠTVO IN INFORMATIKO Tomaž Pintar KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM Magistrsko delo Maribor, december 2015

KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

UNIVERZA V MARIBORU

FAKULTETA ZA ELEKTROTEHNIKO,

RAČUNALNIŠTVO IN INFORMATIKO

Tomaž Pintar

KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Magistrsko delo

Maribor, december 2015

Page 2: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

KRMILJENJE MOBILNIH PLATFORM S PAMETNIM

TELEFONOM

Magistrsko delo

Študent: Tomaž Pintar

Študijski program: Študijski program 2. stopnje

Elektrotehnika

Smer: Avtomatika in robotika

Mentor: izr. prof. dr. Matej Rojc

Somentor: red. prof. dr. Zdravko Kačič

Lektorica: Marjanca Šoško, prof.

Page 3: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

ii

Page 4: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

iii

ZAHVALA

Zahvaljujem se mentorju izr. prof. dr. Mateju

Rojcu in somentorju red. prof. dr. Zdravku

Kačiču za strokovne napotke in pomoč pri

opravljanju magistrskega dela.

Posebna zahvala velja staršem, bratu, sestri,

dekletu in vsem bližnjim, ki so me podpirali

med študijem.

Page 5: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

iv

Krmiljenje mobilnih platform s pametnim

telefonom

Ključne besede: mobilne platforme, upravljanje na daljavo, pametni telefon, mobilna

aplikacija, operacijski sistem Android, Arduino platforme

UDK: 621.395.721.5(043.2)

Povzetek

V magistrskem delu predstavljamo zasnovo, razvoj in delovanje mobilne platforme, katero

lahko upravljamo s pomočjo pametnega telefona. Mikrokrmilnik na ciljni mobilni platformi

sprejema krmilne podatke iz pametnega telefona preko Bluetooth modula in nato ustrezno

krmili enosmerne motorje na platformi, kjer osnovo predstavlja razvojna plošča Arduino

UNO. Na pametnem telefonu smo razvili Android aplikacijo, ki zajema koordinate iz

senzorja pospeškometra in jih pošilja mobilni platformi. Senzor pospeškometra s pomočjo

kompasa zaznava tudi orientacijo telefona ter procesirane podatke posreduje

mikrokrmilniku na platformi. Na podlagi teh podatkov Arduino UNO krmili mobilno

platformo.

Page 6: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

v

Controlling mobile platforms by using smartphone Key words: mobile platforms, remote control, smartphone, mobile application, Android

operation system, Arduino platform

UDK: 621.395.721.5(043.2)

Abstract

The thesis presents the design, development and operation of mobile platforms which can

be controlled through your smartphone. The microcontroller on the target mobile platform

receives the control data from the smartphone via a Bluetooth module and then it

accordingly controls the DC motors on the platform where the base is a Arduino UNO

development board. We have developed an Android application for smartphones that

includes the coordinates of the accelerometer sensor and sends them to the mobile

platform. The sensor accelerometer with the help of a compass also detects the

orientation of the phone and transmits the processed data to the microcontroller on the

platform. The Arduino UNO controls the mobile platform on the basis of these data.

Page 7: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

vi

KAZALO

1 UVOD ........................................................................................................................................ 1

2 ZASNOVA SISTEMA KRMILJENJA S PAMETNIM TELEFONOM ............................... 5

3 UPRAVLJANJE S PAMETNIM TELEFONOM ................................................................... 7

3.1 Pametni telefon ............................................................................................................................. 7

3.1.1 Senzorji ............................................................................................................................................ 7

4 RAZVOJ MOBILNE PLATFORME ................................................................................... 13

4.1 Osnova za mobilno platformo ...................................................................................................... 13

4.2 Vezje ............................................................................................................................................ 14

4.2.1 Razvojna plošča ............................................................................................................................. 14

4.2.2 Krmilnik L293 ................................................................................................................................. 18

4.2.3 Bluetooth modul ........................................................................................................................... 19

4.2.4 Senzor temperature ...................................................................................................................... 20

4.2.5 Senzor svetlobe ............................................................................................................................. 21

4.2.6 Piskač ............................................................................................................................................. 22

4.3 Napajanje ..................................................................................................................................... 22

4.3.1 Napetostni regulator LM7805 ....................................................................................................... 24

4.3.2 Napetostni regulator LM1117 ....................................................................................................... 24

4.3.3 Merjenje napetosti ........................................................................................................................ 25

4.4 Nadgradnja mobilne platforme .................................................................................................... 25

4.4.1 Pogon ............................................................................................................................................. 26

4.4.2 Svetila ............................................................................................................................................ 27

4.5 Načrtovanje vezja ......................................................................................................................... 27

4.5.1 Mikrokrmilnik ATmega328P-PU ................................................................................................... 30

4.5.2 Seznam elementov ........................................................................................................................ 35

4.5.3 Izdelava tiskanega vezja ................................................................................................................ 36

Page 8: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

vii

4.6 Programska koda mikrokrmilnika ................................................................................................. 38

4.6.1 Pulzno širinska modulacija ............................................................................................................ 41

4.6.2 Diagram poteka ............................................................................................................................. 43

4.6.3 Branje senzorja temperature ........................................................................................................ 44

4.6.4 Branje stanja baterij (voltmeter) .................................................................................................. 45

4.6.5 Branje svetlobnega senzorja ......................................................................................................... 46

5 RAZVOJ MOBILNE APLIKACIJE ..................................................................................... 48

5.1 Pametni telefon Samsung Galaxy Core ......................................................................................... 48

5.2 Android aplikacija ........................................................................................................................ 50

5.2.1 Grafični vmesnik ............................................................................................................................ 51

5.2.2 Bluetooth povezava ...................................................................................................................... 55

5.2.3 Pošiljanje podatkov mikrokrmilniku ............................................................................................. 55

5.2.4 Prejemanje podatkov iz mikrokmilnika ........................................................................................ 56

6 TESTIRANJE SISTEMA...................................................................................................... 58

6.1 Aplikacija Mobilna platforma ....................................................................................................... 58

6.2 Odzivnost mobilne platforme ....................................................................................................... 61

7 SKLEP .................................................................................................................................... 62

8 NAVAJANJE VIROV ............................................................................................................ 63

Page 9: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

viii

KAZALO SLIK

SLIKA 1: CURIOSITY [1] ........................................................................................................................................... 1

SLIKA 2: ROBOTSKI SESALNIK [2] ............................................................................................................................... 2

SLIKA 3: ROBOTSKA KOSILNICA [3] ............................................................................................................................ 2

SLIKA 4: DETEKCIJA OBRAZA [4] ................................................................................................................................ 3

SLIKA 5: PAMETNA HIŠA [5] ..................................................................................................................................... 4

SLIKA 6: MOBILNA PLATFORMA V POVEZAVI S PAMETNIM TELEFONOM ............................................................................. 5

SLIKA 7: IGRA LABIRINT [6] ...................................................................................................................................... 6

SLIKA 8: ZASNOVA SISTEMA KRMILJENJA MOBILNE PLATFORME Z MOBILNIM TELEFONOM ..................................................... 6

SLIKA 9: POSPEŠKOMETER [8] .................................................................................................................................. 8

SLIKA 10: BLOKOVNI DIAGRAM SENZORJA BMC150 [32] ........................................................................................... 10

SLIKA 11: PRINCIP ZAZNAVANJA GIBANJA [32] ........................................................................................................... 11

SLIKA 12: ORIENTACIJE OSI [32] ............................................................................................................................. 12

SLIKA 13: AVTOMOBIL NA DALJINSKO KRMILJENJE [9] ................................................................................................. 13

SLIKA 14: VGRAJENO VEZJE ZA RC KRMILJENJE AVTOMOBILA S PODVOZJEM ..................................................................... 14

SLIKA 15: RAZVOJNO OKOLJE ARDUINO IRO ............................................................................................................. 16

SLIKA 16: RAZVOJNA PLOŠČA ARDUINO UNO [11] ..................................................................................................... 17

SLIKA 17: SHEMA KRMILNIKA L293 [13] .................................................................................................................. 18

SLIKA 18: BLUETOOTH MODUL (LEVO) [14], VEZAVA BLUETOOTH MODULA (DESNO) ......................................................... 19

SLIKA 19: TEMPERATURNI SENZOR (LEVO) [16], VEZAVA TEMPERATURNEGA SENZORJA (DESNO) ......................................... 20

SLIKA 20: SVETLOBNI SENZOR (LEVO) [18], VEZAVA SVETLOBNEGA SENZORJA (DESNO) ...................................................... 21

SLIKA 21: GRAF OBČUTLJIVOSTI SVETLOBNEGA SENZORJA [17] ..................................................................................... 21

SLIKA 22: PISKAČ (LEVO) [19], VEZAVA PISKAČA (DESNO) ............................................................................................ 22

SLIKA 23: BATERIJE ZA NAPAJANJE POGONSKEGA DELA ................................................................................................ 23

SLIKA 24: BATERIJA ZA NAPAJANJE VEZJA .................................................................................................................. 23

SLIKA 25: NAPETOSTNI REGULATOR L7805 (LEVO) [20], SHEMA NAPETOSTNEGA REGULATORJA (DESNO)............................. 24

SLIKA 26: NAPETOSTNI REGULATOR LM1117 (LEVO) [21], SHEMA NAPETOSTNEGA REGULATORJA (DESNO) ......................... 24

SLIKA 27: VEZAVA VOLTMETRA ............................................................................................................................... 25

SLIKA 28: ENOSMERNI MOTOR ............................................................................................................................... 26

SLIKA 29: ENOSMERNI MOTOR S PRENOSI (LEVO) IN SERVO MOTOR (DESNO) [22] ............................................................ 26

SLIKA 30: SVETILA NA MOBILNI PLATFORMI ............................................................................................................... 27

SLIKA 31: RAZVOJNA SHEMA .................................................................................................................................. 28

SLIKA 32: SHEMA VEZJA MOBILNE PLATFORME........................................................................................................... 29

SLIKA 33: MIKROKRMILNIK ATMEGA328P-PU [23] .................................................................................................. 30

SLIKA 34: RAZPOREDITEV PRIKLJUČKOV MIKROKRMILNIKA ATMEGA328P-PU [24] .......................................................... 30

Page 10: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

ix

SLIKA 35: OSNOVNA SHEMA ZA DELOVANJE MIKROKRMILNIKA ATMEGA328P-PU ........................................................... 31

SLIKA 36: NALAGANJE ZAGONSKEGA NALAGALNIKA .................................................................................................... 33

SLIKA 37: IZBIRA RAZVOJNE PLOŠČE ......................................................................................................................... 33

SLIKA 38: IZBIRA PROGRAMATORJA ......................................................................................................................... 34

SLIKA 39: POSODOBITEV NALAGALNIKA .................................................................................................................... 34

SLIKA 40: IZRISANA TISKANINA MOBILNE PLATFORME .................................................................................................. 36

SLIKA 41: ZJEDKANA TISKANINA .............................................................................................................................. 37

SLIKA 42: NAMESKO RAZVITO VEZJE NA MOBILNI PLATFORMI ........................................................................................ 37

SLIKA 43: SERIJSKI MONITOR .................................................................................................................................. 40

SLIKA 44: GRAFI PULZNO ŠIRINSKE MODULACIJE [25] .................................................................................................. 41

SLIKA 45: DIAGRAM POTEKA MOBILNE PLATFORME .................................................................................................... 43

SLIKA 46: PAMETNI TELEFON SAMSUNG GALAXY CORE [26] ........................................................................................ 48

SLIKA 47: ANDROID LOGOTIP [28] .......................................................................................................................... 50

SLIKA 48: RAZVOJNO OKOLJE "ANDROID DEVELOPMENT TOOLS " ................................................................................. 51

SLIKA 49: GRAFIČNI VMESNIK V RAZVOJNEM OKOLJU "ANDROID DEVELOPMENT TOOLS" ................................................... 52

SLIKA 50: XML DATOTEKA ZA X OS.......................................................................................................................... 52

SLIKA 51: GRAFIČNI KAZALEC.................................................................................................................................. 53

SLIKA 52: POŠILJANJE PODATKOV MIKROKRMILNIKU ................................................................................................... 55

SLIKA 53: PREJEMANJE PODATKOV IZ MIKROKRMILNIKA ............................................................................................... 56

SLIKA 54: PRIKAZ TEMPERATURE IN NAPETOSTI NA ZASLONU MOBILNE APLIKACIJE ............................................................ 57

SLIKA 55: IKONA MOBILNE APLIKACIJE NA PAMETNEM TELEFONU ................................................................................... 58

SLIKA 56: SPLASH SCREEN ..................................................................................................................................... 58

SLIKA 57: ZAHTEVA ZA VKLOP BLUETOOTH MODULA ................................................................................................... 59

SLIKA 58: ZASLON MOBILNE APLIKACIJE .................................................................................................................... 59

SLIKA 59: VOŽNJA MOBILNE PLATFORME .................................................................................................................. 61

Page 11: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

x

KAZALO TABEL

TABELA 1: DELOVANJE INTEGRIRANEGA VEZJA L293 ................................................................................................... 18

TABELA 2: POVEZAVE MED RAZVOJNO PLOŠČO ARDUINO UNO IN MIKROKRMILNIKOM ATMEGA328P-PU ........................... 32

TABELA 3: SEZNAM ELEMENTOV VEZJA MOBILNE PLATFORME ....................................................................................... 35

TABELA 4: SPECIFIKACIJE PAMETNEGA TELEFONA [26] ................................................................................................. 49

TABELA 5: GRAFIKA GUMBOV MOBILNE APLIKACIJE ..................................................................................................... 54

Page 12: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

xi

UPORABLJENE KRATICE

RC Daljinsko upravljanje

(ang. Remote control)

DC Enosmerni tok

(ang. Direct current)

OS Operacijski sistem

(ang. Operating system)

GPS Sistem globalnega določanja položaja

(ang. Global Positioning System)

MEMS Mikro-elektromehanski sistemi

(ang. Micro-electro-mechanical systems)

CPU Centralno procesna enota

(ang. Central processing unit)

GPU Grafična procesna enota

(ang. Graphics processing unit)

SD Spominska kartica

(ang. Secure Digital)

HTML Jezik za označevanje nadbesedila

(ang. HyperText Markup Language)

USB Univerzalno serijsko vodilo

(ang. Universal Serial Bus)

LED Svetleča dioda

(ang. Light-emitting diode)

LCD Zaslon s tekočimi kristali

(ang.Liquid-crystal display)

GND Masa

(ang. Ground)

VCC Napajalni pin

(ang. IC power-supply pin )

TxD Pin za oddajanje podatkov

(ang. Transmitted Data)

RxD Pin za prejemanje podatkov

(ang. Received Data)

Page 13: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

xii

SRAM Statični bralno-pisalni pomnilnik

(ang. Static random-access memory)

EEPROM Električno izbrisljivi programljivi bralni pomnilnik

(ang. Electrically Erasable Programmable Read-Only Memory)

USART Univerzalni sinhroni/asinhroni sprejemnik in oddajnik

(ang. Universal synchronous/asynchronous receiver/transmitter)

ICSP Serijsko programiranje znotraj vezja

(ang. In-Circuit Serial Programming)

PWM Pulzno širinska modulacija

(ang. Pulse-width modulation)

SDK Programska podpora za razvoj

(ang. Software development kit)

XML Razširljiv označevalni jezik

(ang. Extensible Markup Language)

ADT Razvojna orodja Android

(ang. Android Development Tools)

IDE Integrirano razvojno okolje

(ang. Integrated Development Environment)

Page 14: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

1 UVOD

Mobilne platforme danes srečujemo na raznoraznih področjih. Še posebej uporabne so

takrat, če so ciljne naloge v danih okoljih za nas nevarne ali celo neizvedljive. Primer

takšne uporabe je npr. raziskovanje planetov, kjer niti ne moremo predvideti, kakšne

nevarnosti lahko pričakujemo. Prav tako so zelo uporabne v okoljih, kjer se dela z

nevarnimi snovmi. Med najodmevnejšimi je v zadnjem času npr. ameriška vesoljska

platforma MSL (Mars Science Laboratory), imenovana tudi Curiosity (radovednost) [1].

Platforma je po večmesečnem potovanju po vesolju pristala na rdečem planetu, od koder

s pomočjo kamer, robotske roke, različnih detektorjev in opreme za analizo vzorcev

pošilja na Zemljo podatke in tako pomaga posredovati veliko novih informacij o planetu

Marsu.

Slika 1: Curiosity [1]

Glede na način upravljanja mobilnih platform poznamo takšne, ki jih lahko upravljamo

oddaljeno, in na drugi strani v celoti avtonomne, ki se v okolju lahko samodejno gibljejo s

pomočjo različnih senzorjev. Eden takšnih je na primer zadnje čase zelo priljubljeni

robotski sesalnik [2], ki namesto nas posesa v stanovanju. Robotski sesalnik se s

pomočjo senzorjev orientira po prostoru in lahko brez naše pomoči počisti tla tudi

medtem, ko nas ni doma. Vsaka naslednja generacija robotskih sesalnikov poskuša

odpraviti slabosti prejšnjih. Tako nam na primer zadnja generacija že omogoča, da se

robotski sesalnik tudi samostojno priklopi na napajanje, ko se baterija že preveč izprazni.

Page 15: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

2

Slika 2: Robotski sesalnik [2]

Na podobnem načelu deluje tudi robotska kosilnica [3], ki lahko popolnoma samostojno

kosi trato v okolici.

Slika 3: Robotska kosilnica [3]

Sistem deluje tako, da pred prvo košnjo postavimo mejni vodnik, ki določi območje košnje.

Prav tako pa moramo na predpisani razdalji omejiti fiksne ovire, kot so drevesa, grede itd.

Vodnik se mora zakopati približno 20 centimetrov v zemljo, da se ga zaščiti pred

zunanjimi poškodbami. Robotska kosilnica tako v določenem območju samostojno kosi

travo v vseh vremenskih razmerah. Preko zaslona lahko nastavimo želene nastavitve

delovanja, kot so na primer časovna obdobja, v katerih želimo, da kosilnica kosi travo. Ker

robotska kosilnica opravlja svoje delo na prostem, imajo nekateri modeli vgrajene tudi

sončne celice. Tako lahko del energije, ki jo uporablja za delovanje, pridobi tudi iz sončne

svetlobe. Prav tako imajo vgrajene varnostne zaščite, ki preprečujejo morebitne poškodbe

ljudi in živali. Na primer, če kosilnico med obratovanjem dvignemo, se rezalni noži

avtomatsko ustavijo. Prav tako so kosilnice zaščitene pred odtujitvijo. Res je, da se lahko

kosilnico odnese, vendar se je ne bo dalo uporabljati, saj je potrebno pred vklopom vnesti

ustrezno PIN kodo, v nasprotnem primeru se vklopi alarm. Slabosti takšnih kosilnic so za

Page 16: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

3

enkrat še sorazmerno visoke cene, potrebno postavljanje mejnega vodnika, košnja samo

do naklonov 35 % in višina trave samo do 20 cm.

Med najbolj uporabne senzorje, ki jih srečujemo pri mobilnih platformah, uvrščamo

senzorje sile, ultrazvočne senzorje, infrardeče senzorje ter različne video kamere, ki se

uporabljajo za strojni vid. Strojni vid temelji na zajemanju slike ter njene analize in

razpoznave. Primarno se uporablja za avtomatski nadzor in usmerjanje robotov v

industriji, se pa aplikacije s strojnim vidom uporabljajo še marsikje drugje, kot je na primer

razvrščanje izdelkov in njihovo preverjanje, optična merjenja ipd. Atraktivna aplikacija

strojnega vida je na primer zaznavanje obraza pri fotografiranju z digitalnim fotoaparatom

[4].

Slika 4: Zaznavanje obraza [4]

V delu se bomo posvetili problemu krmiljenja mobilnih platform na daljavo preko

zunanjega sistema. Kot zunanji sistem bomo uporabili pametni telefon, ki nam sicer že v

osnovi ponuja veliko možnosti za krmiljenje. Veliko se jih že uporablja npr. pri nadzoru in

krmiljenju tako imenovanih pametnih hiš [5], kjer lahko kar iz naslonjača preko aplikacije

na pametnem telefonu upravljamo z razsvetljavo, ogrevanjem oz. hlajenjem hiše,

zasenčimo prostor s senčili na oknih, izvajamo video nadzor itd. Prednost takšnega

sistema je večje udobje, varnost, učinkovitejše varčevanje itd. Seveda pa predstavlja

vedno večji problem ob vedno večji uporabi različnih komunikacijskih rešitev (predvsem

brezžičnih) sama varnost oziroma vedno večja nevarnost vdora v takšen sistem.

Page 17: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

4

Slika 5: Pametna hiša [5]

Ker dandanes pametni telefoni poleg svoje nesporne praktične uporabnosti ponujajo tudi

obilo možnosti uporabe vgrajenih senzorjev, smo se odločili, da bomo te uporabili tudi za

krmiljenje mobilne platforme. Iz senzorjev bomo tako pridobivali podatke o orientaciji

pametnega telefona ter jih brezžično posredovali mikrokrmilniku na mobilni platformi.

Orientacija pametnega telefona bo tako določala želeno smer in hitrost pomikanja mobilne

platforme v prostoru.

V magistrskem delu bomo najprej predstavili zasnovo sistema krmiljenja s pametnim

telefonom. Predstavili bomo pomen besedne zveze pametni telefon ter podrobneje opisali

senzor, ki opravlja ključno vlogo pri izvedbi sistema. V nadaljevanju bomo predstavili

razvoj mobilne platforme in ključne komponente sistema, razvojno okolje za načrtovanje

programske kode in razvoj mobilne aplikacije. V zaključku bomo predstavili delovanje

sistema pri testiranju ter zaključili s sklepom o možnostih nadgradnje in nadaljnjega

razvoja.

Page 18: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

2 ZASNOVA SISTEMA KRMILJENJA S PAMETNIM TELEFONOM

Glavni cilj magistrskega dela je zasnova in razvoj celotnega sistema krmiljenja mobilne

platforme od načrtovanja in izbire ustreznih senzorjev do izvedbe sistema na razvojni

plošči in implementacije aplikacije, s katero bomo preko Bluetooth vmesnika pošiljali

ukaze mikrokrmilniku. Mobilna platforma lahko predstavlja veliko različnih rešitev. V

našem primeru bo to avtomobil, ki že omogoča premikanje v prostoru. Ker zmožnost

premikanja po prostoru imenujemo tudi mobilnost, lahko takšen avtomobil poimenujemo

tudi mobilna platforma.

Slika 6: Mobilna platforma v povezavi s pametnim telefonom [38]

Osnovno načelo krmiljenja bo izvedeno tako, da bomo lahko s samo orientacijo

pametnega telefona določali, v katero smer želimo usmeriti mobilno platformo. Pametni

telefoni imajo poleg ostalih senzorjev vgrajen pospeškometer, s pomočjo katerega lahko

dobimo podatke, v kakšnem položaju se nahaja telefon. Ti podatki se sicer že uporabljajo

v različnih aplikacijah, ki imajo funkcionalni pomen ali pa služijo zgolj za zabavo. Npr. igra,

kjer moramo kotalečo kroglico iz enega konca labirinta spraviti na drugi konec, pri tem pa

se moramo izogibati luknjam, temelji ravno na načelu zaznavanja orientacije pametnega

telefona [6]. Takšne igre so (narejene iz lesa in kovinske kroglice) sicer obstajale že dosti

prej, predno so se pojavili pametnimi telefoni. Labirint smo npr. prijeli v roke in ga nagibali

v tisto smer, kamor smo želeli, da se zakotali kroglica, za vse ostalo pa je poskrbela

gravitacija. Aplikacija na pametnih telefonih nam s pomočjo senzorjev simulira ravno

takšno gibanje, s to razliko, da sedaj namesto labirinta držimo v rokah pametni telefon.

Page 19: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

6

Slika 7: Igra labirint [6]

Na sliki 8 je predstavljena funkcionalna zasnova sistema krmiljenja mobilne platforme z

mobilnim telefonom. V predlaganem primeru je mobilna platforma v celoti vodena preko

zunanjega sistema, zato lahko takšen sistem uvrstimo med daljinsko krmiljena vozila.

Mobilna platforma je v osnovi dejansko RC avtomobil.

Slika 8: Zasnova sistema krmiljenja mobilne platforme z mobilnim telefonom [39]

Page 20: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

3 UPRAVLJANJE S PAMETNIM TELEFONOM

V tem poglavju bomo predstavili uporabnost pametnega telefona in podrobneje opisali

senzor, ki ima ključno vlogo pri krmiljenju mobilne platforme.

3.1 Pametni telefon

Pametni telefon (angl. smartphone) je mobilni telefon, ki poleg osnovnih funkcij klicanja in

pošiljanja sporočil ponuja še več naprednejših storitev. Znani so tudi kot dlančniki, ki imajo

vgrajen mobilni telefon in omogočajo uporabniku, da sam nalaga nove aplikacije. Na

pametne telefone lahko gledamo tudi kot na osebne žepne računalnike z osnovnimi

funkcijami mobilnega telefona. Uporaba pametnih telefonov se je v zadnjih letih izjemno

povečala. Telefoni imajo tudi vedno močnejše procesorje, več pomnilnika, kakovostnejše

in večje zaslone ter raznorazne senzorje, ki jih lahko s pridom uporabljamo za različne

namene. K hitremu razvoju pametnih telefonov so veliko pripomogli tudi napredni

operacijski sistemi, kot so Symbian OS, Android OS, BlackBerry OS, iOS, Windows

Phone OS in drugi [7].

3.1.1 Senzorji

Pametni telefoni imajo dandanes vrsto senzorjev, kot so: senzor srčnega utripa, prstnih

odtisov, zračnega pritiska, kretenj, bližine, pospeška, žiroskop, GPS, Hallov senzor (ki na

primer zazna, če je mobilnik shranjen v etuiju oz. vzet iz njega ter na podlagi tega vklopi

oziroma izklopi zaslon) ter še vrsto drugih. Za predlagan sistem je najpomembnejši

pospeškometer. Pospeškometer je elektromehanska naprava, ki nam omogoča merjenje

pospeška sile. Vgrajen je v veliki večini mobilnih naprav z nalogo zaznavanja spremembe

gibanja ali vibracij. Poleg mobilnih naprav lahko pospeškometre najdemo v vrsti drugih

elektronskih naprav (od kamer, fotoaparatov, do prenosnih računalnikov). V prenosnih

računalnikih nam npr. služijo za zaščito trdih diskov pred poškodbami. V primeru, da

prenosni računalnik med obratovanjem nenadoma pade iz rok ali mize, pospeškometer

zazna nenadni premik in nemudoma izključi trdi disk, s čimer se prepreči trk bralne glave

s površino diska. Brez te zaščite bi trk bralne glave in površine diska povzročil poškodbe,

ki lahko privedejo do trajne izgube dokumentov na trdem disku. Med drugim se

pospeškometri uporabljajo tudi v avtomobilski industriji, kjer lahko zaznajo avtomobilsko

nesrečo in v trenutku sprožijo varnostne zračne blazine [31].

Page 21: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

8

Slika 9: Pospeškometer [8]

Pospeškometer s pomočjo kompasa v pametnih telefonih lahko prepozna v točno

kakšnem položaju se nahaja telefon in nam lahko glede na funkcijo, katero upravljamo,

npr. prilagaja zaslon (zavrti celoten zaslon, prilagodi kamero, obrne sliko itd.).

Pospeškometer se veliko uporablja v mobilnih aplikacijah za zabavo, saj na ta način

postanejo na primer igre dosti bolj zanimive in zabavne.

V našem primeru smo se odločili koordinate pospeškometra uporabiti za krmiljenje

mobilne platforme. Senzor posreduje koordinate telefona, te pa se nato preko brezžične

Bluetooth povezave posreduje mikrokrmilniku mobilne platforme. S kretnjami pametnega

telefona imamo tako možnost sporočati mobilni platformi, kako naj se giblje. V sistemu je

predvidena uporaba pametnega telefona Samsung Galaxy Core, v katerem je vgrajen

Boschev šestosni digitalni kompas BMC150 z izredno nizko porabo. Meri magnetno polje

Zemlje, na podlagi katerega lahko pametni telefon določa sever, kakor tudi dinamični in

statični pospešek v vseh treh dimenzijah [30, 31]. Čeprav je pametni telefon nizkega

cenovnega razreda, je senzor BMC150 zelo natančen in lahko zaznava že najmanjše

rotacije mobilnika.

Page 22: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

9

Uporaba senzorja BMC150:

notranja in zunanja navigacija, npr. rotacija mape, štetje korakov;

sledenje gibanju;

zaznavanje tapkanja npr. zaznavanje enojnega in dvojnega tapkanja po zaslonu;

drsenje po zaslonu »scrolling«;

zaznavanje nenadnega padca/spusta;

6-osna orientacija za igralne naprave;

tako imenovane »Air mouse« aplikacije.

Specifikacije senzorja BMC150:

napajalna napetost: 1,62 V ~ 3.6 V;

temperatura delovanja: -40 °C ~ 85 °C;

dimenzije: 2,2 x 2,2 x 0,95 mm3.

Geomagnetni del senzorja:

merilno območje: ± 1300 µT1 (x in y os) / ± 2500 µT (z os);

ločljivost: 0,3 µT

Pospeškovni del senzorja:

ločljivost: 12 bit;

programirljivo g-območje: ± 2 g / ± 4 g / ± 8 g / ± 16 g /.

1 Tesla, izpeljana enota mednarodnega sistema enot za gostoto magnetnega polja.

Page 23: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

10

Senzor BMC150 je dejansko SiP (sistem v paketu, ang. System in package). Vključuje

triosni pospeškometer in triosni geomagnetni senzor v enem paketu. Integrirani vezji

delujeta kot dve ločeni podrejeni napravi z različnima I2C2 naslovoma v I2C načinu. Slika

10 prikazuje osnovne gradnike senzorja BMC 150.

Slika 10: Blokovni diagram senzorja BMC150 [32]

2 I2C vodilo je vmesnik pri različnih proizvajalcih čipov, senzorjev, analogno digitalnih pretvornikov itd. Razvit

je bil z namenom zmanjšanja števila povezav med čipi v televizijskih aparatih [33].

Page 24: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

11

Za zaznavanje spremembe v gibanju se uporablja naklon (ang. Slope) med zaporednimi

signali pospeška (ang. Acceleration). Prekinitev nastopi, ko naklon (absolutna vrednost

razlike pospeška) preseže prednastavljeno mejo. Takoj, ko naklon pade pod to mejo, se

prekinitev konča.

Slika 11: Načelo zaznavanja gibanja [32]

Page 25: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

12

Slika 12 prikazuje usmerjenost Android koordinatnega sistema, pri čemer je X os

vodoravna glede na zaslon in kaže v desno, Y os je navpična in obrnjena navzgor, Z os

pa kaže iz zaslona ven.

Slika 12: Orientacije osi [32]

Heading – kot med magnetno severno smerjo in Y osjo, okoli Z osi (0° do 360°). 0° =

sever, 90° = vzhod, 180° = jug, 270° = zahod.

Pitch – rotacija okoli osi X (-180° do 180°) s pozitivnimi vrednostmi, ko se X os premakne

v smeri Y osi.

Roll – rotacija okoli osi Y (-90°do 90°) s pozitivnimi vrednostmi, ko se X os premakne v

smeri Z osi.

Page 26: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

13

4 RAZVOJ MOBILNE PLATFORME

V tem poglavju bomo predstavili vse sklope, ki smo jih realizirali pri razvoju mobilne

platforme.

4.1 Osnova za mobilno platformo

Za mobilno platformo smo izbrali RC (ang. remote control) avtomobil. Sama platforma ni

vključevala vseh potrebnih rešitev za predlagano realizacijo sistema krmiljenja. Zato smo

platformi odstranili obstoječe vezje za krmiljenje in ohranili samo podvozje ter pogonska

DC motorja. Mobilno platformo usmerjamo s kretnjami, ki jih izvajamo s pametnim

telefonom. V predlaganem sistemu mikrokrmilnik na platformi brezžično prejema podatke

iz pametnega telefona in jih posreduje mobilni platformi. Podatke iz pametnega telefona,

ki so potrebni za krmiljenje mobilne platforme, bomo prenašali preko Bluetooth

komunikacije, pri čemer bo v mobilniku vgrajen Bluetooth vmesnik pošiljal podatke

Bluetooth sprejemniku na mobilni platformi. Bluetooth sprejemnik na platformi bo povezan

z razvojno ploščico Arduino UNO. Mikrokrmilnik na razvojni ploščici bo te podatke

sprejemal neprestano ter na njihovi podlagi ustrezno krmilil DC motorje.

Slika 13: Avtomobil na daljinsko krmiljenje [9]

Page 27: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

14

Slika 14 prikazuje podvozje in že vgrajeno vezje mobilne platforme, ki omogoča

sprejemanje ukazov preko radijske frekvence in njihovo posredovanje DC motorjema.

Slika 14: Vgrajeno vezje za RC krmiljenje avtomobila s podvozjem

4.2 Vezje

Vezje, razvito v okviru magistrskega dela, temelji na razvojni plošči Arduino UNO, ki smo

jo nato povezali s krmilnikom motorjev in Bluetooth modulom za komunikacijo s pametnim

telefonom.

4.2.1 Razvojna plošča

Za razvoj vezja smo uporabili razvojno ploščico Arduino UNO. Za to rešitev smo se

odločili zaradi odprtokodnega razvojnega okolja, ki je prijazno do uporabnika in ki poleg

ploščice Arduino UNO podpira tudi vrsto drugih razvojnih plošč, ki se med seboj

razlikujejo po zmogljivosti, načinu povezovanja, število vhodov/izhodov itd. Poleg tega se

za platforme podpira tudi široko paleto dodatnih modulov s senzorji za temperaturo, vlago,

svetlobo … ter module s SD spominsko kartico, LCD zaslonom itd. Najpomembnejši del

platforme je 8-bitni mikrokrmilnik družine Atmel, in sicer ATMEGA328P, ki deluje s

16 MHz taktom. Mikrokrmilnik ima veliko različnih vhodov in izhodov, ki jih je potrebno

ustrezno konfigurirati. Mikrokrmilniku moramo tako »povedati«, ali želimo določeni pin

uporabiti kot vhod, izhod ali TxD pin serijskega vmesnika. Arduino UNO ima šest

analognih priključkov, ki omogočajo zaznavo analognih napetosti z 10-bitno razločljivostjo

med GND in Aref, poimenovanih od A0 do A5, ter štirinajst digitalnih, ki so označeni s

Page 28: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

15

številkami od 0 do 13. Nekateri med njimi imajo več funkcij kot samo branje in pisanje

logičnega stanja. Za napajanje imamo na voljo dva priključka. Eden je 5,5 mm pin, na

katerega lahko pripeljemo od 6 do 20 V, ter USB priključek, preko katerega lahko Arduino

UNO tudi programiramo in z njim komuniciramo med izvajanjem programa, vendar pa

smo pri tem omejeni z izhodnim tokom USB priključka, ki znaša 500 mA. V Flash

pomnilnik se shrani program, ki se trenutno izvaja, spremenljivke programa pa se shranijo

v statični polnilnik SRAM. Velikost Flash polnilnika je 32 kB, SRAM-a pa 2 kB. Arduino

UNO ima na plošči štiri led diode, od katerih ena signalizira, da je Arduino UNO priključen

na napajanje, ena je povezana z digitalnim priključkom D13, preko katere lahko na hitro s

testnim programom preverimo, ali Arduino deluje, ostali dve pa sta povezani na TxD in

RxD priključka in nam signalizirata, kdaj poteka komunikacija preko serijskih vrat USART

[10]. ATmega8U2 je dodaten čip na razvojni plošči, ki mikrokrmilniku omogoča

komunikacijo preko USB vrat. Poleg tega imamo na plošči tudi 3,3 V regulator napetosti,

ki omogoča stabilno napajanje naprav v tem območju. Poleg 3,3 V regulatorja imamo tudi

5 V izhod za napajanje zunanjega vezja. Poleg razvojne ploščice potrebujemo za

programiranje še programsko opremo Arduino IRO, ki si jo lahko brezplačno prenesemo

iz uradne spletne strani. Razvojno okolje Arduino IRO nam omogoča programiranje v

jeziku C++, vendar obstajajo določene razlike. Prva očitna je že, da nimamo funkcije

»main()« ampak namesto nje uporabljamo funkcijo »loop()«, ki se stalno ponavlja, kot

prikazuje slika 15, na kateri je prikazan program za utripanje led diode na digitalnem

priključku 13 z zakasnitvijo ene sekunde [10].

Page 29: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

16

Slika 15: Razvojno okolje Arduino IRO

Ko pritisnemo tipko za nalaganje programa na mikrokrmilnik, Arduino IRO najprej prevede

kodo v standardni C++. Nato se kliče prevajalnik avr-gcc, ki prevede program in vključi

vse knjižnice, na koncu pa se še kliče avrdude program, ki preveden program prenese na

mikrokrmilnik.

Page 30: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

17

Slika 16: Razvojna plošča Arduino Uno [11]

Mikrokrmilnik: ATMega328P

Frekvenca procesorja: 16 MHz

Delovna napetost: 5 V

Vhodna napetost (priporočena): 7~12V

Vhodna napetost (omejena): 6~20 V

Digitalni vhodno/izhodni pini: 14 (od tega 6 PWM izhodi)

Analogni vhodni: 6

Spomin: Flash (32 kB), SRAM (2 kB) in EEROM (1 kB)

Enosmerni tok na vhodno/izhodne priključke: 40 mA

Enosmerni tok za priključek 3.3 V: 50 mA

Priključki: USB, ICSP

Tipka: za ponastavljanje

Page 31: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

18

4.2.2 Krmilnik L293

Krmilnik L293 je integrirano vezje, ki je namensko razvito za krmiljenje enosmernih

motorjev. Narejeno je iz dveh med seboj neodvisnih delov. Vsakega posebej lahko preko

priključkov ENABLE1 in ENABLE2 aktiviramo z logično enico. Priključka IN1 ter IN2 pa

omogočata enostaven način za spreminjanje smeri vrtenja motorja. Napajalna napetost

krmilnika se giblje v območju med 4,5 V in 36 V preko napajalnih sponk VSS in VS. Pri

čemer priključek VSS služi za napajanje krmilne logike, priključek VS pa za napajanje

motorjev. Napajalni napetosti VSS in VS sta lahko enaki ali pa različni (kot v našem

primeru), vendar pod pogojem, da je napajalna napetost motorjev (VS) nekoliko višja od

napajalne napetosti krmilne logike (VSS) [12].

Slika 17: Shema krmilnika L293 [13]

Spodnja tabela prikazuje vodenje motorjev glede na vhodna logična stanja.

Tabela 1: Delovanje integriranega vezja L293

OBNAŠANJE

MOTORJA

IN1 IN2 IN3 IN4 EN1 EN2

motor miruje 0 0 0 0 1 1

vrtenje v levo 0 1 0 1 1 1

vrtenje v desno 1 0 1 0 1 1

takojšna

zaustavitev

x x x x 0 0

Page 32: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

19

4.2.3 Bluetooth modul

Modri zob (ang. Bluetooth) je brezžična tehnologija, ki omogoča brezžično povezovanje

med napravami. Izmenjava podatkov poteka na kratke razdalje v frekvenčnem pasu med

2,4 in 2,5 GHz.

Slika 18: Bluetooth modul (levo) [14], vezava Bluetooth modula (desno)

Hitrost prenosa: 9600 b/s

Napajalna napetost: 3,3 ~ 6 V

Doseg: 10 m

Teža: 3 g

Pini: Vcc, GND, TxD, RxD

Bluetooth modul ima štiri priključke. Dva sta napajalna Vcc in GND, na katera smo

pripeljali 3,3 V, druga dva TxD in RxD pa sta namenjena prenosu podatkov. Ker Bluetooth

modul deluje s pozitivno napetostjo +3,3 V, Arduino pa ima na izhodih svojih digitalnih

priključkov +5 V, smo na sprejemni pin RxD Bluetooth modula dodali napetostni delilnik in

se s tem izognili napačnemu delovanju oz. uničenju modula.

Bluetooth TxD → Arduino Uno RxD(pin 0)

Bluetooth RxD → Arduino Uno TxD (pin 1)

Bluetooth GND → Arduino GND pin

Bluetooth Vcc → Arduino 3,3 V pin

Kadar preko serijskega priključka nalagamo program iz računalnika na mikrokrmilnik,

moramo biti pozorni, da iz razvojne ploščice izklopimo priključka RxD ter TxD ki sta

povezana z Bluetooth modulom. V nasprotnem primeru se program ne bo pravilno naložil

na mikrokrmilnik in razvojno okolje Arduino IRO nam bo javljalo napako.

Page 33: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

20

4.2.4 Senzor temperature

Na mobilni platformi smo vgradili tudi digitalni senzor temperature DS18B20 v TO-92

ohišju. Mikrokrmilnik namreč preko tega senzorja pridobiva podatke o temperaturi okolice

in jih preko Bluetooth modula pošilja pametnem telefonu. Pametni telefon te podatke

sprejme in jih prikaže na zaslonu. Območje temperature, ki jo lahko zajamemo s

senzorjem, se giblje od - 55 °C do + 125 °C. V območju od - 10 °C do + 85 °C znaša

maksimalno odstopanje ± 0,5 °C. Napetost, s katero moramo napajati senzor, se mora

gibati od 3 do 5,5 V [15].

Če želimo pridobiti podatke iz temperaturnega senzorja DS18B20, moramo za to uporabiti

tako imenovani »one wire« protokol [37]. Pri tem protokolu se uporablja sistem z enim

gospodarjem vodila (master) in več sužnji (slave), ki jih nadzoruje. Vsak digitalni senzor

ima svojo 64-bitno ROM kodo preko katere ga gospodar prepozna. Senzorji, ki uporabljajo

takšen protokol, so še posebej praktični zaradi cene in enostavnosti uporabe. Omogočajo

neposredno digitalno merjenje temperature in so bolj tolerantni na dolžine povezav med

senzorjem in mikrokrmilnikom [15].

»One wire« protokol lahko uporabljamo na dva načina. Prvi način je parazitski način

(Parasite power mode), kar pomeni, da za delovanje čipa potrebujemo samo dve

povezavi. Eno povezavo za podatke in drugo, ki služi kot masa. Na podatkovno vodilo je

vezan še 4,7 kΩ »pull_up« upor. Drugi način pa je tako imenovani normalni način (Normal

mode), ki za delovanje uporablja tri povezave: eno za podatke, drugo za maso in tretjo za

napajanje. Prav tako je na podatkovni povezavi potreben 4,7 kΩ »pull_up« upor [15].

Slika 19: Temperaturni senzor (levo) [16], vezava temperaturnega senzorja (desno)

Page 34: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

21

4.2.5 Senzor svetlobe

Na strehi mobilne platforme smo vgradili tudi senzor svetlobe TEPT4400 preko katerega

zaznavamo svetlobni tok v okolici. Mikrokrmilnik tako preko analognega vhoda bere

podatke o osvetljenosti v luksih [lx]. Ko mikrokrmilnik na analognem vhodu zazna, da je v

okolici premalo svetlobe, se na platformi avtomatsko prižge kratke luči, ne glede na to, ali

imamo predhodno luči ugasnjene. TEPT4400 svetlobni senzor je silicijev NPN epitaksijsko

ploskovni fototranzistor v T-1 ohišju. Senzor je občutljiv na vidno svetlobo podobno kot

človeško oko in ima največjo občutljivost pri 570 nm. Uporablja se za krmiljenje

osvetljevanja prikazovalnikov, krmiljenje zatemnitve LCD zaslonov kot tudi krmiljenje

osvetljevanja tipkovnice pri mobilnih napravah. Kot, pri katerem senzor zaznava svetlobo

s polovično občutljivostjo, znaša ± 30 ° [17].

Slika 20: Svetlobni senzor (levo) [18], vezava svetlobnega senzorja (desno)

Spodnji graf predstavlja relativno spektralno občutljivost glede na valovno dolžino:

Slika 21: Graf občutljivosti svetlobnega senzorja [17]

Page 35: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

22

4.2.6 Piskač

Ker smo želeli na mobilni platformi ustvariti tudi efekt hupe, smo za zvočni signal uporabili

piskač »ang. buzzer«. Kot že samo ime pove, piskač povzroči močan zvok (pisk), če na

njega pripeljemo napetost. Poznamo več vrst piskačev: od mehanskih, elektromehanskih

do piezoelektričnih. V našem primeru smo izbrali piskač, ki deluje na elektromehanskem

načelu z napajalno napetostjo od 4 do 8 V in z resonančno frekvenco okoli 2300 Hz. Z

napajalno napetostjo lahko tako reguliramo glasnost zvoka. Njegova raven znaša okoli 85

dB. Za napajanje smo uporabili kar digitalni izhod iz razvojne ploščice ter ga programsko

nastavljali tako, da piskač na zahtevo spusti zaporedno dva piska pri čemer je eden krajši

od drugega.

Slika 22: Piskač (levo) [19], vezava piskača (desno)

4.3 Napajanje

Napajanje je zagotovljeno iz dveh različnih virov. Za sam pogon mobilne platforme smo

uporabili šest zaporedno vezanih baterij velikosti AA, ki se nahajajo na spodnji strani

platforme (slika 23), kjer je bil že v osnovi za njih predviden prostor. Uporabili smo polnilne

baterije proizvajalca GP Batteries kapacitete 2300 mAh in napetosti 1,2 V. Ker imajo

polnilne baterije nekoliko večji premer kot klasične nepolnilne 1,5 V baterije, se je pojavila

težava, saj v nosilec na spodnji strani platforme zaradi prostorske stiske nismo mogli

vstaviti vseh šest polnilnih baterij. Dve polnilni bateriji smo tako zamenjali s klasičnimi

nepolnilnimi. Napajanje za pogon tako skupaj znaša 7,8 V. Za napajanje vezja pa smo

uporabili 9 V baterijo, ki preko napetostnega regulatorja L7805 napaja mikrokrmilnik,

senzor temperature, senzor svetlobe, LED diode itd. Na spodnji strani mobilne platforme

imata oba vira napetosti ločeni stikali za vklop oziroma izklop napajanja.

Page 36: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

23

Slika 23: Baterije za napajanje pogonskega dela

Pogonske baterije so tako lažje dostopne, kar je priporočljivo, saj jih je potrebno pogosteje

polniti. Napajalna baterija vezja pa je skrita pod školjko avtomobila (slika 24). Da lahko

dostopamo do nje, je potrebno odviti štiri vijake, ki služijo za pritrditev školjke avtomobila.

Baterija je na podvozje pritrjena s pritrdilnim trakom – ježkom, tako da jo je mogoče po

potrebi menjati.

Slika 24: Baterija za napajanje vezja

Page 37: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

24

4.3.1 Napetostni regulator LM7805

Napetostni regulator LM7805 služi za stabilizacijo napetosti. Tako na njegovem izhodu

dobimo stabilno napetost 5 V pri porabi tokov do 1 A, pri čemer imamo na vhodu višjo

napetost. Vrednosti napetosti na vhodu, pri katerih regulator še deluje, se morajo gibati

med 7 in 20 V. Kot lahko vidimo na spodnji sliki, smo napetostni regulator izbrali v TO-220

ohišju, na katerega lahko pritrdimo po potrebi tudi hladilno rebro, vendar v našem primeru

tega ni bilo potrebno.

Slika 25: Napetostni regulator L7805 (levo) [20], shema napetostnega regulatorja (desno)

4.3.2 Napetostni regulator LM1117

Ker imamo v vezju še Bluetooth modul, ki potrebuje konstantno napetost 3,3 V, smo poleg

napetostnega regulatorja L7805 v vezje vključili še napetostni regulator LM1117, ki na

izhodu zagotavlja stabilizira ustrezno napetost 3,3 V. Za stabilizacijo takšne napetosti se

mora vhodna napetost gibati od minimalno 4,75 V do maksimalno 15 V. Maksimalni

izhodni tok se giblje do 800 mA. Prav tako kot prejšnji, se tudi ta regulator nahaja v TO-

220 ohišju. Napetostna regulatorja sta tako povezana vzporedno na napajalno napetost

vezja »G_VEZJE«.

Slika 26: Napetostni regulator LM1117 (levo) [21], shema napetostnega regulatorja

(desno)

Page 38: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

25

4.3.3 Merjenje napetosti

Želeli smo, da bi na zaslonu pametnega telefona lahko odčitali vrednost napajalne

napetosti pogonskega dela. Na podlagi te vrednosti bi tako vedeli, ali še imamo zadostno

stanje baterij ali jih moramo zamenjati oz. napolniti. Zaradi tega smo izdelali tudi preprost

voltmeter, s katerim lahko spremljamo napetost pogonskega dela (slika 27).

Slika 27: Vezava voltmetra

Voltmeter deluje tako, da imamo med pozitivnim priključkom baterije in maso zaporedno

vezana dva upora, ki nam razdelita merjeno napetost, da je v območju napetosti

analognih vhodov. Vezje z vrednostma 1 MΩ in 100 kΩ ima vhodno impedanco 1,1 MΩ in

je primerno za merjenje napetosti približno do 50 V. Točka na povezavi uporov je

povezana z analognim vhodom mikrokrmilnika in je enaka napetosti pogonskega dela

deljeno z 11. Pri 55 V bi tako vhodna napetost, pripeljana na analogni vhod, znašala 5 V,

kar je zgornja meja, katero mikrokrmilnik še dopušča. Vrednost napetosti beremo na

analognem pinu A1. Program vsakih 10 ms odčita napetost. Po prevzemu desetih vzorcev

izračuna povprečno napetost in jo pošlje na serijski monitor. Pametni telefon nato bere

vrednosti, ki se pripeljejo na serijski vhod, in jih prikaže na zaslonu.

4.4 Nadgradnja mobilne platforme

Kot smo že omenili, smo osnovno mobilno platformo nadgradili in dodali določene

komponente, kot so pogon, svetila, vezje.

Page 39: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

26

4.4.1 Pogon

Pogon je sestavljen iz dveh enosmernih motorčkov, pri čemer je zadnji zadolžen za

premikanje platforme naprej ter nazaj, sprednji pa krmili kolesa levo in desno (slika 28).

Slika 28: Enosmerni motor

Dolžina 25 mm, višina 15 mm, širina 20 mm

Napajanje: 3 V

Hitrost: 16500 RPM pri napetosti 3 V

Premer gredi: 2 mm

Obremenitveni tok: 350 mA

Motorčka sta z osjo koles povezana preko zobniških prenosov, ki zmanjšajo število

obratov glede na os DC motorčka. Zaradi nezmožnosti natančne regulacije prednjega DC

motorčka pri zavoju desno in levo smo se odločili, da namesto DC motorčka vgradimo

mini servo motor, katerega lahko zelo natančno reguliramo, s čimer smo izboljšali

krmiljenje celotne mobilne platforme.

Slika 29: Enosmerni motor s prenosi (levo) in servo motor (desno) [22]

Page 40: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

27

Dolžina 22 mm, Višina 11.5 mm, Širina 27 mm

Napajanje: 4.8~7.2 V

Hitrost: 0,1 sec/60°

Teža: 3.7 g

4.4.2 Svetila

Mobilna platforma že ima v osnovi spredaj in zadaj po dve led diodi, ki služijo kot svetila.

Kljub temu smo spredaj dodali še dve led diodi, ki služita za kratke luči, obstoječi led diodi

pa smo uporabili kot dolge luči. Prav tako smo na vsako stran platforme dodali še po dve

LED diodi, ki služijo kot smerokazi (slika 30).

Slika 30: Svetila na mobilni platformi

4.5 Načrtovanje vezja

Kot smo že omenili, smo vezje načrtovali oz. testirali s pomočjo razvojne ploščice Arduino

UNO. Razvojno in testno ploščico smo pritrdili na mobilno platformo ter vezje povezali z

napajalnimi baterijami in pogonskima motorjema. Prednost razvojnih plošč je, da lahko

program v trenutku prenesemo iz računalnika na mikrokrmilnik ter ga v naslednjem

trenutku že testiramo. S tem lahko hitro izboljšamo program ter zmanjšamo čas razvoja

projekta. Slika 31 prikazuje vezje z razvojno ploščico Arduino in ostalimi komponentami,

narisano v programu Fritzing [36].

Page 41: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

28

Slika 31: Razvojna shema

Ko smo s testiranjem zaključili, smo z orodjem Eagle [35] izrisali shemo ter tiskanino, ki

služi za nadaljnjo izdelavo tiskanega vezja. Eagle (ang. Easily Applicable Graphical

Layout Editor) je programsko orodje, s katerim lahko načrtujemo tiskana vezja. Slika 32

prikazuje shemo vezja (ang. Shematic), kjer so prikazani vsi potrebni elementi ter

povezave med njimi.

Page 42: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

29

Slika 32: Shema vezja mobilne platforme

Page 43: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

30

4.5.1 Mikrokrmilnik ATmega328P-PU

Razvojno ploščo Arduino UNO smo uporabili za razvoj in testiranje, končno vezje pa

vsebuje od razvojne plošče samo mikrokrmilnik in elemente, ki so potrebni za delovanje le

tega.

Slika 33: Mikrokrmilnik ATmega328P-PU [23]

Slika 34: Razporeditev priključkov mikrokrmilnika ATmega328P-PU [24]

Page 44: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

31

Mikrokrmilnik za delovanje potrebuje stabiliziran enosmerni vir napetosti od 1,8 do 5,5 V,

kvarčni oscilator, ki skrbi za takt mikrokrmilnika s frekvenco osciliranja 16 MHz, ter dva

22 pF kondenzatorja, ki ju za delovanje potrebuje oscilator. Tipka »reset« z uporom v

vrednosti 10 KΩ, pa služi za ponastavitev mikrokrmilnika.

Slika 35: Osnovna shema za delovanje mikrokrmilnika ATmega328P-PU

4.5.1.1.1 Zagonski nalagalnik (bootloader)

Ko smo razvoj končali, smo končno verzijo programa želeli prenesti na nov mikrokrmilnik

ATmega328P-PU, ki bi ga nato prestavili v podnožje na tiskanini. Pri tem se je pojavila

napaka, saj novi mikrokrmilnik ni imel predhodno naloženega tako imenovanega

»bootloaderja« oz. zagonskega nalagalnika. Zagonski nalagalnik je program, ki ga

Arduino razvojne plošče uporabljajo, da programsko kodo med razvojem prenesemo na

mikrokrmilnik preko serijskega protokola z minimalnim številom povezav. Program se tako

prenese preko TxD in RxD serijskih vrat brez uporabe klasičnega programatorja. Zagonski

nalagalnik sicer na mikrokrmilniku zasede 512 bajtov polnilnika, vendar omogoča hitrejši

razvojni postopek.

Page 45: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

32

Ker smo želeli na mobilni platformi uporabiti nov mikrokrmilnik, smo morali na njega s

pomočjo razvojne plošče Arduino UNO prehodno naložiti zagonski nalagalnik. Prvi korak

je bil, da smo na mikrokrmilnik, ki se že nahaja v Arduino razvojni plošči in smo ga

uporabljali za razvoj projekta, naložili program »ArduinoISP«. Ta program se nahaja v

razvojnem okolju Arduino IRO v mapi s primeri (ang. Examples). Ko smo naložili ta

program na razvojno ploščo, smo spremenili Arduino v klasični AVR ISP (ang. In-Circuit

Serial Programming) programator, ki za programiranje uporablja naslednje povezave:

MISO (master in, slave out);

MOSI (master out, slave in);

SCK (serial clock);

VCC (power-supply pin 5 V);

GND (ground);

RESET;

SS (slave reset).

Vezje na sliki 36 predstavlja povezavo razvojne plošče Arduino UNO in mikrokrmilnika

ATmega328P-PU z naslednjimi povezavami priključkov:

Tabela 2: Povezave med razvojno ploščo Arduino UNO in mikrokrmilnikom

ATmega328P-PU

Arduino UNO Pin ATmega328P-PU Pin

SS 10 RESET 1

MISO 11 MISO 17

MOSI 12 MOSI 18

SCK (serial clock) 13 SCK 19

VCC 5 V VCC 7

VCC 5 V AVCC 20

GND GND GND 8

GND GND GND 22

Page 46: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

33

Slika 36: Nalaganje zagonskega nalagalnika

Ko smo prenesli program »ArduinoISP« na Arduino razvojno ploščico in jo povezali z

mikrokrmilnikom, smo ponovno odprli razvojno okolje Arduino IRO. Pod zavihkom orodja

»Tools« smo v našem primeru izbrali ploščo Arduino Uno:

Slika 37: Izbira razvojne plošče

Pod možnostjo »plošča« smo izbrali tudi ustrezen serijski vmesnik, na katerega smo imeli

priključeno razvojno ploščo. Nato smo pod enakim zavihkom orodja pod možnostjo

programator določili razvojno ploščo Arduino kot ISP programator.

Page 47: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

34

Slika 38: Izbira programatorja

V zadnjem koraku je bilo potrebno zagonski nalagalnik samo še prenesti na mikrokrmilnik,

kar smo storili prav tako v zavihku »orodja«, pod možnostjo »posodobi nalagalnik«.

Slika 39: Posodobitev nalagalnika

Po nekoliko daljšem postopku smo tako na naš mikrokrmilnik uspešno prenesli zagonski

nalagalnik. Mikrokrmilnik smo nato brez težav vstavili v razvojno ploščo in na njega

prenesli programsko kodo mobilne platforme. Zagonski nalagalnik tako ostane na

mikrokrmilniku za vedno, razen, če ga želimo izbrisati in s tem privarčevati nekaj prostora.

V tem primeru lahko na mikrokrmilnik še vedno zapišemo program s klasičnim

programatorjem.

Page 48: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

35

4.5.2 Seznam elementov

Tabela 3: Seznam elementov vezja mobilne platforme

IME VREDNOST OPIS

C1 22 pF Kondenzator

C2 22 pF Kondenzator

C3 10 uF Kondenzator

C4 10 uF Kondenzator

C5 10 uF Kondenzator

C6 100 nF Kondenzator

R1 1 KΩ Upor

R2 4,7 KΩ Upor

R3 1 KΩ Upor

R4 2,2 KΩ Upor

R5 100 KΩ Upor

R6 1 MΩ Upor

R7 1,5 KΩ Upor

R8 2,5 KΩ Upor

R9 10 KΩ Upor

R10 10 KΩ Upor

L7805CV 5 V regulator napetosti

LM1117T 3,3 V regulator napetosti

Q1 BC546B NPN tranzistor

Q2 16 MHz Kristalni oscilator

U1 ATMEGA328P-PU

IC1 L293D

U$1 DS18B20 Senzor temp.

SENZOR_SVETLOBE TEPT4400

BLUETOOTH HC-06 Bluetooth modul

DOLGE_LUCI 5 mm Modre LED

KRATKE_LUCI 3 mm Rumene LED

ZADNJE_LUCI 5 mm Rdeče LED

SMERNIKI_DESNI 3 mm Oranžne LED

SMERNIKI_LEVI 3 mm Oranžne LED

HUPA Piskač

MOTOR_1 DC motor

MOTOR_2 Servo motor

G_MOTORJI 7,8 V 6 x AA Baterija

G_VEZJE 9 V 6LR61 Baterija

Page 49: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

36

4.5.3 Izdelava tiskanega vezja

Po zaključku risanja sheme smo v programu Eagle izrisali še tiskanino. Elemente smo

postavili čim bolj optimalno, pri čemer smo morali velikost tiskanine prilagoditi tudi glede

na prostor, ki je na voljo na mobilni platformi. Tiskanino smo prilagodili tako, da smo jo

lahko pritrdili na mobilno platformo na že obstoječe nosilce, ki so služili prvotnemu vezju.

Ko smo elemente razmestili, smo med njimi narisali povezave, ki smo jim po potrebi

dodelili še ustrezno debelino. Posebno pazljivost smo posvetili podnožjem elementov,

tako da so ustrezali realnim elementom.

Slika 40: Izrisana tiskanina mobilne platforme

Tiskano vezje smo nato izdelali s fotopostopkom, pri čemer smo načrt tiskanine natisnili

na prozorno folijo, ter ga s postopkom osvetljevanja prenesli na bakreno ploščico, na

katero smo predhodno nanesli fotolak. Za fotolak smo uporabili sprej Positiv 20, ki ga iz

razdalje približno 20 cm enakomerno nanesemo na bakreno ploščico. Po lakiranju smo

ploščico postavili v temen prostor in pustili, da se posuši. Po osvetljevanju pod UV

žarnico, smo ploščico potopili v raztopino natrijevega hidroksida (NaOH) v razmerju 0,5 l

vode in 4 g natrijevega hidroksida v zrnih, ki nam odstrani iz ploščice odvečni lak. V

naslednjem koraku smo ploščico zjedkali v raztopini vode, vodikovega peroksida (H2O2)

in solne kisline (HCI) pri čemer smo uporabili 60 % vode, 20 % vodikovega peroksida in

20 % solne kisline. Po končanem jedkanju smo ploščico očistili s acetonom, ki je iz nje

odstranil še preostali lak.

Page 50: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

37

Slika 41: Zjedkana tiskanina

V ploščico smo nato zvrtali ustrezne dimenzije lukenj, odvisno od elementa, ter nadaljevali

s spajkanjem. Končano vezje smo pritrdili na mobilno platformo ter ga povezali s

pogonskim delom in napajanjem. Slika 42 tako prikazuje zaključeno mobilno platformo,

pripravljeno za vožnjo.

Slika 42: Namensko razvito vezje na mobilni platformi

Page 51: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

38

4.6 Programska koda mikrokrmilnika

Koda za krmiljenje mobilne platforme je zapisana v Atmelovem mikrokrmilniku

ATMEGA328P-PU. Primarna naloga mikrokrmilnika je sprejemanje ukazov preko serijske

komunikacije in posredovanje le-teh naprej na digitalne izhode. Z digitalnimi izhodi se nato

izvaja krmiljenje platforme, vklop svetil, smerokazov, hupe. Mikrokrmilnik hkrati na serijski

izhod pošilja tudi podatke iz digitalnih/analognih vhodov, pridobljenih iz senzorja

temperature, senzorja svetlobe ter voltmetra:

VHODI:

o Digitalni

- PD0-RxD (komunikacijski vhod serijskih vrat mikrokrmilnika, preko

katerega se sprejemajo podatki iz Bluetooth modula)

- PD7 (senzor temperature)

o Analogni

- PC1 (merjenje napetosti)

- PC2 (senzor svetlobe)

IZHODI:

o Digitalni

- PD1-TxD (komunikacijski izhod serijskih vrat mikrokrmilnika, preko

katerega se pošiljajo podatki na Bluetooth modul)

- PD2 (rumeni LED diodi, ki služita za prikaz kratkih luči)

- PD3 (tranzistor, ki služi za vklapljanje zavornih LED diod)

- PD4 (rdeči LED diodi, ki služita za prikaz zadnjih luči)

- PD5 (ENABLE2_pin krmilnika L293, za krmiljenje zadnjega pogona)

- PD6 (oranžni LED diodi, ki služita za prikaz desnih smerokazov)

- PB0 (INPUT4_pin krmilnika L293, vožnja naprej/nazaj)

- PB1 (hupa)

- PB2 (krmiljenje servo motorja)

- PB3 (ENABLE1_pin krmilnika L293, za vklop servo motorja)

- PB4 (INPUT3_pin krmilnika L293, vožnja naprej/nazaj)

- PB5 (modri LED diodi, ki služita za prikaz kratkih luči)

o Analogni

Page 52: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

39

- PC0-analogni izhod uporabimo kot digitalnega (oranžni LED diodi,

ki služita za prikaz levih smerokazov)

Najprej smo v zanki setup() inicializirali serijska vrata z ukazom »Serial.begin(9600)«. Pri

tem število 9600 predstavlja hitrost prenosa v enoti Baud. 1 Baud je 1 bit na sekundo.

Poleg nastavitve hitrosti serijske komunikacije smo v zanki za priključke določili, ali želimo

iz njih brati ali na njih pisati. Če hočemo iz njih brati, moramo pin definirati kot digitalni

oziroma analogni vhod »pinMode(spremenljivka, INPUT)«, če pa želimo na njih pisati, pa

jih definiramo kot izhod »pinMode(spremenljivka, OUTPUT)«.

Koda poteka tako, da program vseskozi preverja podatke, ki prihajajo na serijski vhod. V

primeru, da podatki prenehajo prihajati, se sproži varnostna zaustavitev mobilne

platforme. To pomeni, da mikrokrmilnik izklopi oba motorja in vklopi vse štiri smerokaze, ki

opozorijo, da je prišlo do prekinitve. Varnostna zaustavitev je pomembna v primeru, da se

povezava med pametnim telefonom in mobilno platformo prekine. V tem primeru bi

mobilna platforma lahko nenadzorovano nadaljevala z vožnjo, dokler ne bi prišlo do trka.

Pri tem bi se lahko poškodovala oziroma bi lahko poškodovala predmete v okolici.

Naslednji korak v programski kodi je preverjanje, kakšni biti so prišli na serijski vhod.

Najprej preverimo, če se biti ujemajo z biti, ki so specificirani za vklop, hupe, smerokazov,

ter »PWM« stikala. Glede na stanje »PWM« stikala se nato izvaja vožnja mobilne

platforme. Če je »PWM« stikalo izklopljeno, to pomeni, da se regulacija motorčkov izvaja

brez pulzno širinske modulacije. V praksi to pomeni, da DC motorčku ob prejemu ukaza

za vožnjo naprej oziroma nazaj mikrokrmilnik preko krmilnika L293 dodeli maksimalno

moč. Maksimalni odklon v levo oziroma desno se dodeli tudi servo motorčku v primeru

zahteve za zavijanje v levo ali desno. Pri vožnji brez pulzno širinske modulacije so

reakcije mobilne platforme zelo sunkovite, zato je vožnja bolj zahtevna. V primeru, da je

»PWM« stikalo vklopljeno, krmiljenje motorčkov med vožnjo poteka s pulzno širinsko

modulacijo. V praksi to pomeni, da se hitrost DC motorčka spreminja skladno z naklonom

pametnega telefona. Večji kot je naklon telefona hitreje se vrti motorček in obratno. Prav

tako se glede na naklon telefona levo in desno spreminja pozicija servo motorja. Večji kot

je naklon, večji je kot zasuka servo motorja. Ker je os servo motorja preko prenosov

povezana s kolesi mobilne platforme, to pomeni večji zasuk koles.

V zadnjem delu programske kode mikrokrmilnik preveri vhode, na katere sprejema

podatke o temperaturi, osvetljenosti ter stanju baterij. Te podatke nato pretvori v ustrezne

Page 53: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

40

vrednosti in jih pošlje na serijski izhod. Za spremljanje delovanja mikrokrmilnika in

razhroščevanje programske kode še posebno prav pride tako imenovani »Serial monitor«

vmesnik, katerega lahko po prenosu programske kode na mikrokrmilnik vklopimo v

razvojnem okolju Arduino IRO pod zavihkom orodja »Tools«. Po vklopu se odpre okno, ki

izpisuje vrednosti vhodno-izhodnih vrat. Pri brezžični komunikaciji je to še posebej

priročno, saj lahko v trenutku ugotovimo, ali smo na vhodna vrata prejeli kakšen podatek.

Slika 43 prikazuje pridobivanje podatkov iz pametnega telefona ter pošiljanje podatkov

preko Bluetooth modula nazaj na njega.

Slika 43: Serijski monitor

Prva vrstica prikazuje pošiljanje temperature in stanje baterij pametnem telefonu, to se

izvede približno vsakih deset sekund, medtem ko ostale vrstice prikazujejo nenehno

prejemanje podatkov rotacije pametnega telefona.

Page 54: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

41

4.6.1 Pulzno širinska modulacija

Mikrokrmilnik na mobilni platformi ima 6 takšnih digitalnih izhodov, ki jih lahko pulzno

širinsko moduliramo (PD3, PD5, PD6, PB1, PB2 in PB3). ATmega328P-PU ima tudi tri

časovnike, ki lahko nadzirajo pulzno modulacijo. Timer0 nadzira pulzno modulacijo na

izhodih PD5 in PD6, Timer1 na izhodih PB1 in PB2, Timer2 pa na izhodih PB3 in PD3. Na

sliki 44 vidimo načelo delovanja pulzno širinske modulacije. Prvi in zadnji graf nam

prikazujeta skrajna primera, ko je tc (širina pulza) enaka 0 in ko je tc = T (časovni

interval). Primeri na sredini pa kažejo impulze, ki imajo enako frekvenco (časovni interval

T je konstanten), vendar različno širino pulza. Na levi strani vsakega grafa je rdeč stolpec,

ki prikazuje srednjo vrednost napetosti, ki jo zagotavlja posamezni niz impulzov [25].

Slika 44: Grafi pulzno širinske modulacije [25]

S spreminjanjem širine pulzov tako dvigujemo oziroma nižamo srednjo vrednost napetosti.

Na ta način lahko krmilimo hitrost DC motorčka. Ker smo pri mikrokrmilniku omejeni z

izhodno napetostjo od 0 do 5 V in maksimalnim tokom 40 mA, motorčka krmilimo preko

integriranega vezja krmilnika L293 (poglavje 3.3.2). S PWM izhodom mikrokrmilnika tako

krmilimo motorčka posredno preko priključkov »ENABLE1« in »ENABLE2« krmilnika

L293. Ker ima krmilnik L293 ločeno napajanje, ki je predvideno za krmiljenje motorčkov,

lahko srednjo vrednost pulzno širinske modulacije spreminjamo od 0 do 7,8 V (napajalna

napetost motorčkov). Prav tako skozi motorčka teče večji tok, saj lahko integrirano vezje

krmili s tokom do 600 mA. Za izvajanje pulzno širinske modulacije smo v programskem

Page 55: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

42

okolju Arduino IRO uporabili funkcijo map(). Funkcija map() preslika vrednosti iz enega

območja v drugo:

map(value, fromLow, fromHigh, toLow, toHigh)

V praksi to pomeni, da se vrednosti »fromLow« preslikajo v vrednosti »toLow«, vrednosti

»fromHigh« pa v vrednosti »toHigh«. Prav tako se preslikajo tudi vse vmesne vrednosti. V

našem primeru iz pametnega telefona sprejemamo vrednosti v območju od -100 do 100.

Najprej smo programsko določili polje, ki lahko sprejme dve vrednosti tipa integer.

int values[3] = 0,0,0;

pri tem je »values[0]« vrednost pridobljena iz koordinate X pametnega telefona in nam

služi za obračanje mobilne platforme levo in desno. Vrednost -100 nam določa postavitev

koles v skrajno lego levo, medtem ko nam vrednost 100 določa postavitev koles v skrajno

lego desno. Vrednost 0 pomeni, da imamo pametni telefon v vodoravnem položaju in da

želimo mobilno platformo voziti naravnost. »values[1]« predstavlja vrednost pridobljena iz

koordinate Y pametnega telefona in služi za vožnjo mobilne platforme naprej in nazaj.

Vrednost -100 določa, da želimo voziti mobilno platformo naprej z maksimalno hitrostjo,

medtem ko vrednost 100 določa vožnjo nazaj z maksimalno hitrostjo. Pri vrednosti 0

mobilna platforma miruje. »values[2]« je tista vrednost, ki pove, ali je na aplikaciji bil

pritisnjen kateri gumb bodisi za žaromete, smerokaze, hup, ali PWM regulacijo. V primeru,

da ni pritisnjen noben gumb, mikrokrmilnik prejema vseskozi vrednost nič. V nasprotnem

primeru mikrokrmilnik prejme vrednost, ki smo jo določili za vsak gumb posebej. Pri 8-

bitnem mikrokrmilniku imamo lahko na izhodu ločljivost od 0 do 255, zato pulzno širinsko

modulacijo za vožnjo naprej izvedemo z ukazom:

analogWrite(EnablePin2, map(values[1],0,-100,0,255));

Zgornja vrstica tako »vrednost[1]« preslika v določeno vrednost od 0 do 255 ter zapiše v

spremenljivko »EnablePin2«. »EnablePin2« je spremenljivka, kateri je določen PWM

izhod mikrokrmilnika PD5 in je povezan z »ENABLE2« priključkom krmilnika L293, ki

krmili pogonski DC motorček. Kot lahko vidimo potrebujemo za vožnjo naprej vrednosti

»values[1]« od 0 do -100. Zato se zgornji ukaz nahaja v »if« zanki, ki prepušča samo te

vrednosti. Na podobnem načelu je narejena še vožnja nazaj in zavijanje levo in desno.

Page 56: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

43

4.6.2 Diagram poteka

Slika 45: Diagram poteka mobilne platforme

Page 57: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

44

4.6.3 Branje senzorja temperature

Kot že omenjeno smo za branje temperature iz senzorja DS18B20 uporabili tako

imenovani »one wire« protokol. Na uradni strani arduino.cc si lahko prenesemo dve

knjižnici, ki jih potrebujemo za delovanje senzorja. Prva je tako imenovana »OneWire

Library«, druga pa »Dallas Temperature Control Library«. Knjižnici prenesemo na

računalnik in ju razpakiramo v mapi »libraries«, ki se nahaja v programski opremi Arduino.

Z naslednjima ukazoma nato knjižnici vključimo za uporabo v programski kodi:

#include <OneWire.h>

#include <DallasTemperature.h>

Definirati moramo tudi pin, s katerim smo povezali mikrokrmilnik in signalni pin senzorja. V

našem primeru je to bil digitalni pin 7.

#define ONE_WIRE_BUS 7

Nato omogočimo »OneWire« vodilo.

OneWire ourWire(ONE_WIRE_BUS);

Prenesemo »OneWire« referenco na »DallasTemperature«.

DallasTemperature sensors(&oneWire);

Nato pa v neskončni zanki zahtevamo podatek o temperaturi.

sensors.requestTemperatures();

Podatek o temperaturi nato zapišemo na serijski izhod, da se preko Bluetooth modula

pošlje na pametni telefon in prikaže v mobilni aplikaciji.

Serial.println(sensors.getTempCByIndex(0));

Ker imamo lahko na istem vodilu več senzorjev, uporabimo ukaz »ByIndex(0)«, kar

pomeni, da program na serijski izhod pošlje podatek o prvem (0) senzorju.

Page 58: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

45

4.6.4 Branje stanja baterij (voltmeter)

Programska koda, s katero lahko preko uporovnega delilnika ugotovimo, kolikšna je

kapaciteta baterij pogonskega dela, temelji na vzorcih napetosti, katere filtrira vsakih 10

ms. S spodnjim ukazom v programski kodi najprej določimo, koliko analognih vzorcev

vzamemo pri branju vhoda:

#define NUM_SAMPLES 10

Nato določimo tri nove spremenljivke. Spremenljivki »sum« določimo tip »integer«, ter

začetno vrednost 0, kar pomeni, da lahko shranjuje različne vrednosti števil. Spremenljivki

»sample_count« prav tako določimo vrednost 0, za tip spremenljivke pa »unsigned char«,

kar pomeni, da lahko shranjuje posamezne znake. Ime tretje spremenljivke pa je

»napetost« tipa »float«, ki nam omogoča shranjevanje vrednosti decimalnih števil, s

katerimi bomo podajali podatke o naši napetosti. Tak tip števil smo določili zato, da lahko

vrednost napetosti podamo na eno decimalno mesto natančno.

int sum = 0;

unsigned char sample_count = 0;

float napetost = 0.0;

S pomočjo »while« zanke nato iz analognega vhoda A1 preberemo deset vzorcev.

Spremenljivka »sum« predstavlja vseh deset vzorcev skupaj, spremenljivka

»sample_count« pa trenutno število vzorcev.

while (sample_count < NUM_SAMPLES)

sum += analogRead(A1); // analogni vhod A1

sample_count++;

Končna enačba za izračun napetosti je podana spodaj. Pri tem število 5,0 predstavlja

referenco 5,0 V na Arduino razvojni plošči, število 1024,0 pa predstavlja maksimalno

razločljivost, ki jo lahko imamo. Analogni vhodi nam pri Arduino razvojni ploščici

omogočajo 10-bitno ločljivost, pri čemer je referenca vezana na napajalno napetost 5 V.

Pri razponu od 0 do 5 V tako beremo vrednosti od 0 do 1023 (2^10= 1024 razdelkov).

Page 59: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

46

napetost = ((float)sum / (float)NUM_SAMPLES * 5.0) / 1024.0;

Na koncu še dodamo ukaz, ki vrednost napetosti pošlje na serijski izhod. Predno pa

vrednost, ki se nahaja v spremenljivki »napetost«, pošljemo na izhod, jo pomnožimo še s

faktorjem delilnika napetosti, ki znaša 11,133.

Serial.println (napetost * 11.133);

4.6.5 Branje svetlobnega senzorja

Svetlobni senzor TEPT4400, ki je pritrjen na vrhu mobilne platforme, glede na vpadno

svetlobo regulira vklop in izklop kratkih in zadnjih luči. Senzor smo priključili na analogni

vhod A2 mikrokrmilnika.

int TEPT = A2; //Senzor priključen na analogni vod A2

int sensorTEPT4400;

Analogno vrednost nato preberemo iz analognega vhoda in jo shranimo v spremenljivko

»sensorTEPT4400«.

sensorTEPT4400 = analogRead (TEPT); // Branje senzorja iz analognega vhoda A2

Podobno kot pri voltmetru nato preračunamo svetilnost glede na ločljivost in napetost

mikrokrmilnika po spodnji formuli.

float lux = (((sensorTEPT4400/1024.000)*4770)/10); // Preračunanje svetilnosti

S prvo zanko nato nadzorujemo pri kakšni svetilnosti se naj na mobilni platformi prižgejo

kratke in zadnje luči.

if (lux <= 8) //Če je svetilnost manjša od 8, prižgi luči

digitalWrite(kratkeluci, HIGH); //Vklop kratkih luči

digitalWrite(zadnjeluci, HIGH); //Vklop zadnjih luči

Page 60: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

47

V primeru, če je okolica dovolj osvetljena, kratke in zadnje luči ugasnejo, vendar moramo

prej preveriti, ali je mogoče pritisnjen gumb za vklop kratkih luči na aplikaciji »Mobilna

platforma«. V tem primeru se luči ne izklopijo.

if (lux>= 8 && primerjava2 == 1 ) //Če je svetlo in nismo ročno vklopili kratkih

luči, jih izklopimo

digitalWrite(kratkeluci, LOW); //Izklop kratkih luči

digitalWrite(zadnjeluci, LOW); //Izklop zadnjih luči

Poleg gumba za kratke luči moramo preveriti še gumb za dolge luči. V primeru, da so v

aplikaciji vklopljene dolge luči, lahko mikrokrmilnik izklopi samo kratke luči, zadnjo luč pa

pusti prižgano.

if (lux>= 8 && primerjava3 == 0 ) //Če je svetlo in gorijo dolge luči, potem ne

izklopimo zadnje luči

digitalWrite(zadnjeluci, HIGH); //Zadnja luč ostane prižgana

Page 61: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

48

5 RAZVOJ MOBILNE APLIKACIJE

V tem poglavju bomo predstavili pametni telefon in razvoj mobilne aplikacije, ki temelji na

Android operacijskem sistemu. Opisali bomo tudi na kakšnem načelu poteka komunikacija

med pametnim telefonom ter mobilno platformo.

5.1 Pametni telefon Samsung Galaxy Core

Za testiranje aplikacije smo uporabili pametni telefon Samsung Galaxy Core z dvojedrnim

procesorjem 1,2 GHz Cortex A5, na katerem je nameščena različica sistema Android

4.1.2. Mobilnik ima 4.3 inčni zaslon z razločljivostjo 480 x 800 (slika 46). Aplikacija je

razvita in preizkušena na slednjem pametnem telefonu, vendar jo je mogoče uporabljati

na vseh pametnih telefonih, ki uporabljajo operacijski sistem Android.

Slika 46: Pametni telefon Samsung Galaxy Core [26]

Page 62: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

49

V tabeli 4 so prikazane pomembnejše specifikacije mobilnika.

Tabela 4: Specifikacije pametnega telefona [26]

PLATFORMA OS Android OS, v4.1.2 (Jelly Bean)

CPU Dual-core 1,2 GHz Cortex-A5

GPU Adreno 203

SPOMIN Notranji 8 GB (4,5 GB uporabnega prostora), 1 GB RAM

Razširljiv microSD, do 64 GB

BATERIJA Kapaciteta Li-Ion 1800 mAh

V pripravljenosti Do 500 h (2G) / Do 300 h (3G)

V času pogovora Do 14 h (2G) / Do 9 h (3G)

ZNAČILNOSTI Senzorji Pospeškometer, senzor bližine, kompas

Brskalnik HTML

KOMUNIKACIJA

WLAN Wi-Fi 802.11 b/g/n, hotspot

Bluetooth v3.0, A2DP

GPS Yes, with A-GPS

Radio Yes, with A-GPS

USB microUSB v2.0

Page 63: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

50

5.2 Android aplikacija

Android je odprtokodna programska oprema na podlagi katere lahko razvijamo mobilne

aplikacije ter mobilni napravi omogočimo povsem novo funkcionalnost. Pred časom so

mobilni telefoni imeli nameščene lastniške (zaprto kodne) operacijske sisteme, do katerih

so lahko dostopali le proizvajalci sami. To se je spremenilo, ko je podjetje Apple

omogočilo razvoj aplikacij tudi drugim razvijalcem in jih naredilo enakovredne privzetim.

Temu so nato sledila tudi ostala podjetja, med drugimi Google s svojim Android

operacijskim sistemom. Te spremembe so povzročile hitrejši razvoj mobilnih aplikacij in

platform [27].

Slika 47: Android logotip [28]

Za razvoj mobilne aplikacije smo uporabili uradno razvojno okolje (IDE) Eclipse z uporabo

vtičnika (ADT – Android Development Tools) [34], katerega smo namestili v Windows

okolju. Eclipse je razvojno okolje, ki je razširljivo z veliko vtičniki. Programski jezik,

katerega uporabljamo za razvoj, je Java, z ustreznimi vtičniki pa lahko programiramo tudi

v drugih programskih jezikih (C, C++, Ada, Fortran, Python, PHP …) [29].

Za razvoj potrebujemo prav tako razvojni paket Android SDK [34], ki razvijalcem omogoča

dostop do knjižnic, preverjanje in razhroščevanje aplikacij, uporabo virtualne naprave, ki

omogoča vpogled, kako bi bila aplikacija videti na realni napravi, raznorazne vzorčne

projekte z izvorno kodo itd. Pod zavihkom »MainActivity« se nahaja glavni program, v

katerem smo uvozili vse potrebne knjižnice za delovanje senzorjev v pametnem telefonu,

Bluetooth modula, branje podatkov iz serijskega vhoda, časovnikov, gumbov itd.

Inicializirali smo vse spremenljivke, konfigurirali smernike, žaromete, hupo ter seveda

generirali pulzno širinsko modulacijo za regulacijo motorčkov, katero pošiljamo preko

Bluetootha na serijski vhod mikrokrmilnika.

Page 64: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

51

Slika 48: Razvojno okolje "Android Development Tools"

V mapi »layout« se nahaja zavihek »Graphical Layout«, kjer urejamo videz naše

aplikacije. Dodajamo lahko besedilo, gumbe, slike itd.

5.2.1 Grafični vmesnik

Okolje Eclipse omogoča, da izdelamo grafični vmesnik s pisanjem kode XML ali z

uporabo snovalca. Tako imamo na voljo grafični zaslon (Graphical Layout), kjer lahko

vidimo, kako bodo elementi (gumbi, puščice, podatki …) prikazani na zaslonu aplikacije,

ter XML dokument (activity_main.xml), kjer lahko urejamo definicijo naših elementov ter

jim ustrezno spreminjamo lastnosti.

Page 65: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

52

Slika 49: Grafični vmesnik v razvojnem okolju "Android Development Tools"

Spodnji primer kode nam prikazuje lastnosti grafičnega vmesnika X osi v XML datoteki.

Slika 50: XML datoteka za X os

Poleg gumbov lahko levo zgoraj vidimo podatke o orientaciji pametnega telefona v X, Y in

Z koordinatah. Na desni strani zgoraj lahko vidimo podatka o temperaturi okolja ter stanje

baterije mobilne platforme. Temperatura je podana v stopinjah Celzija, stanje baterij pa v

voltih. Pod njima je še grafični prikaz stanja baterije, kjer lahko na prvi pogled dobimo

občutek o njeni kapaciteti. Zraven so pripisani še odstotki, in sicer 100 % predstavlja

popolnoma napolnjeno baterijo, 0 % pa izpraznjeno baterijo. Ozadje aplikacije je zaradi

boljše preglednosti črne barve. Slika 51 nam predstavlja kazalec, ki grafično prikazuje

orientacijo telefona oziroma smer vožnje mobilne platforme.

Page 66: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

53

Slika 51: Grafični kazalec

V primeru, da želimo mobilno platformo voziti naprej, pametni telefon nagnemo rahlo

naprej. Pri tem na kazalniku izginejo vse puščice razen zgornje. Nasprotno se zgodi pri

vožnji nazaj, kjer nam tako ostane le puščica navzdol. V primeru, da želimo mobilno

platformo voziti naprej ali nazaj in hkrati zavijati, se nam na zaslonu poleg puščice gor oz.

dol pojavi še puščica levo oz. desno, odvisno od smeri zavoja.

Kot lahko vidimo (slika 49) je postavitev gumbov ter napisov na zaslonu aplikacije

narejena tako, da je za boljši pregled bolj primeren vodoravni položaj drže pametnega

telefona. To smo storili zaradi dveh prednosti. Prva je, da so gumbi in podatki na aplikaciji

lepše razporejeni ter tako bolj pregledni. Druga prednost pa je, da lahko vožnjo mobilne

platforme upravljamo z držanjem pametnega telefona v obeh rokah, kar nam daje boljši

občutek za vožnjo in zagotavlja hitrejši odziv.

Pametni telefoni s pomočjo pospeškometra zaznavajo položaj orientacije telefona in glede

na te podatke prilagajajo orientacijo zaslona. Ker pa bi s kretnjami telefona med vožnjo

konstantno spreminjali orientacijo zaslona, bi to bilo zelo moteče, še posebej, če želimo

med vožnjo uporabljati tudi funkcijske gumbe. Pametni telefoni imajo sicer možnost

izklopa zasuka zaslona glede na položaj, vendar to pomeni, da je zaslon vedno v

navpičnem položaju, kar pa naši aplikaciji ne ustreza. Zato smo v glavnem programu

zapisali funkcijo, ki nam omogoča odprtje aplikacije vedno v horizontalnem položaju, ne

glede na položaj telefona.

Page 67: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

54

5.2.1.1 Grafika gumbov

Grafiko gumbov, uporabljenih v aplikaciji, smo izdelali v programu Adobe Photoshop CS6.

Zamisel za videz gumbov smo uporabili iz armaturne plošče osebnih avtomobilov. Tako

lahko uporabnik na prvi pogled z lahkoto ugotovi, čemu služi določen gumb pri aplikaciji.

Ob pritisku gumba za vklop smerokaza se ta začne animacijsko spreminjati in nam tako

sporoča, da je aktiviran. Istočasno tako glavni program, preko Bluetooth modula, mobilni

platformi pošilja ukaz za utripanje led diod, ki ponazarjajo smerokaze. Animacija poteka

tako dolgo, dokler gumba ne pritisnemo ponovno. Ob pritisku na gumb za kratke oz. dolge

luči ter hupo pa se gumbi samo obarvajo in tako sporočajo, da so aktivirani, ob istem času

pa se prav tako pošlje ukaz mobilni platformi, ki aktivira diode oz. piskač. Spodnja tabela

prikazuje videz vseh gumbov v aktivnem in neaktivnem položaju ter funkcijo, ki jo

opravljajo.

Tabela 5: Grafika gumbov mobilne aplikacije

Ime Ugasnjeno Prižgano Funkcija

Levi smerokaz

Pošiljanje ukaza

platformi za prižiganje levih led diod

Desni smerokaz

Pošiljanje ukaza

platformi za prižiganje desnih led diod

Dolge luči

Pošiljanje ukaza

platformi za prižiganje dolgih (modrih) luči

Kratke luči

Pošiljanje ukaza

platformi za prižiganje kratkih (rumenih) luči

Vsi štirje smerokazi

Pošiljanje ukaza

platformi za prižiganje vseh štirih led diod

hupa

Pošiljanje ukaza

platformi za prižiganje hupe

PWM

Pošiljanje ukaza

platformi za prižiganje PWM

Page 68: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

55

5.2.2 Bluetooth povezava

Povezavo med pametnim telefonom in Bluetooth modulom vzpostavimo tako, da na

telefonu vklopimo Bluetooth vmesnik. Nato zaženemo aplikacijo »Mobilna platforma«,

pametni telefon pa sam poišče Bluetooth modul, s katerim se tudi poveže. Aplikacija je

namreč zasnovana tako, da je v njej zapisan naslov modula, tako imenovani »MAC

address«, preko katerega pametni telefon prepozna pravilni modul in se z njim poveže.

Bluetooth modul ima signalno led diodo, ki z utripanjem sporoča, da je Bluetooth

priključen na napajanje. Ko pa se z njim poveže pametni telefon, signalna led dioda sveti

neprestano.

5.2.3 Pošiljanje podatkov mikrokrmilniku

Preko Bluetooth komunikacije mikrokrmilniku pošiljamo podatke o naklonu pametnega

telefona in podatke o aktivnosti gumbov mobilne aplikacije »Tabela 3«.

Slika 52: Pošiljanje podatkov mikrokrmilniku

Kot lahko razberemo iz zgornje kode, najprej generiramo vrednosti Y in X, pridobljene iz

senzorja pametnega telefona. Prva vrednost, ki jo pošljemo mikrokrmilniku, je vrednost

koordinate Y in nam služi za vožnjo naprej in nazaj. Druga vrednost je vrednost

koordinate X in nam služi za določanje smeri levo in desno. Kot tretjo vrednost pošljemo

mikrokrmilniku podatek, ali smo na mobilni aplikaciji pritisnili kakšen gumb. V primeru, da

Page 69: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

56

noben gumb ni pritisnjen, aplikacija kot tretjo vrednost pošlje vrednost 0. Podatki se

vseskozi pošiljajo v tem vrstnem redu. Na ta način mikrokrmilnik ob prejemanju podatkov

natanko ve, kateri podatek služi čemu. Več o prejemanju podatkov je zapisano v poglavju

4.6 (Načelo programske kode mikrokrmilnika).

5.2.4 Prejemanje podatkov iz mikrokmilnika

Pri krmiljenju mobilne platforme kot tudi pri uporabi gumbov aplikacija »Mobilna

platforma« pošilja podatke mikrokrmilniku, ta pa jih nato ustrezno uporabi. Poleg vseh

izhodnih ukazov pa aplikacija prejema tudi podatka o temperaturi in stanje baterije

mobilne platforme. Ta dva podatka nam mikrokrmilnik na svoj izhod pošlje vsakih 10

sekund. Mobilna platforma podatke prejme enako, kot jih tudi pošilja, in sicer preko

Bluetooth modula. Spodnji del programa nam prikazuje sprejemanje podatkov ter njihov

izpis na zaslon.

Slika 53: Prejemanje podatkov iz mikrokrmilnika

Page 70: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

57

Slika 54 prikazuje videz izpisa podatkov na mobilni aplikaciji. Poleg teh dveh podatkov

lahko vidimo še stolpec, ki grafično ponazarja stanje baterije, ki napaja pogonski del

mobilne platforme.

Slika 54: Prikaz temperature in napetosti na zaslonu mobilne aplikacije

Page 71: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

58

6 TESTIRANJE SISTEMA

6.1 Aplikacija Mobilna platforma

Izdelali smo sistem krmiljenja, s katerim lahko preko pospeškometra, vgrajenega v

pametnem telefonu, vozimo mobilno platformo. Slika 55 prikazuje ikono, s katero

zaženemo mobilno aplikacijo »Mobilna platforma«.

Slika 55: Ikona mobilne aplikacije na pametnem telefonu

Ob zagonu aplikacije se najprej pojavi t. i. pozdravno okno (ang. Splash Screen), na

katerem je napis naslova magistrskega dela, slika mobilne platforme in slika, ki prikazuje

pravilno držo pametnega telefona.

Slika 56: Splash Screen

Page 72: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

59

Okno se prikazuje pet sekund, nato se pametni telefon preko Bluetooth modula

avtomatsko poveže z mobilno platformo. V primeru, da na pametnem telefonu nimamo

vklopljenega Bluetooth modula, se prikaže sporočilo, ki pove, da aplikacija zahteva

dovoljenje za vklop le tega.

Slika 57: Zahteva za vklop Bluetooth modula

Ko kliknemo »Da«, se vklopi Bluetooth in odpre aplikacija, ki zahteva navpični položaj

držanja pametnega telefona. Na zaslonu se takoj pojavijo parametri o temperaturi okolice

in stanju baterije, ki jih prejmemo od mobilne platforme. S kretnjami telefona lahko tako

začnemo z vožnjo mobilne platforme, hkrati pa lahko s pritiski na gumbe preizkusimo še

ostale funkcije aplikacije. Zaslon lahko vidimo na spodnji sliki.

Slika 58: Zaslon mobilne aplikacije

Page 73: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

60

Pri krmiljenju mobilne platforme s pametnim telefonom se je pojavila težava, saj se

pametni telefon po nekem času brez dotikanja zaslona zaklene in ugasne osvetlitev. Pri

tem aplikacija pošilja preko Bluetootha mobilni platformi zadnji ukaz, ki se je izvajal pred

zaklenitvijo. V primeru, da mobilno platformo krmilimo z maksimalno hitrostjo naprej in se

v tistem trenutku pametni telefon zaklene, bo mobilna platforma nadaljevala vožnjo

medtem pa bo nam onemogočeno, da ji spremenimo ukaz kljub kretnjam za zaviranje ali

zavijanje. Mobilna platforma tako ne bo sprejemala novih ukazov, dokler ne bomo pametni

telefon odklenili. V tem času lahko krmilna platforma že zadane ob oviro in se poškoduje

ali pa poškoduje okolico.

Težavo zaklepanja telefona lahko rešimo v samih nastavitvah pametnega telefona. V

nastavitvah zaslona lahko pametnem telefonu časovno nastavimo zakasnitev zaslona. Pri

Samsung Galaxy Core mobilniku je možnost zakasnitve od 15 sekund do 30 minut. 30

minut bi tako bilo več kot dovolj, da nas ta težava ne bi ovirala in ogrožala mobilno

platformo med krmiljenjem. Vendar pa bi takšna nastavitev zakasnitve zaslona telefona

bila moteča pri običajni rabi pametnega telefona. To pomeni, da bi po uporabi telefona

vedno morali ročno zakleniti zaslon, saj bi v nasprotnem primeru zaslon ostal osvetljen

nadaljnjih 30 minut. To bi povzročilo hitrejše trošenje baterije, poleg tega lahko pride do

nerodnih situacij, kot so nenačrtovani klici oziroma vklop aplikacij med nošenjem telefona

v žepu ali torbici. V izogib takšnim situacijam bi vedno morali ročno zaklepati zaslon ali pa

po končanem krmiljenju mobilne platforme nastavitve zakasnitve zaslona ponovno

nastavljati na prvotne. Ročno zaklepanje zaslona ali nenehno spreminjanje nastavitev

pametnega telefona tako povzroči preveč nevšečnosti, zato smo se odločili, da težavo

odpravimo na drugačen način.

Programsko kodo mobilne platforme smo spremenili tako, da se v primeru, ko je na

pametnem telefonu odprta aplikacija »Mobilna platforma«, zaslon ne zaklepa. Ko

aplikacijo zapremo, pa se pametni telefon odziva po prvotnih nastavitvah. S tem smo rešili

nepraktično spreminjanje nastavitev telefona in omogočili bolj varno in zanesljivo

krmiljenje mobilne platforme.

Page 74: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

61

6.2 Odzivnost mobilne platforme

Predno poženemo aplikacijo na pametnem telefonu, je potrebno na mobilni platformi

vključiti dve stikali za napajanje. Eno služi za napajanje vezja, drugo pa za napajanje DC

motorčkov (slika 23). Ko je Bluetooth modul vklopljen, lahko poženemo aplikacijo in

pametni telefon se z njim avtomatsko poveže. Mobilna platforma je tako pripravljena za

vožnjo. Po končani vožnji preprosto zapremo aplikacijo in komunikacija med pametnim

telefonom in mobilno platformo je prekinjena. Mobilna platforma se nam avtomatsko

ustavi in prižgejo se vsi štirje smerokazi, ki nam prikazujejo, da je prišlo do prekinitve

pošiljanja podatkov.

Slika 59: Vožnja mobilne platforme

Page 75: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

62

7 SKLEP

V magistrskem delu smo predstavili razvoj sistema krmiljenja mobilne platforme z

mobilnim telefonom, razvoj samega vezja ter razvoj Android aplikacije za pametne

telefone. Prvotno je komunikacija za krmiljenje avtomobila na daljinsko vodenje potekala

preko radijske frekvence s točno določenim daljinskim upravljalnikom. V našem primeru

pa lahko namesto tega uporabimo kateri koli pametni telefon, ki uporablja operacijski

sistem android. Naložiti si je potrebno samo aplikacijo »Mobilna platforma«, ki smo jo

razvili tekom magistrskega dela. S kretnjami pametnega telefona lahko na enostaven

način krmilimo mobilno platformo, med vožnjo pa lahko preko vmesnika aplikacije

aktiviramo še veliko funkcij, ki smo jih vgradili v platformo. Iz mobilne platforme na

pametni telefon dobivamo tudi povratne informacije o temperaturi in stanju baterij, ki se

uporabljajo za pogon.

Za razvoj vezja mobilne platforme smo uporabili cenovno dostopno razvojno ploščo

Arduino UNO, ki je več kot zadovoljila naša pričakovanja, saj je z njeno pomočjo razvoj

potekal hitro in z manj nevšečnostmi.

Dosegli smo cilj, da lahko s pametnim telefonom učinkovito krmilimo mobilno platformo. S

pomočjo pulzno širinske modulacije pa smo zagotovili, da je krmiljenje potekalo tudi zelo

natančno.

Sistem bi lahko še nadgradili tako, da bi na mobilno platformo dodali senzorje, ki bi

zaznavali morebiten trk mobilne platforme, pametni telefon pa bi se na to odzval z

vibracijami ali zvočnimi opozorili. S senzorji bi lahko trke tudi preprečevali, saj bi v

primeru, ko bi se mobilna platforma preveč približala oviri, varnostno zaustavili pogonski

motor.

Page 76: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

8 NAVAJANJE VIROV

[1] CNN, Curiosity, dosegljivo na URL:

http://i2.cdn.turner.com/cnn/dam/assets/120803032331-nasa-mars-rover-horizontal-

gallery.jpg

[2] Harvey Norman, robotski sesalnik, dosegljivo na URL:

http://www.harveynorman.si/f/product_images/Robotski-sesalnik-IROBOT-ROOMBA-

775_1-81522-51210-popup.png

[3] Wikipedia, robotska kosilnica, dosegljivo na URL:

https://upload.wikimedia.org/wikipedia/commons/9/9d/Automower_Solar_Hybrid.jpg

[4] Sony, detekcija obraza, dosegljivo na URL:

http://www.sony-

asia.com/product/resources/en_AP/images/Technology/DI/Camera/face_detection.jpg

[5] Audiencescan, pametna hiša, dosegljivo na URL:

http://www.audiencescan.com/wp-content/uploads/2014/04/Home-automation.jpg

[6] Freeware-Android, labirint, dosegljivo na URL:

http://static.freeware-android.net/data/programs/images/Maze-Android_3_11955.png

[7] Wikipedija, pametni telefon, dosegljivo na URL:

http://sl.wikipedia.org/wiki/Pametni_telefon

[8] Bosch, pospeškometer, dosegljivo na URL:

http://www.bosch.com.cn/media/cn/res/newsroom/news_4/201404/new20140313_01_w8

00.jpg?noScroll=true&TB_iframe=true&height=600&width=766&content=%5B.cntWrapper

%5D

[9] Unika toy, mobilna platforma, dosegljivo na URL:

http://www.unikatoy.rs/Product/ShowDetails?productId=911410

[10] Svet elektronike št. 211, programiranje z Arduino (1), 2013_SE211_41

Avtor: Peter Krkoč

Page 77: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

64

[11] Arduino, Arduino UNO razvojna plošča, dosegljivo na URL:

http://arduino.cc/en/uploads/Main/ArduinoUno_R3_Front.jpg

[12] FERI, tekma, svet elektronike, dosegljivo na URL:

http://www.ro.feri.uni-mb.si/tekma/Svet_el_RoboPIC/RoboPIC_5_32-37_Nov05_124.pdf

[13] L293 Motor driver, dosegljivo na URL:

http://www.me.umn.edu/courses/me2011/arduino/stamp/technotes/L293/L293hookup.gif

[14] Deal extreme, Bluetooth module, dosegljivo na URL:

http://www.dx.com/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299#.U-

N6ofl3sqc

[15] Maxim integrated, senzor temperature, dosegljivo na URL:

http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

[16] Senzor temperature, dosegljivo na URL:

http://www.magdiblog.fr/wp-content/uploads/2013/12/DS18B20.jpg

[17] Vishay, svetlobni senzor, dosegljivo na URL:

http://www.vishay.com/docs/81341/tept4400.pdf

[18] Farnell, svetlobni senzor, dosegljivo na URL:

http://uk.farnell.com/productimages/standard/en_GB/42250758.jpg

[19] Grassi componentes, piskač, dosegljivo na URL:

http://www.grassicomponentes.com.br/imagens/grassicomponentes.com.br/produtos/buzz

er.jpg

[20 ] Tandy online, napetostni regulator, dosegljivo na URL:

http://www.tandyonline.co.uk/media/catalog/product/cache/1/image/9df78eab33525d08d6

e5fb8d27136e95/l/7/l7805cv.png

[21] Modern device, napetostni regulator, dosegljivo na URL:

http://moderndevice.com/wp-content/uploads/2013/09/LM1117_grande.jpg

Page 78: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

65

[22] Servo motor, dosegljivo na URL:

http://impresoras3dlowcost.com/tienda/274/micro-servo-3-7g.jpg

[23] Atmel, ATmega328P-PU, dosegljivo na URL:

http://atmega32-avr.com/wp-content/uploads/2012/05/atmega328p_datasheet.jpg

[24] Instructables, ATmega328P-PU priključki, dosegljivo na URL:

http://cdn.instructables.com/FSW/4N4Y/H3Z3KNJX/FSW4N4YH3Z3KNJX.MEDIUM.jpg

[25] Svet elektronike, MikroPin, razvojni sistemi za 13 €(4), dosegljivo na URL:

http://www.svet-el.si/o-reviji/samogradnje/2133-202-23

[26] GSMarena, Samsung Galaxy Core, dosegljivo na URL:

http://www.gsmarena.com/samsung_galaxy_core_i8260-5419.php

[27] Wikipedia, Android software development, dosegljivo na URL:

http://en.wikipedia.org/wiki/Android_software_development

[28] Nuiteq, Android logotip, dosegljivo na URL:

http://nuiteq.com/wp-content/uploads/2014/05/android_vector.jpg

[29] Eclipse, about the eclipse foundation, dosegljivo na URL:

http://www.eclipse.org/org/#about

[30] Bosch Sensortec, BMC150, dosegljivo na URL:

http://www.bosch-

sensortec.com/en/homepage/products_3/6_axis_sensors_2/ecompass/bmc150/bmc150

[31] Live science, Accelerometers, dosegljivo na URL:

http://www.livescience.com/40102-accelerometers.html

[32] Bosch Sensortec, datasheet, dosegljivo na URL:

http://ae-bst.resource.bosch.com/media/products/dokumente/bmc150/BST-BMC150-

DS000-04.pdf

Page 79: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Krmiljenje mobilnih platform s pametnim telefonom

66

[33] Svet elektronike št. 216, programiranje z Arduino (6), 2014_SE216_43

Avtor: Peter Krkoč

[34] Android SDK, dosegljivo na URL:

https://developer.android.com/sdk/index.ht

[35] Eagle, dosegljivo na URL:

http://www.cadsoftusa.com

[36] Fritzing, dosegljivo na URL:

http://fritzing.org/home/

[37] OneWire, dosegljivo na URL:

http://playground.arduino.cc/Learning/OneWire

[38] Pametni telefon, dosegljivo na URL:

http://1.bp.blogspot.com/-L_gKzvTErMI/USEQrR3eQ3I/AAAAAAAAAf4/jJz-

J4NH7vU/s1600/ooo.png

[39] Grabcad, RC Car, dosegljivo na URL:

https://d2t1xqejof9utc.cloudfront.net/screenshots/pics/a1a75843d0deb58662aeb842060c

b2a4/medium.JPG

Page 80: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Fakulteta za elektrotehniko, računalništvo in informatiko

Smetanova ulica 17 2000 Maribor, Slovenija

I Z J A V A O A V T O R S T V U

Spodaj podpisani/-a

Tomaž Pintar

z vpisno številko

E5011122

sem avtor/-ica magistrskega dela z naslovom:

Krmiljenje mobilnih platform s

pametnim telefonom

(naslov magistrskega dela)

S svojim podpisom zagotavljam, da:

sem magistrsko delo izdelal/-a samostojno pod mentorstvom (naziv, ime in priimek)

izr. prof. dr. Matej Rojc

in somentorstvom (naziv, ime in priimek)

red. prof. dr. Zdravko Kačič

so elektronska oblika magistrskega dela, naslov (slov., angl.), povzetek (slov., angl.) ter ključne besede (slov., angl.) identični s tiskano obliko magistrskega dela.

soglašam z javno objavo elektronske oblike magistrskega dela v DKUM.

V Mariboru, dne

Podpis avtorja/-ice:

Page 81: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Tomaž Pintar

Matej Rojc

Zdravko Kačič

E5011122

Krmiljenje mobilnih platform s pametnim telefonom

Elektrotehnika MAG

Controlling mobile platforms by using smartphone

Fakulteta za elektrotehniko, računalništvo in informatiko

Smetanova ulica 17 2000 Maribor, Slovenija

IZJAVA O USTREZNOSTI ZAKLJUČNEGA DELA

Podpisani mentor :

_____________________________________________

(ime in priimek mentorja)

in somentor (eden ali več, če obstajata): Zdravko Kačič

_____________________________________________

(ime in priimek somentorja)

Izjavljam (-va), da je študent

Ime in priimek:_________________________________

Št. indeksa:____________________________________

Na programu:__________________________________

izdelal zaključno delo z naslovom:

_______________________________________________________________________

(naslov zaključnega dela v slovenskem in angleškem jeziku)

_______________________________________________________________________

v skladu z odobreno temo zaključnega dela, Navodilih o pripravi zaključnih del in mojimi (najinimi oziroma našimi) navodili. Preveril (-a, -i) in pregledal (-a, -i) sem (sva, smo) poročilo o plagiatorstvu. Datum in kraj: Podpis mentorja: Datum in kraj: Podpis somentorja (če obstaja):

Page 82: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM

Fakulteta za elektrotehniko, računalništvo in informatiko

Smetanova ulica 17 2000 Maribor, Slovenija

IZJAVA O ISTOVETNOSTI TISKANE IN ELEKTRONSKE VERZIJE ZAKLJUČNEGA DELA IN OBJAVI OSEBNIH PODATKOV DIPLOMANTOV

Ime in priimek avtorja-ice:

Tomaž Pintar

Vpisna številka:

E5011122

Študijski program:

Elektrotehnika

Naslov zaključnega dela:

Krmiljenje mobilnih platform s pametnim telefonom

Mentor:

Matej Rojc

Somentor:

Zdravko Kačič

Podpisani-a Tomaž Pintar izjavljam, da sem za potrebe arhiviranja oddal elektronsko verzijo zaključnega dela v Digitalno knjižnico Univerze v Mariboru. Zaključno delo sem izdelal-a sam-a ob pomoči mentorja. V skladu s 1. odstavkom 21. člena Zakona o avtorskih in sorodnih pravicah dovoljujem, da se zgoraj navedeno zaključno delo objavi na portalu Digitalne knjižnice Univerze v Mariboru. Tiskana verzija zaključnega dela je istovetna z elektronsko verzijo elektronski verziji, ki sem jo oddal za objavo v Digitalno knjižnico Univerze v Mariboru.

Podpisani izjavljam, da dovoljujem objavo osebnih podatkov, vezanih na zaključek študija (ime, priimek, leto in kraj rojstva, datum zaključka študija, naslov zaključnega dela), na spletnih straneh in v publikacijah UM. Datum in kraj: Podpis avtorja-ice: Podpis mentorja: (samo v primeru, če delo ne sme biti javno dostopno)

Page 83: KRMILJENJE MOBILNIH PLATFORM S PAMETNIM TELEFONOM