SVEUCILIŠTE U ZAGREBUFAKULTET ELEKTROTEHNIKE I RACUNARSTVA
DIPLOMSKI RAD br. 445
Izgradnja rucnog racunalaDavor Cihlar
Zagreb, lipanj 2012.
iii
SADRŽAJ
1. Uvod 1
2. Sklopovska podrška 32.1. Procesorski modul TDM-3730 . . . . . . . . . . . . . . . . . . . . . 4
2.2. Noseca plocica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3. Napajanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.1. Automatsko odredivanje izvora . . . . . . . . . . . . . . . . 8
2.3.2. Punjac baterije . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.3. Baterija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.4. Pozadinsko osvjetljenje . . . . . . . . . . . . . . . . . . . . . 9
2.3.5. Napajanje za USB host prikljucke . . . . . . . . . . . . . . . 10
2.3.6. Sustav za paljenje i gašenje . . . . . . . . . . . . . . . . . . . 10
2.4. Plocica sa svjetlecom RGB-diodom . . . . . . . . . . . . . . . . . . 11
2.4.1. Komunikacija s plocicom . . . . . . . . . . . . . . . . . . . . 12
2.4.2. Nacini rada . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4.3. Upravljanje svjetlecom RGB-diodom . . . . . . . . . . . . . 14
2.5. Pojacala za ugradene zvucnike . . . . . . . . . . . . . . . . . . . . . 15
2.6. Ekran osjetljiv na dodir . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7. Plocica s tipkama . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3. Osnovna programska podrška 173.1. U-Boot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2. Inicijalizacija sklopovlja u Linuxu . . . . . . . . . . . . . . . . . . . 18
3.2.1. Matricna tipkovnica . . . . . . . . . . . . . . . . . . . . . . 19
3.2.2. Kartica µSD . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2.3. Ekran osjetljiv na dodir . . . . . . . . . . . . . . . . . . . . . 21
3.2.4. Sabirnica I2C . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2.5. Ulazno/izlazni izvodi opce namjene . . . . . . . . . . . . . . 22
iv
3.2.6. Funkcija za gašenje sustava . . . . . . . . . . . . . . . . . . 24
3.2.7. Mjerenje stanja baterije . . . . . . . . . . . . . . . . . . . . . 24
4. Periferna programska podrška 264.1. Upravljacki moduli . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.1. Virtualni datotecni podsustav za upravljanje i nadzor . . . . . 27
4.1.2. Modul za akcelerometar . . . . . . . . . . . . . . . . . . . . 30
4.1.3. Modul za pracenje stanja baterije . . . . . . . . . . . . . . . 31
4.1.4. Modul za mjerenje intenziteta svjetlosti . . . . . . . . . . . . 32
4.1.5. Modul za upravljanje RGB-diodom . . . . . . . . . . . . . . 34
4.2. Demonstracijski programi . . . . . . . . . . . . . . . . . . . . . . . 37
4.2.1. Demonstracija akcelerometra . . . . . . . . . . . . . . . . . . 37
4.2.2. Demonstracija senzora intenziteta svjetlosti i RGB-diode . . . 37
4.3. Preusmjeravanje zvuka . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.4. Sucelje za podešavanje tipaka . . . . . . . . . . . . . . . . . . . . . . 39
4.5. Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5. Mehanicka konstrukcija 42
6. Zakljucak 44
Literatura 45
A. Sheme sklopova 47A.1. Napajanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
A.2. Noseca plocica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
A.2.1. LCD-ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
A.2.2. Audio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
A.2.3. Mreža . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
A.2.4. Napajanje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
A.2.5. Memorijske kartice . . . . . . . . . . . . . . . . . . . . . . . 60
A.2.6. USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.2.7. Razno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
A.3. Plocica sa svjetlecom RGB-diodom . . . . . . . . . . . . . . . . . . 64
A.4. Pojacalo sa zvucnikom . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.5. Plocica s tipkama . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
B. Nacrt za pleksi-staklo 67
v
1. Uvod
Veca rucna racunala (engl. tablet) su postala jako popularna dolaskom Appleovog
iPada na tržište, a prijenosna racunala poput Tablet-PC-a su zasjenjena. Kako je moja
želja oduvijek bila napraviti prijenosno racunalo poput Tablet-PC-a, za ovaj diplomski
rad sam odlucio otici korak dalje i ispitati mogucnosti izrade rucnog racunala pomocu
dostupnih komponenti te usporediti rezultate sa stvarnim sustavima.
Komponente su birane prema mogucnostima, cijeni i potrošnji. U nekim sluca-
jevima su odabrane komponente vece efikasnosti (manje potrošnje) i više cijene, dok
su u nekim drugim slucajevima odabrane komponente s najmanjom cijenom jer ih je
potrebno puno ili su same po sebi jako skupe.
Kao operacijski sustav je odabran Linux zbog svoje otvorenosti, jednostavne pri-
lagodbe i velikih mogucnosti, a kao srce cijelog sustava je odabran procesorski modul
TDM-3730 firme TechNexion zbog visokih performansi, lake dostupnosti i relativno
niske cijene te zbog toga što dolazi s predinstaliranim operacijskim sustavom Linux.
Funkcionalni prototip je s obje strane prikazan na slici 1.1.
(a) Prednja strana (b) Stražnja strana
Slika 1.1: Gotov prototip
1
U prvom dijelu rada je prikazan blok-dijagram i po funkcijama podijeljen opis po-
jedinih sklopovskih komponenti, dok je u drugom dijelu prikazana osnovna i periferna
programska podrška s prikazom pojedinih programskih rješenja. U dodatku A se na-
laze sheme sklopova, a u dodatku B se nalazi nacrt za pleksi-staklo.
2
2. Sklopovska podrška
Sklopovska podrška je modularna i sastoji se od nekoliko komponenti:
– procesorski modul,
– noseca plocica,
– napajanje,
– baterija,
– LCD s panelom osjetljivim na dodir,
– pojacala sa zvucnicima,
– plocica s tipkama.
Blok-dijagram povezanosti komponenti je prikazan na slici 2.1.
Za procesorski i Bluetooth modul su odabrani komercijalno dostupni gotovi moduli
jer bi njihova konstrukcija izlazila iz okvira ovog diplomskog rada, medutim noseca
plocica koja mehanicki i elektricki povezuje ostale module, te modul za napajanje,
pojacala sa zvucnicima i plocica s tipkama su namjenski razvijeni za ovaj uredaj.
Odabir operacijskog sustava je na neki nacin odredivao i odabir procesorskog mo-
dula koji u vecini slucajeva dolazi s predinstaliranim operacijskim sustavom.
3
Noseća pločica
Procesorskimodul
Bluetoo
thm
odul
Ekran osjetljiv na dodir
Ugrađeni zvučnici
Baterija
NapajanjeTipke
Punjač
Periferija: USB, eth,USB OTG, UART
Tipka za paljenjei gašenje
Slika 2.1: Blok-dijagram komponenti
2.1. Procesorski modul TDM-3730
Kao osnova ovog racunala je korišten procesorski modul TDM-3730 firme Tech-
Nexion. Osnova samog modula je Texas Instrumentsov procesor DM3730 [3] iz
OMAP3 serije s pomocnim cipom TPS659301 [8]. Na modulu se nalaze i NAND
flash i LPDDR RAM memorije te modul za bežicni Internet i kontroler za ethernet.
Blok dijagram procesorskog modula je prikazan na slici 2.2, a fizicki izgled modula je
prikazan na slici 2.3.
Procesorski modul je moguce prikljuciti na nosecu plocicu preko standardnog SO-
DIMM konektora. Preko konektora idu svi podatkovni signali i napajanja. Iz modula
je moguce dobiti i napajanje od 1.8V.
Pomocni cip TPS65930 izmedu ostaloga ima i analogni ulaz koji je na modulu
1za napajanje, USB, zvuk i tipkovnicu
4
Slika 2.2: Blok dijagram procesorskog modula TDM-3730
Slika 2.3: Fizicki izgled procesorskog modula TDM-3730
spojen na otpornicko dijelilo izmedu reguliranih 4.2V i 0V. Dijelilo nije dokumentirano
i smetalo je pri mjerenju otpora za prepoznavanje prikljucenog kabla te su stoga oba
otpornika otklonjena.
2.2. Noseca plocica
Noseca plocica (engl. baseboard) na slici 2.4 je središnji dio cijelog sustava na kojem
se nalazi procesorski modul TDM-3730, Bluetooth modul, izvor napajanja od 3.3V i
razne periferne jedinice. Sheme se nalaze u dodatku A.2.
Izvor napajanja od 3.3V je prekidackog buck-boost tipa što znaci da može spuštati
i podizati napon. Takav tip izvora napajanja je potreban jer se 3.3V nalazi izmedu
minimalnog i maksimalnog napona baterije pa nije dovoljno samo podizanje ili samo
spuštanje napona. Za ovu svrhu je odabran cip LTC3536 (U12 u dodatku A.20).
5
(a) Bez procesorskog i Bluetooth modula
(b) S procesorskim i Bluetooth modulom
Slika 2.4: Noseca plocica
Cip SN75LVDS83 (U1 u dodatku A.11) pretvara paralelni prijenos podataka prema
LCD-ekranu u serijski diferencijalni prijenos (engl. LVDS – low-voltage differential
signaling). Prednost ovog cipa je ugradeni pretvornik logickih naponskih razina koji
omogucuje direktno spajanje na procesorski modul.
Cip za ocitanje otpornickog panela osjetljivog na dodir TSC2046 takoder ima pred-
nost ugradenog pretvornika logickih naponskih razina (U9 u odjeljku A.9). Osim oci-
tanja otpornickog panela, TSC2046 omogucuje i mjerenje stanja baterije. Mjerenje
stanja baterije je vrlo efikasno riješeno tako da otpornicko dijelilo nije konstantno ra-
zapeto na napajanje nego je pozitivni dio stalno spojen, a uzemljuje se samo kada je
potrebno izmjeriti napon baterije. Na taj nacin otpornicko dijelilo ne troši nepotrebno
struju dok se ne koristi.
Na nosecoj plocici se nalazi i USB-razdjelnik (engl. USB-hub) pune brzine
(engl. full speed) koji omogucuje proširenje ovog sustava preko dva prikljucka USB
(u dodatku A.25). Postojecu programsku podršku za prikljucak USB visoke brzine
(engl. high speed) nije bilo moguce iskoristiti, a programska podrška za USB priklju-
cak pune brzine nije u potpunosti implementirana pa se ovaj sklop još ne koristi.
Osim dva prikljucka USB na plocici se nalazi i prikljucak USB-OTG (engl. OTG –
On-The-Go) koji omogucuje povezivanje sustava s racunalom (u dodatkuA.24). Tran-
zistor U13 (u dodatku A.23) omogucuje punjenje iz prikljucka USB-OTG ukoliko je
zatraženo signalom OTG_CHRG_E, odnosno ukliko racunalo može dati dovoljno ve-
liku struju potrebnu za punjenje (sporo ili brzo) i rad cijelog sustava.
Za otkrivanje prisustva slušalica ili podatkovnog kabla te prekidanje procesora u
6
oba slucaja osmišljena su dva posebna sklopa s usporedivacem analognih signala. U
dodatku A.16 je prikazan sklop za prekidanje procesora prilikom prikljucivanja podat-
kovnog kabla. Podatkovni kabl omogucuje mrežni (engl. ethernet) i serijski priklju-
cak. Kako bi bilo moguce prepoznati tip prikljucka uveden je izvod za identifikaciju.
Unutar samog prikljucka na strani kabla identifikacijski izvod mora biti spojen na ot-
pornik. Vrijednost otpornika tako odreduje o kojem tipu kabla se radi. Ukoliko je taj
otpor beskonacan, kabl nije prikljucen i izlaz iz usporedivaca je logicka jedinica. Pri-
kljucivanjem otpornika manjeg od 1MΩ izlaz iz usporedivaca prelazi u logicku nulu.
Kako bi mjerenje otpornika bilo moguce, identifikacijski izvod je spojen na ulaz A/D
pretvornika na procesorskom modulu.
Prikljucak za slušalice nije namijenjen samo za zvucne signale. Cetvrti kontakt je
spojen na izlaz kompozitne slike (engl. composite video). Kako bi se cip TPS65930
manje opteretio, izmedu cipa i slušalica i je ubaceno pojacalo snage (u dodatku A.14).
Sklop za otkrivanje prisustva slušalica je prikazan u dodatku A.13. Ovaj sklop nije
pouzdan zbog velike RC konstante. Naime, prilikom iskljucivanja slušalica potrebno je
puno vremena da se izlazni elektroliti napune i analogni usporedivac prebaci stanje na
izlazu. Nije bilo moguce nabaviti prikljucak s cetiri kontakta i sklopkom za otkrivanje
prisustva utikaca pa je stoga napravljen ovaj pokušaj elektronickog otkrivaca prisustva
slušalica.
Procesor DM3730 ima digitalne izlaze koji rade iskljucivo na 1.8V pa je na nekim
mjestima bilo potrebno postaviti pretvornike naponskih razina (odjeljci A.22, A.27 i
A.28). Kao što je vec prije spomenuto, u nekoliko je slucajeva bilo moguce koristiti
cipove s ugradenim pretvornikom naponskih razina.
2.3. Napajanje
Posebna pažnja je posvecena oblikovanju sklopa za napajanje kako bi uredaj radio
pouzdano i sa što manje gubitaka.
Visoka efikasnost sustava za napajanje je nužna kako bi baterija što duže trajala.
Stoga su sva napajanja prekidackog tipa te ih je moguce iskljuciti dok nisu potrebna.
U dodatku A.1 se nalaze sheme sklopova za napajanje, a na slici 2.5 je prikazana
fizicka implementacija sklopa.
7
Slika 2.5: Implementacija sklopa za napajanje
2.3.1. Automatsko odredivanje izvora
Sustav za napajanje mora samostalno (bez intervencije programske podrške) odrediti
što ce koristiti kao glavni izvor napajanja. U protivnom punjenje baterije ne bi bilo
moguce dok je sustav ugašen ili bi se sustav ugasio prilikom iskljucivanja punjaca ako
programska podrška nije dovoljno brza.
Baterija se koristi samo ako niti jedan od punjaca nije prisutan. U nastavku su tri
tipa podržanog izvora, poredani prema prioritetu:
– brzi punjac (iz gradske mreže): omogucuje struju punjenja od 1A,
– spori punjac (iz USB OTG-a): omogucuje struju punjenja od 0.5A koju je pro-
gramski moguce povecati na 1A,
– baterija.
Diode D1 i D2 dovode vanjsko napajanje u jedan vod koji se kasnije koristi kao
vanjski izvor napajanja. Kroz diode može poteci struja do 2A, a diode D4 i D5 imaju
ulogu logickih ILI vrata za napajanje. One ce provesti ukoliko je prisutan vanjski
izvor napajanja, a ukoliko niti jedan vanjski izvor nije prisutan logicku nulu ce dovesti
otpornik R3. Zbog relativno velike reverzne struje u diodama D1 i D2 otpornik R3
mora biti maksimalno 1kΩ.
Kada je prisutan vanjski izvor napajanja tranzistori Q4 i Q5 su aktivni, a u suprot-
nom je aktivan tranzistor Q1. Aktivacijom tranzistora Q1 odabire se baterija kao izvor
napajanja, a aktivacijom tranzistora Q5 odabire se vanjski izvor napajanja. Tranzistor
Q4 je u ulozi logickog sklopa NE i osigurava da Q1 i Q5 nikada nisu aktivni istovre-
meno.
8
2.3.2. Punjac baterije
Za punjenje baterije je zadužen cip MCP73861 (U2). Otpornik R6 odreduje pretpos-
tavljenu struju punjenja od 0.5A, a tranzistori Q2 i Q3 su u sklopu logickih vrata ILI
koja kada su aktivna pritežu ulaz PROG na 0V i tako mijenjaju struju punjenja na 1A.
Q3 se aktivira prikljucivanjem vanjskog punjaca, a Q2 je moguce programski aktivirati
ako USB prikljucak na kojeg je uredaj spojen može dati 2A.
Dijagnosticki izlazi CHRG_STAT1 i CHRG_STAT2 su spojeni na prekidne ulaze
procesora kako ne bi trebalo radnim cekanjem dohvacati stanje punjaca. Dijagnosticki
izlaz CHRG_STAT1 oznacava da li se baterija puni (0V ako se puni) ili je puna (1Hz),
a izlaz CHRG_STAT2 oznacava grešku.
2.3.3. Baterija
Korištena je Li-Ion baterija od 8000mAh originalno namijenjena za igracu konzolu
Nitendo 3DS. Iz baterije je izbacen punjac, ali je ostavljen nadzorni cip.
Nazivni napon baterije je 3.6V i pri potrošnji od 4W (npr. 2W za procesorski modul
i 2W za pozadinsko osvjetljenje) sustav bi u idealnom slucaju mogao neprestano raditi
oko 7h što je dovoljno za uredaj ovog tipa.
Uz optimizaciju potrošnje unutar procesorskog modula vijek baterije bi se mogao
znacajno povecati.
2.3.4. Pozadinsko osvjetljenje
Tradicionalno se (i ponekad još uvijek) za pozadinsko osvjetljenje u vecim LCD-
ekranima koristi CCFL (engl. cold cathode fluorescent lamp) cijev koja je relativno
neefikasna, dok se u svim LCD-ekranima namijenjenima za mobilne uredaje koriste
bijele svjetlece diode.
Za ovaj uredaj je korišten LCD-ekran iz prijenosnog racunala sa CCFL cijevi koja
je zamijenjena s 30 jakih bijelih dioda. Umjesto 5W za pozadinsko osvjetljenje je sada
potrebno samo 2W uz nešto malo slabije maksimalno osvjetljenje.
Pozadinsko osvjetljenje izvedeno svjetlecim diodama zahtjeva i poseban izvor na-
pajanja. U prijenosnim se racunalima za CCFL cijev koristi poseban modul koji napon
baterije pretvara u nekoliko kilovolti i takav nikako nije pogodan za svjetlece diode.
Svjetlece diode zahtijevaju strujni izvor, a napon ovisi o broju svjetlecih dioda spojenih
u seriju te o padu napona na pojedinoj diodi.
9
Za ovaj ekran korištena su tri paralelna snopa od deset bijelih svjetlecih dioda spo-
jenih u seriju.
Kao regulator odabran je cip TPS61500 (U3). Taj cip je jedan od rijetkih koji
mogu uz niski napon iz baterije (min. 3V) dati relativno visoku snagu potrebnu za
pozadinsko osvjetljenje. TPS61500 omogucuje i prigušenje intenziteta osvjetljenja
pulsno širinskom modulacijom (engl. PWM – pulse width modulation).
Slijedilo (engl. buffer) U6 gasi pozadinsko osvjetljenje dok je sustav ugašen.
Slika 2.6: LED zamjena za CCFL
2.3.5. Napajanje za USB host prikljucke
Na nosecoj plocici nalaze se dva USB host prikljucka i odluceno je da svaki mora biti
u mogucnosti dati 500mA. Stoga je potrebno napajanje koje iz minimalno 3V može
dati 5V pri potrošnji od 1A.
Kao regulator odabran je cip TPS61032 (U1) zbog svoje vrlo visoke efikasnosti
(preko 90%) i mogucnosti rada pri niskim ulaznim naponima. Uz TPS61032 je potre-
ban minimalan broj dodatnih komponenti (samo zavojnica i kondenzatori). Povratna
veza je ugradena u samom cipu i fiksno odredena za izlaz od 5V.
Slijedilo U5 ima istu ulogu kao i U6 – za gašenje regulatora dok je sustav ugašen.
2.3.6. Sustav za paljenje i gašenje
Tranzistor Q6 spaja i odspaja napajanje nosece plocice u ovisnosti o signalu
TABLET_ON, a tranzistor Q7 prazni kondenzatore na napajanju prilikom gašenja kako
bi se sustav prije i pravilnije ugasio. RC clan R23 i C12 malo odgadaju aktivaciju tran-
zistora Q6 kako bi Q7 manje smetao prilikom prijelaza stanja signala TABLET_ON u
aktivno (manji je problem ako smeta prilikom gašenja).
Sustav za paljenje i gašenje mora omoguciti korisniku prisilno paljenje i gašenje
pomocu tipke, ali mora omoguciti i programsko gašenje. Dodatno, sustav za paljenje
i gašenje mora ugasiti sustav ako se jezgra nije upalila. Na taj se nacin iskorištava
komparator unutar TPS65930 (na procesorskom modulu) koji onemogucuje paljenje
ukoliko je napon na bateriji prenizak.
10
Sve navedene zahtjeve omogucuje sklop sa samo dva logicka sklopa NE (U4A i
U4B) i jednim slijedilom (U18 na nosecoj plocici u dodatku A.2).
Uz pretpostavku da je sustav ugašen (TABLET_ON = 5V), napajanje od 1.8V
je ugašeno pa slijedilo ne može postaviti signal POWEROFF na 0V. Izmedu signala
TABLET_ON i POWEROFF nalaze se dva logicka sklopa NE i moguce je uociti da je
to stabilno stanje.
Tipka S5 je odspojena pa se kondenzator C11 preko otpornika R18 napuni na 5V.
Pritiskom i držanjem tipke S5 kondenzator C11 se prazni preko otpornika R17, ali
tokom nekog vremena ce ulaz sklopa U4B biti prebacen na logicku jedinicu cime ce
izlaz biti prebacen u logicku nulu. Aktivacija signala TABLET_ON aktivira tranzistor
Q6 te noseca plocica dobije napajanje i pocne generirati napon od 1.8V. Kako su iz-
vodi od neinicijalizirani podsustava procesora u stanju visoke impedancije, otpornik
R70 definira nisku razinu na ulazu slijedila koje zatim postavlja POWEROFF signal u
logicku nulu i samim time sustav za paljenje i gašenje dolazi u drugo stabilno stanje
kada je sustav upaljen. Sada je moguce otpustiti tipku i sustav ce ostati upaljen.
Ukoliko napajanje od 1.8V nije proradilo (napon baterije je prenizak) signal
POWEROFF ne bi nikad prešao u logicku nulu i napajanje bi se ugasilo nakon što bi se
ispraznio kondenzator C11.
Prilikom odredivanja vrijednosti komponenti C11, R17 i R18 bitno je da je
R18 R17 te da vremenska konstanta C11 · R17 bude dovoljno duga kako bi se
stigla uspostaviti povratna veza. Nusprodukt je velika vremenska konstanta C11 · R18
koja odreduje minimalno vrijeme izmedu pokušaja paljenja i gašenja.
Programsko gašenje je moguce postavljanjem izvoda 148 u logicku jedinicu. Izvod
mora imati paralelno spojen kondenzator koji zadržava logicku jedinicu jer prilikom
gašenja izvod prelazi u stanje visoke impedancije i ako ne bi bilo kondenzatora, signal
POWEROFF bi se deaktivirao i zapoceo ponovno paljenje sustava.
2.4. Plocica sa svjetlecom RGB-diodom
Plocica sa svjetlecom RGB (engl. red, green, blue) diodom i senzorom osvjetljenja je
samostalan racunalni sustav koji se brine samo za svjetlosne obavijesti (npr. obavijest
o pristigloj poruci ili praznoj bateriji i sl.) i mjerenje intenziteta osvjetljenja okoline.
Shema se nalazi u dodatku A.3.
Plocica se nalazi u gornjem lijevom kutu uredaja smještena unutar kucišta od pleksi
stakla kao što je prikazano na slici 2.7b. Na taj je nacin zašticena od vanjskih utjecaja,
ali svjetlost i dalje može nesmetano prolaziti. Kako bi stala na sam rub širine 8mm
11
plocica je morala biti vrlo uska.
Na plocici (prikazana na slici 2.7a) se nalazi svjetlosni senzor APDS9303 (lijevo)
i mikrokontroler ATtiny25 [7] (na sredini) koji upravlja sa svjetlecom RGB-diodom
(desno).
(a) Nezašticena s privremenom žicom
za programiranje
(b) Pricvršcena i zašticena
Slika 2.7: Plocica sa svjetlecom RGB-diodom
2.4.1. Komunikacija s plocicom
Plocica je spojena na napajanje od 3.3V, sabirnicu I2C te jedan prekidni signal. Svje-
tlosni senzor i mikrokontroler su spojeni na sabirnicu I2C, a prekidni signal je spojen
samo na svjetlosni senzor.
Svjetlosni senzor se nalazi na adresi 29(16), a mikrokontroler na adresi 12(16). Pro-
tokol za komunikaciju sa svjetlosnim senzorom je opisan u njegovoj dokumentaciji [5],
a protokol za komunikaciju s mikrokontrolerom i upravljanje RGB-diodom je posebno
osmišljen i opisan u nastavku ovog poglavlja.
Protokol za upravljanje RGB-diodom preko I2C sabirnice nije dizajniran u stilu
uobicajenih I2C protokola gdje se prvo šalje adresa podatka koji se zapisuje pa nakon
toga podaci nego se šalju samo podaci. Redni broj okteta odreduje koji se podatak
zapisuje kao što je prikazano u tablici 2.1.
Nije uvijek potrebno poslati paket sa svim oktetima. Moguce je poslati paket koji
sadrži samo sve tri komponente boje (prva tri okteta) nakon cega slijedi oznaka kraja
komunikacije na I2C sabirnici. Moguce je i poslati prvih šest okteta kako bi se odredila
vremena, ali bez izmjene nacina rada.
12
Tablica 2.1: Znacenje okteta pri komunikaciji s mikrokontrolerom
Red. br. Bitovi Znacenje
1 3..0 Intenzitet crvene boje
2 3..0 Intenzitet zelene boje
3 3..0 Intenzitet plave boje
4 7..0 Vremenski razmak izmedu paljenja (N×60ms)
5 7..0 Trajanje upaljenog stanja (N×15ms)
67..6 Broj uzastopnih paljenja (N − 1)
5..0 Brzina postavljanja željenog intenziteta (N − 1)
7 1..0 Nacin rada:
0: Spavanje1: Konstantno svijetlo2: Bljeskanje
2.4.2. Nacini rada
Mikrokontroler za upravljanje RGB-diodom podržava tri nacina rada: spavanje, kons-
tantno svijetlo i bljeskanje.
Za vrijeme spavanja sve tri komponente RGB-diode su ugašene i mikrokontroler
je u stanju spavanja bez watchdoga pa je potrošnja na cijeloj plocici 13µA.
U nacinu rada konstantnog svijetla na RGB-diodi je prikazana odabrana boja. Po-
trošnja u ovom nacinu rada je konstantna i maksimalno iznosi 8.6mA. Ovaj nacin rada
zbog velike potrošnje nije prakticno primjenjiv, ali koristan je prilikom odabira željene
boje.
Posljednji nacin rada je bljeskanje. U tom se nacinu rada RGB-dioda povremeno
pali. Vrijeme ugašenog stanja i trajanje svjetleceg stanja je moguce podesiti po želji.
Paljenje RGB-diode u nacinu rada bljeskanje je postepeno, tj. glatko. Pri najkra-
cem trajanju upaljenog stanja postepeno paljenje traje 75ms (15 stanja intenziteta ×15ms). Brzinu postepenog paljenja je takoder moguce podesiti. Najbrža postavka je
15 i u tom je slucaju paljenje RGB-diode trenutno. Trenutno paljenje RGB-diode je
moguce koristiti ukoliko je potrebno grubo (digitalno) bljeskanje.
Potrošnja za vrijeme cekanja u ugašenom stanju u nacinu rada bljeskanje je nešto
veca nego u nacinu rada spavanja i iznosi 18µA. Razlog tomu je rad watchdog sklopa
koji mjeri proteklo vrijeme.
13
2.4.3. Upravljanje svjetlecom RGB-diodom
Zbog vece uštede energije mikrokontroler je morao imati sklopovsku podršku za sabir-
nicu I2C kako bi ga pocetak komunikacije mogao probuditi iz stanja spavanja. Zbog
dimenzijskih zahtjeva je mikrokontroler morao biti i vrlo malen pa je stoga ATtiny25
bio najbolji izbor2.
Odredivanje intenziteta svjetlosti pojedine diode je moguce pulsno širinskom mo-
dulacijom (u daljnjem tekstu PWM). Nažalost, odabrani mikrokontroler ima samo dva
sklopovska generatora PWM signala od kojih je jedan multipleksiran s izvodom za
I2C sabirnicu. Iz tog je razloga PWM generator implementiran programski prema od-
sjecku 2.1.
Odsjecak 2.1: Prekidna rutina vremenskog sklopa 0ISR(TIM0_COMPA_vect)
static uint8_t brojac;
brojac = (brojac + 1) & 0x1F; /* 0..31 */
if (brojac < zelena_komponenta) upali_zelenu();
else ugasi_zelenu();
/* ... preostale komponente */
Kako bi se manje energije gubilo na predotporima, postavljeni su predotpori ma-
njih vrijednosti, odnosno, maksimalna struja kroz svjetlecu diodu je iznad maksimalne
prosjecne, ali ispod maksimalne vršne. Radni ciklus (engl. duty cycle) sada mora biti
maksimalno 50% i iz tog razloga staticna varijabla brojac broji do 31 i usporeduje se s
komponentama koje mogu biti maksimalno 15.
Vremenski sklop mora pokretati prekidnu rutinu dovoljno brzo da ljudsko oko ne
primijeti treperenje, ali opet ne prebrzo kako bi procesor stigao obraditi prekid i ostale
poslove. Uz pretpostavku da je 50 perioda u sekundi dovoljno brzo i poznato trajanje
jedne periode od 32 prekida, vremenski sklop mora prekidati procesor 1600 puta u
sekundi, odnosno svakih 625µs.
Unutar 625µs i pri taktu od 8MHz AVR jezgra može izvršiti 5000 jednociklusnih
instrukcija i to se pokazalo dovoljnim za prekidnu rutinu s programskim PWM-om i
za ostale zadatke (komunikaciju i bljeskanje).
2ATtiny dolazi i u manjem pakiranju od SO8, ali nije bio dobavljiv
14
2.5. Pojacala za ugradene zvucnike
Za potpuni multimedijski doživljaj ovaj uredaj mora imati ugradene zvucnike koji su
dovoljno glasni, a opet dovoljno mali. Zvucnici moraju imati i pripadajuce pojacalo
klase D zbog što vece efikasnosti. Pojacalo mora raditi i na niskom naponu. Sve
te zahtjeve zadovoljava odabrano pojacalo LM4667. U dodatku A.4 se nalazi shema
sklopa, a na slici 2.8 je prikazana fizicka implementacija.
Slika 2.8: Jedno od dva pojacala
2.6. Ekran osjetljiv na dodir
Ekran osjetljiv na dodir sastoji se od dvije odvojene komponente: LCD-ekrana i otpor-
nickog panela osjetljvog na dodir.
LCD-ekran je LP150X08-TLC1, razlucivosti 1024×768 piksela, dijagonale 15
inca i 16 bita dubine boja. Dimenzije LCD-ekrana zbog svoje velicine su odredile
dimenzije cijelog uredaja.
2.7. Plocica s tipkama
Za paljenje i gašenje ekrana, prebacivanje na pocetni ekran te brzi pristup kontroli
glasnoce je ugradena plocica s cetiri tipke u matricnom spoju. Tipke ocitava sklopovski
cip TPS65930. Smještena je u prednjem lijevom dijelu kucišta kao što je prikazano na
slikama 2.9a i 2.9b, a fizicki izgled plocice je prikazan na slici 2.9c. Shema se nalazi u
dodatku A.5.
15
(a) Smještaj
(b) Prednja strana
(c) Stražnja strana
Slika 2.9: Plocica s tipkama
16
3. Osnovna programska podrška
Procesorski modul TDM-3730 dolazi s instaliranom osnovnom programskom podr-
škom (bootloaderom i operacijskim sustavom Linux 2.6.37). Bootloader je izveden
u nekoliko faza [2]. Prilikom paljenja se pokrece izvršni kôd iz ROM-a unutar sa-
mog procesora koji izvodi najosnovnije inicijalizacije te pokrece X-Loader. X-Loader
odreduje osnovne uloge izvoda procesora (postavi multipleksiranje izvoda), obavi do-
datne inicijalizacije te pokrece U-Boot. U-Boot je zadnja faza bootloadera u kojem se
izvodi posljednje postavljanje multipleksiranja izvoda i inicijalizacija sklopovlja koje
omogucuje daljnje ucitavanje sustava (npr. ethernet).
Konacno, operacijski sustav Linux prilikom svog pokretanja mora inicijalizirati svo
sklopovlje, pa cak i ono koje ne koristi kako bi tom sklopovlju iskljucio takt i omogu-
cio nesmetan prelazak nacina rada u spavanje. Osim toga, Linux prilikom pokretanja
mora prijaviti sve uredaje koje nije moguce automatski detektirati kako bi ih kasnije
bilo moguce koristiti. Linux takoder može podešavati multipleksiranje izvoda, ali nije
potrebno jer je sve vec postavljeno unutar U-Boota.
X-Loader nije mijenjan i ostao je isti koji je dobiven s procesorskim modulom.
U U-Bootu je bilo potrebno promijeniti postavke multipleksiranja izvoda kako bi se
omogucilo sucelje SPI te neki GPIO izvodi.
3.1. U-Boot
Datoteke vezane uz platformu su odvojene od originalnih TechNexionovih. Mapa
board/technexion/tdm3730 je kopirana u board/technexion/tacna i
u toj kopiji su napravljene potrebne izmjene. Kopirana je i datoteka include/
configs/tdm3730.h u include/configs/tacna.h. Konacno, obnovljena
je datoteka boards.cfg kako bi bilo moguce prevesti U-Boot za novu platformu
Tacna1.1Tacna je kodno ime ovog uredaja
17
U datoteci board/technexion/tacna/tdm3730.h se nalazi popis svih iz-
voda i odabranih uloga. Primjer koji umjesto UART-a na izvode dovodi GPIO je
prikazan u odsjecku 3.1. Prvi parametar makroa MUX_VAL je naziv izvoda, a drugi
parametar odreduje svojstvo i ulogu izvoda.
Odsjecak 3.1: Primjer postavki multipleksiranja u U-Bootu/*UART2 x 4 PIN*/ \
MUX_VAL(CP(MCBSP3_DX), (IDIS | PTD | DIS | M4)) \
/*(4)GPIO_140 -> (1)UART2_CTS*/ \
MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M4)) \
/*(4)GPIO_141 -> (1)UART2_RTS (ear_mute)*/ \
MUX_VAL(CP(MCBSP3_CLKX), (IDIS | PTD | DIS | M4)) \
/*(0)McBSP3_CLKX -> (4)GPIO_142 -> (1)UART2_TX */ \
MUX_VAL(CP(MCBSP3_FSX), (IDIS | PTD | DIS | M4)) \
/*(0)McBSP3_FSX -> (4)GPIO_143 -> (1)UART2_RX (spk_mute)*/ \ Svojstvo izvoda odreduje da li je omoguceno citanje (IEN) ili nije (IDIS) te da li
su omoguceni pull-up (PTU | EN) ili pull-down (PTD | EN) otpornici ili su one-
moguceni (DIS).
Uloga izvoda može biti M1, M2, M3 ili M4. Moguce uloge su navedene u dokumen-
taciji procesora, ali su navedene i unutar nekih komentara kako bi bilo lakše odrediti
ulogu.
3.2. Inicijalizacija sklopovlja u Linuxu
U mapi arch/arm/mach-omap2/ se nalaze svi izvorni kodovi vezani uz arhitek-
turu OMAP2 na dalje, a sve datoteke unutar te mape koje pocinju s board- su vezane
uz specificnu platformu, tj. plocicu (engl. board).
Ovdje je platforma tdm3730 takoder kopirana u platformu tacna. Kopirana
je datoteka board-taotdm.c u datoteku board-tacna.c te su izmijenjene da-
toteke Kconfig i Makefile. Konacno, u konfiguraciji prevodenja operacijskog
sustava Linux onemoguceno je prevodenje za platformu tdm3730, a omoguceno je
prevodenje za novu platformu tacna.
U nastavku ovog poglavlja su opisane inicijalizacije koje nije implementirala firma
TechNexion.
18
3.2.1. Matricna tipkovnica
Pomocni cip TPS65930 (kompatibilan s TWL4030) na procesorskom modulu ima
ugradeno sklopovsko skeniranje matricne tipkovnice. Sklopovsko skeniranje, za raz-
liku od programskog skeniranja, omogucuje vecu uštedu energije jer procesor može
spavati dok minimalno sklopovlje skenira za pritiske i prekida (tj. budi) procesor pri
svakom novom pritisku.
U odsjecku 3.2 su prikazani opisnici potrebni za konfiguraciju matricne tipkovnice.
U opisniku tacna_kp_twl4030_data se nalazi broj redaka i stupaca tipkovnice
te pokazivac na opisnik uloga pojedinih tipaka.
Ugradena tipkovnica ima cetiri tipke spojene u matricu 2× 2. Predvidene uloge su
im za podešavanje glasnoce, povratak na glavni ekran te paljenje i gašenje, odnosno,
zakljucavanje ekrana. U listi board_keymap su odredene uloge prema lokaciji tipke
u matrici.
Uvjet CONFIG_KEYBOARD_TWL4030 osigurava da je prilikom prevodenja
ukljucen modul za tipkovnicu.
Odsjecak 3.2: Opisnici tipkovnice#ifdef CONFIG_KEYBOARD_TWL4030
static uint32_t board_keymap[] =
KEY(0, 0, KEY_VOLUMEUP),
KEY(0, 1, KEY_VOLUMEDOWN),
KEY(1, 0, KEY_HOME),
KEY(1, 1, KEY_POWER),
;
static struct matrix_keymap_data board_map_data =
.keymap = board_keymap,
.keymap_size = ARRAY_SIZE(board_keymap),
;
static struct twl4030_keypad_data tacna_kp_twl4030_data =
.keymap_data = &board_map_data,
.rows = 2,
.cols = 2,
.rep = 1,
;
#endif
19
U strukturu za inicijalizaciju cipa TWL4030 (taotdm_twldata) je bilo po-
trebno dodati odsjecak 3.3 kako bi opisnik tipkovnice bio poznat prilikom inicijali-
zacije cipa TWL4030.
Odsjecak 3.3: Prikljucivanje tipkovnice#if defined(CONFIG_KEYBOARD_TWL4030)
.keypad = &tacna_kp_twl4030_data,
#endif
3.2.2. Kartica µSD
Ovaj sustav je predviden da ima dvije memorijske kartice. Jednu za potrebe sustava,
a drugu za potrebe korisnika. Memorijsku karticu za potrebe korisnika je moguce
mijenjati jer je lako dostupna na rubu uredaja dok memorijsku karticu sustava nije
moguce mijenjati jer je fizicki nedostupna. Osim toga memorijsku karticu za potrebe
sustava nije niti dopušteno mijenjati jer bez nje sustav ne može raditi.
Memorijska kartica za potrebe korisnika je spojena na sabirnicu HSMMC koja je
i namijenjena za memorijske kartice. Druga sabirnica HSMMC nije bila dostupna pa
je memorijska kartica za potrebe sustava spojena na zasebnu sabirnicu SPI. Za tu je
sabirnicu bilo potrebno u U-Bootu postaviti ispravno multipleksiranje izvoda.
Opisnik sabirnice SPI je prikazan u odsjecku 3.4. U opisniku sabirnice SPI po-
trebno je navesti sve uredaje prikljucene na sabirnicu jer ih nije moguce automatski
otkriti. Na ovu sabirnicu SPI je spojena samo kartica MMC te je stoga u opisniku
samo jedan element koji povezuje upravljacki modul mmc_spi s uredajem na ovoj
sabirnici SPI koji se odaziva na nultoj adresi.
Upravljackom modulu mmc_spi je potrebno dati dodatni opisnik u kojem je na-
vedeno koje napone kartica mora podržavati.
Sabirnicu SPI je potrebno prijaviti sustavu pozivom na funkciju spi_regi-
ster_board_info unutar funkcije tdm3730_init kao što je prikazano u od-
sjecku 3.5. Funkciji se kao argument zadaje lista sa svim uredajima na sabirnici.
20
Odsjecak 3.4: Opisnik SPI sabirnice i modula za memorijsku karticu#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
#include <linux/spi/mmc_spi.h>
static struct mmc_spi_platform_data mmc_spi_data =
.ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34,
;
#endif
static struct spi_board_info spi3_board_info[] __initdata =
#if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
.modalias = "mmc_spi",
.max_speed_hz = 50000000,
.bus_num = 3,
.chip_select = 0, /* nulta adresa */
.platform_data = &mmc_spi_data,
.mode = SPI_MODE_0,
,
#endif
; Odsjecak 3.5: Inicijalizacija SPI sabirnice
spi_register_board_info(spi3_board_info,
ARRAY_SIZE(spi3_board_info)); 3.2.3. Ekran osjetljiv na dodir
Na nosecoj plocici se nalazi isti cip (ADS7846) za mjerenje otpornickog panela
(engl. resistive touch panel) kao i na demonstracijskoj plocici firme TechNexion tako
da nije bilo potrebno puno izmjena.
U opisniku cipa ADS7846 je bilo potrebno zapisati podatke poput otpora panela na
X-osi, maksimalan dopušteni otpor pritiska te postavke za istitravanje.
3.2.4. Sabirnica I2C
Na zasebnu sabirnicu I2C su spojeni akcelerometar, senzor osvjetljenja i mikrokon-
troler za upravljanje RGB-diodom. Na sabirnici I2C takoder nije moguce automatski
prepoznati prikljucene uredaje pa je potrebno napraviti listu sa svim prikljucenim ure-
21
dajima kao što je prikazano u isjecku 3.6. Lista povezuje adresu uredaja s upravljackim
modulom.
Odsjecak 3.6: Lista uredaja prikljucenih na sabirnicu I2Cstatic struct i2c_board_info __initdata taotdm_i2c_2_boardinfo[] =
.type = "mma8450",
.addr = 0x1C,
.irq = OMAP_GPIO_IRQ(18),
,
I2C_BOARD_INFO("tinyRGB", 0x12),
,
.type = "apds9303",
.addr = 0x29,
.irq = OMAP_GPIO_IRQ(13),
; Sabirnicu I2C je potrebno prijaviti sustavu pozivom na funkciju omap_-
register_i2c_bus unutar funkcije taotdm_i2c_init kao što je prikazano
u odsjecku 3.7. Funkciji se kao argument zadaje redni broj sabirnice, maksimalni takt
u kHz te lista sa svim uredajima na sabirnici.
Odsjecak 3.7: Inicijalizacija sabirnice I2Comap_register_i2c_bus(2, 100, taotdm_i2c_2_boardinfo,
ARRAY_SIZE(taotdm_i2c_2_boardinfo));
3.2.5. Ulazno/izlazni izvodi opce namjene
Uz inicijalizaciju sklopovlja je potrebno prijaviti ulazno/izlazne izvode opce namjene
(engl. GPIO – general purpose input/output) te ih postaviti na pocetnu vrijednost. Po-
pis svih izvoda GPIO i njihovih lokacija na modulu i procesoru se nalazi u tablici 3.1.
U odsjecku 3.8 su prikazani primjeri inicijalizacije ulaznog i izvoda. Funkcija
gpio_request prijavljuje zadani izvod sa zadanim opisom, a funkcije gpio_-
direction_input i gpio_direction_output odreduju smjer izvoda. Funk-
22
Tablica 3.1: GPIO izvodi
Izvod na modulu Izvod na procesoru Smjer Funkcija
47 143 izl. Gasi zvucnike
49 141 izl. Gasi slušalice
65 137 ul. Slušalice prisutne
68 12 izl. Omoguci punjenje preko USB-a
69 19 ul. Podatkovni kabl prisutan
72 13 ul. Prekid iz senzora osvjetljenja
74 18 ul. 1. prekid iz akcelerometra
90 20 ul. 2. prekid iz akcelerometra
142 126 izl. Omoguci akcelerometar
144 98 izl. Omoguci 5V napajanje za USB
146 97 izl. Omoguci brzo punjenje
148 101 izl. Gasi cijeli sustav
150 103 ul. Greška prilikom punjenja
152 102 ul. Status punjenja
cija gpio_direction_output osim broja izvoda na procesoru kao drugi argu-
ment prima pocetno stanje izvoda.
Funkcijom gpio_export se omogucuje pristup izvodima GPIO iz korisnickog
adresnog prostora preko mape iz sustavskog datotecnog sustava sysfs. Mapa se nalazi
na lokaciji /sys/class/gpio/ i sadrži datoteku value preko koje je moguce
ocitavati i mijenjati stanje izvoda.
Ukoliko je potrebno, za ulazni izvod GPIO je moguce zatražiti prekid funkcijom
request_irq. Identifikacijski broj prekida je moguce odrediti makroom OMAP_-
GPIO_IRQ.
23
Odsjecak 3.8: Inicijalizacija ulaznog i izlaznog izvoda/* ulazni izvod */
if (!gpio_request(137, "EAR_PLUGED") &&
!gpio_direction_input(137))
gpio_export(137, 0);
printk("ear_pluged ok\n");
/* izlazni izvod */
if (!gpio_request(126, "ACC_EN") &&
!gpio_direction_output(126, 1))
gpio_export(126, 0);
printk("acc_en ok\n");
3.2.6. Funkcija za gašenje sustava
Globalna varijabla pm_power_off je pokazivac na funkciju za gašenje cijelog sus-
tava. Pretpostavljena vrijednost te varijable je NULL što znaci da se sustav ne može
ugasiti. U tom ce slucaju jezgra operacijskog sustava samo ostati u beskonacnoj petlji.
Ovaj sustav podržava automatsko gašenje kao što je opisano u poglavlju 2.3.6 i po-
trebno je izmijeniti globalnu varijablu pm_power_off ukoliko prijava izvoda GPIO
prode uspješno. Funkcija ciju se adresu zapisuje u globalnu varijablu pm_power_-
off se nalazi u odsjecku 3.9. Jedini zadatak te funkcije je da na izvod za gašenje
sustava zapiše logicku jedinicu.
Odsjecak 3.9: Funkcija za gašenje sustavastatic void tacna_power_off(void)
gpio_set_value(101, 1);
3.2.7. Mjerenje stanja baterije
Dodatni analogni ulaz cipa ADS7846 je spojen na napon dobiven izravno iz baterije
kako bi bilo moguce izmjeriti njeno trenutno stanje. No nažalost, upravljacki modul za
cip ADS7846 nema funkciju za ocitanje analogne vrijednosti koju je moguce direktno
pozvati unutar jezgre operacijskog sustava. Stoga je potrebno koristiti ugradeno mjere-
24
nje baterije na cipu TPS65930 dok se ne nadogradi upravljacki modul za cip ADS7846.
Cip TPS65930 se nalazi iza linearnog regulatora na kojem pad napona uvelike ovisi o
potrošnji sustava tako da ta mjerenja nisu pouzdana.
Kako bi bilo moguce koristiti pretvornik A/D iz cipa TPS65930 potrebno je uklju-
citi upravljacki modul twl4030_madc i dodati opisnik u listu svih prikljucenih ure-
daja omap3_tdm3730_devices.
25
4. Periferna programska podrška
Za potpunu funkcionalnost uredaja je bilo potrebno implementirati tri upravljacka mo-
dula [9] [10] i prebaciti podršku za akcelerometar iz novije jezgre operacijskog sustava
Linux. Dijagram modula je prikazan na slici 4.1. Plavom bojom su oznaceni imple-
mentirani moduli.
Linux board
tacna_power
OMAP I2C
mma8450 apds9303 tinyrgb
Slika 4.1: Dijagram modula
Takoder, bilo je potrebno korisniku uredaja omoguciti odabir da li ce zvuk biti
preusmjeren na slušalice ili na ugradene zvucnike. Napravljeni su i demonstracijski
programi za akcelerometar, senzor intenziteta svjetlosti i za upravljanje RGB-diodom.
Na nosecoj plocici se nalazi Bluetooth modul koji je spojen na jedno od serijskih
sucelja. Sva programska podrška niske razine je vec ugradena u operacijski sustav
Linux i bilo je potrebno samo povezati serijsko sucelje s Bluetoothom u init-skripti.
26
4.1. Upravljacki moduli
4.1.1. Virtualni datotecni podsustav za upravljanje i nadzor
Virtualni datotecni podsustav za upravljanje i nadzor (sysfs) je tipicno mapiran
(engl. mount) u mapi /sys, a služi za komunikaciju procesa u korisnickom adresnom
prostoru s uredajima, odnosno upravljackim modulima uredaja [6]. Puno je jednos-
tavniji za korištenje od procfs-a jer nije potrebno brinuti se za otvaranje i zatvaranje
datoteka, nego je samo potrebno procitati odnosno zapisati podatak u meduspremnik.
U mapi /sys su uredaji grupirani na razne nacine simbolickim poveznicama. Pri-
mjerice, u mapi /sys/class su grupirani po svom tipu, a u /sys/bus se nalaze
sve sabirnice.
Svaki uredaj prilikom prijavljivanja dobiva vlastitu mapu u kojoj ima svojstva u
obliku datoteka koje je moguce citati i/ili pisati. Prozivanjem (engl. polling) svojstva
je moguce i cekati na novu vrijednost.
Grupa specificnih svojstava uredaja se definiraju prilikom prijavljivanja uredaja
funkcijom sysfs_create_group kao što je prikazano u odsjecku 4.1. Prili-
kom odjave uredaja grupu sa svojstvima je potrebno izbrisati funkcijom sysfs_-
remove_group. Obje funkcije kao prvi argument primaju lokaciju grupe u sysfsu, a
kao drugi opisnik grupe svojstava.
Odsjecak 4.2 prikazuje opisnik grupe uredjaj_attr_grp, listu svih atributa
uredjaj_attrs, te opisnik atributa "svojstvo". U opisniku grupe nužno je navesti
NULL-terminiranu listu sa svim atributima, a po potrebi je moguce zadati i ime grupe,
odnosno podmape u kojoj ce se svojstva nalaziti. Opisnici svojstva se jednostavno defi-
niraju makroom DEVICE_ATTR ciji prvi argument odreduje ime svojstva, drugi prava
pristupa, a treci i cetvrti redom pokazivace funkcija za ocitanje i izmjenu svojstva.
Konacno, funkcije za ocitanje i izmjenu svojstva su prikazane u odsjecku 4.3. Na
temelju argumenta dev je moguce doznati o kojem se tocno uredaju radi (ako je više
istih uredaja), a argument attr omogucuje da više razlicitih svojstava ima iste funk-
cije. Argument buf je meduspremnik.
Uz pretpostavku da se primjer smjesti u mapu /sys/class/power/test,
svojstvu "svojstvo" je moguce pristupiti kroz datoteku /sys/class/power/
svojstvo. Stanje varijable podatak je sada moguce procitati naredbom cat, a
naredbom echo je moguce mijenjati stanje varijable (ali samo ukoliko se zapiše cijeli
broj).
27
Odsjecak 4.1: Primjer definiranja i brisanja grupe svojstva upravljackog modula/* funkcija za prijavu uredjaja */
static __devinit int uredjaj_probe(struct platform_device *pdev)
int err;
/* ... inicijalizacija */
/* stvaranje svojstava */
err = sysfs_create_group(&pdev->dev.kobj, &uredjaj_attr_grp);
if (err < 0)
dev_err(&pdef->dev, "Nije moguce inicijalizirati sysfs!\n");
goto err_sysfs;
/* ... finalizacija */
return 0;
/* ... oporavak od greske */
err_sysfs:
return err;
/* funkcija za odjavu uredjaja */
static __devexit int uredjaj_remove(struct platform_device *pdev)
/* brisanje svojstava */
sysfs_remove_group(&pdev->dev.kobj, &uredjaj_attr_grp);
/* ... deinicijalizacija */
28
Odsjecak 4.2: Primjer opisnika grupe svojstava i opisnika svojstva/* opisnik svojstva "svojstvo", moze mu pristupiti bilo tko */
static DEVICE_ATTR(svojstvo,
S_IRUGO | S_IWUGO,
svojstvo_show, svojstvo_store);
/* lista sa svojstvima grupe */
static struct attribute *uredjaj_attrs[] =
&dev_attr_svojstvo.attr,
/* ostala svojstva */
NULL
;
/* opisnik grupe svojstva */
static struct attribute_group uredjaj_attr_grp =
.attrs = uredjaj_attrs,
/* ostali elementi strukture su opcionalni */
;
Odsjecak 4.3: Primjer funkcija za ocitanje i izmjenu svojstavastatic unsigned long podatak;
/* funkcija za prikaz svojstva */
static ssize_t svojstvo_show(struct device *dev,
struct device_attribute *attr,
char *buf)
return sprintf(buf, "%lu\n", podatak);
/* funkcija za izmjenu svojstva */
static ssize_t svojstvo_store(struct device *dev,
struct device_attribute *attr,
const char *buf, size_t len)
if (strict_strtoul(buf, 0, &podatak))
return -EINVAL;
return len;
29
Prozivanje dogadaja datotecnog podustava za upravljanje i nadzor
Prozivanje sysfs dogadaja omogucuje blokiranje procesa do promjene svojstva uredaja.
Upravljacki modul mora obavijestiti sysfs o izmjeni svojstva funkcijom sysfs_-
notify.
U odsjecku 4.4 je prikazan primjer prozivanja nad datotekom svojstva /sys/
class/power/test/svojstvo. Svojstva nisu tokovi podataka pa je potrebno
prije svakog citanja pokazivac vratiti na pocetak datoteke.
Odsjecak 4.4: Primjer prozivanja sysfs dogadajaint main()
struct pollfd pfd;
char buf[MAX_BUF_LEN];
pfd.fd = open("/sys/class/power/test/svojstvo", O_RDONLY);
if (pfd.fd < 0) err(1, "open");
pfd.events = POLLPRI; /* prioritetni dogadjaj */
for (;;)
if (poll(&pfd, 1, -1) < 0)
err(1, "poll");
lseek(pfd.fd, 0, SEEK_SET);
if (read(pfd.fd, buf, MAX_BUF_LEN) < 0)
err(1, "read");
/* ... obrada medjuspremnika buf */
4.1.2. Modul za akcelerometar
Upravljacki modul mma8450 za akcelerometar nije podržan u Linuxu 2.6.37 nego
tek u 3.1. Uz minimalne izmjene je kopiran u 2.6.37 i dodan u pripadajuce datoteke
Makefile i Kconfig. Modul ima nekoliko grešaka i nedostataka koje bi trebalo
ispraviti. Primjerice, ne postoji podrška za signal za paljenje i gašenje akcelerometra.
Iz tog razloga je prilikom inicijalizacije sustava bilo potrebno rucno izvod GPIO za
paljenje akcelerometra fiksno postaviti na logicku jedinicu. Osim toga, modul vraca
vrijednosti bez predznaka umjesto s predznakom tako da je u korisnickim aplikacijama
potrebno dodavati predznak prema odsjecku 4.5.
30
Odsjecak 4.5: Ispravljanje predznaka u rezultatu mjerenja akcelerometrastruct input_event ev;
/* citanje vrijednosti s akcelerometra */
if ((rd = read(fd, &ev, sizeof(ev))) < sizeof(ev))
perror_exit("read()");
if (ev.type == EV_ABS)
/* ispravljanje predznaka */
if (ev.value & 0x800)
ev.value |= ~0x7ff;
/* ... */
4.1.3. Modul za pracenje stanja baterije
Modul za pracenje stanja baterije, kao što mu samo ime kaže, omogucuje pracenje
stanja baterije korisniku uredaja. Nalazi se u drivers/power/tacna_power.c.
Zbog greške u sklopovlju (ispravljena u shemama u dodatku) nije se moguce pouz-
dati u stanja signala punjaca. Umjesto toga se iskljucivo na temelju napona napajanja
zakljucuje da li je prikljucen vanjski izvor napajanja ili ne. Maksimalni izmjereni
napon na bateriji bez punjaca je 4V, tako da je pri naponu vecem od 4.2V moguce
zakljuciti da je prikljucen vanjski izvor napajanja.
Modul prijavljuje sustavu izvor napajanja tipa baterija prema odsjecku 4.6. Glo-
balno polje tacna_bat_props sadrži popis svih svojstava koje je moguce dohvatiti
preko funkcije tacna_bat_get_prop. Implementirana je podrška za najosnovnija
svojstva potrebna za podsustav APM:
POWER_SUPPLY_PROP_STATUS: vraca status baterije (ili se puni ili se prazni),
POWER_SUPPLY_PROP_VOLTAGE_NOW: trenutni napon baterije (mjeri se po-
mocu funkcije twl4030_get_madc_conversion(12) dostupne iz mo-
dula twl4030_madc),
POWER_SUPPLY_PROP_VOLTAGE_MAX: vraca maksimalni napon na bateriji
koji iznosi 4.2V,
POWER_SUPPLY_PROP_VOLTAGE_MIN: vraca minimalni napon na bateriji
koji iznosi 2.7V,
31
POWER_SUPPLY_PROP_PRESENT: uvijek vraca istinu jer je baterija uvijek pri-
sutna, tj. nije izmjenljiva,
POWER_SUPPLY_PROP_TECHNOLOGY: uvijek vraca tip baterije Li-ion.
Odsjecak 4.6: Prijava izvora tipa baterijabat->name = "Kruh baterija";
bat->type = POWER_SUPPLY_TYPE_BATTERY;
bat->properties = tacna_bat_props;
bat->num_properties = ARRAY_SIZE(tacna_bat_props);
bat->get_property = tacna_bat_get_prop;
ret = power_supply_register(&pdev->dev, bat);
if (ret)
goto err_psureg1; Iz korisnickog adresnog prostora komponentama ovog modula je moguce pristupiti
preko datoteka u mapi /sys/class/power_supply.
Podsustav APM
Podsustav APM (engl. Advanced Power Manager) je apstrakcijski sloj za upravljanje
potrošnjom namijenjen za IBM-kompatibilna racunala [1]. U ovom se sustavu koristi
samo kako bi graficko sucelje GPE moglo ocitati stanje baterije jer ono ne podržava
drugi nacin. Bilo ga je potrebno ukljuciti u postavkama jezgre operacijskog sustava.
Podsustav APM periodicki pretražuje prikljucene baterije i dojavljuje njihovo sta-
nje korisnickoj aplikaciji.
4.1.4. Modul za mjerenje intenziteta svjetlosti
Upravljacki modul za senzor APDS9303 ne postoji niti u jednoj verziji jezgre, te ga je
bilo potrebno implementirati.
APDS9303 podržava dva nacina mjerenja: automatsko periodicno mjerenje i rucno
mjerenje. Rucno mjerenje je potrebno samo za iznimne slucajeve i stoga ono nije
implementirano. Nije implementirana niti mogucnost izmjene periode mjerenja, ali je
predvidena za daljnji razvoj.
Programi unutar korisnickog adresnog prostora mogu ocitavati vrijednost sa sen-
zora putem datoteke lux0_input unutar mape /sys/class/i2c-adapter/
32
i2c-2/2-0029/. Prozivanjem datoteke je moguce dohvacati svaku novu vrijed-
nost.
Funkcija za ocitanje svojstva lux0_input blokira izvodenje procesa do prekida
sa senzora. U prekidu se senzoru šalje potvrda prekida i citaju se izmjerene vrijednosti
CH0 i CH1 (vidljiva i infracrvena svjetlost).
Koristi se dretveni prekid što znaci da prekid pokrece dretvu koja se izvodi kad
dode na red. Dretvu, za razliku od obicne prekidne funkcije, je moguce blokirati prili-
kom komunikacije preko I2C sabirnice.
Iz obje vrijednosti se izracunava osvjetljenje u mili luksima prema funkciji u od-
sjecku 4.7. Funkcija koristi iskljucivo cjelobrojne operacije (engl. fixed point). Opera-
cija potenciranja x1.4 je implementirana pomocu pregledne tablice (engl. lookup table).
Formule za izracun intenziteta svjetlosti u luksima u uputama cipa APDS9303 koriste
decimalne faktore. Faktori su pomnoženi s 100000 kako bi se dobili cijeli brojevi. Re-
zultat je stoga u zapisu 100×mLuks kojeg se prilikom prikaza dijeli sa 100 kako bi se
dobio prikaz u mili luksima sa dvije decimalne znamenke.
Odsjecak 4.7: Izracun osvjetljenja u mili luksima// /100 za mili lukse
static u32 apds9303_calc_lux(u16 ch0, u16 ch1)
static const u16 expx_14[16] =
2, 6, 11, 17, 23, 30, 37, 45,
53, 61, 70, 79, 88, 98, 107, 118;
const u32 ratio = (ch0 > 0) ? ch1 * 1024 / ch0 : 2048;
if (ratio <= (u32)(0.52 * 1024))
return 3150 * ch0 - 46 * ch0 * expx_14[(ratio >> 6) & 0x07];
else if (ratio <= (u32)(0.65 * 1024))
return 2290 * ch0 - 2910 * ch1;
else if (ratio <= (u32)(0.80 * 1024))
return 1570 * ch0 - 1800 * ch1;
else if (ratio <= (u32)(1.30 * 1024))
return 338 * ch0 - 260 * ch1;
else
return 0;
33
4.1.5. Modul za upravljanje RGB-diodom
Ovaj modul je zadužen za komunikaciju s mikrokontrolerom koji upravlja RGB-
diodom. Modul se sastoji od tri sucelja za svjetlece diode (opisano u poglav-
lju 4.1.5) te od svojstva za upravljanje nacinom rada. Modul je smješten u mapi
drivers/leds/, datoteci leds-tinyrgb.c.
Sucelje za svjetlece diode
Sucelje za svjetlece diode omogucuje vrlo jednostavnu implementaciju upravljackih
modula za svjetlece diode [4]. Posebno jednostavan slucaj su svjetlece diode spojene
na izvod GPIO. U tom slucaju nije potrebno raditi posebni upravljacki modul.
Pomocu okidaca (engl. trigger) jezgra operacijskog sustava može sama prema po-
trebi paliti i gasiti svjetlece diode, ali moguce je i imati svjetlece diode namijenjene
rucnom, odnosno korisnickom upravljanju.
Iz korisnickog adresnog prostora svim svjetlecim diodama je moguce pristupiti
unutar mape /sys/class/leds. Svaka svjetleca dioda ima svoju mapu unutar
koje se nalaze datoteke brightness (za odredivanje intenziteta osvjetljenja) i max_
brightness (za dohvacanje maksimalnog intenziteta).
U odsjecku 4.8 je prikazana pojednostavljena prijava svjetlece diode jezgri ope-
racijskog sustava. Postavljanje opisnika svjetlece diode kao globalnu varijablu nije
poželjno i ovdje je postavljeno zbog jednostavnosti. U prakticnom rješenju opisnik se
mora nalaziti u podacima vezanim uz uredaj.
Opisnik svjetlece diode cdev ima dva bitna elementa koja je potrebno inicijali-
zirati: naziv diode oblika "ime:boja:uloga" i funkciju za postavljanje intenziteta. Po
potrebi je moguce odrediti maksimalan intenzitet (pretpostavljena vrijednost je 255) i
još razne druge elemente koji nisu bitni za ovaj uredaj.
Kada okidac ili korisnik zatraži izmjenu intenziteta poziva se callback funkcija
ledica_set_brightness. Primjer funkcije je prikazan u odsjecku 4.9. Jedini
zadatak te funkcije je slanje naredbe sklopovlju za izmjenu intenziteta. Ukoliko ko-
munikacija sa sklopovljem može blokirati, potrebno je koristiti pozadinske zadatke i
samo funkcijom schedule_work pokrenuti zadatak za izmjenu intenziteta. U tom
pozadinskom zadatku se onda izvodi komunikacija sa sklopovljem.
34
Odsjecak 4.8: Prijava sucelja za svjetlecu diodustruct led_classdev cdev; /* opisnik svjetlece diode */
/* funkcija za prijavu uredjaja */
static __devinit int uredjaj_probe(struct platform_device *pdev)
int err;
/* ... inicijalizacija */
/* prijava sucelja za svjetlecu diodu */
cdev.name = "s-dioda:zelena";
cdev.brightness_set = ledica_set_brightness;
err = led_classdev_register(&pdev->dev, &cdev);
if (err < 0)
dev_err(&pdef->dev, "Nije moguce prijaviti svj. diodu!\n");
goto err_led;
/* ... finalizacija */
return 0;
/* ... oporavak od greske */
err_led:
return err;
/* funkcija za odjavu uredjaja */
static __devexit int uredjaj_remove(struct platform_device *pdev)
/* brisanje svojstava */
sysfs_remove_group(&pdev->dev.kobj, &uredjaj_attr_grp);
/* ... deinicijalizacija */
Odsjecak 4.9: Funkcija za izmjenu intenziteta svjetlosti diode
static void ledica_set_brightness(struct led_classdev *cdev,
enum led_brightness brightness)
/* posalje sklopovlju naredbu za izmjenu intenziteta */
postavi_intenzitet(brightness);
35
Upravljanje RGB-diodom iz korisnickog adresnog prostora
Iz korisnickog adresnog prostora svakoj komponenti RGB-diode je moguce pristu-
piti preko datoteke /sys/class/leds/tinyRGB:boja/brightness ("boja"
može biti "r" za crvenu, "g" za zelenu ili "b" za plavu komponentu).
Sam uredaj u sysfsu se nalazi u mapi /sys/class/i2c-adapter/i2c-2/
2-0012/. Definirana su sljedeca svojstva:
mode: nacin rada bljeskanja; može biti "off" (ugašeno), "static" (konstantno svijetlo)
i "fade" (automatsko bljeskanje),
period: razmak izmedu paljenja,
duration: trajanje jednog bljeska,
fade_speed: brzina postepenog paljenja,
num_fade: broj uzastopnih bljeskova unutar jednog paljenja.
Komunikacija s mikrokontrolerom
Kao što je vec prije spomenuto, komunikacija s mikrokontrolerom odvija se preko
sabirnice I2C. Za slanje naredbi se koristi funkcija i2c_master_send. Ta funkcija
omogucuje sirovo slanje podataka koje je potrebno zbog neuobicajenog protokola.
Implementirana je posebna funkcija za slanje naredbi trgb_write. Funkcija
slaže paket s naredbama i unutar kriticnog odsjecka poziva gore navedenu funkciju
za slanje naredbi kako ne bi došlo do kolizije. Ovisno o parametru level šalju se
naredbe boje, boje i vremena ili boje, vremena i nacin rada.
36
4.2. Demonstracijski programi
4.2.1. Demonstracija akcelerometra
Na slici 4.2 je prikazano graficko sucelje za demonstraciju funkcionalnosti akce-
lerometra. Sucelje je ostvareno pomocu biblioteke GTK+ i prozivanjem datoteke
/dev/input/event2. Upravo ta je datoteka u kojoj je moguce dohvatiti dogadaje
s akcelerometra.
Slika 4.2: Graficko sucelje za ocitanje akcelerometra
4.2.2. Demonstracija senzora intenziteta svjetlosti i RGB-diode
Na slici 4.3 je prikazano graficko sucelje za demonstraciju ocitanja senzora intenziteta
svjetlosti i upravljanja RGB-diodom. Sucelje je ostvareno pomocu biblioteke GTK+.
Trenutno stanje intenziteta svjetlosti okoline dohvaca se prozivanjem datoteke
/sys/class/i2c-adapter/i2c-2/2-0029/lux0_input.
Sucelje omogucuje izmjenu svih svojstava mikrokontrolera za upravljanje RGB-
diodom, a prilikom pokretanja dohvacaju se prethodna stanja svih svojstava.
37
Slika 4.3: Graficko sucelje za ocitanje intenziteta svjetlosti i upravljanje RGB-diodom
4.3. Preusmjeravanje zvuka
Slika 4.4: Prozor-
cic za podešavanje
glasnoce i preus-
mjeravanje zvuka
Zbog greške u sklopovlju za otkrivanje prisustva slušalica bilo je
potrebno napraviti aplikaciju koja korisniku omogucuje rucno us-
mjeravanje zvuka na slušalice i/ili ugradene zvucnike.
Napravljena je GTK+ aplikacija koja se prilikom pokretanja
smjesti u podrucje obavijesti (engl. system tray). Pritiskom na
ikonu se pojavljuje prozorcic za podešavanje glasnoce s dva do-
datna preklopna gumba (engl. toggle button) za paljenje i gašenje
pojedinog izlaza (prikazan na slici 4.4).
Aplikacija omogucuje i onemogucuje izlaze upravljanjem iz-
voda GPIO preko sysfs-a, a glasnocu podešava pomocu biblioteke
Alsa.
38
4.4. Sucelje za podešavanje tipaka
Sucelje za podešavanje tipaka je dio grafickog sucelja GPE i potrebno je bilo samo
napisati datoteku s postavkama /etc/gpe/key-layout.
Datoteka s postavkama je u zapisu INI. U odsjecku 4.10 je prikazan primjer pos-
tavki za jednu tipku.
Odsjecak 4.10: Primjer postavki za jednu tipku[Global]
image = /usr/share/pixmaps/tacna-keys.png
offset_x = 30
offset_y = 10
[Power]
title = Power Button
symbol = gpe-config-apm.png
key = XF86PowerDown
command = apm --suspend
xpos = 315
ypos = 30 U odjeljku Global se odreduje pozadinska slika i njene koordinate, a u ostalim
odjeljcima ciji su nazivi ime tipke se odreduje redom naslov, slika akcije, naziv doga-
daja u X11, naredba koja ce se pokrenuti pritiskom na tipku i konacno lokacija tipke
na slici.
Na slici 4.5 je prikazan izgled sucelja za podešavanje tipaka, a položaj tipaka na
samom kucištu je prikazan na slici 2.9a. Slika unutar sucelja za podešavanje je nacrtana
prema fizickim tipkama i vijcima.
39
Slika 4.5: Sucelje za podešavanje tipaka
4.5. Bluetooth
Korišteni Bluetooth modul je bio isporucen u nacinu rada prilagodbe Bluetootha se-
rijskom sucelju za mikrokontrolere. Takav nacin rada je previše ogranicen za potrebe
rucnog racunala. Stoga je Bluetooth modul prebacen u BCSP (engl. BlueCore Serial
Protocol) nacin rada. U tom nacinu Linux može izravno slati HCI (engl. host/control-
ler interface) naredbe i koristiti Bluetooth modul za bilo koji protokol, a ne samo za
serijsko sucelje preko Bluetootha.
Za pokretanje Bluetooth podsustava je napravljena posebna pokretacka skripta
(engl. init script) pojednostavljeno prikazana u odsjecku 4.11. Program hciattach
povezuje serijsko sucelje s Bluetooth uredajem. Kao prvi argument prima putanju do
datoteke s tokom podataka serijskog sucelja. Drugi argument je naziv protokola koji
ce se koristiti za komunikaciju s Bluetooth modulom, a treci argument odreduje br-
zinu prijenosa podataka. Ukoliko komunikacija s Bluetooth modulom uspije, program
hciattach stvara virtualni Bluetooth uredaj hci0.
Program hciconfig podešava i pokrece Bluetooth modul. Kao prvi argument se
zadaje kojem Bluetooth uredaju se šalje naredba, a drugi argument je upravo naredba
koju se šalje.
40
Odsjecak 4.11: Bluetooth pokretacka skripta#!/bin/sh
BT_UART=/dev/ttyO2
bt_start()
hciattach "$BT_UART" bcsp 115200
hciconfig hci0 up
bt_stop()
hciconfig hci0 down
killall hciattach
case "$1" in
start)
echo "Starting Bluetooth support"
bt_start
;;
stop)
echo "Stopping Bluetooth support"
bt_stop
;;
esac
exit 0
41
5. Mehanicka konstrukcija
LCD-ekran s panelom osjetljivim na dodir je najviše utjecao na konstrukciju kucišta.
Citavo kucište je ustvari dimenzije ekrana s time da je deblje za oko 9 mm kako bi
ispod ekrana bilo mjesta za elektroniku.
S obzirom da se radi o prototipu cija je osnovna svrha bila prikazati mogucnosti
takvog racunala, kucište je konstruirano tako da se što jednostavnije može izraditi.
Bitno je bilo i da se sastoji od lako dostupnih materijala. Uobicajen izgled za ovaj tip
uredaja nije bio prioritet.
Kucište se sastoji od gornje strane koja je odredena panelom osjetljivim na dodir
ispod kojeg je smješten LCD-ekran, aluminijskog okvira i zaštite s donje strane.
Rubovi kucišta koji nose prikljucke i tipke te spajaju gornju i donju plohu racunala
izradeni su iz eloksiranog aluminija U-profila. Medusobno su povezani kutnicima od
mesinga u kojima su urezani navoji za vijke koji drže citavu konstrukciju (slika 5.1).
Donji dio kucišta koji štiti elektroniku je od pleksi-stakla kako bi unutrašnjost ra-
cunala bila vidljiva. Nacrt je prikazan u dodatku B.
42
(a) Donja strana okvira
(b) Gornja strana okvira
(c) Unutarnja strana okvira
Slika 5.1: Konstrukcija okvira
43
6. Zakljucak
Ovaj diplomski rad prikazuje izgradnju jednog prijenosnog racunala u obliku funkci-
onalnog prototipa. U okviru programske podrške zasnovane na operacijskom sustavu
Linux razvijeni su i doradeni potrebni sustavski moduli te je razvijen i pokoji program,
prvenstveno u svrhu ispitivanja ili prikaza mogucnosti racunala.
Naravno, ovaj rad nije završio proizvodom koji se može odmah komercijalizirati. U
tu svrhu bi trebalo uložiti znatne napore kao bi se doradila sklopovska rješenja, dizajn
samog uredaja, mehanicka konstrukcija te naravno doradila programska podrška za što
bolji korisnicki doživljaj te razvili ili iskoristili postojeci korisnicki programi.
Zanimljivo je da je ukupna cijena utrošenog materijala za izradu prototipa uspore-
diva sa cijenom komercijalnih uredaja istih mogucnosti.
Medutim, primjena ovdje opisane programske i sklopovske implementacije doka-
zala je da se relativno malim naporima u malom vremenu i za malo uloženih sredstava
može razviti upotrebljivo prijenosno racunalo.
44
LITERATURA
[1] Advanced power management. URL http://en.wikipedia.org/wiki/
Advanced_power_management.
[2] Bootloader Project. URL http://omapedia.org/wiki/Bootloader_
Project.
[3] AM/DM37x Multimedia Device - Technical Reference Manual. URL http:
//www.ti.com/lit/ug/sprugn4p/sprugn4p.pdf.
[4] LED handling under Linux. URL http://kernel.org/doc/
Documentation/leds/leds-class.txt.
[5] APDS9303, 2009. URL http://www.avagotech.com/docs/
AV02-2299EN.
[6] The filesystem for exporting kernel objects, 2010. URL http://kernel.
org/doc/Documentation/filesystems/sysfs.txt.
[7] ATtiny25/45/85, 2011. URL http://www.atmel.com/Images/
doc2586.pdf.
[8] TPS65930/TPS65920 OMAP Power-Management and System Companion Devi-
ces - Technical Reference Manual, 2011. URL http://www.ti.com/lit/
ug/swcu052g/swcu052g.pdf.
[9] Davor Cihlar. Upravljacki modul za operacijski sustav Linux. 2010.
[10] Davor Cihlar. Prenamjena ugradbenog racunalnog sustava. 2011.
45
Izgradnja rucnog racunala
Sažetak
Rad se sastoji od izvedbe prijenosnog racunala tablet zajedno s prilagodbom opera-
cijskog sustava temeljenog na jezgri Linux. Koristeci dobavljive komponente i vlastitu
projektiranu plocicu, izvedeno je racunalo s ekranom osjetljivim na dodir, baterijom,
punjacem, akcelerometrom, svjetlosnim senzorom, zvucnicima i podrškom za sluša-
lice. U radu se opisuju izvedene promjene jezgre Linux, opisuje se hardverska izvedba,
te su navedene sheme sklopovskog dijela rada.
Kljucne rijeci: tablet, linux, ekran osjetljiv na dodir, akcelerometar, svjetlosni senzor,
baterija, napajanje, otvoreni sustav, otvoreni kod, slobodna programska podrška, jezgra
Building a tablet computer
Abstract
This study consists of engineering a tablet computer and modification of an ope-
rating system based on the Linux kernel. Using off-the-shelf components as well as
the self-engineered board, this computer contains a touchscreen, a battery, a charger,
an accelerometer, a light sensor, as well as speakers, along with support for a headset.
This study describes the modifications to the Linux kernel, the hardware, and it also
contains the schematics for the hardware.
Keywords: tablet, linux, touchscreen, accelerometer, light sensor, battery, power sup-
ply, open systems, open source, free software, kernel
Dodatak ASheme sklopova
A.1. Napajanje
TAC_SWITCH-MCPTF-V
1M
1M
V+
10u
100k
GND
V+
GND
NL27WZ04DT
NL27WZ04DT
100n
2 134
S5
R18
R19
C11
R17
1 6
U4A
3 4
U4B
52
U4P C20
POWEROFF
TABLET_ON
Slika A.1: Tipka za paljenje i gašenje
SI4
463
200k
100n
GND
VC
CIN
T
10u 100n
GND GND
V+
GND
27
Si1032R
Q6
R23
C12C21 C22R
9
Q7
TABLET_ON
INT
Slika A.2: MOSFET-i za paljenje i gašenje
47
+UB
MC
P73
861-
I/SL
GN
D
1613
-05
GN
D
100n
GN
D
20k 10k
GN
D
10k
10k
VDD
Si1
032R
1.6k
GN
DG
ND
100k
VDD
VDD
Si1032R
GN
D
22k
GN
D
+UB 4.
7u
GN
D
100n
GN
D
100
100n
VDD GN
D100n
4.7u
PM
EG
3030
PM
EG
3030
100n
GN
D
VCCINT
VCCINT
VD
D1
4
VD
D2
5
VB
AT3
14
VS
ET
3
PR
OG
7
THR
EF
8
THE
RM
9
TIM
ER
10
EN
16
VS
S1
6
VS
S2
15
VS
S3
11
VB
AT1
12
VB
AT2
13
STA
T12
STA
T21
U2
X2
C1
R1 R2
R4
R5
Q2
R6
R7
Q3
R8
C2
C3
FB1
C24
P1
P2
C25
C26
D1
D2
C28
OTG
_CH
RG
_5V
CH
RG
_STA
T2C
HR
G_S
TAT1
FAS
T_C
HR
G
EX
T_P
WR
_IN
INT
INT
Slika A.3: Punjac baterije
48
V++UB
1k
GND
5.5V
GND
TPC
8120
SI4
463
GND
100k
10u
GND
100n
GND
Si1032R
1SS355
1SS355
VD
D
R3 R10
Q1
Q5
R22
C16 C23Q4
D4
D5
OTG_CHRG_5V
EXT_PWR_IN
Slika A.4: Odabir izvora napajanja
GND
+5VVC
CIN
T
1251R-15-SM1
123456789101112131415
X1
OTG_CHRG_5V
POWEROFFCHRG_STAT2CHRG_STAT1FAST_CHRGUSB_5V_ENLCD_ENBKL
INT
Slika A.5: Konektor za plocicu s napajanjem
49
TPS
6103
0PW
PG
4
GN
D
+5V
V+
74LV
C1G
125D
BV
1M
GN
D
6.8u
100n
1u10
u
GN
DG
ND
GN
D
V+
10u
1u
GN
D
100n
1M
V+
220u
GN
D
VB
AT
6
EN
9
SY
NC
8
SW
_21
SW
2
FB12
LBI
7
NC
16
EP
AD
17
GN
D11
PG
ND
_23
PG
ND
_34
PG
ND
5
LBO
10
VO
UT_
213
VO
UT_
314
VO
UT
15
U1
12
4U
5
35 U5P GNDVCC
R21
L2
C13
C14
C15
C17
C18
C19
R31
C29
US
B_5
V_E
NTABLET_ON
+
Slika A.6: Izvor napajanja od 5V
50
TPS
6150
0PW
P
GN
DG
ND
22u
V+
STP
S2L
40
10u
GN
D
6.8k200k
GN
D
10
10
10
GN
DG
ND
GN
D
47n
GN
D
178k
GN
D
1u47
0n
GN
DG
ND
V+
10u
1u10
0n
GN
D
74LV
C1G
125D
BV
1M
GN
D
100n
1M
V+
VIN
3
EN
4
CO
MP
8
DIM
C6
FRE
Q10
SS
5
AG
ND
7P
GN
D$3
12P
GN
D$2
13P
GN
D$1
14FB
9O
VP
11S
W$2
2S
W$1
1U
3
L1
D3
C4
R11R12
R13
R14
R15
C5
R16
C6
C7
C8
C9
C10
1 2 3 4
X3
1
24
U6
35 U6P GNDVCC
R20
C27
R30
LCD
_EN
BK
L
TABLET_ON
Slika A.7: Napajanje za pozadinsko osvjetljenje
51
A.2. Noseca plocica
A.2.1. LCD-ekran
DF13A-40DPDP-1.25V
GND GND
15
+3V
3
GND
FPF210X100n
4.7u
GNDGND
15
+3V
3
VC
CIO
100k P$1
P$3P$5P$7P$9
X6
P$11P$13P$15P$17P$19P$21P$23P$25P$27P$29P$31P$33P$35P$37P$39
P$2P$4P$6P$8P$10P$12P$14P$16P$18P$20P$22P$24P$26P$28P$30P$32P$34P$36P$38P$40
FB12
2 4
VIN 1
ON 3GN
D2
FLAGB4
VOUT5U10
C17C18
FB18
R66
TXC-TXC+
TXD0-
TXD1-
TXD2-
TXD3-
TXD0+
TXD2+
TXD1+
TXD3+
I2C_SCL_3.3I2C_SDA_3.3
LCD_PWR
LCD_ONLCD_ON
LIGHT_INT
IO
Slika A.8: Prikljucak za LCD ekran
TSC2046PW
100k
GNDGND
VC
CIO
10k
VC
CIO
+3V
3
10k
VC
CIO
+3V
3
VC
CIO
100n 100n
GND GND
300
300
300
300
VC
CIN
T
VBAT7
VCC1
X+2
X-4
Y+3
Y-5
PENIRQ11
BUSY13 GND 6
DOUT 12DIN 14CS 15
DCLK 16
VREF 9
AUX 8IOVDD 10
U9
R21
R22
R23
1234
JP1
C35 C36
FB25
FB26
FB27
FB28
SPI1_CLK
SPI1_MOSISPI1_MISO
PEN_IRQ
SPI1_CS0
IO IO
IO
IO
INT
Slika A.9: Cip za ocitanje otpornickog panela osjetljivog na dodir
52
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
10
1 8
RN2A
2 7
RN2B
3 6
RN2C
4 5
RN2D
1 8
RN3A
2 7
RN3B
3 6
RN3C
4 5
RN3D
1 8
RN4A
2 7
RN4B
3 6
RN4C
4 5
RN4D
1 8
RN5A
2 7
RN5B
3 6
RN5C
4 5
RN5D
1 8
RN6A2 7
RN6B3 6
RN6C4 5
RN6D1 8
RN7A2 7
RN7B3 6
RN7C4 5
RN7D1 8
RN8A2 7
RN8B3 6
RN8C4 5
RN8D
DSS_D21
DSS_D16
DSS_D10
DSS_D19
DSS_D11
DSS_D18
DSS_D4
DSS_D17
DSS_D12
DSS_PCLK
DSS_D5
DSS_D9
DSS_D0
DSS_VSYNC
DSS_D2
DSS_D8
DSS_D3
DSS_D7
DSS_D1
DSS_D6
DSS_D13
DSS_D20
DSS_D14
DSS_HSYNC
DSS_D23
DSS_D22
DSS_D15
DSS_DE
DSS_D15_A
DSS_D22_A
DSS_D23_A
DSS_D14_A
DSS_D13_A
DSS_D1_A
DSS_D3_A
DSS_D2_A
DSS_D0_A
DSS_D5_A
DSS_D12_A
DSS_D4_A
DSS_D11_A
DSS_D10_A
DSS_DE_A
DSS_D21_A
DSS_HSYNC_A
DSS_D20_A
DSS_D6_A
DSS_D8_A
DSS_VSYNC_A
DSS_D9_A
DSS_D17_A
DSS_D18_A
DSS_D19_A
DSS_D16_A
DSS_D7_A
DSS_PCLK_A
Slika A.10: Otpornici za ublaživanje naglih struja
53
VC
CIN
T
100n
GND
47u
C54 C55
INT
SN75LVDS83BDGGGND
GND
GND
10n
10n
10n
100n
100n
100n
GNDGND
GND GND
GNDGND
+3V
3+3
V3
+3V
3
300
300
300
VCC9
PLLVCC34
LVDSVCC44
D051
D152
D254
D355
D456
D52
D63
D74
D86
D97
D108
D1110
D1211
D1312
D1414
D1515
D1616
D1718
D1819
D1920
D2022
D2123
D2224
D2325
D2427
D2528
D2630
D2750
CLKSEL17
CLKIN31
~SHTDN32
GND_213
GND_335
GND_429
GND_543
GND_621
GND_736
GND_853
GND_95
GND_1049
GND33
U1
C1
C2
C3
C4
C5
C6
FB6
FB7
FB8
LCD_ON
DSS_D15_A
DSS_D22_A
DSS_D23_A
DSS_D14_ADSS_D13_A
DSS_D1_ADSS_D3_A
DSS_D2_ADSS_D0_A
DSS_D5_A
DSS_D12_A
DSS_D4_A
DSS_D11_ADSS_D10_A
DSS_DE_A
DSS_D21_A
DSS_HSYNC_A
DSS_D20_A
DSS_D6_A
DSS_D8_A
DSS_VSYNC_A
DSS_D9_A
DSS_D17_A
DSS_D18_ADSS_D19_A
DSS_D16_A
DSS_D7_A
DSS_PCLK_A
VC
CIO
GND
35
U15P
GN
DV
CC
35
U14P
GN
DV
CC 5
2
U20P
IO
VC
CIO
100n
GND
100n
GND
CLKOUTM 40
CLKOUTP 39
Y0M 48
Y1M 46
Y2M 42
Y3M 38
Y0P 47
Y2P 41
Y1P 45
Y3P 37
IOVCC_2 1
IOVCC 26C43 C44
TXC-TXC+
TXD0-TXD1-TXD2-TXD3-
TXD0+TXD2+TXD1+TXD3+
IO
Slika A.11: LVDS pretvornik
54
A.2.2. Audio
300
GND
47p220p1.
69k
499
10n
10n
1251RM-08
GND
+3V
3
100n
GND
+3V
374LVC2G07DCK
100n
VC
CIO
GND
100k
+3V
3
FB16
C19
C20R
36
R37
C21
C22
12345678
X9
C48
1 6
U20A
C49
R65
AUDIO_LAUDIO_R
MIC_M
MIC_P
MIC_BIAS
MIC_BIAS_G
SPK_MUTE_3.3SPK_MUTE
IO
Slika A.12: Prikljucak za zvucnike i mikrofon
TS331ILT
100k
VC
CIO
+3V
3
GND
10M
1M
+3V
3
GND
100n
GND
1u
GND
3
14U17
52
R45
R47
R48
C28 C29
EAR_PLUGEDEAR_SENSE
IO
Slika A.13: Sklop za otkrivanje prisustva slušalica (loš)
55
JAC
K-4
PO
L
GN
D
15
15330
330
100u 100u
GN
D
1u
GN
D
1u 1u
20k
20k
20k
20k
TPA
6111
A2D
GN
330
100n
22u
+3V3
GN
DG
ND
100k
49.9
k
+3V3
100k
74LV
C2G
07D
CK
12
X4
4A
3
4B
FB1
FB9
FB10
FB11
C8 C9
C23
C24 C25
R40
R41
R42
R43
VO
11
IN1-
2
BY
PA
SS
3
GN
D4
SH
UTD
OW
N5
IN2-
6
VO
27
VC
C8
U16
FB17
C26
C27
R44
R46
R64
34
U20
B
CO
MP
OS
ITE
AU
DIO
_L
AU
DIO
_R
EA
R_M
UTE
_3.3
EA
R_S
EN
SE
EA
R_M
UTE
+ +
Slika A.14: Pojacalo za slušalice
56
A.2.3. Mreža
VC
CIO
100n
GND
C42
IO
+3V
3
100n
GND
C41
HC_05
GND GND
+3V
3
GND+3
V3
VC
CIO
GND
TXB0106PW
GND
TX1
RX2
CTS3
RTS4
PCM_CLK5
PCM_OUT6
PCM_IN7
PCN_SYNC8
AIO09
AIO110
RST11
3V312
GND13 NC
14
VB
US
D-
15
CS
B16
MO
SI
17
MIS
O18
CLK
19
VB
US
D+
20
GN
D1
21
GND2 22PIO0 23PIO1 24PIO2 25PIO3 26PIO4 27PIO5 28PIO6 29PIO7 30PIO8 31PIO9 32
PIO10 33PIO11 34
U3VCCA2
A11
A23
A34
A45
A56
A67
OE8 GND 9
B6 10B5 11B4 12B3 13B2 14B1 16
VCCB 15U4
TP8
TP9
TP10
TP11
TP12
TP13TP14
BT_CTSBT_RTS
BT_RXBT_TX
BT_RX_3.3VBT_TX_3.3VBT_RTS_3.3VBT_CTS_3.3V
UART_RX_BUFUART_TX_BUF
UART_RXUART_TX
BT_
CS
BT_
MO
SI
BT_
MIS
OB
T_S
CK
IO
Slika A.15: Bluetooth modul s pretvaracem naponskih razina
TS331ILT
GND
VC
CIO
10M
1M
VC
CIO
GND
10n 100n
GND GND
100k
VC
CIO
10k
VA
RIS
TOR
CN
0402
GND
100k
VC
CIO
3
14U19
52
R53
R54
C30 C31
R55
R56
R57
R50
CABLE_DETECTCABLE_SENSE
CABLE_SENSE_A
IO IO IOIO
Slika A.16: Sklop za otkrivanje prisustva podatkovnog kabla
57
ST60-10P
15
GND
VC
CIO
100k
VA
RIS
TOR
CN
0402
VA
RIS
TOR
CN
0402
GND GND+5
V
15100n
GND120
120
120
120
65432
789
10
1
SHLD1SHLD2
X5
FB13
R49
R51
R52
FB20
C34
TP1
FB21
FB22
FB23
FB24
UART_RX_BUF
UART_TX_BUF
ETH_RXP_AETH_RXN_AETH_TXP_AETH_TXN_A
CABLE_SENSE
CABLE_UNUSEDUART_RX_BUF_AUART_TX_BUF_ACABLE_SENSE_B
CABLE_UNUSED_A
IO
Slika A.17: Podatkovni prikljucak
5453-37
10
+3V
3
GND
1n
RD+1
CRD2
RD-3
TD+6
CTD7
TD-8 TX- 9CTX 10TX+ 11
RX- 14CRX 15RX+ 16
T1
R59
C32
ETH_TXP
ETH_TXN
ETH_RXN
ETH_RXP ETH_RXP_A
ETH_RXN_A
ETH_TXP_A
ETH_TXN_A
Slika A.18: Transformator za ethernet
58
A.2.4. Napajanje
GND+5
V
1251RM-15
VC
CIN
T
123456789101112131415
X8
OTG_CHRG_5V
LCD_ENBKL_A
CHRG_STAT1_ACHRG_STAT2_APOWEROFF_A
USB_5V_EN_AFAST_CHRG_A
KPD_C0KPD_C1KPD_R0KPD_R1
INT
Slika A.19: Prikljucak za napajanje
100n
GND
10u
VC
CIN
T
C39C40
INT
LTC3536MSE
GNDGND
+3V
3
0 X0
GND
47p
6.49
k 1M
49.9
k
220p
221k
GND
22u
GND
4.7u
100n
GND
VC
CIN
T
VC
CIN
T
VC
CIN
T
SW14
VIN9
MODE/SYNC3
SHDN10
RT1
SGND2 PGND 5
VIN8
VC 12FB 11
VOUT 7
SW2 6U12
R26
R27
R28
C11
R29
R30
R31
C12
R32
C13
L1
C50
TP17
TP18
INT INT INT
Slika A.20: Izvor napajanja od 3.3V
59
A.2.5. Memorijske kartice
GND
VPP
VC
CIO
100k
10k
10k
10k
10k
10k
10k
33
10k
GND
100n
GND
SH
LD1
S1
SH
LD2
S2
SH
LD3
S3
SH
LD4
S4
DAT18
DAT07
VSS6
CLK5
VDD4
CMD3
CD/DAT32
DAT21
CDCD
CD_GNDCD_GND
X11
R1
R2
R3
R7
R8
R9
R10
R19
R20
C47
MMC1_CD
MMC1_CLK0
MMC1_CMD
MMC1_DAT0MMC1_DAT1
MMC1_DAT2MMC1_DAT3
MMC1_WP
IO
Slika A.21: Memorijska kartica MMC spojena na uobicajenu sabirnicu
VC
CIO
100n
GND
C38
IO
+3V
3
100n
GND
C37
GNDGND
+3V
3
ADG3304BRUZ 100k+3V
3
VC
CIO
+3V
3
GND
10
10
10
10
100k
GND
100n
GND
DAT21
CD/DAT32
CMD3
VDD4
CLK5
VSS6
DAT07
DAT18
SH
LD1
S1
SH
LD2
S2
SH
LD3
S3
SH
LD4
S4
X10
VCCA1
VCCY14
EN8
NC_26
NC9
GND7
A1 2
A2 3
A3 4
A4 5
Y1 13
Y2 12
Y3 11
Y4 10
U8
R24
1 8
RN1A
2 7
RN1B
3 6
RN1C
4 5
RN1D
R62
C52SPI3_CLK
SPI3_MOSI
SPI3_MISO
SPI3_CS0
SPI3_CS0_3.3SPI3_MOSI_3.3
SPI3_CLK_3.3
SPI3_MISO_3.3
IO
Slika A.22: Memorijska kartica MMC spojena na sabirnicu SPI
60
A.2.6. USB
VC
CIO
100n
GND
C51
IO
SI4463CDY-T1-GE3
74LVC1G07DCK
100k
100k
VC
CIO
S1
S2
S3
G4
D 8
D 6
D 7
D 5
U13
2 4U14
R38
R39
OTG_VBUS OTG_CHRG_5V
OTG_CHRG_E
IO
Slika A.23: Prosljedivanje izvora napajanja iz USB-a
15
GND
15
4.7u
GND
12345
FB14
FB15
C14
OTG_IDOTG_DPOTG_DMOTG_VBUS
Slika A.24: USB OTG
61
+3V3
100n
GN
D
100n
C57
C58
gree
n
+3V3
100
LED
1
R58
ETH
_LD
_LIN
K
TUS
B20
46B
VF
+3V3 GN
D
10k
100n
GN
D
+3V3
+3V3
1.5k
GN
D
TPS
20X
XB
DB
VG
ND10
0n
+5V
GN
D
27 27 27 27
15k
15k
15k
15k
PN
8752
0-S
PN
8752
0-S
15 15 15 15
SN75240P
SN75240PSN75240P
SN75240P GN
DG
ND
GN
D6M
Hz
100n
GN
D
X
15k
15k
15k
15k
GN
D
1.5k
+3V3
VC
C_2
25
VC
C3
~RE
SE
T4
~OV
RC
UR
110
~OV
RC
UR
214
~OV
RC
UR
318
~OV
RC
UR
422
TSTM
OD
E31
BU
SP
WR
8
~EX
TME
M26
XTA
L130
TSTP
LL/4
8MC
LK27
EE
DA
TA/G
AN
GE
D6
GN
D_2
7
GN
D28
SU
SP
ND
32
EE
CLK
5
XTA
L229
~PW
RO
N1
9
~PW
RO
N2
13
~PW
RO
N3
17
~PW
RO
N4
21
DP
01
DP
112
DP
216
DP
320
DP
424
DM
02
DM
111
DM
215
DM
319
DM
423
U5
R5
C7
R6
OU
T1
GN
D2
OC
3E
N4
IN5
U6
C10
R11
R12
R13
R14
R15
R16
R17
R18
1 2 3 4
X2
1 2 3 4
X3
FB2
FB3
FB4
FB5
GND 7X8
U7A
GND 5X6
U7B
GND 1X2
U7C
GND 3X4
U7D
Y1
C33
TP7
R63
R72
R73
R74
R75
R76
US
B_D
M
US
B_D
PH
OS
T_D
M1
HO
ST_
DP
1
HO
ST_
DM
2H
OS
T_D
P2
US
B_S
US
PE
ND
HO
ST_
OC
_A
USB USB
Slika A.25: USB hub
62
A.2.7. Razno
MMA8450QR1GND
VC
CIO
4.7u
GND
100n
100k
GND
VDD_21
VDD14
EN8
SDA6
SCL4
SA07
NC_22
NC_33
NC_416
NC15
GND_213
GND_35
GND_412
GND10
INT1 11
INT2 9
U2
C15C16
R71
SDA2SCL2
ACC_EN
ACC_INT1ACC_INT2
IO
Slika A.26: Akcelerometar
VC
CIO
100n
GND
C46
IO
+3V
3
100n
GND
C45
PCA9306DCT
VC
CIO
+3V
3
GND
0 10k
10k
+3V
3
+3V
3VC
CIO
VREF12 VREF2 7
GND 1
SCL13
SDA14SCL2 6
SDA2 5
EN8
U11
R25
R60
R61
TP15TP16
SDA2SCL2 I2C_SCL_3.3
I2C_SDA_3.3
IOIO
Slika A.27: Pretvarac naponskih razina za sabirnicu I2C
63
VC
CIO
100n
GND
C53
IO
SN74LVC07APW
VC
CIO
GND
100k
100k
VC
CIO
VC
CIO
100k
GND
1M
GND
1u
GND
27
VCC14
1A1
2A3
3A5
4A9
5A11
6A13
GND7
1Y 2
2Y 4
3Y 6
4Y 8
5Y 10
6Y 12
U18 R67
R68
R69
R70
C56
R77
LCD_ENBKL
LCD_ENBKL_A
CHRG_STAT1_ACHRG_STAT2_APOWEROFF
POWEROFF_ACHRG_STAT2CHRG_STAT1
USB_5V_EN_AFAST_CHRG_A
USB_5V_ENFAST_CHRG
IO
IO IO
Slika A.28: Pretvarac naponskih razina
A.3. Plocica sa svjetlecom RGB-diodom
GND
+3V
3
SCLSDAINT
+3V
3
GND
1u
C1
Slika A.29: Prikljucak
ATTINY45
+3V
3
GND
SM
LP36
RG
B1W
SM
LP36
RG
B1W
SM
LP36
RG
B1W
22 133
33
GND GND GND
10k
+3V
3
VCC8
PB1(MISO) 6
PB5(NRES) 1GND4
PB0(MOSI) 5
PB2(SCK/ADC1) 7
PB3(ADC3) 2
PB4(ADC2) 3
U2
LD1G
LD1R
LD1B
R1
R2
R3
R4
SCL
SDALED_B
LED_RLED_G
Slika A.30: Mikrokontroler s RGB-diodom
64
APDS-9303
+3V
3
GND
VDD 1
GND2
SEL3
SDA5SCL4
INT 6
U1
SCLSDA
INT
Slika A.31: Senzor intenziteta svjetlosti
A.4. Pojacalo sa zvucnikom
GND
VD
D
GND
390n
390n
1u
0X
100
GND
330
330
74AHC1G04DBV
0
GND
VD
D
GND
100n
AG
ND
SHDN1
IN-2
IN+4
GAIN5
V01 6
GND$2 7GND$18
VDD 9
V02 10
U1
LM4667MM
+-
C1
C2
C3
R2
FB1
FB2
FB3
2 4IC1
35
IC1P
GN
DV
CC
R1
C4
P1
P2
P3
P4
P5
Slika A.32: Pojacalo sa zvucnikom
65
A.5. Plocica s tipkama
TAC_SWITCH-PTH TAC_SWITCH-PTH
TAC_SWITCH-PTH TAC_SWITCH-PTH
1 342
S1
1 342
S2
1 342
S3
1 342
S4
P1P2P3P4
R0
C0C1
R1
Slika A.33: Plocica s tipkama
66
Dodatak BNacrt za pleksi-staklo
67