• Rezultati Niso Bili Najdeni

Napravazasvetlobneefekte,vodenaprekosistemaBluetooth GaˇsperVolf

N/A
N/A
Protected

Academic year: 2022

Share "Napravazasvetlobneefekte,vodenaprekosistemaBluetooth GaˇsperVolf"

Copied!
47
0
0

Celotno besedilo

(1)

Univerza v Ljubljani

Fakulteta za raˇ cunalniˇ stvo in informatiko

Gaˇsper Volf

Naprava za svetlobne efekte, vodena preko sistema Bluetooth

DIPLOMSKO DELO

UNIVERZITETNI ˇSTUDIJSKI PROGRAM PRVE STOPNJE RA ˇCUNALNIˇSTVO IN INFORMATIKA

Mentor : prof. dr. Branko ˇ Ster

Ljubljana 2015

(2)
(3)

Fakulteta za raˇcunalniˇstvo in informatiko podpira javno dostopnost znan- stvenih, strokovnih in razvojnih rezultatov. Zato priporoˇca objavo dela pod katero od licenc, ki omogoˇcajo prosto razˇsirjanje diplomskega dela in/ali moˇznost nadaljne proste uporabe dela. Ena izmed moˇznosti je izdaja diplom- skega dela pod katero od Creative Commons licenc http://creativecommons.si

Morebitno pripadajoˇco programsko kodo praviloma objavite pod, denimo, licenco GNU General Public License, razliˇcica 3. Podrobnosti licence so dostopne na spletni strani http://www.gnu.org/licenses/.

Besedilo je oblikovano z urejevalnikom besedil LATEX.

(4)
(5)

Fakulteta za raˇcunalniˇstvo in informatiko izdaja naslednjo nalogo:

Tematika naloge:

Napiˇsite aplikacijo za pametne telefone z operacijskim sistemom Android, ki sluˇzi za nadzor naprave za svetlobne efekte. Napravo naj nadzoruje radijsko na osnovi standarda Bluetooth. Opiˇsite uporabljeni mikrokrmilnik na na- pravi ter parametre Bluetooth povezave. Opiˇsite tudi delovanje aplikacije.

(6)
(7)

Izjava o avtorstvu diplomskega dela

Spodaj podpisani Gaˇsper Volf sem avtor diplomskega dela z naslovom:

Naprava za svetlobne efekte, vodena preko sistema Bluetooth

S svojim podpisom zagotavljam, da:

• sem diplomsko delo izdelal samostojno pod mentorstvom prof. dr.

Branka ˇStera,

• so elektronska oblika diplomskega dela, naslov (slov., angl.), povzetek (slov., angl.) ter kljuˇcne besede (slov., angl.) identiˇcni s tiskano obliko diplomskega dela,

• soglaˇsam z javno objavo elektronske oblike diplomskega dela na svetov- nem spletu preko univerzitetnega spletnega arhiva.

V Ljubljani, dne 15. septembra 2015 Podpis avtorja:

(8)
(9)

Hvala mentorju, dr. Branku ˇSteru za strokovno pomoˇc ter nasvete. Hvala druˇzini in prijateljem za podporo in prenaˇsanje moje muhavosti tekom izde- lave diplomske naloge. Posebno se zahvaljujem svoji sestri, ki me je pre- priˇcala, da je ˇstudij raˇcunalniˇstva pravi zame.

(10)
(11)

To my future self.

(12)
(13)

Kazalo

Povzetek Abstract

1 Uvod 1

2 Naprava za svetlobne efekte 3

2.1 Opis . . . 3

2.2 Funkcionalnosti . . . 3

3 Mikrokrmilnik 7 3.1 Sploˇsno . . . 7

3.2 Mikrokrmilnik ATmega64 . . . 8

3.3 LED diode . . . 9

3.4 Tipke . . . 9

3.5 LED ekran . . . 11

3.6 Bluetooth . . . 14

4 Android aplikacija za nadzor naprave 17 4.1 Android . . . 17

4.2 Aplikacija za nadzor naprave . . . 17

5 Zakljuˇcek 25

Literatura 27

(14)
(15)

Seznam uporabljenih kratic

kratica angleˇsko slovensko

API Application Programming Interface aplikacijski programski vmesnik CPE Central Processing Unit centralna procesna enota

ROM Read-Only Memory bralni pomnilnik

RAM Random Access Memory bralno-pisalni pomnilnik

EEPROM Electrically Erasable elektriˇcno izbrisljivi

Programmable Read-Only Memory programljivi bralni pomnilnik GPIO General Purpose Input/Output sploˇsno-namenski vhodi/izhodi PSP Interupt Service Routine (ISR) prekinitveno-servisni program GUI Graphical User Interface grafiˇcni uporabniˇski vmesnik

(16)
(17)

Povzetek

Ljudje se po naravi radi zabavamo. Na vsako dobro zabavo spadata glasna glasba in ples. Vse skupaj se ˇse dodatno popestri, ˇce se pleˇse v temi in zra- ven utripajo luˇci, ki polepˇsajo vzduˇsje. Na trgu je na voljo veliko izdelkov, ki lahko popestrijo dogajanje na plesiˇsˇcu, vendar so dragi, ali pa imajo omejene funkcionalnosti. Da bi popestril dogajanje na lokalnih praznovanjih in za- bavah, sem v sklopu diplomske naloge razvil program za krmiljenje naprave za svetlobne efekte. Da pa bi bilo vse skupaj laˇzje za uporabo, sem razvil ˇse aplikacijo za mobilne telefone z operacijskim sistem Android, ki omogoˇca upravljanje z napravo za svetlobne efekte preko standarda Bluetooth.

