§
Informacijski zaslon

Lastnosti dokumenta

Naslov
Informacijski zaslon
Del
-
Datum vsebine
12. 01. 2009
Original
InformacijskiZaslon.pdf
Vrsta
seminarska naloga
Jezik
slovenščina
Različica
1.0
Ustanova
Fakulteta za računalništvo in informatiko, Univerza v Ljubljani
Študij
Računalništvo in informatika, Logika in sistemi, 5. letnik
Predmet
Seminar
Mentor
prof. dr. Dušan Kodek
Avtor
Tine Lesjak
Ocena
10 od 1-10

Posebnost te seminarske naloge je bila v tem, da je bilo treba narediti tako programski kot strojni del.

Priloge

seminar_predlog.pdf
Predlog seminarske naloge.
izvorna_koda.zip
Izvorna koda za mikrokrmilnik PIC16F690 v HI-TECH PICC C-ju za okolje HI-TIDE.
uc322.sch
Shema GPS bakrene ploščice za program Eagle.
uc322.brd
Specifikacija GPS bakrene ploščice za program Eagle.

Uvod

V pričujoči seminarski nalogi bom predstavil lastnoročno narejen izdelek z imenom informacijski zaslon. V predlogu[PRDLG], 24. 9. 2008, sem predstavil, česa bo izdelek zmožen. Moram povedati, da je bil cilj sicer zelo uporabno zastavljen, vendar preveč za moje znanje brez izkušenj na tem področju, zato sem raje začel z manjšim. Informacijski zaslon v končni obliki ima tako samo GPS sprejemnik brez dodatnih senzorjev. Zaslon je preprost dvovrstični segmentni.

Informacijski zaslon izmenično prikazuje naslednje podatke:

Delovanje

Informacijski zaslon se priključi na električno napajanje prek lastnega pretvornika z Mini-B USB konektorjem. Vir energije je lahko računalnik (prek navadnega USB kabla) ali pa avtomobil (prek posebnega USB avtomobilskega napajalnega kabla ali adapterja). Naprava nima lastne zaloge energije v obliki akumulatorja.

Ko napravo priključimo na napajanje se nemudoma vključi, na zaslonu pa se prikaže moje ime za 3 sekunde. Po tem času se prikaže napis "Searching satellites". Vgrajen GPS sprejemnik takoj prične iskati GPS satelite. To lahko traja nekaj minut, zelo odvisno od signala oz. prostora, v katerem se nahaja naprava. Če je naprava v hiši, morda nikoli ne bo dobila signalov od zadostnega števila satelitov, če je zunaj oz. pod vetrobranskim steklom avtomobila, lahko prikaže natančno lokacijo že po 35 sekundah (cold start[GSC3LT]).

Ključno pri uporabi GPS sistema je izračun lokacije. GPS sateliti oddajajo podatke, sprejemnik na Zemlji glede na oddaljenost satelitov lahko izračuna točen položaj sebe. Matematično se metoda imenuje trilateracija[WPTRIL], ko iz signalov treh satelitov lahko izračunamo x, y, in z koordinate lokacije. Vendar mora biti meritev, zaradi skoraj svetlobne hitrosti potovanja signalov od satelitov do sprejemnika, opravljena izredno natančno. Da je čas v sprejemniku kar najbolj natančen, je potreben signal še četrtega satelita.

Med iskanjem satelitov je poleg napisa "Searching satellites" desno spodaj na LCD zaslonu izpisano tudi število najdenih satelitov.

Ko GPS sprejemnik najde signale vsaj štirih satelitov, lahko izračuna pravilno lokacijo (t. i. GPS fix). Takrat se na zaslonu začnejo prikazovati podatki. GPS sprejemnik pošilja osrednjemu mikrokrmilniku NMEA stavke prek UART protokola. NMEA stavki vsebujejo standardizirane, lahko berljive podatke v obliki ASCII znakov.

NMEA 0183[WPNMEA] specificira preprosto zaporedno ASCII komunikacijo med različnimi napravami.

Uporabil sem dva stavka, ki vsebujeta uporabne podatke in sta videti takole:

$GPGGA,002153.000,3342.6618,N,11751.3858,W,1,10,1.2,27.0,M,-34.2,M,,0000*5E

Prvi podatek predstavlja čas, drugi zemljepisno širino, tretji zemljepisno dolžino itd.

