3.1. Yleistä Kaukolaukaisimen toiminta IR-vastaanotin... 7

Samankaltaiset tiedostot
S11-04 Kompaktikamerat stereokamerajärjestelmässä. Väliraportti

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

1 Muutokset piirilevylle

Dynatel 2210E kaapelinhakulaite

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Telecrane F24 Käyttö-ohje

KILPAILIJAN TEHTÄVÄT ARVIOINTIOSA 5

Stereopaikannusjärjestelmän tarkkuus (3 op)

S09 04 Kohteiden tunnistaminen 3D datasta

U-REMIX USB RF 2 RF 1 POWER

Pörisevä tietokone. morsetusta äänikortilla ja mikrofonilla

S Elektroniikan häiriökysymykset. Laboratoriotyö, kevät 2010

Laboratorioraportti 3

MLR-1105 (Tasavirralla toimiva paristotyyppinen ovikellovastaanotin) LMLT-711 (Äänisignaaliyksikön soittonappi/lähetin)

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

AS Automaatio- ja systeemitekniikan projektityöt

9.6 Kannettava testilaite

Käyttöohje. Wireless

vapaa vapaa nasta 3 nasta 2 nasta 1 (maadoitus)

KUVANKÄSITTELY THE GIMP FOR WINDOWS OHJELMASSA

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

6.3. AVR_rauta. EEPROM-muisti pva

Sähköautoprojekti Pienoissähköauto Elektroniikan kokoonpano Moottoriohjain.

Finnish. Osien nimet. Tarkistuslaiteyksikkö. Sähkökaapelin tarkistuslaite. Vaihtokytkimen tarkistuslaite SM-EC79 HAKEMISTO

Elektroniikka II lopputyön ohje

Hyvä Webaston käyttäjä! Tämä käyttöohje on tarkoitettu valtuutetun asentamon antaman käytönopastuksen

Käyttöohje NEYCR PET-910

Käyttöohje. Wireless

Multivibraattorit. Bistabiili multivibraattori:

OMNIA OPINNÄYTETYÖ AMMATTIOPISTO. Diginoppa ICTP09SLG OMNIAN AMMATTIOPISTO

Käyttöohje. Wireless

CEM DT-3353 Pihtimittari

1. Telemetriakanava 3. Lähettimen taajuus 2. Lähettimen tyyppi 4. Akun vahvuus

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

ILMASTOINTILAITTEEN KAUKO-OHJAIMEN KÄYTTÖ OHJE

Peltorobotin akselimoduulin kontrolleri

Taitaja2005/Elektroniikka. 1) Resistanssien sarjakytkentä kuormittaa a) enemmän b) vähemmän c) yhtä paljon sähkölähdettä kuin niiden rinnankytkentä

Käyttösäätimet. ActivSound 75. (1) Virtakytkin Kytkee virran päälle tai pois päältä. (2) Virtailmaisin Palaa vihreänä, kun virta on päällä.

KÄYTTÖOHJE PEL 1000 / PEL 1000-M

A15 - Inertial Measurement Unit

S Portaalinosturi AS Projektisuunnitelma Oleg Kovalev

Riistakameran käyttöohje

Elektroniikkalajin semifinaalitehtävien kuvaukset

KÄYTTÖOHJE TRC-1480 Langaton Sisä- ja ulkolämpötilan mittari kellolla ja sääasemalla

Projektityöt. Sami Alaiso, Jyri Lujanen 30. marraskuuta 2009

A11-02 Infrapunasuodinautomatiikka kameralle

T80_a_BA.book Seite 1 Donnerstag, 22. April :01 16 Telestart T80

SeekTech SR-20 Paikannin Kevyt mutta silti lujarakenteinen vastaanotin, joka antaa kaikki nopean ja tarkan paikannuksen tarvitsemat tiedot.

UML -mallinnus TILAKAAVIO

Tehtävään on varattu aikaa 8:30 10:00. Seuraavaan tehtävään saat siirtyä aiemminkin. Välipalatarjoilu työpisteisiin 10:00

PIKAKÄYTTÖOHJE V S&A Matintupa

Pinces AC/DC-virtapihti ampèremetriques pour courant AC

6.2. AVR_rauta. Analogia-komparaattori-ohjelmointia , pva

turvavalopuomi SG-BIG Base

Taitaja2010, Iisalmi Suunnittelutehtävä, teoria osa

AS Automaatio- ja systeemitekniikan projektityöt

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ //-PID säätimellä. #include <EEPROM.h> #include <SoftwareSerial.h>

LABORATORIOTYÖ 3 VAIHELUKITTU VAHVISTIN

Jos sinulla on kysyttävää 10. Vastaanotin toimi.

13. Loogiset operaatiot 13.1

Sulautettujen järjestelmien kilpailutehtävä

Kuvan pienentäminen Paint.NET-kuvankäsittelyohjelmalla

Harjoitustyö - Mikroprosessorit Liikennevalot

Tiedonkeruu ja analysointi

Adafruit Circuit Playground Express

1 YLEISTÄ. Taitaja2002, Imatra Teollisuuselektroniikkatyö Protorakentelu 1.1 PROJEKTIN TARKOITUS

NP-2T DL ohje. Oy Nylund-Group Ab

PR SARJA ASENNUS JA KYTKENTÄ

Tiedonkeruu ja analysointi

Versio: FIN Langaton painonappi. Käyttäjän käsikirja

KÄYTTÄJÄN KÄSIKIRJA. Malli: LMDT-810 Itseoppiva liiketunnistin ulkokäyttöön. IP44

Laboratoriotyö. 1. Laitteisto. 1.1 Kamera

GSM PUHEVIESTI & SMS HÄLYTYKSENSIIRTOLAITE

- Käyttäjä voi valita halutun sisääntulon signaalin asetusvalikosta (esim. 0 5V, 0 10 V tai 4 20 ma)

Pakkauksen sisältö. Balance Keyboard - REV 2.0

Pakkauksen sisältö. 1. Unimouse 2. Käyttöopas. Unimouse Wired

GSRELE ohjeet. Yleistä

