Domotica


Introductie

Aan het einde van dit hoofdstuk kun je:

Introductie

Arduino en IDE

ARDUINO_UNO_A06-3102750200.png

Wat is Arduino?

Arduino is een open-source elektronica platform gebaseerd op gebruiksvriendelijke hardware en software. Het is ontworpen voor artiesten, ontwerpers, hobbyisten en iedereen die geïnteresseerd is in het creëren van interactieve projecten.

Waarom Arduino?

Installeren van de Arduino IDE

De Arduino IDE (Integrated Development Environment) is de software waarmee je programma's (ook wel "sketches" genoemd) voor je Arduino kunt schrijven en uploaden.

Stappen:

  1. Downloaden: Ga naar www.arduino.cc/en/software en download de juiste versie voor jouw besturingssysteem (Windows, macOS, Linux).
  2. Installeren: Volg de installatie-instructies op het scherm.
  3. Start de IDE: Open de Arduino IDE nadat de installatie is voltooid.

image.png

Verkennen van de Arduino IDE

Introductie

Eerste programma

Je eerste programma: "Blink"

Het "Blink" voorbeeld laat een LED op de Arduino-board knipperen.

Stappen:

  1. Hardware voorbereiden: Sluit je Arduino aan op de computer met de USB-kabel.
  2. Board selecteren: Ga in de IDE naar Hulpmiddelen > Board en selecteer jouw Arduino-model (bijv. Arduino Uno).
  3. Poort selecteren: Ga naar Hulpmiddelen > Poort en selecteer de poort waaraan je Arduino is verbonden.
  4. Voorbeeld openen: Ga naar Bestand > Voorbeelden > 01.Basics > Blink.
  5. Code begrijpen: Bekijk de code en lees de commentaarregels om te begrijpen wat er gebeurt.
  6. Uploaden: Klik op de "Uploaden" knop om de code naar je Arduino te sturen.
  7. Observeer: De ingebouwde LED (meestal verbonden aan pin 13) zal beginnen te knipperen.

Aanpassen van de knipperfrequentie

Laten we de snelheid waarmee de LED knippert aanpassen.

Stappen:

  1. Code aanpassen: Zoek de regels met delay(1000);.
  2. Verander de waarden: Pas de vertraging aan naar delay(500); voor een snellere knippering.
  3. Uploaden: Stuur de aangepaste code opnieuw naar de Arduino.
  4. Observeer: De LED zou nu sneller moeten knipperen.

Opdracht

Instructies:

  1. Verander de delay waarden om verschillende knipperpatronen te creëren.
  2. Experimenteer met zeer korte en lange vertragingen.
  3. Voeg commentaar toe aan je code om uit te leggen wat je hebt aangepast.
  4. Sla je aangepaste sketch op onder een nieuwe naam.

Extra Uitdaging

Digitale inputs en outputs

Aan het einde van dit hoofdstuk kun je:

Digitale inputs en outputs

Werken met een LED

Digitale Signalen

Werken met LED's (Digitale Outputs)

LED aansluiten:

  1. Componenten: LED, 220Ω weerstand, breadboard, jumper wires.
  2. Aansluiting:
    • Verbind de anode (+, lange poot) van de LED via de weerstand met digitale pin 9 van de Arduino.
    • Verbind de kathode (-, korte poot) van de LED met de GND (ground) van de Arduino.

Code om LED te laten branden:

void setup() {
  pinMode(9, OUTPUT); // Zet pin 9 als output
}

void loop() {
  digitalWrite(9, HIGH); // Zet pin 9 hoog (LED aan)
}

Digitale inputs en outputs

Werken met een knop

Knop aansluiten:

  1. Componenten: Drukknop, 10kΩ weerstand (pull-down), breadboard, jumper wires.
  2. Aansluiting:
    • Verbind één kant van de knop met 5V.
    • Verbind de andere kant van de knop met digitale pin 7 en met een 10kΩ weerstand naar GND.

Code om knop uit te lezen:

void setup() {
  pinMode(7, INPUT); // Zet pin 7 als input
  pinMode(9, OUTPUT); // LED pin
}

