Haku blogikirjoituksista termillä
"sudo":

perjantai, 3. lokakuuta 2014

Kesällä 2013 istuskelimme isäni kanssa useampanakin päivänä kesämökimme pihassa kuuntelemassa ja katselemassa kuinka joku mikälie-peipponen kuljetti ruokaa mökkimme pihamäntyyn kiinnitettyyn linnunpönttöön. Aina emon ilmestyessä pöntön suuaukolle mato suussaan alkoi kova nälkäisten poikasten kiljunta. Mietimme kuinka mielenkiintoista olisikaan nähdä mitä pöntön sisällä oikeastaan tapahtuu ja siitä se idea sitten lähti. Päätimme, että kesällä 2014 pihan linnunpöntössä olisi kamera, joka striimaa kuvaa jatkuvasti nettiin, että vaikka töissä tai kaupungissa tai vaikka terassilla voisi tarkistaa mitä pöntössä tapahtuu 24/7. Mutta teknisesta toteutuksesta ei tuolloin vielä ollut mitään hajua, muuta kuin että Raspberry Pi:n ympärille se lähtisi kehkeytymään.
Tämä blogikirjoitus selittää alusta lähtien työvaiheet ja eteen ilmenneet ongelmat ratkaisuineen. Ohjetta voi helposti hyödyntää myös muunlaisen valvontakameran toteuttamiseen.
Pidin omasta pönttökamerastani myös facebook-sivua kesällä 2014, jonka löydät osoitteesta www.facebook.com/lintukoto2014 Facebook-sivulta löydät myös kuvia ja videoita pöntön sisältä.
--------------------------------------------------------------------

SISÄLLYSLUETTELO

Laitteisto
- Raspberry
- 16g SD
- RpiCam (NOir)
- Infrapuna-ledi
- wlan-palikka

Ohjelmistot
- Raspbian
- Rpi Cam Web Interface http://www.raspberrypi.org/forums/viewtopic.php?f=43&t=63276

Pöntön suunnittelu
- Valon määrä / lämpötila
- Välikaton suunnittelu
- Kameran kiinteän tarkennuksen muuttaminen

Fyysiset / Tekniset työt
- Led-valon virtapiuha (5V USB)
- Kameran uudelleen tarkennus
- Linnunpöntön rakentaminen
- Välikaton rakentaminen

Kameran kuvan jakaminen
- Sisäisessä verkossa (192.168.1.100)
- Internetissä
- Port Forwarding
- IP-osoitteen selvittäminen

Järjestelmän kustomointi
- Sivun layoutin suunnittelu ja toteutus

--------------------------------------------------------------------

Tarvittavat laitteistot ja härpäkkeet

- Raspberry Pi, B-malli
- 16g SD-kortti
- RpiCam (NOir)
- Infrapuna-ledi
- wlan usb-tikku
Raspberry Pi -tietokoneesta tarvitsemme siis B-mallin, joka on verkkoon kytkettävissä. SD-kortin ei ole pakko olla 16 gigainen, jopa 4 gigainen riittänee, mutta koska kortille tallennetaan tässä versiossa videokuvaa ja valokuvia on hyvä olla hiukan lisätilaa. Raspberry Pi:n oma kameramoduli on myös pakollinen hankinta ja siitä nimenomaan omassa projektissani olen käyttänyt NOir-versiota (no infrared filter), joka näyttää infrapunavalon. Infrapunavalolla valaisemme pöntön sisukset häiritsemättä lintujen elämää. Valaisuun tarvitaan myös infrapunaledi, joka viritetään ottamaan tarvitsemansa virran usb-liittimestä. Toiseen Raspberryn usb-liittimeen kytkemme wlan-tikun, jolla kone on yhteydessä verkkoon. Voi tietysti myös käyttää verkkopiuhaa, mutta itse en halunnut pönttöön vedellä kuin yhden pakollisen piuhan (virtapiuha).

Ohelmistot