Aurinko-C20 asennus ja käyttöohje

Quha Zono. Käyttöohje

Kauko-ohjaimen käyttöohje. Part No.: R OM-GS (0)-Acson FAN SWING MODE TURBO TIMER OFF CANCEL. Acson A5WM15JR Acson A5WM25JR

XCRANE OMINAISUUDET KUUSI KULJETTAJA-PROFIILIA VENTTIILIEN SÄÄDÖT

DumpDbox-ohjelmiston asennus- ja käyttöohjeet Sisällys

6.6. Ajastin/laskuri - Timer/Counter pva, kuvat jma

Operaatiovahvistimen vahvistus voidaan säätää halutun suuruiseksi käyttämällä takaisinkytkentävastusta.

AS Automaatio ja systeemitekniikan projektityöt Projektisuunnitelma Syksy 2009 A09 05 OSGi IRC Bot For Coffee Maker

Ch4 NMR Spectrometer

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Eye Pal Solo. Käyttöohje

OPERAATIOVAHVISTIN. Oulun seudun ammattikorkeakoulu Tekniikan yksikkö. Elektroniikan laboratoriotyö. Työryhmä Selostuksen kirjoitti

Semifinaalin aikataulu ja paikka. Semifinaalikoordinaattori. Kilpailijamäärä. Elektroniikkalajin semifinaalitehtävien kuvaukset

KÄYTÖN JÄLKEEN HUOLEHDI, ETTÄ KAIKKI PALAUTETAAN PAIKALLEEN JA LAITTEET SAMMUTETAAN ASIANMUKAISESTI.

FTR960 RADIODATATOISTIN

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Akkujen aktiivinen balansointi

Ohjelmoitava magneettivastuksellinen kuntopyörä. LCD-Näyttö BC-81295

Luku 8. Aluekyselyt. 8.1 Summataulukko

1. Tasavirtapiirit ja Kirchhoffin lait

Transkriptio:

Sisällys 1. Johdanto... 3 1.1. Projektityön rakenne... 3 2. Kalibrointi... 4 2.1. Yksittäisen kameran kalibrointi... 4 2.2. Stereokalibrointi... 6 3. Kaukolaukaisinjärjestelmä... 7 3.1. Yleistä... 7 3.2. Kaukolaukaisimen toiminta... 7 3.2.1. IR-vastaanotin... 7 3.2.2. IR-lähetin...10 3.3. Kaukolaukaisimen rakentaminen...11 3.3.1. Osalista...11 3.4. Koekytkentä...12 3.5. Ohjelmointi...13 3.6. Piirilevyille kasaaminen...14 3.7. Kotelointi...14 3.8. Testaus ja yhteenveto...16 4. Riskinhallinta...16 5. Ajankäyttö...17 6. Yhteenveto...18 Liitteet...19 2

1. Johdanto Tämän työn tavoitteena oli kahdesta kompaktikamerasta koostuvan stereokameraparin kalibrointi ja kameraparin etäohjaukseen käytettävän kaukolaukaisimen rakentaminen. Kahdella vierekkäisellä kameralla samanaikaisesti otetuista kuvista pystytään laskemaan eri kohteiden etäisyyksiä, eli saadaan aikaan stereonäkö. Stereonäölle löytyy sovelluskohteita laajalta alueelta. Esimerkiksi liikkuvat työkoneet voivat käyttää stereonäköä esteiden väistelyyn. Työssä käytettiin stereokuvan ottamiseen kahta Canonin PowerShot A480 kompaktikameraa, joiden kuvista pystyttiin jälkikäteen analysoimaan eri kohteiden etäisyyksiä. Tämä menetelmä soveltuu sovelluksiin, joissa ei vaadita reaaliaikaista reagointia kameroiden ottamien kuvien pohjalta, koska kuvat täytyy ladata analysointia varten kameran muistista PC:lle jälkikäteen. Jotta stereokuvaparista voidaan tarkasti määrittää eri kohteiden sijainnit, täytyvät kamerat kalibroida. Kalibroinnilla eliminoidaan kameroiden sisäisistä epäideaalisuuksista, sekä kameroiden asennosta johtuvat virheet kuvista. Tässä työssä kalibroitiin molemmat Canonin kompaktikamerat erikseen sekä yhdessä. Työn viimeisessä osassa suunniteltiin ja toteutettiin langaton kaukolaukaisin, jolla kameroita voidaan tarkentaa ja laukaista etäohjauksena. Tämän kaukolaukaisimen on tarkoitus korvata edellinen kaapeleita tiedonsiirtoon käyttävä laukaisin. 1.1. Projektityön rakenne Alun perin projektityön ensimmäisen osan tarkoituksena oli suunnitella ja toteuttaa mahdollisimman automaattinen stereokameraparin kalibrointijärjestelmä. Eräs mahdollisuus oli kirjoittaa kyseisen kalibroinnin suorittava MATLAB-skripti itse. Aihealueeseen perehdyttäessä havaittiin, että kahden kameran muodostaman stereokamerajärjestelmän kalibrointiin on vapaasti saatavilla oleva MATLAB toolbox. Johtuen projektityöläisten aiemman kokemuksen puutteesta konenäköjärjestelmien sekä kuvankäsittelyn alueilta, päätettiin ohjaajan kanssa käyttää kyseistä toolbox:a stereokalibroinnin suorittamiseen. Samalla työn painopiste päätettiin siirtää projektityön toiseen osaan eli kaukolaukaisinjärjestelmän suunnitteluun ja toteutukseen. Kaukolaukaisin päätettiin toteuttaa langattomasti, infrapunaa käyttäen. Johtuen juuri projektityöläisten aiemman kokemuksen puutteesta konenäön alueella, stereokalibroinnin teoriaa ei tässä raportissa käsitellä kuin kalibrointitulosten käsittelyn vaatimalla tavalla. Teorian omaksumiseen olisi kulunut liian paljon aikaa, jolloin itse käytännön työn suorittaminen olisi kärsinyt. 3