$GPRMC,161229.487,A,3723.2475,N,12158.3416,W,0.13,309.62,120598, ,*10

Mikrokrmilnik prebere dve vrsti NMEA stavkov: GPGGA in GPRMC, vsakega od GPS sprejemnika dobi vsako sekundo ([FASTRAX], Table 3). Iz prvega pridobi čas, lokacijo in nadmorsko višino, iz drugega datum, hitrost in smer gibanja. Vse to se prikaže na zaslonu v dveh straneh. Na prvi strani prikaže:

Na drugi strani prikaže:

Preklop med obema stranema se zgodi vsakih 5 sekund.

Kadar GPS sprejemnik izgubi signale vsaj štirih satelitov (GPS fix postane neveljaven), se namesto nenatančnih podatkov na LCD zaslonu izpiše "Searching satellites" in število najdenih satelitov. To se lahko v praksi zgodi marsikje: med visokimi stavbami, v garaži, v predoru, v gostem gozdu, v hiši itd.

Informacijski zaslon nima nobenih tipk in lučk, resetira se tako, da se izključi iz električnega napajanja in ponovno vključi. Žal tudi zaslon ni osvetljen.

Zgradba

Informacijski zaslon je zelo enostavno zgrajen. Vsebuje tri glavne komponente:

in nekaj pomožnih komponent.

Mikrokrmilnik in GPS sprejemnik sta med seboj povezana z eno samo linijo. Komunikacija poteka po zaporednem vmesniku UART ([PICSHEET], 12.0 Enhanced Universal Synchronous Asynchronous Receiver Transmitter (EUSART)) s hitrostjo 4800 b/s, in sicer samo v eno smer: od sprejemnika do mikrokrmilnika. GPS sprejemnik namreč samodejno ob dodelitvi električne energije prične pošiljati podatke.

LCD zaslon komunicira v 4 bitnem načinu, kar pomeni, da je potrebno za prikaz enega znaka ali ukaza poslati podatke dvakrat. Do mikrokrmilnika je povezan prek 3 krmilnih in 4 podatkovnih linij.

Posebnost informacijskega zaslona je v tem, da je mogoče mikrokrmilnik neposredno programirati. Za to se uporablja 6 nožni konektor, ki je povezan z mikrokrmilnikom. Programator, ki se priključi na ta konektor, oddaja tudi električno energijo, zato se lahko naprava napaja tudi prek tega. Naredil sem tudi dodaten pretvornik iz vtikača, ki se natakne na 6 nožni konektor, na USB konektor, ki je bolj standarden in se lahko nanj natakne USB kabel, ta pa dovaja električno energijo od druge naprave (avtomobil, računalnik ipd.).

Vse komponente so prispajkane na ploščico, ki je namenjena ljubiteljskemu ročnemu spajkanju. Ploščico sem obrezal tako, da sede v ohišje navigacijske naprave Garmin Nüvi 680.

GPS sprejemnik je prispajkan na posebno bakreno ploščico skupaj z upori in kondenzatorjem. Je namreč tako majhen in ima nestandardno razporejene kontakte, da sem moral prositi kolega, da jo je izdelal s CNC strojem.

Seznam komponent:

Mikrokrmilnik sem tako programsko nastavil, da izrablja svoj lastni vgrajen oscilator, ki teče pri 4 MHz. Zunanji ni potreben.

Celoten program je dokaj enostaven, kratek in jedrnat. Napisan je v jeziku C. Za prevajalnik sem vzel HI-TECH-ovega. Vsa koda se izvaja zaporedno. Tudi čakanje na podatke od GPS sprejemnika. Znaki prihajajo s hitrostjo 4800 b/s, ali drugače eden vsako 208. mikrosekundo (1.000.000 µs / 4800 b/s). Mikrokrmilnik za skoraj vsak ukaz porabi 4 cikle ([PICSHEET], stran 217), kar pomeni, da načeloma izvrši en ukaz na mikrosekundo (1 / 4 MHz * 4). Na grobo povedano, lahko med vsakim prejetim znakom GPS sprejemnika izvrši 200 ukazov.

Program je sicer napisan malce drugače. Vsebuje 80 znakovni medpomnilnik (buffer), kamor se najprej zapiše celoten NMEA stavek (zadnji znak je 0x0A (line feed)), potem se šele opravi branje in prikazovanje podatkov.