Kljuˇcne besede: mikrokrmilnik, svetlobni efekti, Bluetooth, Android.

(18)
(19)

Abstract

People love to have fun. One of the best entertainment options are parties.

All good parties include loud music and dancing. Dancing is enriched by darkness and flashing lights, that brighten up the atmosphere. There are a lot of light shows available on the market. But they are either very expensive or lack features. To spice up local celebrations and parties, I developed a program for controlling a light show device as part of the thesis. To make the usage of the device as simple as possible I also developed an application for Android phones, that allows controlling of the light show device using the Bluetooth standard.

Keywords: microcontroller, light show, Bluetooth, Android.

(20)
(21)

Poglavje 1 Uvod

Prijatelj je za zakljuˇcni izdelek v srednji ˇsoli izdelal napravo za svetlobne uˇcinke. Napravo smo uporabljali na raznovrstnih praznovanjih, da smo malo popestrili plesiˇsˇce. Ker pa si je bilo potrebno zapomniti, katera tipka ima katero funkcijo, saj so vse enake, me je prijatelj vpraˇsal, ˇce bi bilo moˇzno narediti raˇcunalniˇski program za oddaljen nadzor. Po krajˇsem iskanju po medmreˇzju sem ugotovil, da bi se dalo, vendar bi bilo potrebno zamenjati obstojeˇci mikrokrmilnik ter dodati Bluetooth sprejemnik. Prijatelj je bil nad odgovorom navduˇsen in tako se je rodila ideja za mojo diplomsko nalogo.

V okviru diplomske naloge sem moral najprej prenesti vse funkcionalnosti starega mikrokrmilnika (AT89C52) na novega (ATMega64). Potem sem mo- ral dodati nove funkcionalnosti, med katere spada komunikacija z Bluetooth vmesnikom ter doloˇciti protokol za komuniciranje med mikrokrmilnikom ter Android aplikacijo. Nazadnje sem se lotil Android aplikacije.

V poglavju 2 je opisana naprava za svetlobne efekte in njene kljuˇcne funkcionalnosti. V poglavju 3 opisujem mikrokrmilnik, njegove lastnosti ter potrebne korake in funkcije za zagotovitev potrebnih funkcionalnosti naprave.

Poglavje 4 opisuje operacijski sistem Android ter opis aktivnosti, ki jih moja aplikacija ponuja. Na koncu sledi ˇse zakljuˇcek, kjer so opisani problemi, s katerimi sem se sreˇcal tekom diplomskega dela, ter moˇzne izboljˇsave naprave za svetlobne efekte in Android aplikacije.

1

(22)

2 POGLAVJE 1. UVOD

(23)

Poglavje 2

Naprava za svetlobne efekte

2.1 Opis

Naprava za svetlobne uˇcinke je 8-kanalna, kar pomeni, da je nanjo mogoˇce priklopiti 8 ˇzarnic. Poleg ˇzarnic ima tudi izhod za stroboskop.

Naprava ima 16 tipk, ki omogoˇcajo upravljanje z luˇckami, hitrost utri- panja in podobno. Ima tudi LED ekran, na katerem se prikazuje trenutno izvajani program, korak programa in hitrost utripanja luˇck. Poleg ekrana ima ˇse 8 LED diod, ki sluˇzijo kot indikator trenutno priˇzganih luˇci. Na sliki 2.2 si lahko ogledamo sprednjo ploˇsˇco naprave.

S prijateljem sva naredila tudi lesen zaboj, ki ima vgrajene nosilce za ˇzarnice in ventilatorje. Ventilatorji so potrebni za hlajenje, saj se ˇzarnice moˇcno segrevajo in bi lahko priˇslo do poˇzara. Slika 2.1 prikazuje napravo v delovanju.

2.2 Funkcionalnosti

Naprava ima 3 naˇcine delovanja: naˇcin takta, roˇcni naˇcin in naˇcin programi- ranja.

V naˇcinu takta se izvaja programe po taktu, ki ga doloˇci uporabnik. Pro- gram je sestavljen iz zaporedja korakov. Vsak korak ima definirano, katere

3

(24)

4 POGLAVJE 2. NAPRAVA ZA SVETLOBNE EFEKTE

Slika 2.1: Naprava za svetlobne efekte v delovanju

(25)

2.2. FUNKCIONALNOSTI 5

Slika 2.2: Sprednja stran naprave za svetlobne efekte

izmed osmih luˇci so priˇzgane in katere ugasnjene. Takt nam pove, kolikokrat v minuti se bo zamenjal korak. Minimalna vrednost takta je 10, maksimalna 800, privzeta ob vklopu naprave pa je 200.

V roˇcnem naˇcinu se koraki ne spreminjajo po taktu, ampak s pritiski na tipko.