2. Kalibrointi 2.1.Yksittäisen kameran kalibrointi Yksittäisen kameran kalibroinnilla tarkoitetaan kameran sisäisten parametrien määrittämistä. Tässä työssä määritettävät sisäiset parametrit ovat polttoväli, optinen keskipiste, pikselin suorakulmaisuus ja radiaaliset sekä tangentiaaliset vääristymät. Kuten todettu, kalibrointi suoritetaan tässä työssä käyttäen MATLAB:n Camera Calibration Toolbox:a. Kalibroinnin aluksi tasaiselle alustalle muodostetaan säännöllinen shakkiruudukko. Hyvään tulokseen pääsee tuottamalla tietokoneen ruudulle shakkiruudukon esimerkiksi MATLAB:n komennolla figure,imshow(checkerboard(n)), jossa jokaisessa ruudussa on N kappaletta pikseleitä per sivu. Ruudukon luomisen jälkeen siitä otetaan riittävä määrä kuvia eri kuvakulmista. Tässä työssä käytettiin yhdeksää (9) kuvaa. On tärkeää huomata, että kameralla otettujen kuvien on oltava riittävän hyvänlaatuisia tarkan lopputuloksen aikaansaamiseksi. Tässä työssä käytettiin CR2-kuvia, joita kameroilta saatiin suoraan. CR2 on eräs Canonin raakakuvan häviötön tiedostomuoto. MATLAB ei tue CR2-kuvia, joten ennen toolbox:n käyttöä CR2-kuvat on muutettava MATLAB:n tukemaan muotoon, joka tässä tapauksessa on TIFF. Kuvien tiedostomuodon muuttamiseen käytettiin Irfanview-ohjelmaa. Kuvassa 1 on esitettynä eräs vasemmanpuoleisella kameralla otettu kalibrointikuva. Kuva 1: Eräs kalibrointikuva. 4

Seuraava vaihe on ladata kuvat MATLAB:iin. Tässä vaiheessa on tärkeää huomata, että kuvien tiedostonimien täytyy olla samalla kaavalla nimetty eli vaikkapa left001,left002, jne., jotta kuvien tunnistaminen onnistuu. Tämän jälkeen alkaa itse kalibrointi. Kuva kerrallaan klikataan shakkiruudukon neljää eri kulmaa eli kyseessä on kulmientunnistus. Tämä vaihe on kalibroinnin työläin ja vaatii kärsivällisyyttä, koska virheklikkauksen sattuessa koko prosessi on aloitettava alusta. Neljän kulman klikkauksen jälkeen asetetaan yhden ruudun dimensiot eli neliön sivujen pituudet. Tässä työssä yksikkönä käytettiin metrejä mutta myös millimetrien käyttö on mahdollista. Tämän jälkeen MATLAB määrittää automaattisesti kaikkien shakkiruudukon ruutujen kulmat. Jos kulmat näyttävät silmämääräisesti olevan pielessä, voidaan käyttää vääristymäkerrointa, jolla asia voidaan korjata. Kun kaikille kuville on suoritettu edellä mainitut toimenpiteet, MATLAB laskee ja esittää kalibroinnin tulokset eli kameran sisäiset parametrit. Taulukossa 1 on esitettynä vasemmanpuoleisen kameran sisäiset parametrit toolbox:n käyttämissä yksiköissä. Taulukko 1: Vasemmanpuoleisen kameran sisäiset parametrit. Polttoväli [ 4066.78374 4064.43667] ± [ 0.00000 0.00000] Optinen keskipiste [ 1749.43354 1332.69444] ± [ 0.00000 0.00000] Pikselin suorakulmaisuus [ 0.00000 ] ± [ 0.00000 ] Vääristymät [ -0.10740 0.07538-0.00035-0.00129 0.00000] ± [ 0.00000 0.00000 0.00000 0.00000 0.00000] Taulukossa 2 on esitettynä oikeanpuoleisen kameran sisäiset parametrit. Taulukko 2: Oikeanpuoleisen kameran sisäiset parametrit. Polttoväli [ 4036.86760 4037.92385] ± [ 0.00000 0.00000] Optinen keskipiste [ 1746.47270 1362.97650] ± [ 0.00000 0.00000] Pikselin suorakulmaisuus [ 0.00000 ] ± [ 0.00000 ] Vääristymät [ -0.09764 0.01861-0.00016-0.00110 0.00000 ] ± [ 0.00000 0.00000 0.00000 0.00000 0.00000 ] Taulukoista 1 ja 2 nähdään, että pikselit ovat täysin suorakulmaisia, koska suorakulmaisuutta kuvaava arvo on nolla. Polttovälin ja optisen keskipisteen arvot toolbox ilmoittaa pikseleinä. Polttovälin muuntamiseen pikseleistä millimetreihin voidaan käyttää seuraavaa kaavaa: =, missä (1) on polttoväli millimetreinä, polttoväli pikseleinä, kameran kennon leveys millimetreinä ja kuvan leveys pikseleinä. Työssä käytettäville kameroille kennon ja kuvan leveydet ovat = 6.16 5