void loop() {
  int knopStatus = digitalRead(7); // Lees de status van de knop

  if (knopStatus == HIGH) {
    digitalWrite(9, HIGH); // Zet LED aan
  } else {
    digitalWrite(9, LOW); // Zet LED uit
  }
}

Uitleg van de Code

Opbouw van de Schakeling

Veelgemaakte Fouten

Veiligheidstips

Analoge inputs en outputs

Aan het einde van dit hoofdstuk kun je:

Analoge inputs en outputs

Analoge signalen

image.png

Analoge Signalen

Verschil met Digitale Signalen:

Analoge Inputs: Potentiometers

Wat is een potentiometer?

Aansluiten van een potentiometer:

  1. Componenten: Potentiometer, breadboard, jumper wires.
  2. Aansluiting:
    • Verbind de middelste pin van de potentiometer met analoge pin A0 van de Arduino.
    • Verbind één van de buitenste pinnen met 5V.
    • Verbind de andere buitenste pin met GND.

Analoge Outputs: LED-helderheid met PWM

Wat is PWM (Pulse Width Modulation)?

LED-helderheid aanpassen:

Aansluiten van de LED:

  1. Componenten: LED, 220Ω weerstand, breadboard, jumper wires.
  2. Aansluiting:
    • Verbind de anode (+) van de LED via de weerstand met PWM pin 9.
    • Verbind de kathode (-) van de LED met GND.

Code om de LED-helderheid te regelen met een potentiometer

Stap-voor-stap uitleg:

  1. Lees de waarde van de potentiometer:

     
    int sensorValue = analogRead(A0);

     

  2. Converteer de sensorwaarde naar een PWM-waarde:

    • De analogRead() geeft een waarde tussen 0 en 1023.
    • De analogWrite() verwacht een waarde tussen 0 en 255.
    • We gebruiken de map() functie om dit om te zetten.
      int outputValue = map(sensorValue, 0, 1023, 0, 255);
  3. Schrijf de PWM-waarde naar de LED:
    analogWrite(9, outputValue);

Volledige code:

void setup() {
  // Geen setup nodig voor dit voorbeeld
}

void loop() {
  int sensorValue = analogRead(A0);             // Lees de potentiometer
  int outputValue = map(sensorValue, 0, 1023, 0, 255); // Converteer naar PWM-waarde
  analogWrite(9, outputValue);                  // Pas LED-helderheid aan
}

Uitleg van de Code

Opdracht

Doel: Maak een LED-dimmer met behulp van een potentiometer.

Instructies:

  1. Bouw de schakeling zoals hierboven beschreven.
  2. Schrijf de code over in de Arduino IDE.
  3. Upload de code naar je Arduino.
  4. Draai aan de potentiometer en observeer hoe de helderheid van de LED verandert.

Extra Uitdagingen

Veelgemaakte Fouten

Veiligheidstips

Werken met sensoren

Aan het einde van dit hoofdstuk kun je:

Werken met sensoren

Sensoren

Introductie tot Sensoren

Werken met een Lichtsensor (LDR)

Hoe werkt een LDR?

Aansluiten van een LDR:

  1. Componenten: LDR, 10kΩ weerstand, breadboard, jumper wires.
  2. Aansluiting:
    • Verbind één kant van de LDR met 5V.
    • Verbind de andere kant van de LDR met analoge pin A0 en met een 10kΩ weerstand naar GND (vormt een spanningsdeler).

Code om de LDR uit te lezen

Stap-voor-stap uitleg:

  1. Lees de waarde van de LDR:

    int sensorValue = analogRead(A0);
  2. Toon de waarde op de seriële monitor:
    Serial.println(sensorValue);

Volledige code:

void setup() {
  Serial.begin(9600); // Start seriële communicatie
}

void loop() {
  int sensorValue = analogRead(A0); // Lees de LDR
  Serial.println(sensorValue);      // Toon de waarde
  delay(500);                       // Wacht een halve seconde
}

Gebruik van de Seriële Monitor:

LED automatisch aanzetten bij weinig licht