Programsko je v napravo vpisanih 10 programov, v naˇcinu programiranja pa lahko vpiˇsemo lastne programe. Prostora je za 30 programov, vsak ima lahko do najveˇc 60 korakov.

Da pa bi bilo upravljanje z napravo laˇzje, sem razvil tudi aplikacijo za pa- metne telefone Android. Na mikrokrmilnik naprave je prikljuˇcen Bluetooth sprejemnik/oddajnik, ki komunicira s telefonom.

(26)

6 POGLAVJE 2. NAPRAVA ZA SVETLOBNE EFEKTE

(27)

Poglavje 3

Mikrokrmilnik

Na mikrokrmilnik lahko gledamo kot na majhen raˇcunalnik, ki ima vse svoje sestavne dele vgrajene v eno samo integrirano vezje. ˇCetudi se tega ne za- vedamo, so nepogreˇsljivi del naˇsega vsakdana. Veˇcina naprav, ki jih upora- bljamo za lajˇsanje vsakodnevnih tegob, pa naj bo to priprava hrane, pomiva- nje posode ali pa pranje perila, je krmiljena z enim ali veˇcimi mikrokrmilniki.

3.1 Sploˇ sno

Skoraj vsak mikrokrmilnik je sestavljen iz sledeˇcih elementov: centralne pro- cesne enote (CPE), pomnilnika ter GPIO zatiˇcev (GPIO, ang. General Pur- pose Input Output).

Ponavadi ima mikrokrmilnik dve vrsti pomnilnika, in sicer: ROM (ang.

Read Only Memory) in RAM (ang. Random Access Memory). Med bralne pomnilnike spadajo: EPROM (ang. Erasable Programmable Read Only Me- mory), EEPROM (ang. Electrically Erasable Read Only Memory) ter Flash, ki se uporablja za shranjevanje programa.

7

(28)

8 POGLAVJE 3. MIKROKRMILNIK

3.2 Mikrokrmilnik ATmega64

ATmega64 je mikrokrmilnik ameriˇskega podjetja Atmel, ki ima sedeˇz v zve- zni drˇzavi Kaliforniji. Podjetje je bilo ustanovljeno leta 1984. Veˇcino svo- jega dobiˇcka ustvari prav s prodajo mikrokrmilnikov. Poleg mikrokrmilnikov druˇzine AVR, Atmel proizvaja ˇse mikroprocesorje z arhitekturo ARM. Med ostale produkte podjetja spadajo ˇse kartice za brezˇziˇcno povezavo (Wi-Fi), ekrani na dotik, pomnilniˇski moduli itd.

3.2.1 Lastnosti

ATmega64 je 8-bitni mikrokrmilnik tipa RISC (ang. Reduced Instruction Set Computer), kar pomeni, da je nabor strojnih ukazov dokaj majhen, le 130, in da jih veˇcina traja enako ˇstevilo urinih period.

Razpolaga s 64-Kbajtnim programljivim pomnilnikom flash, ki se upora- blja za shranjevanje programa. Vgrajen ima tudi 4-Kbajtni SRAM (Static random-access memory), ki sluˇzi kot glavni pomnilnik. Razpolaga tudi z 2- Kbajtnim EEPROMom, ki lahko ohrani svoje stanje tudi, ko ni napajanja in se uporablja za shranjevanje konfiguracij programa in podobno.

Med perifernimi funkcionalnostmi mikrokrmilnika najdemo dva 8-bitna ter dva 16-bitna ˇstevca, dva programljiva USART vmesnika in SPI vmesnik tipa gospodar/suˇzenj, ki sluˇzi za programiranje mikrokrmilnika.

ATmega64 ima 64 zatiˇcev, od tega jih je 56 GPIO. GPIO zatiˇci so zdruˇzeni v 7 portov, v vsakem jih je po 8. Porti se imenujejo PORTA, PORTB, PORTC, PORTD, PORTE, PORTF ter PORTG. Vsak izmed njih ima po 3 registre. Istoimenski register sluˇzi nastavljanju vrednosti zatiˇcev. Register DDRx (ang. Data Direction Register) zatiˇce na portu x nastavi kot vhodne ali izhodne, register PINx (ang. Port x Input Pins Address) pa sluˇzi branju trenutne vrednosti zatiˇcev na portu x. Podrobno razporeditev zatiˇcev na ˇcipu najdemo na sliki 3.1. Nekateri izmed GPIO zatiˇcev imajo tudi dodatne funkcionalnosti. Sluˇzijo lahko kot zunanje prekinitve ob spremembi stanja zatiˇca ali pa kot USART vmesniki.

(29)

3.3. LED DIODE 9

Slika 3.1: Razporeditev zatiˇcev na ATmega64

3.3 LED diode

LED diode in izhodi za ˇzarnice so prikljuˇceni na PORTC. Za LED diode ni potrebno prav veliko konfiguracije. Vse zatiˇce PORTC je potrebno nastaviti kot izhod, kar se stori z vpisom samih enic v register DDRC. Ko je izhod zatiˇca, na katerega je vezana dioda, enak 0, dioda sveti, ko je izhod enak 1, je dioda ugasnjena.

3.4 Tipke

