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.)

Pir-liiketunnistin kytketään arduinoon (mallista riippuen) +5-voltin pinniin, maahan, sekä valitsemaan digitaaliseen pinniin. Tässä esimerkissä se on kytketty pinniin 2.

Aloita katsomalla aiheesta video.

Osat

Pir-liiketunnistin

Ohjelmointisalkun mukana tulevat Pir-sensorit voidaan kytkeä Arduinon +5-volttiin (punainen johto).

 

Led-valo


Kondensaattorilla Led-valoa käytetään esimerkissä kertomaan koska liike on tunnistettu. Se ei ole pakollinen liikkeentunnistuksessa, vaan liikkeentunnistus voi kytkeä päälle myös muita laitteita tai ohjelman osia.

Arduino

Koekytkentälevy

Hyppylankoja

Kytkennät


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. (Klikkaa kuva suuremmaksi.)

4. Avaa Snap4Arduino-ohjelmointiympäristö.
     5. Rakenna koodi esimerkin mukaan. Muista yhdistää Arduino ohjelmaan painamalla ohjelman valikosta ”connect arduino”. (Klikkaa
         kuva suuremmaksi.) 

Koodin rakentaminen Snap4Arduino ohjelmointiympäristössä

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

+ Pir-liiketunnistin ohjaamaan moottoria

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.