Uitbreiding van de code:

  1. Stel een drempelwaarde in:

     
    int drempel = 500; // Pas deze waarde aan op basis van je metingen
  2. Gebruik een if-else statement om de LED te sturen:
    if (sensorValue < drempel) {
      digitalWrite(9, HIGH); // Zet LED aan
    } else {
      digitalWrite(9, LOW);  // Zet LED uit
    }

Volledige code met LED-besturing:

void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT); // Zet pin 9 als output voor de LED
}

void loop() {
  int sensorValue = analogRead(A0);
  Serial.println(sensorValue);
  
  int drempel = 500; // Stel je eigen drempelwaarde in
  
  if (sensorValue < drempel) {
    digitalWrite(9, HIGH); // LED aan
  } else {
    digitalWrite(9, LOW);  // LED uit
  }
  
  delay(500);
}

Uitleg van de Code

Opdracht

Doel: Laat een LED automatisch aangaan wanneer het donker wordt.

Instructies:

  1. Bouw de schakeling met de LDR en LED zoals hierboven beschreven.
  2. Schrijf of kopieer de code in de Arduino IDE.
  3. Upload de code naar je Arduino.
  4. Gebruik je hand of een voorwerp om licht op de LDR te blokkeren en observeer hoe de LED reageert.
  5. Pas indien nodig de drempelwaarde aan voor optimale werking.

Extra Uitdagingen

Veelgemaakte Fouten

Veiligheidstips

 

 

Actuatoren en motoren

Aan het eind van dit hoofdstuk kun je:

Actuatoren en motoren

Wat zijn actuatoren?

image.png

Definitie: Een actuator is een apparaat dat energie omzet in beweging. Het wordt gebruikt om een systeem of mechanisme te controleren of te bewegen.

Voorbeelden van actuatoren:

Waarom actuatoren gebruiken?

Actuatoren en motoren

Werken met servomotoren

Wat is een Servomotor?

Aansluiten van een Servomotor:

  1. Componenten: Servomotor (bijv. SG90), Arduino, breadboard, jumper wires.

  2. Draden van de servo:

    • Rood: Voedingsspanning (meestal 5V).
    • Bruin of Zwart: Aarde (GND).
    • Geel, Oranje of Wit: Signaal (PWM-besturingssignaal).
  3. Aansluiting:

    • Verbind de rode draad met de 5V pin van de Arduino.
    • Verbind de bruine/zwart draad met GND.
    • Verbind de geel/oranje/witte draad met digitale pin 9 (PWM pin).

Let op: Sommige servomotoren kunnen meer stroom trekken dan de Arduino kan leveren. Voor dit voorbeeld is het veilig, maar voor grotere servo's moet je een externe voeding gebruiken.

De Servo Bibliotheek

Toevoegen van de Servo Bibliotheek:

Code om de Servomotor te Besturen

Basiscode om de servo te bewegen:

#include <Servo.h>

Servo mijnServo;  // Maak een Servo object aan

void setup() {
  mijnServo.attach(9);  // Verbind de servo met pin 9
}

void loop() {
  mijnServo.write(0);    // Beweeg naar 0 graden
  delay(1000);           // Wacht 1 seconde
  mijnServo.write(90);   // Beweeg naar 90 graden
  delay(1000);
  mijnServo.write(180);  // Beweeg naar 180 graden
  delay(1000);
}

Uitleg van de Code:

 

Actuatoren en motoren

Servo besturen met een potentiometer

Sensorinput gebruiken om de servo te besturen:

  1. Aansluiting van de potentiometer:

    • Verbind de middelste pin van de potentiometer met analoge pin A0.
    • Verbind de buitenste pinnen met 5V en GND.
  2. Code aanpassen:

     
    #include <Servo.h>
    
    Servo mijnServo;
    
    void setup() {
      mijnServo.attach(9);
    }
    
    void loop() {
      int sensorValue = analogRead(A0);              // Lees de potentiometer
      int hoek = map(sensorValue, 0, 1023, 0, 180);  // Converteer naar hoek
      mijnServo.write(hoek);                         // Beweeg servo naar hoek
      delay(15);                                     // Kleine pauze voor stabiliteit
    }
    

     