Program je razdeljen na dva dela. Prvi je pomožni s tematskimi komponentami:

Drugi del je glavni program, kjer sem implementiral parser, prikaže pa obdelane podatke na LCD zaslon. Pri tem sem izrabil eno zanimivost: implementiral sem putch metodo tako, da prikaže posredovani znak na LCD zaslon. S tem sem omogočil uporabo že priložene printf metode, ki je v C-ju nadvse zmogljiva - oblikovane podatke prikaže na LCD zaslonu tako, kot smo drugače vajeni v konzoli na računalniku!

Izdelava

Pri izdelavi sem naletel na nekaj zanimivih težav. Najprej moram povedati, da še nisem nikoli spajkal in mehansko vezal komponente, medtem ko imam s programiranjem že nekaj izkušenj. Zato sem se moral pozanimati tudi o preprostih stvareh, ki so vsakemu elektrotehniku samoumevne. Začel sem tako rekoč iz nič. Na primer, kolega Gregor Mavrič mi je razložil, zakaj so potrebni kondenzatorji.

Velika težava so bile same komponente. Kako jih dobiti, predvsem pa katere? V eni izmed naših največjih trgovin z elektronskimi komponentami, IC elektronika, mi niso imeli časa pomagati. Navajeni so, da stranke naročijo artikle kar po kataloški številki, kar pomeni, da je treba prej natančno razmisliti o ustreznosti komponente.

Vse skupaj sem pravzaprav začel uresničevati pri mikrokrmilniku. Zelo sem se ogrel za odprto zasnovo projekta Arduino[ARDUINO], ki ponuja na svoji spletni strani navodila za izdelavo in programiranje platforme, namenjene bolj za hobi. Da se jo tudi že narejeno kupiti. Platforma vsebuje Atmelov ATmega8 ali ATmega168 mikroprocesor. Ker je informacijski zaslon zelo specifične narave, sem se raje odločil za znano rešitev podjetja Microchip, PIC. Kupil sem komplet PICkit 2 [PICKIT], ki vsebuje preprost programator skupaj s PIC16F690 mikrokrmilnikom. Komplet je bilo treba naročiti pri Farnellu[FARNELL].

Kolega Jure Lenče si je vzel precej časa, da mi je pomagal načrtovati in izdelati ploščico za GPS sprejemnik. Dizajn sva naredila v programu Eagle[EAGLE]. Na računalnik sva priključila njegovo CNC napravo za rezanje, ki je izrezala ploščico in vse potrebne linije.

Vmes sem se pridno učil veščin programiranja PIC mikrokrmilnika. Samo programiranje je res preprosto, vendar je potrebno v zbirniku (assembler) precej napora in pazljivosti. Programiral sem v Microchipovem MPLAB IDE-ju [MPLAB]. Kasneje, ko sem prišel do branja oz. parsanja NMEA stavkov, se mi je naenkrat ustavilo. Posegel sem po zmogljivejšem in veliko bolj varnem jeziku C. Da, PIC-e se da programirati tudi v C-ju. Obstaja kar nekaj prevajalnikov. Izbral sem HI-TECH-ovo HI-TIDE okolje skupaj s PICC prevajalnikom. Kot zanimivost naj povem, da sem vso prejšnjo kodo v zbirniku spravil v C v nekaj več kot eni uri. Nato je programiranje teklo kot namazano.

Veliko sem si pomagal tudi s knjižnicami, ki jih je v spletu ogromno, a pravzaprav nobene nisem neposredno uporabil. Iz njih sem črpal le ideje in si z njimi, zanimivo, razlagal dokumentacijo.

Med sestavljanjem naprave sem naletel na izzivalno težavo. GPS sprejemnikov visok električni nivo na oddajni liniji je le 1,8 V [FASTRAX], kar za PIC pomeni nedovoljeno napetost oz. raje nizek nivo [PICSHEET]. Težavo sem elegantno odpravil s PIC-ovim vgrajenim analognim primerjalnikom (comparator). Mejo med visokim in nizkim nivojem sem nastavil na 0,6 V, izhod primerjalnika pa sem neposredno povezal z UART vhodom. Vse to programsko.

Seznam opreme za izdelavo:

Slika 1: Prototip informacijskega zaslona. Zgoraj je viden programator PICkit 2, desno spodaj je GPS sprejemnik na bakreni ploščici.

