Liiketunnistin
Sisältö
Yleistä
Tässä ohjeessa esitellään, kuinka voidaan tunnistaa liikettä käyttäen Arduino kehitysalustaa ja edullista pir-liiketunnistina. Pir-liiketunnistin tunnistaa ympärillä olevan infrapunasäteilyn muutokset, joita tulee esimerkiksi ihmisen liikkuessa. Käytännössä Pir-liiketunnistin toimii hieman samalla tavalla kuten esimerkiksi valokatkaisija, eli havaitessaan muutokseet, sensori menee päälle ja jos liikettä ei tapahdu määritellyn ajan kuluessa sensori menee pois päältä. Toisin sanoen Pir-liiketunnistimella ei voi mitata etäisyyttä, vaan se on digitaalinen sensori, joka kertoo vain onko liikettä vai ei. Analoginen sensori, kertoisi meille liikkeentunnistamisen lisäksi kuinka kaukana tai nopeasti joku liikkuu.
Tarvitset tehtävään tietokoneen.
Voit tehdä kytkennän alla mainituilla osilla tai hyödyntää valmista permaproto-kytkentää, jonka löydät Meta-boxi tarvikkeista. Permaproto-kytkennän kanssa tarvitset Arduino-mikrokontrollerin, tietokoneen ja USB-johdon.
Osat
PIR-liiketunnistin
Meta-Boxin mukana tulevat Pir-sensorit voidaan kytkeä Arduinon +5-volttiin (punainen johto). Jokainen Pir-sensori on hieman erilainen.
Kytkennät
Pir-liiketunnistin kytketään arduinoon (mallista riippuen) +5-voltin pinniin, maahan, sekä valitsemaan digitaaliseen pinniin. Tässä esimerkissä se on kytketty pinniin 2.
Tee alla oleva kytkentä ennen siirtymistä ohjelmointi osioon. Voit tehdä kytkennän joko edellä mainituista irto-osista tai kokeilla ensin valmiilla perma-proto kytkennällä. Tällöin riittää että kytket hyppylangat kuvan mukaisesti oikesiin kohtiin Arduinossa.
Ohjelmoiminen
Graafinen ohjelmointi
- Avaa Arduino IDE
- Kytke Arduino UNO koneeseen USB kaapelilla
- Avaa Arduino IDE ja lataa Arduinoon Firmata-koodi. Kuvasta näkyy, mistä koodi löytyy.
4. Avaa Snap4Arduino-ohjelmointiympäristö.
5. Rakenna koodi esimerkin mukaan. Muista yhdistää Arduino ohjelmaan painamalla ohjelman valikosta ”connect arduino”.
Koodin rakentaminen Snap4Arduino ohjelmointiympäristössä
- Valitse Ohjaus-välilehdestä ”Kun klikataan ”vihreä lippu””
- Valitse Ohjaus välilehdestä Ikuisesti-komento
- Valitse Ohjaus-välilehdestä Jos—muuten-komento ja raahaa se rakennettavan ohjelmointikoodin jatkoksi.
- Valitse Laskenta-välilhdestä vihreä yhtäsuuri kuin palkki (katso kuva alla) ja raahaa se jos sanan jälkeen olevaan tyhjään valkoiseen laatikkoon.
- Valitse Arduino-välilehdestä”digital reading”-komento ja raahaa se yhtä suuri kuin palkin ensimmäiseen tyhjään laatikkoon. Aseta Digital reading -komennon alasvetonuolesta pinniksi 2.
- Lisää toiseen yhtä suuri kuin palkin laatikkoon Laskenta valikosta ”tosi”-painike.
- Tämä vastaa samaa kuin HIGH tai ON.
- Valitse Arduino-välilehdestä ”set digital pin”-komento ja raahaa se JOS sanan alle.
- Aseta ”set digital pin”-komennon numeroksi 13. (Tämä vastaa siis pinniä missä Led-valo on kytketty.)
- Aseta ”set digital pin”-komennon oikealla oleva painike vihreäksi, tämä laittaa siis ledin päälle.
- Raahaa toinen ”set digital pin”-komento MUUTEN sanan alle.
Painamalla vihreää lippua pitäisi led-valon syttyä aina kun Pir-liiketunnistin havaitsee liikettä ja sammua silloin kuin se ei havaitse.
Ohjelmointi Arduinolla
Pir-liiketunnistinta voi helposti ohjelmoida myös suoraan Arduinosta. Oheinen koodi tekee saman kuin ylläoleva koodi: Laittaa ledin päälle kun liikettä tunnistetaan. Vaikka teksipohjainen ohjelmointi voi olla vaikeaselkoisempaa, voi sillä tehdä helposti monipuolisia ohjelmia, eikä tietokoneen tarvitse olla auki tai kytkettynä Arduinoon. Kopioi ja lataa alla oleva koodi Arduinoon.
/* * Pir-liiketunnistimen demokoodi */ int led = 13; // Led-valo kytkettynä pinniin 13 int pir = 2; // pinni missä pir-liiketunnistin on kiinni int pirState = LOW; // muuttuja, joka komentaa liiketunnistimen tilaa, asetettuna aluksi pois päältä int val = 0; // muuttuja johon luetaan liiketunnistimen tila void setup() { pinMode(led, OUTPUT); //Led-valon pinnin asettaminen outputiksi pinMode(pir, INPUT); // Liiketunnistimen pinnin asettaminen inputiksi Serial.begin(9600); // Aloitetaan yhteys arduinon ja tietokoneen välille, vianmäärittelyyn yms. } void loop(){ val = digitalRead(pir); //luetaan liiketunnistimen tila if (val == HIGH) { // tarkastetaan onko tunnistin päällä ja jos se on päällä laitetaan led paalle. digitalWrite(led, HIGH); if (pirState == LOW) { // we have just turned on Serial.println("Liiketta havaittu"); pirState = HIGH; } } else { digitalWrite(led, LOW); // jos liikettä ei ole havaittu, pistetään led pois päältä. if (pirState == HIGH){ // we have just turned of Serial.println("Ei liiketta"); pirState = LOW; } } }
Mitä seuraavaksi?
Voit muuttaa PIR-sensorin herkkyyttä ja aikaa kuinka kauan se on päällä suoraan vääntämällä sensorissa olevia potentiometrejä eli keltaisia säätöruuveja.
Liiketunnistinta voi käyttää moneen asiaan, esimerkiksi laittamaan moottorin päälle kun joku liikkuu, tai valot vilkkumaan kun joku liikkuu. Liiketunnistimen voi myös laittaa osaksi monipuolisempaa ohjelmaa.
Seuraavaksi voit kokeilla servomoottorin toimintaa!