Profielwerkstuk van Jan Kees en Timo

Klimaatbeheersing met behulp van arduino

Profielwerkstuk van Jan Kees en Timo

Klimaatbeheersing met behulp van arduino



Over het project

Een profielwerkstuk maken wordt niet altijd als leuk ervaren maar wij weten ondertussen dat je het zo leuk kan maken als je zelf wilt. Wij hebben er voor gekozen om een kas op schaal te maken die dan zelf voor de plantjes zorgt. Het idee is klein begonnen op de fiets en heeft zich tot een werkende klimaatbeheersing uitbereid. Er zitten ook een aantal handige snufjes in zoals de webserver: de kas meldt zich aan op het wifinetwerk en iedereen op datzelfde wifinetwerk is dan instaat om alle gegevens van de kas te bekijken. Benieuwd naar hoe we dit precies hebben aangepakt? Kijk dan in ons verslag hierover die te vinden is bij de downloads.


Over het project

Een profielwerkstuk maken wordt niet altijd als leuk ervaren maar wij weten ondertussen dat je het zo leuk kan maken als je zelf wilt. Wij hebben er voor gekozen om een kas op schaal te maken die dan zelf voor de plantjes zorgt. Het idee is klein begonnen op de fiets en heeft zich tot een werkende klimaatbeheersing uitbereid. Er zitten ook een aantal handige snufjes in zoals de webserver: de kas meldt zich aan op het wifinetwerk en iedereen op datzelfde wifinetwerk is dan instaat om alle gegevens van de kas te bekijken. Benieuwd naar hoe we dit precies hebben aangepakt? Kijk dan in ons verslag hierover die te vinden is bij de downloads.

×

Video



Foto's van het project


Over het project

In de examenklas is het de bedoeling dat iedereen onderzoek doet naar een bepaald onderwerp.
Het is verplicht om minimaal 80 uur te werken aan dit project.
Je kan ervoor kiezen om een informatief onderzoek te doen.
Voorbeelden hiervan zijn:
1. De werking van energydrank op je tanden.
2. Hoe krijg je de zuinigste benzineauto?
Wij hebben ervoor gekozen voor een praktisch project.
Bij een praktisch project is het grootste gedeelte technisch bezig zijn,
maar er komt ook zeker iets informatiefs bij kijken. Voorbeelden van praktische projecten zijn:
1. Een kluis beveiligd met NFC.
2. Een automatische onkruidverdelger.
Een korte samenvatting van ons project kan u vinden onder het kopje 'Hoe is het verlopen?'

Wij zijn Timo en Jan Kees, wij zijn beide examenleerlingen van 5 havo, daarnaast zijn wij goede vrienden.
Wij hebben beide een grote liefde voor techniek en dit is dan ook onze hobby.
Voor wij dit project begonnen hadden wij al ervaring met electronica, Arduino en verschillende sensoren.

Omdat we beide technische personen zijn, wilden we een technisch project.
We hadden beide ervaring met het programmeren met Arduino en dit wilden we gebruiken voor ons project.
Aangezien Timo als bijbaantje in de kassen werkt,
kwamen we al snel op het idee om een kas te bouwen en deze volledig te automatiseren,
en daardoor klimaatbeheersing te creëren.

Zoals u al aan de foto's heeft kunnen zien, hebben wij een broeikasje op schaal gemaakt die volledig geautomatiseerd is.
Dit project hebben wij opgebouwd in verschillende stappen (kort samengevat):
1. Het verzonnen idee moest worden uitgewerkt: Wat wilden we allemaal bereiken met de kas?
2. Het ontwerpen van de kas. Het ontwerp moest worden aangepast aan de gestelde doelen.
3. Het bouwen van de kas. Het kasgedeelte is gemaakt van plexiglas en de besturingsruimte van hout.
4. Het bevestigen en verbinden van de apparatuur. Alle sensoren en apparaten zijn door middel van stroomdraad verbonden met de stroom en de Arduino.
5. Het programmeren. Alle sensoren moeten worden uitgelezen en de apparaten moeten worden aangestuurd.
De sleutel naar een goed resultaat is een goede samenwerking. Werk niet constant samen aan hetzelfde, maar verdeel de taken.
Hierdoor heb je in een kortere tijd meer resultaat. Lukt iets niet, dan kan dat alsnog samen worden uitgepuzzeld.

De volgende processen werken in de kas:
1. De temperatuur zal worden gemeten. Naar aanleiding van de meting zullen de ramen en verwarming worden aangestuurd.
2. De lichtsensoren zullen de lichtintensiteit meten. Bij weinig licht zal de ledstrip aangezet worden, bij veel licht zal hij uitgezet worden.
De ledstrip zal altijd tussen 21:00 en 08:00 uitstaan.
3. Er wordt water gegeven als de grondvochtigheid te laag is. De waterstand in de watertank wordt eveneens bijgehouden.
4. De lekkagesensor zal 24/7 controleren op lekkages.
5. Het beeldscherm zal de belangrijkste waardes laten zien.
6. De webserver laat alle waardes zien in een tabel.
7. De kas is bestuurbaar via Infrarood

De programeercode