Slika 2: Prednja stran plošče informacijskega zaslona. Na tej strani je pritrjen LCD zaslon.

Slika 3: Zadnja stran informacijskega zaslona. Čisto na levi je 6 nožna letvica, kamor se priključi programator ali napajanje; levo je PIC mikrokrmilnik v podnožju, desno je GPS sprejemnik z anteno na dodatni bakreni ploščici.

Slika 4: Informacijski zaslon tik preden sem prispajkal še LCD zaslon, Desno je viden pretvornik za USB kabel.

Slika 5: Končna podoba informacijskega zaslona, popolnoma v ohišju.

Sklep

Priznati moram, da je bila izdelava informacijskega zaslona naporna, predvsem pa je trajala bistveno dlje, kot sem si predstavljal. Razlog za to so vsekakor izkušnje, ki sem jih sedaj šele prvič pridobil. To pa je bilo pravzaprav bistvo tega predmeta.

Izdelava naslednjega izdelka bo precej lažja; mimogrede, o podobnem izdelku že razmišljam za diplomsko nalogo.

Vesel sem, da mi je napravo uspelo pripeljati do uporabnosti, vendar ji do prave uporabne vrednosti manjka še nekaj malenkosti. Na prvem mestu bi izpostavil zaslon. Ta bi moral biti precej večji, da bi zadostil prvotnemu načrtu: vsi podatki vidni naenkrat. Predvsem pa bi moral biti osvetljen. Naprave ravno zaradi tega zelo verjetno ne bom uporabljal, saj sem zadnji čas nabavil telefon, ki to vse zmore. Morda pa bo komu drugemu koristila.

Med izdelovanjem sem naletel na nekaj napak, nedoslednosti, ali slabe dokumentacije, ki so me rahlo negativno presenetili.

Prvo hudo napako sem odkril v dokumentaciji LCD ekrana izdelovalca [LCDSHEET], saj je pri enem ukazu zamenjan bit. To sem na srečo opazil v originalni dokumentaciji od gonilnika LCD zaslona [LCDDRV].

Veliko čudnih stvari sem našel med prebiranjem dokumentacije o PIC-u. Kolega Jure mi je sicer zagotovil, da je dokumentacija za PIC-e res vrhunska. Strinjam se, vendar bi moral poleg dokumentacije, ki bi jo moral prebrati res podrobno in celotno, imeti še precej več izkušenj glede mikrokrmilnikov in prebrati še kup dodatnih dokumentov, kot sta popravki in namigi.

LCD zaslon ima poleg napajanja in ozemljitve poseben kontakt, ki se imenuje V0. Poznavalci seveda takoj vedo, čemu je namenjen, sam pa sem imel kar nekaj težav, preden sem ugotovil, da napačna vezava tega lahko povzroči nemalo sivih las. Gre namreč za kontakt, ki nastavlja kontrast zaslona. Če je povezan na ozemljitev je kontrast največji, če je povezan na napajanje, se na zaslonu čisto nič ne vidi.

Posebno vlogo ima nožica #MCLR (reset) na PIC-u. Ta lahko ima več funkcij. Ključno vlogo pa igra pri programiranju mikrokrmilnika. Nožico sem programsko izklopil in mikrokrmilnik deluje normalno. Pri programiranju pa mora biti nožica povlečena na napajalno napetost (pull-up), drugače programator ne zazna čipa.

Žal sem moral čisto na koncu pristati na kompromis. Pri zadnjem popravku je namreč odstopil vgrajen Mini-B USB konektor. Konektor je bil neposredno prispajkan na ploščici, vendar ga zaradi izredno majhnih kontaktov nisem uspel dovolj čvrsto in zanesljivo pritrditi. Namesto tega sem zadevo poenostavil in raje naredil pretvornik z dvema žičkama, ki se natakne na 6 nožno letvico, sicer namenjeno programiranju. Pretvornik je sicer malce neroden, vendar veliko bolj zanesljiv.

Ne morem se znebiti občutka, da sem pri vsem tem imel nekaj sreče, da vse skupaj le deluje.

Rad bi se zahvalil kolegu Gregorju Mavriču, ki me je z uvodom popeljal v svet elektronike. Veliko zaslugo izrekam svojemu direktorju podjetja Autronic d.o.o., Saši Albertu, ki mi je priskrbel GPS sprejemnik in predstavitveno ohišje. Saša me je tudi spoznal z Juretom Lenčetom, ki mi je pomagal izdelati ploščico za GPS sprejemnik, izdal pa mi je tudi ogromno elektronskih trikov.

