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.

Vastus (330 ohm)

 Vastukse väriraidat: Oranssi-oranssi-ruskea-punainen

Arduino

Hyppylankoja 9 kpl

Hyppylankojen värillä ei ole väliä.

USB A-B

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

  1.     Avaa Arduino IDE
  2.     Kytke Arduino UNO koneeseen USB kaapelilla
  3.     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ä

  1. Valitse Ohjaus-välilehdestä ”Kun klikataan ”vihreä lippu””
  2. Valitse Ohjaus välilehdestä Ikuisesti-komento
  3. Valitse Ohjaus-välilehdestä Jos—muuten-komento ja raahaa se rakennettavan ohjelmointikoodin jatkoksi.
  4. Valitse Laskenta-välilhdestä vihreä yhtäsuuri kuin palkki (katso kuva alla) ja raahaa se jos sanan jälkeen olevaan tyhjään valkoiseen laatikkoon.
  5. 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. 
  6. Lisää toiseen yhtä suuri kuin palkin laatikkoon Laskenta valikosta  ”tosi”-painike.
  7. Tämä vastaa samaa kuin HIGH tai ON.
  8. Valitse Arduino-välilehdestä ”set digital pin”-komento ja raahaa se JOS sanan alle.
  9. Aseta ”set digital pin”-komennon numeroksi 13. (Tämä vastaa siis pinniä missä Led-valo on kytketty.)
  10. Aseta ”set digital pin”-komennon oikealla oleva painike vihreäksi, tämä laittaa siis ledin päälle.
  11. 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!