ja = 3648. Näillä arvoilla voidaan kaavalla (1) laskea molempien kameroiden polttovälit millimetreinä. Tuloksiksi saadaan = 6.867 ja = 6.816 Canonin ilmoittama tehdasarvo on 6.6 mm, joten arvot ovat melko lähellä sitä. Huomattavaa on kuitenkin myös se, että vaikka kameroiden periaatteessa tulisi olla identtisiä, nähdään polttovälien erilaisuudesta, ettei näin ole. 2.2. Stereokalibrointi Stereokalibroinnin tarkoituksena on määrittää kameroiden keskinäinen sijainti. Sen tuloksena saadaan kameraparin ulkoiset parametrit, jotka ovat rotaatio- ja translaatiovektori. Rotaatiovektori ilmoittaa kuinka paljon toinen kamera on kiertynyt toisen kameran suhteen. Translaatiovektori ilmaisee kameroiden keskipisteiden sijainnit toisiinsa nähden. Myös stereokalibrointi suoritetaan käyttäen edellä mainittua toolbox:a. Stereokalibrointi on hyvin suoraviivainen toimenpide kyseistä toolbox:a käytettäessä mutta seuraava asia on otettava huomioon. Stereokalibroinnissa ladataan erikseen vasemman ja oikean kameran kalibrointitulokset. Jotta stereokalibrointi onnistuu, on sekä vasemman että oikean kameran kalibrointiin käytettävien kuvien oltava samoja, joita stereokalibroinnissa käytetään. Toisin sanoen aina stereokalibrointia suoritettaessa on ensin suoritettava yksittäisten kameroiden kalibroinnit erikseen. Tämä on selkeästi kyseisen toolbox:n heikko kohta. Itse stereokalibrointi sujuu tämän jälkeen yhdellä napin painalluksella. Oletusarvoisesti stereokalibrointi suorittaa molempien kameroiden sisäisten parametrien uudelleenlaskennan mutta kyseistä toimenpidettä ei tässä työssä käytetä. Stereokalibroinnin tulokset eli kameroiden ulkoinen orientaatio on esitetty taulukossa 3. Taulukko 3: Stereokalibroinnin tulokset. Rotaatiovektori [m] [ 0.00015 0.01010-0.00356] ± [ 0.00041 0.00072 0.00039] Translaatiovektori [m] [ -0.20665-0.00159-0.01075 ] ± [ 0.00037 0.00021 0.00022] Taulukon 3 translaatiovektorin x-suuntainen komponentti on noin 21 cm. Tulos merkitsee siis sitä, että kameroiden optiset keskipisteet sijaitsevat noin 21 cm etäisyydellä toisistaan. Tämä tulos on helppo vahvistaa mittaamalla kameroiden fyysinen etäisyys toisistaan ja vertaamalla tulosta MATLAB:n laskemaan arvoon. Esimerkiksi viivoittimella saadaan mitattua etäisyydeksi noin 20 cm, joka on lähellä kalibroinnin tuloksena saatua arvoa. 6

3. Kaukolaukaisinjärjestelmä 3.1. Yleistä Työssä rakennettu kaukolaukaisin käyttää infrapunaa tiedonsiirtoon lähettimen ja vastaanottimen välillä. Kun käyttäjä painaa mitä tahansa lähettimen kahvassa sijaitsevista napeista, alkaa lähettimen mikrokontrolleri ohjata lähetinkotelossa sijaitsevalle IR-ledille pulssimaista jännitesignaalia. IR-ledi muuttaa tämän jännitesignaalin infrapunavaloksi, jonka se lähettää ympäristöönsä. Vastaanotin osaa tulkita tätä infrapunasignaalia ja ohjata sen perusteella kameroiden tarkennusta ja laukaisua. Molemmissa, lähettimessä ja vastaanottimessa, on lisäksi virtakytkimet joilla laitteista saa katkaistua virran. Lähettimen ja vastaanottimen kotelot on rakennettu niin, että tarpeen vaatiessa, esimerkiksi paristoja vaihdettaessa, ne saa helposti avattua ja suljettua. 3.2. Kaukolaukaisimen toiminta 3.2.1. IR-vastaanotin Vastaanottimen keskeisimmät osat ovat TSOP31236 vastaanotinmoduuli ja Attiny45-mikrokontrolleri. TSOP31236 on infrapunasignaalien vastaanottamiseen tarkoitettu moduuli, joka sisältää valmiiksi kaistanpäästösuodattimet sekä IR-signaalin aallonpituudelle (950 nm), että 36 khz:n kantoaallolle. Nämä suodattimet sekä moduulin muut ominaisuudet mahdollistavat signaalin havaitsemisen häiriöllisissäkin ympäristöissä, kuten vaihtelevissa valaistusolosuhteissa. Vastaanotinmoduulin käyttö toisaalta lisää järjestelmän monimutkaisuutta johtuen sen hieman erikoisesta toimintatavasta. Kun vastaanotinmoduuli ei havaitse signaalia, sen ulostulopinni pysyy käyttöjännitteen (n. 4,5V) tuntumassa. Kun moduuli havaitsee signaalin (eli 36 khz:n taajuisella kanttiaallolla tulevaa 950 nm IRsäteilyä) sen ulostulo putoaa hetkeksi lähelle maatasoa. Ulostulopinni nousee kuitenkin nopeasti (~600 ) takaisin käyttöjännitteen tasalle, jos signaali tulee jatkuvalla 36 khz:n kanttiaallolla. Ulostulopinniä lukemalla saataisiin siis tässä tapauksessa selville vain hetki kun käyttäjä painoi napin pohjaan, mutta ei sitä, miten kauan nappia pidetään pohjassa. Kameroiden tarkennusta ja laukaisua varten on kuitenkin oleellista tietää joka hetkellä, onko käyttäjän operoima nappi painettuna vai ei. Tämän takia kantoaaltona käytettävän kanttiaallon täytyy olla purskeista, jolloin TSOP31236:n ulostulopinni pystyy purskeiden välissä "resetoitumaan" ja reagoimaan siten vastaanotettavaan signaaliin niin kauan kun käyttäjä painaa lähettimen päässä nappia. Vastaanotinmoduuliin tuleva ja siitä lähtevä signaali on esitetty kuvassa 2. TSOP31236:n datalehden avulla IR-signaalin purskeen pituudeksi määriteltiin työssä 30 pulssia. Koska signaalia lähetetään 36 khz:n taajuudella, tulee purskeen pituudeksi ~833 s. 7

