View
5
Download
0
Category
Preview:
Citation preview
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
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.
Krmiljenje mobilnih platform s pametnim telefonom
ii
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.
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.
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.
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
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
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
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
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
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)
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)
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.
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
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.
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.
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.
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]
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].
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.
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.
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].
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]
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.
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]
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
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].
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.
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
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
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.
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)
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]
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.
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
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)
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.
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]
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].
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.
Krmiljenje mobilnih platform s pametnim telefonom
29
Slika 32: Shema vezja mobilne platforme
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]
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.
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
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.
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.
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
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.
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
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
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
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.
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
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.
Krmiljenje mobilnih platform s pametnim telefonom
43
4.6.2 Diagram poteka
Slika 45: Diagram poteka mobilne platforme
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.
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).
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
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
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]
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
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.
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.
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.
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.
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
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
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
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
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
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
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.
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
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.
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č
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
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
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
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:
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):
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)
Recommended