Arduino Oefening 5 – PIR Sensor

In deze oefening gaan we beweging detecteren met behulp van een PIR sensor. Een PIR sensor detecteert beweging met behulp van infra rood straling. De PIR sensor bevat twee infra rood sensoren waartussen het verschil wordt gemeten om te bepalen of iets beweegt. Wanneer er beweging wordt gedetecteerd geeft de middelste pin een signaal af.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • LED met ingebouwde weerstand of een 220 ohm weerstand
  • PIR sensor

Aansluitschema

arduino-with-pir-motion-sensor-schematics

Code

Code om de PIR sensor te testen is te vinden op:
http://playground.arduino.cc/Code/PIRsense

Let op! Het PIR signaal (gele kabel) moet om de code te laten werken aangesloten worden op pin 3.

In het code voorbeeld is voornamelijk de volgende code belangrijk voor de detectie en het inschakelen van de LED:

if(digitalRead(pirPin) == HIGH){
  digitalWrite(ledPin, HIGH);
}

pir-sensor

De waarde pirPin bevat het signaal van de PIR sensor.

De de grootte van het verschil tussen de twee sensoren voordat beweging wordt gedetecteerd kan ingesteld worden door middel van de twee (in dit geval oranje) potmeters die op het printplaatje zijn bevestigd. De potmeters kunnen met behulp van een schroevendraaier worden ingesteld.

Arduino Oefening 4 – Poort manipulatie

In deze oefening werken we met poort manipulatie om de aangesloten LED’s in of uit te schakelen.

Middels poort manipulatie geven we in één enkele byte aan het poort register door welke poorten binnen een bepaald segment van de Arduino Board ingeschakeld (1) of uitgeschakeld (0) moeten worden (PORTB) en of het om IN of OUTPUT gaat (DDRB). Meer weten? Lees er hier meer over.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • Rode LED met ingebouwde weerstand of een 220 ohm weerstand
  • Groene LED met ingebouwde weerstand of een 220 ohm weerstand
  • Gele LED met ingebouwde weerstand of een 220 ohm weerstand
  • Pushbutton
  • 10K ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en LED’s in diverse kleuren met ingebouwde weerstand. Ook de pushbutton en de 10k ohm weerstand zijn inbegrepen.

Aansluitschema

Oefening-4

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 8-3-2016
 Port Manipulation Voorbeeld
*/

const long interval = 10000;

int buttonPin = 2;
bool buttonWaarde;
bool disco;

void setup() {
  DDRB = B11111111;
  pinMode(buttonPin, INPUT);
}

void loop() {

  buttonWaarde = digitalRead(buttonPin);

  if(buttonWaarde==HIGH) {
    disco = !disco;
    delay(1000);
  }

  if(disco) {
    switch(millis() % interval) {
      case 0: { PORTB = B00011100; break; }
      case 1000: { PORTB = B00011100; break; }
      case 2000: case 5000: { PORTB = B00010000; break; }
      case 3000: case 6000: { PORTB = B00011000; break; }
      case 4000: case 7000: { PORTB = B00011100; break; }
      case 8000: { PORTB = B00000000; break; }
      case 9000: { PORTB = B00001110; break; }
      case 10000: { PORTB = B00000000; break; }
    }
  } else {
    PORTB = B00000000;
  }
 
}

Met segment B worden de poorten 8 tot 13 aangestuurd. We vermijden de delay-functie en gebruiken in plaats daarvan de millis-functie om te bepalen welke byte weggeschreven moet worden naar PORTB.

Arduino Oefening 3 – NTC

In deze oefening lezen we de waarde van een warmte gevoelige weerstand uit (NTC) en tonen deze via de seriële monitor wanneer er op de pushbutton (knopje) gedrukt wordt.

Een NTC-weerstand, ook wel Thermistor genoemd, reageert op temperatuur. Wanneer de temperatuur stijgt, neemt de weerstand van de NTC af. Lees er hier meer over.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • Pushbutton
  • 10k Warmte gevoelige weerstand (NTC)
  • 2x 10K ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand. Ook de pushbutton, 10k ohm NTC en de 10k ohm weerstanden behoren tot de inhoud.

Aansluitschema

Oefening-3

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 28-02-2016
 NTC Temperatuur gevoelige weerstand (voorbeeld code)
*/

#define NTCPIN A0 // NTC sensor pin

float waarde;

int buttonPin = 2;
bool buttonWaarde;

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
}

void loop() {
 
  waarde = analogRead(NTCPIN);
  buttonWaarde = digitalRead(buttonPin);

  if(buttonWaarde==HIGH) {
    Serial.print("NTC waarde: ");
    Serial.println(waarde);
  }
 
  delay(1000);
 
}

De parameter ‘waarde’ bevat de waarde van de NTC (ongeveer tussen de 300 en 800). Wanneer op de knop wordt gedrukt (buttonWaarde), wordt de waarde weggeschreven naar de seriële monitor (Serial.print).

Arduino Oefening 2 – PWM poort

In deze oefening bepalen we de lichtsterkte van een LED d.m.v puls breedte modulatie (PWM – Pulse Width Modulation) met behulp van een potmeter. Nieuwsgierig hoe dit precies werkt? Lees er hier meer over.