Kuten tavallista ensin asennamme SD-kortille käyttöjärjestelmän. Perus Raspbian sisältää tarpeellisen rungon, jonka päälle voimme asentaa sitten kameraohjelmistomme. Lataa Rasbpian TÄSTÄ. Raspbian imagen voit asentaa SD-kortillesi esim win32 diskimager-ohjelmalla. Tarkempia ohjeita löydät blogimme aiemmista teksteistä.
Ennen virran kytkemistä Raspberryysi kytke RPiCameraBoard kiinni omalle paikalleen, verkkoliittimen vieressä olevaan liittimeen. Kameran jäykkä johto kytketään liittimeen siten, että metalliset pinnat osoittavat pois päin verkkoliittimestä. Lukitse johto paikoilleen painamalla liittimen reunamuovit alas. Kytke USB-liittimeen myös näppäimistö tai vaihtoehtoisesti käytä SSH-yhteyttä esim pöytäkoneestasi asennusten tekemiseen. Asennuksen jälkeen koneesi pitäisi aueta automaattisesti Raspi-configiin (jos kone jostain syystä kysyy kirjautumista kirjaudu ensin tunnuksilla user: pi pass: raspberry ja sen jälkeen kirjoita
sudo raspi-config
Raspi configissa valitse expand filesystem, tämä laajentaa käyttiksen käyttämään koko muistikortin tilaa (eli jos sinulla on 16 gigainen kortti niin vasta tämän laajennuksen jälkeen raspberry pystyy käyttämään koko kortin kapasiteettia). Seuraavaksi valitse enable Camera, tämän jälkeen Raspberrysi osaa komennella RPiCameraBoardia. Lopuksi suosittelen vielä vaihtamaan pi-käyttäjän salasanan. SSH-yhteyden pitäisi automaattisesti olla päälle kytkettynä, joten sen asetuksiin ei tarvitse koskea. Poistu configista boottaamaan, tallentaen muutokset.
Boottauksen jälkeen kirjaudu sisään ja sen jälkeen on kaksi vaihtoehtoa: jos meinaat käyttää langallista internet-yhteyttä niin voit hypätä seuraavan kohdan yli, jos haluat kytkeä Raspberrysi langattomaan verkkoon niin jatka lukemista.
Kirjoita komentoriville:
startx
Tämä käynnistää varsinaisen Raspbian työpöytä-käyttöjärjestelmän, jonka avulla saamme helposti kytkettyä koneemme internetiin (HUOM! Raspberry pi 3 on varustettu sisäisellä wifi-liittimellä joten ulkoisia usb-tikkuja ei tarvita. Liittäminen verkkoon käy yksinkertaisesti ruudun oikeassa yläkulmassa olevasta wlan-kuvakkeesta. Vanhempii Raspberry-malleihin wifin asentamiseen löytyy yksityiskohtainen ohje aiemmasta blogitekstistäni TÄÄLTÄ.
HUOM! Voit lopettaa tuon ohjeen ennen wicd-asennusta ja palata tähän tekstiin. Raspbianin uusimman version wifi-config osaa käynnistyä automaattisesti koneen käynnistyessä, joten wicd-ohjelmistoa ei enää tarvitse asentaa ainakaan siitä syystä.
Nyt Raspberrymme on siis netissä ja valmis ottamaan vastaan kamera-ohjelmistoa, aloitetaan kuitenkin tarkistamalla onko käyttöjärjestelmään päivityksiä. Kirjoittele seuraavat rivit yksi kerrallaan komentoriville ja hyväksy asennettaessa mahdolliset yes/no -kysymykset klikkaamalla y-kirjainta.
sudo apt-get update
sudo apt-get dist-upgrade sudo rpi-update
Päivitysten jälkeen asennetaan kameraohjelmisto seuraavilla komennoilla (rivi kerrallaan!):
git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
cd RPi_Cam_Web_Interface
chmod u+x *.sh
./install.sh
Kun asennukset ovat valmiina pitää Raspberry bootata ja se onnistuu kirjoittamalla:
Sudo reboot

Käynnistyksen jälkeen kamerasi pitäisi automaattisesti käynnistyä ja sen huomaat palamaan syttyvästä punaisesta valosta. Kirjaudu sisään ja jotta pääsemme katsomaan kuvaa meidän pitää käynnistää internet-selain jostain toisesta samassa verkossa olevasta koneesta ja kirjoitettava osoiteriville Raspberrymme IP-osoite. Selvitetään siis Raspberrymme IP-osoite. Kirjoita komentoriville
sudo ifconfig
Tämä avaa meille tiedot Raspberrymme verkosta ja sieltä löytyy osoite, joka on muotoa: 192.168.1.xxx Viimeiset kolme numeroa voivat olla mitä vain 1-255 väliltä. Kirjoita nyt tuo numerosarja esim. PC-pöytäkoneesi selaimen osoiteriville ja sinun pitäisi nähdä Raspberryn kameran kuva, sekä kameran ohjaus-käyttöliittymä. Käyttöliittymästä ja sen kustomoinnista lisää viimeisessä kappaleessa.

Pöntön suunnittelu

Tässä tapauksessa siis asennamme valvontakameran tarkkailemaan linnunpöntön sisäistä elämää, tämä asettaa tiettyjä vaatimuksia sekä pöntön rakenteelle, että itse kameralle. Ainoa järkevä suunta valvoa niinkin pienen ja putkimaisen tilan sisätilaa on ylhäältä, ellei käytössä ole erittäin laajakulmainen kamera, jota meillä ei tässä tapauksessa ole. Pöntössähän ei luonnostaan juuri valoa ole, joten vaihtoehtoina ovat ikkunat tai infrapunavalaisu, joista kummankaan oikein toteutettuna ei pitäisi lintujen elämää haitata. Tässä tapauksessa toteutimme näistä molemmat, jotta saamme hiukan luonnonvaloakin päivisin, mutta kuvaa pystyy seuraamaan halutessaan myös öisin. Jälkeenpäin ajateltuna ikkuna kannattaa ehkä jättää tekemättä sillä ledi riittää pöntön valaisuun vallan mainiosti eikä infrapunakamera päivänvalosta huolimatta pysty värejä oikein esittämään.
Linnunpönttöön pitää siis ensin suunnitella toinen kerros, johon Raspberry Pi, kamera ja valo sijoitetaan ja erottaa tämä kerros alemmasta sopivasti rei?itetyllä välipohjalla. Kuulostaa helpolta eikö? No sitä se onkin, kunhan vaan tarttuu toimeen. Raspberry Pi itsessään on kotelon kanssa kooltaan n.: K=3cm L:6,3cm P=10cm ja tähän päälle pitää laskea muutama sentti päästä törröttävälle SD-kortille, virtajohdolle sekä USB-johdolle. Onneksi normaalistikin linnunpönttö on tätä leveämpi ainakin toiseen suuntaan, joten tavallisesta poikkeava korkeus, pari piuhanreikää, tuuletusaukot ja mahdollinen ikkuna ovat ainoat tästä linnunpöntöstä erikoisen tekevät ulkoiset piirteet.
Tärkeimmät pöntön suunnitteluun vaikuttavat asiat ovat
  • 1. suoja sateelta / kosteudelta
  • 2. suoja liialta lämpenemiseltä
  • 3. ikkunan ja pöntön suuntaus
  • 4. suoja eläimiltä
Ensimmäinen kohta hoituu tarpeeksi isolla katolla ja asiassa auttaa myös kohdepuun valinta, sillä runsas- tai edes normaalioksaisen puun varressa olevaan pönttöön harvemmin edes sade osuu. Myös kohdan kolme onnistumista voimme edesauttaa valitsemalla pöntön paikaksi puun pohjoispuolen ja siten, ettei mahdollisesta ikkunasta pääse paistamaan kesäpäivän kuuma aurinko kuin esim aamulla. Kohdan kaksi toteuttamiseksi pitää käyttää jo hiukan mielikuvitusta jättämällä vaikka toisen kerroksen sivuseinien yläosaan ilma-aukot, jotka täytetään vaan pienisilmäisellä verkolla. Näin saamme ilman kiertämään ?konehuoneessa? ja vältämme tietokoneen ylikuumenemisen (toivottavasti). Se miksi pienisilmäistä verkkoa täytyy tuuletusreikiin laittaa on se, että emme halua mitään hyönteisiä tai muita tutkimaan ja tukkimaan koneiston toimintaa mahdollisesti kärventymällä mikropiireihin tai muuta, tämä siis selittää kohdan neljä.
Testatessani RaspbiCamBoardin soveltuvuutta pönttökameraksi törmäsin ongelmaan nimeltään fixed focus. Tämä tarkoittaa että kameran tarkennus on kiinteä, eikä sitä voi ohjelmallisesti muuttaa. Kameran kuva on aina tarkka n.1-2 metristä pidemmälle, eikä linnunpöntöstä saisi siis terävää kuvaa. Aloin miettiä että miten tarkennusta vaihdetaan muuten kuin ohjelmallisesti ja vastaus oli selkeä: Linsseillä. Keräsin erilaisia linssejä hajonneesta videotykistä, vanhoista silmälaiseista ja kaikista mitä käsiini sain. Sitten aloin asetella RasbpiCamBoardin eteen (kiinni kameran linssiin) eri linssejä ja voilá tarkennus muuttui. Jollain linssillä sain kameran tarkentamaan 2cm päähän kamerasta, toisilla kuva pyörähti ympäri ja vihdoin eräiden parin euron lukulasien linssillä kuva tarkentui sopivasti n.20cm päähän. Pöntön välipohjaan pitäisi siis vaan tehdä sen verran isompi reikä, että saamme silmälasin linssin kameran alle.

Fyysiset / tekniset työt

Koska pöntön sisällä päivänvalo on vähäistä (ilman ikkunaa olematonta) niin joudumme valaisemaan sisustan lampulla. Jotta emme taas häiritsisi pöntön asukkaiden vuorokausirytmiä pitää valon olla lintujen silmille näkymätöntä. Linnut näkevät inmisestä poiketen ultraviolettivaloa, mutta infrapunavaloa eivät linnutkaan näe. Käytämme siis infrapunavaloa tästä ja siitä syystä, että kameramme näkee infrapunavaloa myös.
Lampun valinnassa pitää miettiä lämpenemistä ja virrankulutusta, joten paras vaihtoehto on LED-lamppu. Netistä tai lähimmästä hyvinvarustetusta sähkötarvikeliikkeestä löydät eri tehoisia infrapunaledejä. Itse päädyin ostamaan ledin netistä, jossa sen hinta oli 3,5?. Ledin speksit ovat seuraavanlaiset:
Emitted Color: 850nm Infrared IR
Viewing Angle: 120 degrees
DC Forward Voltage (VF): 1.5-1.7V
DC Forward Current (IF): 500mA
Maximum Pulse Voltage: 2.2V
Maximum Pulse Current: 800mA

Selitykset:
Emitter Color: valon väri/aallonpituus. Kamerat näkevät yleensä jo n.750nm valon
Viewing Angle: valon osoituskulma. 120-astetta on juuri oikea, hiukan pienempikin ok
DC Forward Voltage (VF): Ledi toimii parhaiten tällä jännitevälillä
DC Forward Current (IF): Optimaalinen sähkövirran määrä
Maximum Pulse Voltage: 2.2 volttia on maksimi jännitteen hetkellinen määrä jota ledi kestää
Maximum Pulse Current: 800mA maksimi hetkellinen sähkövirran määrä jota ledi kestää

Mietiskelin lampun virtalähteeksi useita vaihtoehtoja AA-paristoista 9V-paristoihin tai mopon akkuun, kunnes keksin että tarvittavan määrän virtaa voisi saada USB-liitännästä. Tavallinen USB2-liitin jakaa 5V jännitettä ja virtaa 500mA, joten jännitteen määrää pitää laskea ettei lamppu rikkoudu. Sähkötarvikeliikkeet myyvät tähän hommaan suunniteltuja resistoreita (vastuksia), jotka vaan kolvataan kiinni ledin toisen navan ja USB-johdon väliin.
HUOM! Seuraava vaihe sisältää sähkön (tosin pienen määrän) käsittelyä, joten ainakin alle 18-vuotiaiden tai elektroniikka-alalle kouluttamattomien rakentajien on syytä pyytää avuksi joku aikuinen.
Eli aloitetaan homma etsimällä käsiin joku USB-johto. Leikkaa johto poikki n.30cm päästä isosta USB-liittimestä (ja tietysti johto on tässä vaiheessa irtonainen, eikä kiinni missään). Kuori johto ja löydät neljä johtoa. Punainen (+) ja Musta (- tai Maa) tulee kuoria n.1cm matkalta johdon päästä. Muut piuhat voit niputtaa ja teipata johdon varteen kiinni, niitä emme tule käyttämään.

Johdon kuoriminen ja kolvaaminen on tarkkaa puuhaa, valitse paikka jossa on tarpeeksi valoa ja alusta, joka kestää kuumuutta.
Punainen johto kolvataan suoraan kiinni Lediin ja musta vastukseen ja vastus lediin. Selkeää? No ei aivan minullekaan. Sopivan vastuksen löytämiseksi pitää osata laskea minkä kokoinen vastus rajoittaa jännitettä tarpeeksi, jotta usb-liittimen 5V jännitteestä jää jäljelle vain sallittu (minun tapauksessani) 1,5V-1,7V. Jos löydät jostain infrapunaledin, joka kestää 5V jännitteen, ei vastusta tarvita lainkaan. Koska itsekin olen vasta opettelemassa näitä sähkömaailman perusasioita en niitä ala teille opettamaan vaan annan tässä pari aiheeseen osuvaa linkkiä:
http://koti.mbnet.fi/~huhtama/ele/index.php?si=ml16.sis
Tuolta sähköasioiden perusteita
http://ledcalc.com/
Automaattinen laskuri joka kertoo minkä kokoisen vastuksen tarvitset ledillesi
Kun kytket lediä kiinni USB-johtoon olisi eduksi jos mukana olisi yksinkertainen sähkömittari, jolla voit mitata jännitteen määrää johdossa.

http://www.yeint.fi/index.php?main=64&productID=21092&productCode=CEM+DT-103&
Halpa yleismittari
Kun ledi on kolvattu kiinni kannattaa vielä varmistaa, ettei punaisen ja mustan johdon sisällä olevat ohuet johdot kosketa toisiaan ja sitten kiinnittää usb johto Raspberryn USB-porttiin. Kytke tämän jälkeen Raspberryyn virta ja katso syttyykö valo. Valon syttymistähän et sitten näe paljain silmin vaan käyttämällä esim. kännykkäsi kameraa, joka havaitsee infrapunavaloa sen verran, että näet onko ledi päällä vai ei. Jos (kun) ledi palaa niin sammuta järjestelmä ja viimeistele johdon liitinten suojaukset esim. teipillä.

Kameran uudelleen tarkentaminen

Kuten jo aiemmin mainitsin on Rasbperry Camera Board kiinteästi tarkennettu muutaman metrin etäisyydelle, joten jos asettaisimme sen ilman muokkaamista linnunpöntön kattoon kuvamaan pöntön lattiaa n.20-25cm etäisyydeltä olisi pohja epätarkka. Tarkka tarkennus on yksi valo- / videokuvauksen kulmakiviä, joten siihen tulisi aina pyrkiä. Nyt kun emme voi muuttaa tarkennusta koodia muuttamalla tai tarkennusrengasta pyörittämällä kuten järjestelmäkameroissa, niin tarkennus pitää hoitaa mekaanisesti asettamalla oikenalainen linssi kameran eteen.

Kuva testivaiheesta kun kokeilimme linssin alle erilaisia silmälaseja nähdäksemme niiden vaikutuksen tarkennukseen.
Itselläni ei ole varmuutta millainen tuo oikeanlainen linssi tarkalleen on, koska löysin vanhat lukulasit vanhempieni hyllystä eikä laseissa itsessään lue millaiseksi linssi on hiottu. Tiedän vaan että kyseessä on lukulasit jollaisia saa supermarketeista tai bensa-asemilta muutamalla eurolla. Suuresta sijoituksesta ei siis tässäkään kohtaa ole kyse, vaikka joutuisi ostamaan parit erilaiset ja testaamaan ennen oikean löytymistä. Itse kokeilin kaikenlaisia linssejä joita olin säästänyt esim. puretusta videotykistä, joilla sai aikaan hauskoja syvyysefektejä ja joiden käyttäminen voisi olla paikallaan erilaisessa projektissa.
Linssi asetetaan aivan kiinni RasbpiCamin linssiin kovera puoli kameraan päin. Koska kameramme tulee osoittamaan alaspäin lepää kamera siis linssin päällä ja linssi välikattoon tehdyn reiän päällä. Mutta nyt on aika rakentaa itse pönttö.

Linnunpöntön rakentaminen

Linnunpöntön rakentaminen on vuosikymmenten, ellei vuosisatojen aikana kehittynyt taito, joten pyörää ei kannata keksiä uudestaan vaan etsiä vaan hyvät valmiit ohjeet sellaisen rakentamiseen. Yhdet mukavan kattavat ohjeet löytyvät osoitteesta:
http://www.birdlife.fi/lintuharrastus/linnunponttojen_rakennusohjeet.shtml
Huomaa kuitenkin lukea myös seuraava kappale ?välikaton rakentaminen? ja soveltaa sitä valitsemaasi linnunpönttöohjeeseen, jotta saamme kameran asennettua pöntön sisälle.

Välikaton rakentaminen

Jotta saamme kameran asennettua pöntön sisälle pitää meidän rakentaa välikatto. Välikaton virkaa ajaa hyvin sopivan kokoiseksi sahattu vanerin pala, joka on asennettu pöntön seinissä olevien tukipilarien päälle. Tukipilareina voivat toimia pelkät naulat tai sitten liimatut pienet rimat, ihan miten haluat. Välikaton tulisi sijaita n.20-25cm korkeudella pöntön pohjasta, jotta saamme kameraan tarpeeksi näkyvyyttä ja tarkennuksen kohdalleen.
Vaneriin täytyy tehdä kaksi reikää, infrapunavalolle ja kameran linssille. Mitä keskemmälle saat nämä sijoitettua sen parempi. Muista että kameran eteen (siis tosiasiassa alle) sijoitetaan lukulaseista irroittamasi linssi, joten reiän tulee olla hiukan isompi n.3cm halkaisijaltaan. Voit testailla asemointia itse ja sen jälkeen porata reiät tai sahata lehtisahalla, tässä kohtaa kauneudella ei ole juuri roolia, sillä välikattoa ei mistään ulospäin näy.

Laitteiston kasaaminen välikaton päälle. Kamera on suojattu säätiloilta rei'itetyllä korurasialla.
Ledi ja kamera linsseineen on hyvä kiinnittää välikattoon sinitarralla ja teipillä, jotta ne eivät enää asemoinnin jälkeen pääse liikkumaan.

Lopuksi pönttöön kiinnitetään tässä tapauksessa nahanpalalla saranoitu kansi ja pönttö kiinnitetään puuhun narulla.

Kameran kuvan jakaminen

Sisäisessä verkossa
Kuten totesimme ohjelmistoja asennettaessa kameran kuvaa voidaan seurata lähiverkossa ja Internetin yli. Nyt kun ohjelmisto on jo asennettu on aika tutkailla hiukan sen asetuksia lähemmin.
Asetuksia pääsee tutkimaan/muokkaamaan kahdella tapaa, joko SSH-yhteydellä, jolloin selataan suoraan Raspberry Pi:n käyttöjärjestelmää linux-ympäristössä käyttäen samassa verkossa olevaa PC-konetta SSH-ohjelman alustana. Toinen tapa on ottaa FTP-yhteys Raspberryyn jolloin tiedostoja voidaan siirtää sen kansioista PC-koneelle ja muokata tutummassa PC-ympäristössä esim. notepad-ohjelmalla. FTP-tavassa muokatut tiedostot pitää tietysti lopuksi siirtää takaisin Raspberrylle ja tämä saattaa vaatia tiedosto-oikeuksien muokkaamista kohdekansioiden osalta. Suosittelisin itse kokeilemaan molempia tapoja, sillä ne auttavat ymmärtämään miten järjestelmä toimii.
Molempia yhteystapoja varten pitää selvittää mikä on Raspberrysi IP-osoite. Tämä onnistuu kirjoittamalla Raspberryn komentoriville
ifconfig
Tämän jälkeen Raspberry listaa tiedot käytössä olevista verkkoasetuksista ja näiden joukosta löydät seuraavanlaisen IP-osoitteen: 192.168.1.xxx, jossa xxx määräytyy joka boottauksen yhteydessä sen mukaan mitä muita laitteita sisäisessä verkossa on. Olkoon xxx tässä yhteydessä vaikka 101.

SSH-yhteys ja tiedostojen suora muokkaus

Lataa PC-koneellesi Putty-niminen SSH-ohjelma. Käynnistä se ja kirjoita SSH-osoitteeksi (Host name or IP-address) Raspberrysi IP-osoite ja klikkaa Open. Ruudullesi aukeaa uusi ikkuna jossa näet Raspberryn komentorivin, joka ensimmäisenä kysyy käyttäjätunnusta ja salasanaa. Oletuksena nämä ovat Käyttäjä: Pi, Salasana: Raspberry (HUOM! Jos aiot jakaa kamerasi kuvaa Internetissä kannattaa salasana vaihtaa RaspiConfigistä).
Kun olet kirjautunut sisään näet komentorivin aivan kuten näet sen suoraan Raspberryyn kytketystä monitorista. Huomaa, että tämä komentorivi toimii Linux-ympäristössä, eikä siinä toimi PC-ympäristön pikanäppäimet yms.

Kuvan jakaminen Internetiin

Jotta kuvan saisi näkyviin lähiverkon ulkopuolelta meidän täytyy tietää mikä on reitittimemme IP-osoite. Tämän saat helposti selville selaamalla jollain lähiverkon koneella esim. osoitteeseen www.whatismyip.com joka listaa sinulle heti että ?your IP: 84.250.77.151? tai jotain vastaavaa.
Seuraavaksi voit heti koittaa selata jollain ulkoisen verkon koneella, esim. älypuhelimella omaan IP-osoitteeseesi kirjoittamalla sen suoraan selaimen osoiteriville (HUOM! Windows-puhelimissa IE ei välttämättä hyväksy IP-osoitteita osoitteeksi joten viimeistään tässä vaiheessa kannattaa puhelimeesi ladata esim. Operan ilmainen ja laadukas selain. Jos et motion.conf -tiedostosta vaihtanut oletusporttia 8080 toiseksi pitäisi IP-osoitteen suoraan ohjata selaimesi videosivulle. Jos vaihdoit portin niin lisää se IP-osoitteen perään kaksoispisteellä erotettuna esim. näin jos portin numerosi on 1666:
84.250.77.151:1666
Jos vaihdoit portin eikä kuva näy niin älä huolestu, tämä luultavasti ratkeaa asettamalla reitittimesi asetuksista port forwarding-asetus siten, että reitittimesi sallii liikenteen kulkea kyseisestä portista. Kaikissa reitittimissä port forwarding asetus muutetaan hiukan erilailla, mutta pääasia on että kirjoitat sinne ohjattavaksi portiksi motion.conf -tiedostoon muuttamasi portin numeron.

Järjestelmän kustomointi

Katselusivun layoutin suunnittelu ja toteutus on toisaalta valinnainen osa pönttökamerakokonaisuuden rakentamista, mutta toisaalta erittäin merkittävä asia kamerasi personointia ajatellen. Jos siis haluat että kamerasivusi näyttää tekijältään niin jatka vielä hetki, tämä on viimeinen vaihe koko projektissa :)
Kun aiemmin tämän tutoriaalin aikana asensit kameraohjelmistot Raspberryllesi niin samalla asentui koneelle myös oletus-html-sivu, eli suomeksi sanottuna nettisivu, joka näkyy katsojille heidän saapuessaan kamerasi ip-osoitteeseen. sivu on erittäin yksinkertainen: otsikko, videoruutu, toimintonapit sekä niiden alla kameran säädöt. Sinänsä tuo sivu toimii ihan ok, jos tykkäät pelkistetystä tyylistä ja haluat että kaikilla sivulle saapuvilla on mahdollisuus säätää kamera ja komentaa sitä kuvaamaan kuvia ja videota. Itse järkeilin niin, että on kiva että muut ihmiset näkevät kuvan, mutta eivät voi (tahallaan tai tahattomasti) täyttää Raspberryn rajattua muistikorttitilaa kuvaamalla joutavia videoita. Oli siis tehtävä kaksi eri sivua, joista toinen olisi yleisölle ja toinen kaikkine nappeineen minulle.
Ensin pitäisi paikallistaa html-tiedosto, joka on nimeltään index.html (index.html on oletussivu, johon selain automaattisesti hakeutuu saavuttuaan mihin tahansa ip-osoitteeseen tai nettiosoitteeseen). Tässä tapauksessa tiedosto löytyy ftp-selaimella hakemistopolusta:
var/www
Siirrä index-sivu omalle koneellesi ja tee siihen haluamasi muutokset, esim. taustakuvan vaihtaminen, fontin vaihtaminen, värien säätäminen yms. htm-ohjelmointia en tässä tutoriaalissa ala opettaa, siihen löytyy lukuisia hyviä ohjeita muualta netistä. Kun olet saanut oman ns.admin-sivusi hyvän näköiseksi tee siitä kopio ja tallenna se vaikka ?admin.html?. Nyt sinulla on kaksi identtistä html-tiedostoa, toinen index ja toinen admin. Jatka index-sivun muokkaamista siten, että poista koodista kaikki videokuvan alapuolella olevat nappulat ja valinnat. Tämän jälkeen siirrä molemmat html-tiedostot sekä mahdollisesti tarvittavat taustakuvat yms takaisin Rasbperrysi kansioon ja testaa toimivatko ne käytännössä.
Nyt kamerasi on valmis tositoimiin, toivottavasti linnut löytävät pöntön ja kamerasi pääsee tositoimiin.

Onnistuessaan tämän projektin lopputulemaa, live-kuvaa linnunpöntöstä voi seurata takan lämmössä läppäriltä tai vaikka älypuhelimesta.




Kirjoittanut: klo    0 kommenttia

lauantai, 5. lokakuuta 2013

Heippa vaan lapsukaiset! Tänään pelaamme NES-emulaattorilla. NES, eli Nintendo Entertainment System ei varmasti esittelyjä kaipaa. Kyseessä on siis Nintendon 8-bittinen pelikonsoli, joka suvereenisti hallitsi konsolimaailmaa 1980-luvun puolivälistä aina 90-luvun alkupuolelle asti. "Nintsukan" laajasta pelikirjastosta löytyy teoksia jotka ovat muovanneet 80-luvun pentujen maailmankuvaa. Pelisarjat, kuten Super Mario, Zelda, Castlevania ja Megaman tai vaikkapa Contrat ja Metroidit ovat jättäneet sukupolveemme lähtemättömän jäljen!

PiMame emulaattoripakettiin sisältyy (versiosta 0.7.8 lähtien) NES-emulaattori AdvMess. Tämä kirjainyhdistelmä tulee sanoista AdvMenu ja MESS (Multi Emulator Super System). Sanahirviöden takana piilee MAME emulaattorisoftan sisarprojekti, jonka tarkoitus on arcade-pelien ohella simuloida myös kotikonsolijärjestelmiä. AdvMenu puolestaan on MESS/MAME -emulaattoreiden "Front end", tarkoittaen käytännössä valikkoa emulaattorin ROM-tiedostojen valintaan. Jos äskeinen meni ihan ohi ei se mitään, MAME:en palaamme vielä jatkossa.

Tässä blogauksessa oletetaan että PiMAMEn asennus -ohje on käyty läpi. Pelikokemus paranee huomattavasti mikäli sinulla on asiaan kuuluva usb-liittimeen kytkettävä nintendo-ohjain ja että olet suorittanut asennusohjeessa läpi käydyn joystickin asennuksen ja kalibroinnin.

Aloitetaan! Ensiksi kannattaa säätää config-filut kohdilleen. Config-tiedosto ohjaa emulaattorin toimintaa. Jokaiselle emulaattorille on oma config-tiedostonsa, joka on tekstitiedosto ja sitä voi muokata vaikkapa notepadilla. Voit siirtää config-tiedoston tietokoneellesi FTP-yhteydellä ja muokata tiedostoa koneellasi ja sen jälkeen siirtää config-tiedoston takaisin Raspberryyn FTP:llä. Voit toki myös muokata configgia suoraan raspberryssä käyttämällä esimerkiksi sudo nano -komentoa.

Voit skipata tämän ja seuraavan kappaleen mikäli et käytä joystickiä. Avataa tiedosto /home/pi/.advance/advmenu-mess.rc. Muokkaa rivi device_joystick none -> device_joystick raw tai device_joystick auto. Tämän asetuksen pitäisi tehdä pelivalikon joystickillä ohjattavaksi. asetus raw tai auto riippuen ohjaimesi yhteensopivuudesta. Kokeile. Tallenna tiedosto Raspberry PI:hisi ja korvaa sillä edellinen advmenu-mess.rc tiedosto.

Avaa tiedosto /home/pi/.advance/advmess.rc. Tämä tiedosto pitää sisällään asetukset siitä, miten NES-emulaattorimme toimii. Lähinnä tässä vaiheessa meitä kiinnostaa joystickin konfiguraatio, mikä löytyy aivan advmess.rc-tiedoston loppupäästä. Input_map -riveillä määritellään mikä kontrolli vastaa mitäkin nappulaa ohjaimessasi. Saadaksesi selvillä ohjaimesi näppäinkoodit, on sinun komentorivillä ajettava komento jstest /dev/input/js0 (lisätietoja asennusohjeessa). Kirjota ylös mikä koodi vastaa mitäkin näppäintä ohjaimessasi. Itselläni toimii hyvin seuraava konfiguraatio:
input_map[p1_button1] joystick_button[0,3]
input_map[p1_button2] joystick_button[0,2]
input_map[p1_start] joystick_button[0,9]
input_map[p1_select] joystick_button[0,8]
input_map[p1_button3] joystick_button[0,1]
input_map[p1_button4] joystick_button[0,0]


Esimerkissä siis määritellään esimerkiksi että p1_button1 = joystickissa nappi nro. 3. P1 siis tarkoittaa pelaaja 1:ä. Mikäli käytössä on useampia ohjaimia, on näppäimet määriteltävä jokaiselle ohjaimelle erikseen. Kokeilemalla saavutat parhaan tuloksen, älä menetä hermojasi vielä. Lisäksi kannattaa lisätä vielä seuraava rivi:
input_map[ui_cancel] joystick_button[0,4] joystick_button[0,5]

Tämä asetus lisää cancel-näppäimen joystickiin. Tässä tapauksessa se tehdään painamalla ohjaimeni kulmanäppäimiä yhtäaikaa. Kyllä, yhdelle toiminnolle voidaan määrittää useamman näppäimen painallus yhtäaikaa. Cancel-toimintoa ei jostain syystä ole oletuksena määritetlty configissa. Tämä toiminto vastaa siis ESCin painallusta pelin aikana, eli toisin sanoen voit lopettaa pelin ja palata pelivalikkoon käyttämättä näppäimistöä.

Toimivan emulaattorin lisäksi tarvitsemme myös pelejä, eli ROM:eja, joita voimme pelata emulaattorilla. Se mistä ROM:ja saa, ei kuulu tämän manuaalin eikä sivuston aihepiiriin. Huomautettava on tässä välissä, että vaikka ROM:eja netistä löytääkin helpolla, on suurin osa niistä edelleen tekijänoikeuden alaista materiaalia, vaikka pelin tuottanut yritys olisikin aikaa sitten kuopattu. Ohjeen tässä vaiheessa oletetaan että olet ladannut koneellesi ROM:meja, joista omistat alkuperäiset kappaleet.

Siirretään siis seuraavaksi ROM:it Raspberry Pi:hin. Ota FTP-yhteys PI:hin, valitse kansio /home/pi/roms/nes, siirrä tähän kansioon haluamasi ROM:it. Huomioi, että NES ROM:it tulee olla purettu pois zip- tai rar-paketistaan ja ROM:in pääte tulee olla .nes.

Käynnistetään NES! Laita virta PiMameen ja odota että päävalikko käynnistyy. Valitse consoles -valikko ja sieltä NES (AdvanceMESS). Eteesi avautuu lista ROMmeista, jotka olet Raspberryysi siirtäny. Valitse peli näppiksellä tai ohjaimellasi (ohjaimen pitäisi tässä vaiheessa toimia, mikäli olet noudattanyt tätä ohjetta ja kaikki on sujunut hyvin) ja paina enter tai ohjaimen nappulaa (oletusnäppäin vaihtelee ohjaimen mukaan, huom. että yksi napeista on ESC ja palaa siis emulaattorivalikkoon, mikäli näppäilet väärin).

Kun peli käynnistyy on toiminta tästä edespäin kutakuinkin samanlaista kuin pelaisit aidolla Nintendolla. ESC-näppäimellä pääset valikkoon, jossa voit poistua pelistä. F1 nappulasta näet näppäinkartan, joka ilmaisee mitä nappuloita painat. Se on hyvä tietää, mikäli joudut enemmänkin säätämään nappuloita ohjaimesta tai näppäimistöstä. Emulaattorissa on muitakin toimintoja, kuten ruudunpäivityksen nopeudensäätö, sekä pelitilanteen tallentaminen (SHIFT+F7) ja lataaminen (F7). Itse en ainakaan onnistunut pelitilanteen tallentamisella ja lataamisella muuta kuin sekoittamaan koko pelin. Kokeile itse.

"Kuka kiroo" tapasi äitini sysyä keittiöstä kun pienenä poikana pelejä tahkosimme pää punaisena. Joten muista, älä menetä hermojasi... kauheasti ;)


Kirjoittanut: klo    0 kommenttia

sunnuntai, 15. syyskuuta 2013

PiMAMEn voi nykyään päivittää kätevästi suoraan komentoriviltä, eikä se näin ollen vaadi koko järjestelmän uudelleen kortille asennusta. Uusimmassa versiossa on usein hyödyllisiä päivityksiä tai jopa uusia emulaattoreita (v.0.7.9 toi mukanaan Sega Megadriven!) Kun huomaat että uusi versio on julkaistu voit suorittaa päivityksen näin:

Käynnistä Raspberrysi ja odota kunnes PiMAME päämenu käynnistyy. Valitse menusta Exit ja tämän jälkeen kirjaudu root-käyttäjätunnuksella kirjoittamalla:

sudo su

Olet nyt oletushakemistossa (/home/pi) ja sinun pitää siirtyä asennuskansioon, eli kirjoita komentoriville kansion avaava komento "cd", jonka perään avattavan kansion nimi "pimame_installer":

cd pimame_installer

Seuraavaksi tarvitsee enää käynnistää päivitys ja tämä onnistuu seuraavanlaisella komennolla:

./update.sh

Nyt Raspberrysi pitäisi alkaa päivittää PiMAME-asennusta automaattisesti uusimpaan versioon. Asennus kestää nettinopeudesta riippuen n.10-30min. Jos olet itse muokannut jotain configurointitiedostoja (esim. ohjainten asetuksia tms) niin näitä tiedostoja ei päivitetä. Päivityksen ei siis pitäisi (ainakaan teoriassa) nollata mitään asetuksia tai poistaa tallennettuja pelitilanteita tms. ja ainakin oman testailun pohjalta voin sanoa että näin homma on todellisuudessakin.
Kirjoittanut: klo    0 kommenttia