Light sensor

  int lightSensor() { //return in ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
    int lightIndex; // the vaiable for the return ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
    int ldr0Value = analogRead(ldr0); //the value from the first sensor
    int ldr1Value = analogRead(ldr1); //the value from the second sensor
    int ldrValue = (ldr0Value + ldr1Value)/2;
    float resistorValue = 10.0; //resitor in kilo ohms
    float voltageValue0 = ldr0Value*0.0048828125; // this calculate the voltage trough the ldr
    int lux0 = 500/(resistorValue*((5-voltageValue0)/voltageValue0)); // this calculate the lux on the ldr
     Serial.print("Lux0: ");                 //Serialprint the measurement (in Lux units) in the screen
     Serial.print(lux0);
    if (lux0 < 10) { //0-10 is dark
      Serial.println(" - Dark");  //Serialprint lightindex
      lightIndex = 0; //set lightindex [0=Dark]
    } else if (lux0 < 300) {  //10-300 = dim
      Serial.println(" - Dim"); //Serialprint lightindex
      lightIndex = 1; //set lightindex [1=Dim]
    } else if (lux0 < 500) {  //300-500 = light
      Serial.println(" - Light"); //Serialprint lightindex
      lightIndex = 2; //set lightindex [2=Light]
    } else if (lux0 < 1000) {  //500-1000 = bright
      Serial.println(" - Bright"); //Serialprint lightindex
      lightIndex = 3; //set lightindex [3=Bright]
    } else {  //more than 1000 is very bright
      Serial.println(" - Very bright"); //Serialprint lightindex
      lightIndex = 4; //set lightindex [4=Very Bright]
    }
    return lightIndex; // return ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
  }
  
  int lightSensor() { //return in ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
    int lightIndex; // the vaiable for the return ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
    int ldr0Value = analogRead(ldr0); //the value from the first sensor
    int ldr1Value = analogRead(ldr1); //the value from the second sensor
    int ldrValue = (ldr0Value + ldr1Value)/2;
    float resistorValue = 10.0; //resitor in kilo ohms
    float voltageValue0 = ldr0Value*0.0048828125; // this calculate the voltage trough the ldr
    int lux0 = 500/(resistorValue*((5-voltageValue0)/voltageValue0)); // this calculate the lux on the ldr
     Serial.print("Lux0: ");                 //Serialprint the measurement (in Lux units) in the screen
     Serial.print(lux0);
    if (lux0 < 10) { //0-10 is dark
      Serial.println(" - Dark");  //Serialprint lightindex
      lightIndex = 0; //set lightindex [0=Dark]
    } else if (lux0 < 300) {  //10-300 = dim
      Serial.println(" - Dim"); //Serialprint lightindex
      lightIndex = 1; //set lightindex [1=Dim]
    } else if (lux0 < 500) {  //300-500 = light
      Serial.println(" - Light"); //Serialprint lightindex
      lightIndex = 2; //set lightindex [2=Light]
    } else if (lux0 < 1000) {  //500-1000 = bright
      Serial.println(" - Bright"); //Serialprint lightindex
      lightIndex = 3; //set lightindex [3=Bright]
    } else {  //more than 1000 is very bright
      Serial.println(" - Very bright"); //Serialprint lightindex
      lightIndex = 4; //set lightindex [4=Very Bright]
    }
    return lightIndex; // return ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
  }
  
  int lightSensor() { //return in ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
    int lightIndex; // return vaiable ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
    int ldr0Value = analogRead(ldr0); //the value from the first sensor
    int ldr1Value = analogRead(ldr1); //the value from the second sensor
    int ldrValue = (ldr0Value + ldr1Value)/2;
    float resistorValue = 10.0; //resitor in kilo ohms
    float voltageValue0 = ldr0Value*0.0048828125; // this calculate the voltage trough the ldr
    int lux0 = 500/(resistorValue*((5-voltageValue0)/voltageValue0)); // this calculate the lux
     Serial.print("Lux0: ");    //Serialprint the measurement (in Lux units) in the screen
     Serial.print(lux0);
    if (lux0 < 10) { //0-10 is dark
      Serial.println(" - Dark");  //Serialprint lightindex
      lightIndex = 0; //set lightindex [0=Dark]
    } else if (lux0 < 300) {  //10-300 = dim
      Serial.println(" - Dim"); //Serialprint lightindex
      lightIndex = 1; //set lightindex [1=Dim]
    } else if (lux0 < 500) {  //300-500 = light
      Serial.println(" - Light"); //Serialprint lightindex
      lightIndex = 2; //set lightindex [2=Light]
    } else if (lux0 < 1000) {  //500-1000 = bright
      Serial.println(" - Bright"); //Serialprint lightindex
      lightIndex = 3; //set lightindex [3=Bright]
    } else {  //more than 1000 is very bright
      Serial.println(" - Very bright"); //Serialprint lightindex
      lightIndex = 4; //set lightindex [4=Very Bright]
    }
    return lightIndex; // return ([0=Dark],[1=Dim],[2=Light],[3=Bright],[4=Very Bright])
  }
  

De volledige code

Omdat de volledige code erg lang is en het niet praktich was om hem hier neer te zetten is hij te downloaden onder het kopje downloads of online.

Online code



Downloads