Uitleg van de Code:

Opdracht

Doel: Programmeer de servomotor om heen en weer te bewegen op basis van een sensorinput (potentiometer).

Instructies:

  1. Bouw de schakeling met de servomotor en potentiometer zoals hierboven beschreven.
  2. Schrijf of kopieer de code in de Arduino IDE.
  3. Upload de code naar je Arduino.
  4. Draai aan de potentiometer en observeer hoe de servomotor reageert.

Extra Uitdagingen

Veelgemaakte Fouten

Veiligheidstips

Expert: Communicatie met externe apparaten

Aan het einde van dit hoofdstuk kun je:

Expert: Communicatie met externe apparaten

Wat is seriële communicatie en i2c communicatie?

image.png

Wat is Seriële Communicatie?

De Seriële Monitor Gebruiken

Wat is I2C-Communicatie?

Sensoren en Apparaten met I2C

Expert: Communicatie met externe apparaten

i2c scannner

I2C-Scanner

Voordat je met I2C-apparaten werkt, is het handig om te weten welk adres het apparaat heeft.

I2C-Scanner Code:

#include <Wire.h>

void setup() {
  Wire.begin();
  Serial.begin(9600);
  Serial.println("I2C Scanner gestart");
}

void loop() {
  byte error, address;
  int nDevices = 0;

  Serial.println("Apparaten zoeken...");

  for(address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0) {
      Serial.print("I2C apparaat gevonden op adres 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address, HEX);
      nDevices++;
    } else if (error==4) {
      Serial.print("Onbekende error op adres 0x");
      if (address<16)
        Serial.print("0");
      Serial.println(address, HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("Geen I2C apparaten gevonden\n");
  else
    Serial.println("Klaar\n");

  delay(5000);
}

Instructies:

  1. Sluit je I2C-apparaat aan op de Arduino.
  2. Verbind SDA met A4 en SCL met A5 (Arduino Uno).
  3. Upload de I2C-scanner code.
  4. Open de seriële monitor om het I2C-adres van je apparaat te zien.
Expert: Communicatie met externe apparaten

Voorbeeld: gebruik van een BMP280 temperatuur- en druksensor

Componenten:

Aansluiting:

Let op: De BMP280 werkt op 3.3V; sluit deze niet aan op 5V.

Bibliotheek Installeren:

Code om de BMP280 uit te lezen:

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>

Adafruit_BMP280 bmp; // I2C

void setup() {
  Serial.begin(9600);
  if (!bmp.begin(0x76)) {  // Gebruik het adres dat je met de I2C-scanner hebt gevonden
    Serial.println("BMP280 niet gevonden!");
    while (1);
  }
}

void loop() {
  Serial.print("Temperatuur = ");
  Serial.print(bmp.readTemperature());
  Serial.println(" °C");

  Serial.print("Druk = ");
  Serial.print(bmp.readPressure()/100.0F);
  Serial.println(" hPa");

  Serial.println();
  delay(2000);
}

Uitleg van de Code:

Data Versturen via Seriële en I2C-Communicatie

Opdracht

Doel: Schrijf een programma dat temperatuur- en drukwaarden uitleest van een BMP280 sensor via I2C en deze weergeeft op de computer via de seriële monitor.

Instructies:

  1. Bouw de schakeling met de BMP280 sensor zoals hierboven beschreven.
  2. Installeer de benodigde bibliotheken.
  3. Gebruik de I2C-scanner om het adres van je sensor te bepalen.
  4. Pas de code aan met het juiste adres indien nodig.
  5. Upload de code naar je Arduino.
  6. Open de seriële monitor en observeer de temperatuur- en drukwaarden.
  7. Experimenteer met het veranderen van de omgeving (bijv. verwarmen van de sensor) en observeer de veranderingen.

Extra Uitdagingen

Belangrijk: Alle I2C-apparaten worden parallel aangesloten op SDA en SCL. Zorg ervoor dat elk apparaat een uniek adres heeft.

Veelgemaakte Fouten

Veiligheidstips