Kuva 2: Ylemmässä kuvassa vastaanotinmoduuliin tuleva purskeinen signaali. Kuvasta poiketen työssä purskeen pituudeksi tuli n. 833 us. Alemmassa kuvassa näkyy moduulin ulostulon käyttäytyminen. Toinen keskeinen osa vastaanottimessa on Attiny45-mikrokontrolleri. Sen tehtävä on muuttaa TSOP31236:n ulostulosignaali (kuvan 2 alempi signaali) tasajännitesignaaliksi, jolla voidaan ohjata kameroiden tarkennusta ja laukaisua. Attiny45:n input-nasta, johon TSOP31236 on kytketty, on ylösvedetty sisäisesti, eli se on käyttöjännitteen tuntumassa kun TSOP31236 ei anna signaalia. Tällöin Attiny45 on sleepmoodissa, eli suurin osa sen sisäisistä lohkoista on sammutettu. Tällöin Attiny45 vie vain n. 0,1 s virtaa. TSOP31236 vie idle-tilassa n. 350 s virtaa, joten vastaanottimen kokonaisvirrankulutus on n. 350 s kun signaalia ei havaita. Kun TSOP31236 havaitsee signaalin, se tuo mikrokontrollerin input-nastaan kuvan 2 alemman signaalin mukaista kanttiaaltoa. Tällöin mikrokontrolleri herää sleep-modesta ja alkaa ensimmäisenä laskea tulevan kanttiaallon pulsseja. Jos pulsseja tulee 5 peräkkäin alle ~9 ms aikana, päätellään että signaali on aito ja annetaan ulostulopinniin kytketyille kameroille käyttöjännitteen suuruinen tasajännite. Signaalin aitouden tarkistus pulsseja laskemalla osoittautui hyväksi suodatuskeinoksi, koska toisinaan TSOP31326 antoi ulos virheellisesti signaalia, vaikka nappia ei oltu painettu lähettimessä. Passiivinen suodatus kondensaattoreilla ei tässä tilanteessa olisi tullut kyseeseen, koska TSOP31236:n lähtöterminaali on jäykkä (npn-transistorin kollektori). Mikrokontrollerissa suoritettavaa jännitepulssien kestoon perustuvaa suodatusta olisi mahdollista parantaa vielä niin, että liian lyhyet pulssivälit tulkittaisiin myös virheellisiksi signaaleiksi. 8

Kun signaali läpäisee aitoustarkastuksen, mikrokontrollerin ohjelma tuottaa ulostulopinniin kytketyille kameroille käyttöjännitteen (4,5 V) suuruista tasajännitettä niin kauan, kun TSOP31236 antaa kanttiaaltoa. Tämä toteutettiin mikrokontrollerin ohjelmassa ajastimella, joka resetoituu aina input-pinniin tulevan signaalin laskevalla reunalla. Niin kauan kun ajastin ei pääse kasvamaan tietyn kynnysarvon yli, annetaan kameroille ohjausjännitettä. Kun TSOP31236 lakkaa kanttiaallon tuottamisen, ajastinta ei enää päivitetä, jolloin se pääsee kasvamaan yli määritellyn kynnysarvon ja kameroille lakataan antamasta jännitettä. Vastaanottimen kytkentäkaavio on esitetty kuvassa 3. Kuva 3: IR-vastaanottimen kytkentäkaavio. Työssä käytettiin kuvasta poiketen ATtiny45 mikrokontrolleria. Koteloitu vastaanotin on esitetty kuvassa 4. Kuva 4: IR-vastaanotin. 9

3.2.2. IR-lähetin Lähettimen keskeisimmät osat ovat painonapit, Attiny45-mikrokontrolleri ja IR-LED. Kotelon kahvaan sijoitetut painonapit on kytketty toisiinsa siten, että mitä tahansa nappia painamalla lähetin alkaa lähettää IR-signaalia. Napit on kytketty mikrokontrollerin input-nastaan, johon on ohjelmoitu sisäinen ylösveto käyttöjännitteeseen (3 V). Kun mitään nappia ei paineta, mikrokontrollerin input-nasta on käyttöjännitteessä ja kontrolleri on sleep-modessa. Tällöin Attiny45:n virrankulutus on n. 0,1 s, mikä on samalla koko lähettimen virrankulutus. Kaksi AA-paristoa josta lähetin saa virtansa, kestävät siis todennäköisesti vuosia, vaikka päävirtakytkimen unohtaisi ON-asentoon. Kun käyttäjä painaa jotain kolmesta kahvaan sijoitetusta napista, putoaa mikrokontrollerin input-nastan jännite nollaan ja kontrolleri herää sleep-moodista. Herättyään se alkaa tuottaa ulostulopinniin, johon IR- LED on kytketty, purskeista jännitekanttiaaltoa. Jännitteen muoto aikatasossa on esitetty kuvan 2 ylemmässä kuvassa. Yhdessä purskeessa lähetetään 30 lyhyttä jännitepulssia taajuudella 36 khz. Yhden purskeen pituudeksi tulee siis n. 833 s. Purskejakson jälkeen pidetään jännite alhaalla 833 s verran, jotta vastaanotinmoduuli pysyy aktiivisena. Lähettimen kytkentäkaavio on esitetty kuvassa 5. Kuva 5: Lähetinpiirin kytkentäkaavio. Kuvassa 6 on esitetty koteloitu IR-lähetin. 10

Kuva 6: IR-lähetin. 3.3.Kaukolaukaisimen rakentaminen Lähettimen ja vastaanottimen kytkentäkaaviot suunniteltiin itse, minkä takia ne rakennettiin ensin koekytkentäalustalle, jossa niiden toiminta voitiin verifioida ilman että mitään komponentteja tarvitsi juottaa kiinni. 3.3.1. Osalista IR-vastaanotin (kuva 4) koostuu taulukossa 4 esitetyistä osista. Taulukko 4: IR-vastaanottimen osat. Lukumäärä Osa 1 Attiny45-mikrokontrolleri 3 AAA-paristo 1 Kytkimellä varustettu kannellinen kolmen AAApariston paristokotelo 1 Kannellinen kolmen AAA-pariston paristokotelo 1 100 nf keraaminen kondensaattori 1 1 nf keraaminen kondensaattori 1 4,7 F elektrolyyttikondensaattori 1 1,7 k vastus 1 Vihreä LED 11