Tipke so prikljuˇcene na PORTF. Zatiˇce PORTF je potrebo nastaviti kot vhodne. To storimo z zapisom niˇcel v register DDRF. Ob pritisku tipke dobimo na zatiˇc logiˇcno 0, zato moramo za vseh 8 zatiˇcev vklopiti notranje upore, ki zatiˇc drˇzijo na logiˇcni 1, dokler tipka ni pritisnjena. To storimo z vpisom enic v register PORTF.

Ker pa na vsak zatiˇc prideta po dve tipki, potrebujemo ˇse kontrolna

(30)

10 POGLAVJE 3. MIKROKRMILNIK

izhodna zatiˇca, v naˇsem primeru sta to zatiˇca 0 ter 1 na PORTG. Ko je niˇcti postavljen na 1, je izbrana spodnja vrsta tipk, ko pa je prvi na 1, je izbrana zgornja vrsta tipk. ˇCe sta oba zatiˇca hkrati postavljena na 1, nam to doloˇca nedefinirano stanje.

Branje tipk oziroma zaznavanje pritiska na tipko je implementirano s ˇcasovnikom. Inicializacija ˇcasovnika:

v o i d i n i t T i m e r ( ){

/∗ n a s t a v i v r e d n o s t p r i m e r j e v a l n e g a r e g i s t r a ∗/

OCR1A = 1 7 0 0 ;

/∗ za p r i m e r j e v a l n i r e g i s t e r n a s t a v i OCR1A ∗/

TCCR1B |= ( 1 << WGM12) ; /∗ omogoci p r e k i n i t e v ∗/

TIMSK |= ( 1 << OCIE1A ) ;

/∗ n a s t a v i uro na ( g l a v n o uro ) / 1024 i n z a c n i ∗/ TCCR1B |= ( 1 << CS12 ) | ( 1 << CS10 ) ;

}

Ura ˇcasovnika je nastavljena na 16 MHz / 1024. Pri 15625 Hz ˇcasovnik doseˇze vrednost 1700 pribliˇzno 9 krat na sekundo. Takrat se sproˇzi prekinitev in pokliˇce se sledeˇci prekinitveno-servnisi program (PSP):

ISR ( TIMER1 COMPA vect ){

b i t c l e a r (PORTG, BV ( 1 ) ) ; b i t s e t (PORTG, BV ( 0 ) ) ; i f ( mode != mode prog ) {

i f ( PINF != 0 x f f ){

c l i ( ) ;

d o A c t i o n ( PINF ) ; s e i ( ) ;

r e t u r n ; }

} e l s e {

i f ( PINF != 0 x f f ) {

(31)

3.5. LED EKRAN 11

c l i ( ) ;

doActionProg ( PINF ) ; s e i ( ) ;

r e t u r n ; }

b i t c l e a r (PORTG, BV ( 0 ) ) ; b i t s e t (PORTG, BV ( 1 ) ) ; i f ( PINF != 0 x f f ) {

c l i ( ) ;

doActionProg ( ˜ PINF ) ; s e i ( ) ;

r e t u r n ; }

} }

Prekinitveno-servisni program najprej preveri, v katerem naˇcinu je na- prava. ˇCe ni v naˇcinu programiranja, potem se vedno uporablja samo spo- dnja vrsta tipk. Ko pa je v naˇcinu programiranja, pa najprej preveri spodnjo vrsto in nato ˇse zgornjo vrsto tipk. ˇCe zazna pritisk tipke, to je, ko niso vsi zatiˇci PORTF enaki 1, izkljuˇci prekinitve in pokliˇce funkcijo, ki izvede akcijo glede na pritisnjeno tipko.

3.5 LED ekran

LED ekran je prikljuˇcen na zatiˇce PORTD, razen osvetlitve, ki se nahaja na PORTB. Natanˇcnejˇso porazdelitev zatiˇcev si lahko ogledamo v tabeli 3.1.

LED ekran deluje v 4-bitnem naˇcinu, kar pomeni, da sta za prenos enega znaka potrebni 2 poˇsiljanji. Po vsakem poˇsiljanju je potrebno ekranu sporoˇciti, da je poˇsiljanje konˇcano, kar se stori s postavitvijo zatiˇca E (ang. enable) na ekranu za vsaj 5 milisekund. Poˇsiljati je mogoˇce ukaze in znake. Pri poˇsiljanju znaka mora biti zatiˇc ekrana Rs (ang. reset) v visokem stanju, pri

(32)

12 POGLAVJE 3. MIKROKRMILNIK

Tabela 3.1: Razporeditev zatiˇcev LED ekrana Zatiˇc ekrana Zatiˇc mikrokrmilnika

Osvetlitev PORTB 7

Rs PORTD 7

E PORTD 6

DB4 PORTD 5

DB5 PORTD 4

DB6 PORTD 1

DB7 PORTD 0

ukazu pa v nizkem. Koda za krmiljenje LED ekrana:

v o i d sendNibbleLCD ( u i n t 8 t d a t a ){

PORTD &= ˜ ( 0 x33 ) ; // p o c i s t i podatkovne z a t i c e e k r a n a i f ( d a t a & BV ( 4 ) ) b i t s e t (PORTD, BV (LCD4 ) ) ;

i f ( d a t a & BV ( 5 ) ) b i t s e t (PORTD, BV (LCD5 ) ) ; i f ( d a t a & BV ( 6 ) ) b i t s e t (PORTD, BV (LCD6 ) ) ; i f ( d a t a & BV ( 7 ) ) b i t s e t (PORTD, BV (LCD7 ) ) ; }