Een potmeter is een draaibare weerstand. Door te draaien wordt de weerstand bepaalt. Sommige potmeters hebben een zogenaamde center click zodat je weet waar het midden zit.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • LED met ingebouwde weerstand of een 220 ohm weerstand
  • 10k ohm Potmeter

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand. Ook de 10k ohm potmeter incl. draadknop zijn inbegrepen.

Aansluitschema

Oefening-2

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 28-02-2016
 Potmeter (voorbeeld code)
*/

#define POTMETER A0
int ledPin = 3;
int waarde;

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  waarde = analogRead(POTMETER) / 4;
  analogWrite(ledPin, waarde);
  //Serial.print("Waarde: ");
  //Serial.println(waarde);
  //delay(500);
}

De waarde van de potmeter (maximaal 1024) delen we door 4 en vervolgens bepalen we daar de waarde van de PWM poort mee (maximaal 255).

Arduino Oefening 1 – LDR

In de volgende oefening sluiten we een licht gevoelige weerstand (LDR) aan om, wanneer het donker wordt, een LED te laten branden!

Een LDR (light-dependent resistor) is een elektrisch component waarvan de weerstand wordt bepaalt door de hoeveelheid licht die wordt opgenomen door het zonnepaneel-achtige oppervlak van het component. Nieuwsgierig hoe een LDR nou precies werkt? Lees er hier meer over.

Benodigdheden

  • Arduino Board
  • Breadboard & aansluitkabels
  • LED met ingebouwde weerstand of een 220 ohm weerstand
  • Licht gevoelige weerstand (LDR)
  • 10k ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand. Ook de LDR en 10k ohm weerstand behoren tot de inhoud.

Aansluitschema

Oefening-1

Code

/*
 Geschreven door: Rogier van Onna (Elonisas IOT)
 Datum bijgewerkt: 28-02-2016
 LDR Lichtgevoelige sensor (voorbeeld code)
*/

#define LDRPIN A0 // LDR sensor pin

float waarde;

void setup() {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
}

void loop() {
 
  waarde = analogRead(LDRPIN);
 
  //Serial.print("LDR waarde: ");
  //Serial.println(waarde);

  digitalWrite(13,(waarde < 550 ? HIGH : LOW));

  delay(1);
 
}

De LDR wordt uitgelezen via een analoge poort (A0 in dit geval). De parameter ‘waarde’ bevat de waarde die de LDR terug geeft (ongeveer tussen de 300 en 800). Is deze waarde lager dan 550, dan wordt de LED ingeschakeld.

De 10k ohm weerstand die op GND (ground) aangesloten is, voert de overtollige spanning af. Dit is noodzakelijk zodat de waarde, die via de analoge poort wordt doorgegeven, klopt.

 

Aan de slag met de Arduino Board

We vertellen graag wat meer over de Arduino Board. De eerste board werd in 2005 gelanceerd. Het doel van deze board was om het voor beginners en professionals op een eenvoudige en laagdrempelige manier mogelijk te maken apparaten te creëren die interactie hadden met hun omgeving middels sensoren en actuatoren. Doormiddel van op de Arduino Board geprogrammeerde instructies worden de sensoren uitgelezen en de actuatoren in werking gesteld.

Getting Started

De eerste stap om aan de slag te kunnen met de Arduino Board is het installeren van de Arduino Software. Deze is hier te downloaden.

De tweede stap is het aansluiten van de Arduiono Board op de USB poort van je computer. Vervolgens kan in de software aangegeven worden welk type Arduino aangesloten is.

We beginnen met de meest eenvoudige oefening. Het aansluiten van een LED die we vervolgens laten knipperen. Het is een van de voorbeelden die meegeleverd worden met de Arduino Software. Uitgebreide uitleg over deze oefening en meer basis oefeningen zijn hier te vinden.

Benodigdheden

  • Arduino Board
  • LED met ingebouwde weerstand of een 220 ohm weerstand

De kit aangeschaft? Dan ben je in het bezit van een Arduino UNO Board en een LED met ingebouwde weerstand.

Aansluitschema

Sluit de LED aan op GND (ground) met het korte pootje en op poort 13 met het lange pootje. Let op! Controleer of je de juiste LED gebruikt (met ingebouwde weerstand). Mocht dat niet het geval zijn, gebruik dan een 220 ohm weerstand tussen poort 13 op de Arduino Board en het langste pootje van de LED.

GettingStarted

Code

De boel aangesloten? Upload dan de volgende code naar de Arduino Board. De LED begint nu te knipperen.

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the Uno and
  Leonardo, it is attached to digital pin 13. If you're unsure what
  pin the on-board LED is connected to on your Arduino model, check
  the documentation at http://www.arduino.cc

  This example code is in the public domain.

  modified 8 May 2014
  by Scott Fitzgerald
 */


// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin 13 as an output.
  pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(13, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);              // wait for a second
}

Werkt het? Probeer dan eens de delay te veranderen naar bijv. 500 (een halve seconden) of 2000 (2 seconden). De LED gaat nu sneller of minder snel knipperen.