1 TSOP31236 vastaanotinmoduuli 1 USB-A naarassokettipino, 2 sokettia päällekkäin 2 USB-A uros B-mini-uros kaapeleita 1 kupariliuskalevy IR-lähetin (kuva 6) koostuu taulukossa 5 esitetyistä osista. Taulukko 5: IR-lähettimen osat. Lukumäärä Osa 1 Attiny45-mikrokontrolleri 2 AA-paristo 1 Kytkimellä varustettu kannellinen neljän AApariston paristokotelo 1 Gravis Mousestick II joystickin kahvaosa 1 10 nf keraaminen kondensaattori 1 1 nf keraaminen kondensaattori 1 4,7 F elektrolyyttikondensaattori 1 360 vastus 1 IR-LED 950 nm 1 kupariliuskalevy 3.4. Koekytkentä Tämä luku voidaan hypätä yli, jos tarkoituksena on rakentaa uusia lähettimiä tai vastaanottimia tässä raportissa esiteltyjä kytkentäkaavioita noudattaen, koska piirien toiminta on jo verifioitu. Piiri kasattiin ensin kuvan 7 mukaiselle koekytkentäalustalle, jossa sen toiminta voitiin varmistaa ennen varsinaiselle piirilevylle juottamista. 12

Kuva 7: Koekytkentä. Tässä vaiheessa kirjoitettiin myös sekä lähettimen, että vastaanottimen mikrokontrollerien ohjelmat. Koekytkentäalustalle lisättiin ohjelmointia varten mikrokontrollerien SPI-väylään kiinnittyvä liitin, joka mahdollisti nopean uudelleenohjelmoinnin ilman, että komponentteja tarvitsi irrottaa koekytkentäalustalta. Oskilloskoopilla pystyttiin varmistamaan, että lähetin lähettää oikeanlaista pulssijonoa oikealla taajuudella, ja että vastaanotin näkee tämän signaalin. 3.5.Ohjelmointi AVR Attiny45 -mikrokontrollerien ohjelmointiin käytettiin Atmelin tarjoamaa ilmaista sovelluskehitysympäristöä AVR Studio 4:ää, sekä Atmelin valmistamaa AVRISP mkii ohjelmointilaitetta. AVR Studio 4 osaa jossain määrin simuloida kohdepiirin (tässä tapauksessa Attiny45) toimintaa, ja tarjoaa työkaluja ohjelman debuggaukseen. Yksi parhaimmista AVR Studio 4:n ominaisuuksista on, että se näyttää kohdepiirin rekisterit sekä rekisterien kuvaukset. Näin käyttäjän ei tarvitse koko ajan selailla kohdepiirin datalehteä selvittääkseen eri rekistereiden ja bittien nimiä ja osoitteita. AVR Studio 4:ään voi integroida Ckääntäjät AVR Toolchain ja WinAVR, joiden avulla mikrokontrollerille siirrettävän HEX-muotoisen tiedoston saa vaivattomasti käännettyä lähdekoodista yhdellä napin painalluksella. HEX-tiedoston siirtämiseen mikrokontrollerin muistiin tarvitaan erillinen ohjelmointilaite, joka toimii välipalikkana tietokoneen (yleisimmin USB portin) ja kohdepiirin väylän välillä. Tässä työssä käytettiin ohjelmointilaitteena USB-väylään kytkettävää Atmelin AVRISP mkii -laitetta, koska AVR Studio 4 tukee sitä, ja se on suhteellisen halpa laite. Ohjelmakoodit on esitetty liitteessä. 13

3.6. Piirilevyille kasaaminen Kun piirien toiminta oli varmistettu koekytkentäalustalla, voitiin laitetta alkaa koota lopulliseen muotoonsa kupariliuskalevyille. Päätimme käyttää kupariliuskalevyjä "oikeiden" piirilevyjen sijaan mm. Seuraavista syistä: Lähetin- ja vastaanotinpiirit ovat yksinkertaisia ja sisältävät vähän komponentteja, joten oikean piirilevyn tuoma kompaktimpi koko ei olisi antanut merkittävää hyötyä. Piirien kaikki signaalit ovat digitaalisia, joten signaalien huonompi laatu kupariliuskalevyä käytettäessä ei haittaa. Kupariliuskalevyn käyttö on nopeaa verrattuna oikean piirilevyn valmistukseen syövytysprosesseineen. Piiriä kupariliuskalevylle kasattaessa asetettiin ensin sopiville paikoille kotelosta ulos tulevat liittimet ja LEDit, sekä keskeiset komponentit kuten mikrokontrollerit. Signaaliteitä juotettaessa kiinnitettiin huomiota lyhyihin maalenkkeihin ja silmukoihin, jotta ulkoisten SM-häiriöiden vaikutus saatiin minimoitua. Sekä lähettimen, että vastaanottimen piiri yritettiin saada mahdollisimman pieneen tilaan, jotta ne pysyisivät käyttökelpoisen kokoisina koteloituna. 3.7. Kotelointi Lähettimen kotelona käytettiin vanhan Gravis Mousestick II -joystickin kahvaosaa, jonka alle pultattiin kiinni paristokotelosta modifioitu alaosa. Vastaanotin koteloitiin käyttäen kahta paristokoteloa, joista toiseen sijoitettiin vastaanottimen käyttämät paristot ja toiseen itse vastaanotin. Paristokotelot pultattiin yhteen, jolloin lopputuloksena nähtävä kotelo sopii kokonsa puolesta kameroiden viereen, ja käyttäjä pystyy vielä tarttumaan kädellään metallikiskosta kameroiden välistä. Kuvassa 8 on lähettimen kotelo avattuna, jolloin voidaan nähdä miten käyttöjännitteen tarjoavat 2 AA paristoa ovat sivuilla ja itse lähetinpiiri keskellä. Kotelon saa auki liu'uttamalla, joten paristojen vaihto on helppoa. Vastaanottimen kotelo avattuna näkyy kuvassa 9. Vastaanottimen kotelo aukeaa myös liu'uttamalla, joten sen 3 AAA-paristoa on myös helppo vaihtaa. 14

Kuva 8: IR-lähetin avattuna. Kuva 9: IR-vastaanotin avattuna. 15