v o i d l e d P u l s e ( ){

b i t s e t (PORTD, BV (LCD E ) ) ; d e l a y m s ( 5 ) ;

b i t c l e a r (PORTD, BV (LCD E ) ) ; }

v o i d sendByteLED ( u i n t 8 t d a t a ){ sendNibbleLCD ( d a t a ) ; l e d P u l s e ( ) ;

d a t a <<= 4 ;

sendNibbleLCD ( d a t a ) ; l e d P u l s e ( ) ;

(33)

3.5. LED EKRAN 13

}

v o i d charLCD ( u i n t 8 t ch ){

b i t s e t (PORTD, BV ( LCD Rs ) ) ; sendByteLED ( ch ) ;

}

v o i d cmdLCD( u i n t 8 t cmd ){

b i t c l e a r (PORTD, BV ( LCD Rs ) ) ; sendByteLED ( cmd ) ;

}

v o i d initLCD ( ){

cmdLCD( 0 x33 ) ; // i n i t i a l i z e

cmdLCD( 0 x32 ) ; // n a s t a v i 4 b i t n i vhod cmdLCD( 0 x28 ) ; // 2 v r s t i c i po 18 znakov

cmdLCD( 0 x0C ) ; // onemogoci k a z a l e c ( 0 c 0 e omogoci ) cmdLCD( 0 x06 ) ; // smer k a z a l c a

cmdLCD( 0 x01 ) ; // p o c i s t i e k r a n d e l a y m s ( 1 0 0 ) ;

}

v o i d cursorLCD ( c h a r pos ){

c h a r cmd ;

i f ( pos < 0 x10 ) cmd = 0 x80 ; e l s e cmd = 0 xc0 ;

cmd += ( pos & 0 x 0 f ) ; cmdLCD( cmd ) ;

}

v o i d stringLCD ( c h a r∗ t e x t ){

(34)

14 POGLAVJE 3. MIKROKRMILNIK

w h i l e (∗t e x t ){

charLCD (∗t e x t ++);

} }

3.6 Bluetooth

Na mikrokrmilnik je prikljuˇcen tudi Bluetooth oddajnik / sprejemnik, in si- cer na zatiˇca 2 in 3 PORTD. Ta dva zatiˇca poleg GPIO sluˇzita tudi kot vhod in izhod za USART1. USART (ang. Universal Synchronous / Asynchro- nous Receiver / Transmitter) je naprava, ki jo sedaj vkljuˇcujejo ˇze skoraj vsi mikrokrmilniki in sluˇzi za prenos podatkov. Ponavadi se uporablja v pove- zavi s komunikacijskimi standardi. Tako je tudi v mojem primeru. USART uporabljam v povezavi s standardom RS-232.

Zatiˇc 2 na PORTD predstavlja Rx zatiˇc (sprejemni, ang. Receive) USART1 vmesnika na mikrokrmilniku, zatiˇc 3 pa Tx zatiˇc(oddajni, ang. Transmit).

Zatiˇc Rx mikrokrmilnika je vezan na zatiˇc Tx na Bluetooth modulu, Tx mikrokrmilnika pa na Rx modula.

V mikrokrmilniku je potrebno nastaviti parametre, ki so potrebni za poˇsiljanje. Bluetooth modul ima privzeto hitrost prenosa (ang. baud rate) 9600, zato je potrebno na to vrednost nastaviti tudi hitrost prenosa USARTa v mikrokrmilniku. Mikrokrmilnik za hitrost prenosa uporablja vrednost re- gistra UBBR (ang. USART Baud Rate Register). Vanj je potrebno vpisati vrednost izraza

f

16BAU D −1,

kar je v naˇsem primeru enako 76. Nastaviti je potrebno tudi ˇstevilo podat- kovnih bitov in zakljuˇcnih bitov. Vse to se naredi v naslednji funkciji:

v o i d u a r t i n i t ( v o i d ){

/∗ h i t r o s t p r e n o s a ∗/

UBRR1H = 0 ;

(35)

3.6. BLUETOOTH 15

UBRR1L = 7 6 ;

/∗ 8 pod . b i t o v , 1 kon . b i t ∗/

UCSR1C=(1<<UCSZ11)|(1< <UCSZ10 ) ;

/∗ omogocimo p o s i l j a n j e t e r p r e k i n i t v e ∗/

UCSR1B=(1<<TXEN1)|(1< <RXEN1)|(1< <RXCIE1 ) ; }

Protokol, ki se uporablja za dekodiranje, je preprost. Vedno se poˇsiljata / sprejemata po dva bajta. Prvi bajt je kontrolni, ki doloˇca akcijo, drugi bajt pa je parameter akcije.

(36)

16 POGLAVJE 3. MIKROKRMILNIK

(37)

Poglavje 4

Android aplikacija za nadzor naprave

4.1 Android

Android je operacijski sistem namenjen predvsem napravam z ekranom na dotik, kot so mobilni telefoni ter tabliˇcni raˇcunalniki. Razvija ga ameriˇski spletni gigant Google.