Viri

PRDLG
Lesjak T. Predlog: Informacijski zaslon. 24. september 2008.
GSC3LT
SiRFstarIII GSC3LT and GSC3LTf. SiRF Technology, Inc., 2007. http://www.sirf.com/products/GSC3LTProductInsert.pdf
SRFNMEA
NMEA Reference Manual. SiRF Technology, Inc., Revision 2.2, november 2008. http://www.fastraxgps.com/showfile.cfm?guid=9de68fec-1d95-4fd3-8809-f068c9aaf220
WPTRIL
Wikipedia contributors. Trilateration. Wikipedia, The Free Encyclopedia, 5. december 2008. http://en.wikipedia.org/w/index.php?title=Trilateration&oldid=256118411
WPNMEA
Wikipedia contributors. NMEA 0183. Wikipedia, The Free Encyclopedia, 12. december 2008. http://en.wikipedia.org/w/index.php?title=NMEA_0183&oldid=257453577
BERNMEA
December 2008. http://gpsd.berlios.de/NMEA.txt
DALENMEA
DePriest D. NMEA Data. http://gpsinformation.org/dale/nmea.htm
FASTRAX
Technical description. Fastrax UC322 OEM GPS Receiver module. Fastrax Ltd., Rev 1.2, 1. februar 2008. http://www.fastraxgps.com/showfile.cfm?guid=79d150e2-38f5-47f5-a2c1-096306b02874
WPGEOID
Wikipedia contributors. Geoid. Wikipedia, The Free Encyclopedia, 6. december 2008. http://en.wikipedia.org/w/index.php?title=Geoid&oldid=256281075
PICSHEET
PIC16F631/677/685/687/689/690 Data Sheet: 20-Pin Flash-Based, 8-Bit CMOS Microcontrollers with nanoWatt Technology (DS41262E). Microchip Technology Inc., 2008. http://ww1.microchip.com/downloads/en/DeviceDoc/41262E.pdf
LCDSHEET
Data Sheet LCD Module DEM 16213 SYH: Product specification. Display Elektronik GmbH, 4. april 2003. http://www.display-elektronik.de/DEM16213SYH.PDF
BAT85
Data Sheet BAT85 Schottky barrier diode: Product specification. Discrete Semiconductors, 25. maj 2000. http://www.nxp.com/acrobat/datasheets/BAT85_4.pdf
ARDUINO
Arduino - HomePage. December 2008. http://www.arduino.cc
PICKIT
PICkit 2 Development Programmer/Debugger. Microchip Technology Inc., december 2008. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
FARNELL
Farnell / Electronic Component Distributors / Suppliers / Electronics, Electrical Parts, Electrical Components and Wholesale Electronics. Premier Farnell plc, december 2008. http://www.farnell.com
EAGLE
CadSoft Online: Home of the EAGLE Layout Editor. CadSoft Computer GmbH, december 2008, http://www.cadsoftusa.com/index.htm
MPLAB
MPLAB Integrated Development Environment. Microchip Technology Inc., december 2008. http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002
HITECH
HI-TECH C PRO for the PIC10/12/16 MCU Family compiler and embedded software tools for the Microchip PICMicro. HI-TECH Software, december 2008. http://www.htsoft.com/microchip/products/compilers/piccprocompiler.php
LCDDRV
16COM / 80SEG DRIVER & CONTROLLER FOR DOT MATRIX LCD (KS0070B). Samsung Electronics.
WPUSB
Wikipedia contributors. Universal Serial Bus. Wikipedia, The Free Encyclopedia, december 2008. http://en.wikipedia.org/wiki/Usb
ICE
Spletna trgovina. IC elektronika d.o.o., december 2008. http://www.ic-elect.si/trgovina.aspx
AN774
Asynchronous Communications with the PICmicro® USART (DS00774A). Microchip Technology Inc., 2003. http://ww1.microchip.com/downloads/en/AppNotes/00774a.pdf
PIC
PIC16F690. Microchip Technology Inc., december 2008. http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en023112
NUVI
Dismantling the Nüvi 3xx series. December 2008. http://homepage.ntlworld.com/webspace8