3.8. Testaus ja yhteenveto Sisätiloissa loisteputkivalaistuksessa kaukolaukaisimen kantama on testien mukaan noin neljään metriin asti. Tämän jälkeen IR-signaalin perillemeno on jo hyvin epävarmaa. Normaalissa käyttötapauksessa, eli käyttäjä pitää toisessa kädessään kameraparia ja toisessa laukaisinta, ei pitäisi tulla kantaman kanssa ongelmia. Lähettimen IR-Ledin suuntaavuus on n. 40 astetta, mikä asettaa rajat sille miten tarkasti lähetin täytyy suunnata vastaanottimen suuntaan. Suoritettujen testien mukaan tämä 40 asteen keila on kuitenkin tarpeeksi normaalikäytössä. Sisätiloissa IR-signaali heijastuu seinistä, lattiasta, katosta, yms. joten vastaanotin monesti näkee signaalin, vaikka lähetintä ei kohdistaisikaan vastaanottimen suuntaan. Ulkotiloissa harvemmin on ympärillä heijastuksia aiheuttavia pintoja, joten lähetin on suunnattava vastaanottimen suuntaan tarkemmin. Vastaanotinmoduuli TSOP31236 on suunniteltu tunnistamaan signaali häiriöllisissäkin olosuhteissa, joten esimerkiksi ympäristön valaistusolosuhteiden ei pitäisi vaikuttaa kaukolaukaisimen toimintaan. Vastaanottimen koteloinnissa huomattiin testauksen yhteydessä sellainen suunnitteluvika, että vastaanotinmoduuli on liian lähellä USB-liittimiä. Kun USB-kaapelit on kytkettynä vastaanottimeen, peittävät ne osittain alaviistosta tulevat signaalit, eikä vastaanotin silloin huomaa näitä signaaleita. Vastaanotinmoduuli TSOP31236 olisikin kannattanut sijoittaa kotelossa ylemmäksi, jolloin USB-liittimet eivät pääsisi blokkaamaan signaalia. Toisaalta vastaanotinkotelossa komponentit jouduttiin asettelemaan hyvin lähekkäin, joten voi olla ettei TSOP31236 olisi mahtunutkaan muualle. 4. Riskinhallinta Työn alussa riskialteimmaksi vaiheeksi oletettiin stereokalibrointi johtuen siihen liittyvän fysiikan monimutkaisuudesta sekä mahdollisen kalibrointikoodin koodaamisesta. Koska päätimme toteuttaa stereokalibroinnin MATLAB:n Camera Calibration Toolbox:lla, ei kyseinen riski realisoitunut. Toolbox:n käytön kanssa oli joitakin pieniä käytännön ongelmia muun muassa kuvien formaattien sekä yksittäisillä kameroilla suoritettujen kalibrointitiedostojen yhteensopivuuden kanssa. Näistä ongelmista kuitenkin selvittiin suhteellisen pienellä vaivalla. Kaukolaukaisimen piirien suunnittelu sujui hyvin eikä piirien kokoamisessakaan ollut suurempia ongelmia. Mikrokontrollerien ohjelmointi sujui myös todella hyvin. Koodia jouduttiin muuttamaan testauksen aikana hyvin vähän. Kaukolaukaisimeen tarvittavat osat saatiin hankittua ajoissa, mutta niitä jouduttiin tilaamaan lisää muutamaan kertaan testauksessa nousseiden ongelmien johdosta. Vastaanottimen ja laukaisimen kokoamiseen käytetyt osat olivat kaupan hyllyiltä saatavia, joten niiden muokkaamiseen sopivaksi kului jonkin verran enemmän aikaa kuin mitä oli odotettu. Erityisesti USB-kaapeleiden pituuksien sekä asettelun kanssa kului yllättävän paljon aikaa aivan työn loppuvaiheessa. 16

Sairastumisia ei kurssin aikana kummallakaan ollut, joten siltäkään osin aikataulussa pysyminen ei ollut ongelma. Voidaankin sanoa, että mikään riskeistä ei realisoitunut siinä määrin, että se olisi haitannut työn suorittamista ajallaan. 5. Ajankäyttö Projektityön laajuudeksi on määritetty kolme (3) opintopistettä kumpaakin opiskelijaa kohden. Työtunteina kyseinen laajuus vastaa 81 tuntia. Työaiheiden valinnan jälkeen työ saatiin nopeasti käyntiin. Ohjaajaan saimme yhteyden hyvin ja yhteydenpito pysyi koko työn aikana riittävänä. Työtä tehtiin yhdessä lähes joka viikko, joskus useanakin päivänä. Tarkoituksena oli varmistaa työn tasainen eteneminen ja välttää kiirettä työn loppuvaiheessa. Väliraportointiin mennessä olimme pysyneet hyvin aikataulussa ja olimme jopa sitä hieman edellä. Kaukolaukaisinjärjestelmän viimeistelyyn kului odotettua enemmän aikaa, mutta koska olimme aikataulua edellä, ei tämä viivästys vaikuttanut työn valmistumiseen ajallaan. Taulukossa 6 on esitetty projektin eri työvaiheet ja niihin käytetyt työtunnit. Taulukko 6: Projektin eri työvaiheet ja niihin käytetyt työtunnit. Työvaiheet Anssi Ari-Matti Projektin suunnittelu 6 6 Työn aiheeseen tutustuminen 4 5 Kalibraatiovaihe 40 42 Kaukolaukaisinpiirin suunnittelu 7 0 Kaukolaukaisinpiirin alustava 3 3 testaus Väliraportointi 3 3 Prototyyppipiirin rakentaminen 2 0 Mikrokontrollerien ohjelmointi 5 7 Lopullisen piirin rakentaminen ja 15 15 kotelointi Loppuraportointi 9 10 Yhteensä 94 89 17