Operacijski sistem Android temelji na Linuxovem jedru in je napisan v programskih jezikih C in Java. Za pisanje novih aplikacij ponuja SDK (ang.

Software development kit). SDK vsebuje razhroˇsˇcevalnik (ang. debugger), knjiˇznice, emulator Android naprav, dokumentacijo ter vzorce kode.

Android aplikacije so podobne spletnim aplikacijam. Veˇcina spletnih apli- kacij je sestavljenih iz veˇc podstrani, ki skupaj tvorijo celoto. Podobno je tudi pri Android aplikacijah, le da se tukaj podstrani imenujejo aktivnosti (ang. activity). Vsaka aktivnost ima tudi svojo postavitev (ang. layout).

4.2 Aplikacija za nadzor naprave

Aplikacija je sestavljena iz treh aktivnosti: glavne aktivnosti, aktivnosti za nadzor in aktivnosti za pisanje programov.

17

(38)

18 POGLAVJE 4. ANDROID APLIKACIJA ZA NADZOR NAPRAVE

4.2.1 Glavna aktivnost

Glavna aktivnost je prva, ki se prikaˇze ob zagonu aplikacije. Ima dva gumba za vstop v eno izmed ostalih aktivnosti.

Ob pritisku na gumb za vstop v aktivnost za pisanje programov se ak- tivnost odpre takoj, pri pritisku na gumb za vstop v aktivnost za nadzor pa se pred tem izvede ˇse nekaj akcij. Najprej se preveri, ˇce je Bluetooth vme- snik na telefonu vkljuˇcen. ˇCe ni, uporabniku ponudi opcijo za vklop le-tega, drugaˇce nadaljuje. V naslednjem koraku se poskuˇsa aplikacija povezati na napravo za svetlobne uˇcinke. ˇCe ji to ne uspe, izpiˇse napako, ob uspehu pa se odpre aktivnost za nadzor.

4.2.2 Aktivnost za nadzor naprave

Postavitev aktivnosti je sestavljena iz dveh delov. Polovico ekrana zasedajo slike 8 barvnih luˇci, razporejenih v krog, ki je enaka raporeditvi na napravi.

V drugi polovici pa se nahajajo gumbi ter labele. Izgled prikazuje slika 4.1.

Ob vsaki spremembi koraka na napravi se preko Bluetooth povezave poˇsljeta dva bajta. Prvi bajt nam sporoˇci, da je priˇslo do spremembe priˇzganih / ugasnjenih luˇci in da moramo spremeniti slike luˇci v naˇsi aktivnosti. Drugi bajt pa nam pove, katere luˇci so priˇzgane in katere ugasnjene. Ker je luˇci ravno 8, tako kot ˇstevilo bitov v bajtu, lahko na bite gledamo kot na indika- tor. ˇCe je prvi bit v bajtu 1, pomeni da je prva luˇc ugasnjena, ˇce pa je 0, pa pomeni, da je priˇzgana. Enako velja za vse ostale bite. Glede na bit, ki nam predstavlja luˇc, nastavimo sliko pogleda na priˇzgano ali ugasnjeno.

Ob pritisku na gumb se poˇsljeta dva bajta na napravo. Prvi bajt doloˇca akcijo, ki se na napravi izvede, drugi bajt pa parameter akcije. Na ta naˇcin je mogoˇce nastaviti hitrost utripanja luˇck, program, ki se izvaja, in zaustavitev oziroma zagon programa.

Labele prikazujejo stanje naprave. Ob vsaki spremembi stanja naprava poˇslje informacijo o novem stanju, ki se zapiˇse v labelo.

(39)

4.2. APLIKACIJA ZA NADZOR NAPRAVE 19

Slika 4.1: Aktivnost za nadzor naprave

(40)

20 POGLAVJE 4. ANDROID APLIKACIJA ZA NADZOR NAPRAVE

4.2.3 Aktivnost za pisanje programov

Za razliko od aktivnosti za nadzor je ta aktivnost dostopna tudi brez povezave Bluetooth do naprave. Postavitev je sestavljena iz dveh delov. Prvi del je enak, kot v aktivnosti za nadzor, v drugem delu pa se nahaja ˇsest gumbov.

Aktivnost je namenjena pregledovanju, pisanju in spreminjanju progra- mov. S pritiskom na gumb se premikamo po korakih programa. Slike luˇci nam prikazujejo njihovo stanje v trenutnem koraku. S pritiskom na sliko luˇci se stanje zamenja iz aktivnega v neaktivno ali obratno. Ob pritisku na gumb za shranjevanje se spremembe programa zapiˇsejo naravnost v napravo za sve- tlobne uˇcinke. ˇCe pa aplikacija ni povezana z napravo, se program zapiˇse v sistem Android in se avtomatiˇcno prenese na napravo ob prvi povezavi.

4.2.4 Bluetooth

Branje toka podatkov (ang. data stream) je blokirana akcija, kar pomeni, da se med branjem ne more izvajati nobena druga akcija. ˇCe bi to poˇceli v isti niti, kjer se izvaja grafiˇcni uporabniˇski vmesnik (GUI), med branjem vmesnik ne bi bil odziven. Ta problem reˇsimo tako, da branje toka podatkov prestavimo v novo nit.