6. Yhteenveto Projektityön tavoitteet muuttuivat merkittävästi kalibrointia suoritettaessa, sillä selvisi, että täysin automaattisen stereokalibroinnin toteuttaminen olisi ollut liian haastavaa tämän kurssin puitteissa. Stereokalibroinnin automatisoinnin sijaan työn painopiste siirtyi kaukolaukaisinjärjestelmän kehittämiseen. Työssä stereokalibrointiin käytettiin MATLAB:n Camera Calibration Toolboxia, jonka toimintaan tutustuttiin kalibroimalla kokeeksi joukko stereokuvia. Saadut tulokset vastasivat hyvin sekä Canonin ilmoittamia arvoja että itse järjestelmästä mitattuja etäisyyksiä. Kaukolaukaisinjärjestelmä toteutettiin infrapunalla toimivaksi, jolloin päästiin eroon ylimääräisistä kaapeleista. Järjestelmä koostuu erillisestä lähettimestä ja kameroiden yhteyteen kiinnitetystä vastaanottimesta. Sekä lähetin että vastaanotin vaatii erilliset paristot mutta kummankin laitteen virrankulutus on olemattoman pieni. Tämän vuoksi paristot kestävät todennäköisesti vuosia. Lähettimen ja vastaanottimen välinen tiedonsiirto suunniteltiin häiriösietoiseksi, jotta järjestelmää voidaan käyttää vaihtelevissa olosuhteissa. Kaikki työn tavoitteet saavutettiin aikataulussa eikä suuria ongelmia tullut vastaan. Työ syvensi tietämystä kuvatekniikasta, infrapunan käytöstä tiedonsiirrossa, elektroniikasta sekä mikrokontrollereista. Kurssin projektiluonteisuus opetti suunnittelemaan ajankäyttöä ja tehtävien jakoa, mistä on jatkossa varmasti hyötyä. 18

Liitteet IR-vastaanottimen lähdekoodi #include <avr/io.h> #include <inttypes.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/sleep.h> //#define F_CPU 8000000UL #define IN_SIGNAL PB2 #define OUT_CAM PB3 #define OUT_LED PB4 #define AUTH_PULSES 5 //number of authentication pulses const uint16_t DELAY_OUT = 2; //ms volatile uint16_t ovcounter = 0; volatile uint16_t ovcounter1 = 0; uint8_t outputishigh = 0; uint16_t signalcounter = 0; uint8_t confirmedasrealsignal = 0; //timer0 overflow interrupt ISR(TIMER0_OVF_vect) { ovcounter++; //timer1 overflow interrupt ISR(TIMER1_OVF_vect) { ovcounter1++; ISR(INT0_vect) { void outputtohigh() { PORTB = (1<<OUT_CAM); PORTB = (1<<OUT_LED); void outputtolow() { PORTB &= ~(1<<OUT_CAM); PORTB &= ~(1<<OUT_LED); uint8_t issignalreal() { uint8_t isreal = 0; uint8_t pulsescounted = 0; uint8_t timerexpired = 0; uint8_t prevstate = 1; uint8_t currentstate = 1; ovcounter1 = 0; 19

while((pulsescounted < AUTH_PULSES) && (timerexpired == 0)) { if((pinb & (1<<IN_SIGNAL)) == 0) { //in signal active low currentstate = 0; if(prevstate == 1) { pulsescounted++; ovcounter1 = 0; else { //in signal inactive high currentstate = 1; if(prevstate == 0) { ovcounter1 = 0; if(ovcounter1 > 35) { //800 us until timer expires timerexpired = 1; prevstate = currentstate; if(pulsescounted == AUTH_PULSES) { isreal = 1; else { isreal = 0; return isreal; int main(void) { 20 //OUT_CAM and OUT_LED as outputs DDRB = (1<<OUT_CAM) (1<<OUT_LED); //OUT_CAM and OUT_LED to zero (0V) PORTB &= ~(1<<OUT_CAM) & ~(1<<OUT_LED); //reset pin to output and low //DDRB = (1<<PB5); //PORTB &= ~(1<<PB5); //reset pin to input and high //DDRB &= ~(1<<PB5); //PORTB = (1<<PB5); //pull-up resistor for IN_SIGNAL pin PORTB = (1<<IN_SIGNAL); //enable timer0 without prescaler TCCR0B = (1<<CS00); //enable timer1 without prescaler TCCR1 = (1<<CS10);

//enable timer0 and timer1 overflow interrupts TIMSK = (1<<TOIE0) (1<<TOIE1); //enable (all) interrupts (not sure what exactly this enables) sei(); //disable external interrupt to int0 pin GIMSK &= ~(1<<INT0); while(1) { if((pinb & (1<<IN_SIGNAL)) == 0) { //IN_SIGNAL active low if(confirmedasrealsignal == 1) { if(outputishigh == 0) { outputtohigh(); outputishigh = 1; ovcounter = 0; else { confirmedasrealsignal = issignalreal(); else { //IN_SIGNAL inactive high if(ovcounter > 31*DELAY_OUT) { outputtolow(); outputishigh = 0; ovcounter = 0; confirmedasrealsignal = 0; //enable external interrupt to int0 pin GIMSK = (1<<INT0); //go to sleep mode set_sleep_mode(sleep_mode_pwr_down); sleep_mode(); GIMSK &= ~(1<<INT0); 21

IR-lähettimen lähdekoodi #include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> #include <avr/sleep.h> #define F_CPU 8000000UL #define OUT_LED PB4 #define IN_SIGNAL PB2 #define CYCLES_PER_PULSE 30 // width of 1T IR carrier pulse #define DELAY 2499 #define SMALL_DELAY 26 //original 14 ISR(INT0_vect) { void set_portb_bit (int position, int value) { // Sets or clears the bit in position 'position' // either high or low (1 or 0) to match 'value'. // Leaves all other bits in PORTB unchanged. if (value == 0) { PORTB &= ~(1 << position); // Set bit # 'position' low else { PORTB = (1 << position); // Set bit # 'position' high void onepulse() { for(uint8_t i = 0; i < CYCLES_PER_PULSE; i++) { set_portb_bit(4,1); _delay_us(small_delay); set_portb_bit(4,0); _delay_us(small_delay); int main (void) { int temp; DDRB = 1 << OUT_LED; // OUT_LED as output PORTB = (1<<IN_SIGNAL); GIMSK &= ~(1<<INT0); while(1) { temp = (PINB & (1 << IN_SIGNAL)); 22

if (temp == 0){ onepulse(); // Transmitting the pulse _delay_us(delay); else { set_portb_bit(4,0); GIMSK = (1<<INT0); sei(); set_sleep_mode(sleep_mode_pwr_down); sleep_mode(); GIMSK &= ~(1<<INT0); cli(); 23