S tem smo reˇsili problem neodzivajoˇcega uporabniˇskega vmesnika, ven- dar tako kot vedno v raˇcunalniˇstvu, z reˇsitvijo enega problema ustvarimo nov problem. Preko vmesnika Bluetooth dobivamo podatke, ki spreminjajo izgled uporabniˇskega vmesnika, vendar uporabniˇski vmesnik lahko spremi- nja le glavna nit. Pojavi se vpraˇsanje, kako podatke iz ene niti prenesemo v drugo nit. Sistem Android za ta problem ponuja elegantno reˇsitev. V istem javanskem razredu, ki definira aktivnost, se definira tudi obdelovalnik (ang.

handler). Obdelovalniku je potrebno podati nit, ki skrbi za grafiˇcni vmesnik.

Obdelovalnik dobi sporoˇcilo od niti, ki bere iz toka podatkov. Sporoˇcilo vsebuje polje bajtov. Vsak bajt iz polja zapiˇsemo v vrsto (ang. queue).

Vrsta je implementirana z javanskim razredom LinkedList.

Koda obdelovalnika v aktivnosti za nadzor:

(41)

4.2. APLIKACIJA ZA NADZOR NAPRAVE 21

p u b l i c H a n d l e r h a n d l e r = new H a n d l e r ( Looper . getMainLooper ( ) ) { p u b l i c v o i d h a n d l e M e s s a g e ( Message msg ) {

Bundle b u n d l e = msg . getData ( ) ;

b y t e [ ] b y t e s = b u n d l e . g e t B y t e A r r a y ( ” msg ” ) ; i n t s i z e = b u n d l e . g e t I n t ( ” s i z e ” ) ;

f o r ( i n t i =0; i<s i z e ; i ++) {

queue . addLast ( ( i n t ) b y t e s [ i ] ) ; }

w h i l e ( queue . s i z e ( ) > 1 ) {

i n t [ ] temp = {queue . pop ( ) , queue . pop ( )}; S t r i n g s t a t u s = d e c o d e B y t e s ( temp ) ;

S t r i n g [ ] s p l i t = s t a t u s . s p l i t ( ” ” ) ; s w i t c h ( s p l i t [ 0 ] ) {

c a s e ” b e a t ” :

l a b e l B e a t . s e t T e x t ( ” Beat : ” + s p l i t [ 1 ] ) ; b r e a k ;

c a s e ” p r o g ” :

l a b e l P r o g . s e t T e x t ( ” Prog : ” + s p l i t [ 1 ] ) ; b r e a k ;

c a s e ” s t e p ” :

l a b e l S t e p . s e t T e x t ( ” S t e p : ” + s p l i t [ 1 ] ) ; b r e a k ;

c a s e ” r u n n i n g ” :

s t o p s t a r t . s e t T e x t ( ( s p l i t [ 1 ] . e q u a l s ( ” 0 ” ) ) ? ” S t a r t ” : ” Stop ” ) ; b r e a k ;

c a s e ”mode ” :

l a b e l M o d e . s e t T e x t ( ” Mode : ” + s p l i t [ 1 ] ) ; b r e a k ;

c a s e ” l i g h t s ” :

s e t L i g h t s ( I n t e g e r . p a r s e I n t ( s p l i t [ 1 ] ) ) ;

(42)

22 POGLAVJE 4. ANDROID APLIKACIJA ZA NADZOR NAPRAVE

b r e a k ; d e f a u l t :

Toast . makeText ( g e t A p p l i c a t i o n C o n t e x t ( ) , ” E r r o r ” , Toast .LENGTH SHORT ) . show ( ) ;

} } }

p r i v a t e v o i d s e t L i g h t s ( i n t l i g h t s ) {

f o r ( i n t i=l i g h t s A r r a y . l e n g t h−1; i>=0; i−−) { i f ( ( ( l i g h t s >> i ) & 1 ) == 0 )

l i g h t s A r r a y [ i ] . s e t I m a g e R e s o u r c e ( d r a w a b l e s A r r a y [ ( i % 4 ) ∗ 2 ] ) ; e l s e

l i g h t s A r r a y [ i ] . s e t I m a g e R e s o u r c e ( d r a w a b l e s A r r a y [ ( ( i % 4 ) ∗ 2 ) + 1 ] ) ; }

} };

V niti, kjer beremo tok podatkov, ob inicializaciji nastavimo obdelovalnik na obdelovanik nadzorne aktivnosti. V zanki samo beremo in poˇsiljamo prebrane bajte v obdelavo obdelovalniku.

Koda branja iz vhodnega toka podatkov:

p u b l i c v o i d run ( ){ i n t b ;

i n t b y t e s ;

b y t e [ ] b u f f e r = new b y t e [ 1 0 2 4 ] ; Bundle b u n d l e = new Bundle ( ) ; w h i l e ( h a n d l e r == n u l l ) {}

w h i l e ( t r u e ){

S t r i n g r e s u l t = n u l l ; t r y {

b y t e s = i n . r e a d ( b u f f e r ) ;

Message msg = h a n d l e r . o b t a i n M e s s a g e ( ) ;

(43)

4.2. APLIKACIJA ZA NADZOR NAPRAVE 23

b u n d l e . putByteArray ( ” msg ” , b u f f e r ) ; b u n d l e . p u t I n t ( ” s i z e ” , b y t e s ) ;

msg . s e t D a t a ( b u n d l e ) ;

h a n d l e r . sendMessage ( msg ) ; } c a t c h ( IO E xc e pt i on e ) {

e . p r i n t S t a c k T r a c e ( ) ; b r e a k ;

} } }

(44)

24 POGLAVJE 4. ANDROID APLIKACIJA ZA NADZOR NAPRAVE

(45)

Poglavje 5 Zakljuˇ cek

V sklopu diplomske naloge sem razvil program za mikrokrmilnik ATmega64, ki krmili napravo za svetlobne efekte. Program omogoˇca spreminjanje hitro- sti utripanja luˇck, naˇcin utripanja, pisanje novih programov in poˇsiljanje ter sprejemanje ukazov preko vmesnika Bluetooth. Poleg programa za mikro- krmilnik je bila razvita tudi Android aplikacija, ki omogoˇca nadzor naprave ter pisanje novih programov utripanja. Upam, da bo naprava prisotna na ˇcimveˇc praznovanjih in da se bodo ljudje ob utripanju luˇck zabavali.

Izpolnil sem vse cilje, ki sem si jih zadal ob priˇcetku izdelave. S konˇcnim izdelkom sem zadovoljen. Edina teˇzava, ki sem jo opazil, je velika stopnja na- pak pri poˇsiljanju iz naprave na telefon. Priˇcakovana stopnja napak je okoli 0,2%, dejanska stopnja pa je okoli 3-5%. Problem sem poskuˇsal reˇsiti s spre- minjanjem parametrov Bluetooth komunikacije in s spreminjanjem kode za sprejemanje v aplikaciji za telefon. Oba poskusa sta bila neuspeˇsna. Stopnjo napak mi je v obeh primerih uspelo poveˇcati, a nikoli zmanjˇsati.

Obstaja precej funkcionalnosti, ki bi se jih lahko dodalo. Med drugim tudi moˇznost priklopa veˇcih stroboskopov, posebni programi, namenjeni samo utripanju stroboskopa, program za krmiljenje naprave za raˇcunalnik itd.

Ob programiranju sem se zabaval in hkrati nauˇcil veliko novih spretnosti.

S programiranjem mikrokrmilnika v jeziku C ˇse nisem imel izkuˇsenj, prviˇc pa sem se lotil tudi izdelave aplikacije za operacijski sistem Android.

25

(46)

26 POGLAVJE 5. ZAKLJU ˇCEK

Skratka, moˇznosti za izboljˇsavo naprave za svetlobne efekte je neomejeno.

Verjetnost, da bom katero izmed njih tudi implementiral, je kar velika.

(47)

Literatura

[1] ATmega64/L datasheet. [Online]. Dosegljivo:

http://www.atmel.com/Images/Atmel-2490-8-bit-AVR-

Microcontroller-ATmega64-L datasheet.pdf. [Dostopano 5.9.2015].

[2] Elliot Williams. Make: AVR Programming. Addison-Wesley, 2014.

[3] Develop Apps - Android Developers. [Online]. Dosegljivo:

http://developer.android.com/develop/index.html.[Dostopano 7.9.2015].

[4] Nicolas Gramlich. andbook! Android Programming.[Online]. Dosegljivo:

http://andbook.anddev.org/files/andbook.pdf. [Dostopano 22.8.2015] . [5] GNU General Public Licence. [Online]. Dosegljivo:

https://www.gnu.org/copyleft/gpl.html. [Dostopano 20. 9. 2014].

27

Reference

POVEZANI DOKUMENTI

S pomoˇ cjo razvojnega okolja Android Studio in programskega jezika Java je bila razvita mobilna aplikacija za mobilne naprave Android, ki omogoˇ ca navigacijo do najbliˇ

Poleg mobilne Android aplikacije je bila izdelana tudi spletna aplikacija, ki sluˇ zi kot vmesnik za dostop do najljubˇsih poti in upravljanje z njimi. Razvoj aplikacije je potekal

Za vzpostavitev povezave med svojo aplikacijo in datotekami shp smo se odloˇ cili za uporabo knjiˇ znice FDO, ki nam omogoˇ ca preprost dostop do objektov in njihovih podatkov v

Razvita je bila aplikacija za Android pametne telefone, ki v duhu dobe interneta stvari odslužene telefone spremeni v enote za video in audio nadzor hiše, ki so dosegljive

Poleg vgrajenega sistema pa smo pripravili tudi zaledni streˇ zniˇski del, ki shranjuje podatke prejete iz vgrajenega sistema, in mobilno aplikacijo za mobilne naprave z

V naˇsem primeru so preko njega povezani stroji s streˇ zniki OPC DA in podatkovna baza Microsoft SQL spletne aplikacije za upravljanje z recepti, kar nam omogoˇ ca nalaganje

Sistem za upravljanje podatkovnih baz je programska oprema, ki omogoˇ ca definiranje, kreiranje in vzdrˇ zevanje podatkovne baze ter zagotavlja hkraten in nadzorovan dostop do

V okviru diplomskega dela sem izdelal aplikacijo za napovedovanje jedilnika in nakupovalne liste v prototipu sistema inteligentnega hladilnika. Sistem z uporabo tehnologije RFID zazna