greenhous project

Arduino specifieke Software
Berichten: 7
Geregistreerd: 13 Feb 2013, 23:32

greenhous project

Berichtdoor coppuske » 13 Feb 2013, 23:53

Beste forum leden,

Ik ben bezig om een kas te automatiseren. Ik heb hier een led groeilamp in hangen, een warmte lamp en een vloeistofpompje met vernevelaar.

Ik heb een arduino onu, een relaiskaart met 4 relais er op, een real time clock module en een THM11 sensor voor de luchtvochtigheid en de temperatuur te meten.

Nu ben ik aan het proberen om een aantal processen te automatiseren, de led lamp moet op een bepaald moment op de dag aan of uit gaan, als het kouder is als een bepaalde temperatuur moet de warmtelamp aan gaan en als de lucht te droog is moet het pompje aan gaan.
Ook wil ik met schakelaars de uitgangen kunnen bedienen. Als de uitgangen met de schakelaar bediend word moet er ook een indicatie led aan gaan.

Kan iemand mij helpen want ik kom er niet uit hoe ik dit alles moet programmeren.

Groetjes,

Coppuske

Advertisement

Berichten: 85
Geregistreerd: 10 Jan 2013, 14:51
Woonplaats: Waddinxveen

Re: greenhous project

Berichtdoor Karel » 14 Feb 2013, 00:39

Misschien is het handig om te laten zien hoever je al gekomen bent, en een beetje te vertellen welke kennis/achtergrond je hebt. Is programmeren helemaal nieuw voor je, dan is dit een te ingewikkeld project om mee te beginnen. Heb je je al eens door de verschillende tutorials heen gewerkt, en wat basis schakelingen en sketches gebouwd? Als je de tutorials hebt doorgewerkt, kan je stap voor stap een projectje gaan bouwen. Bijv. beginnen met de tijdschakelaar voor de ledlamp. Als dat werkt kan je dit uitbouwen met de temperatuur en warmtelamp. Als dat één keer werkt kan je daarna vrij eenvoudig de luchtvochtigheidsmeter en de vernevelaar opnemen, dat is technisch gezien niet anders dan de temperatuur en warmtelamp, namelijk een meting doen, deze afzetten tegen een boven- en een ondergrens en tussen die grenzen een apparaat inschakelen.
If you think education is expensive, try ignorance! (Derek Bok)

Berichten: 7
Geregistreerd: 13 Feb 2013, 23:32

Re: greenhous project

Berichtdoor coppuske » 14 Feb 2013, 22:59

ik doe de opleiding mechatronica leerjaar 3, dus programmeren is voor me niet nieuw. we werken op school alleen met functieblokken dus in c programmeren is wel nieuw voor me.
nu heb ik op internet al verschillende dingen gevonden voor de sensoren, ik kan bijvoorbeeld al wel de temperatuur uit lezen op de pc als het goed is maar hij geeft de volgende foutmelding bij dit stukje programma :

DHT dht(DHTPIN, DHTTYPE);.
'DHT' does not name a type

ik snap ook nog niet hoe ik deze gegevens kan gebruiken om een relais te laten schakelen.
ook heb ik gevonden hoe ik de tijd in kan stellen in de real time clock maar ook hier heb ik het weer probleem dat ik niet weet hoe ik de gegevens kan gebruiken om een relais te schakelen.

om de temperatuur te lezen op de pc:

#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 8
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
dht.begin();
}
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
}
else {
lcd.setCursor(0,0);
lcd.print("Temp=");
lcd.print(t);
lcd.print(" *C");
lcd.setCursor(0,1);
lcd.print("Humidity=");
lcd.print(h);
lcd.print("% ");
delay(500);
}
}

voor de tijd:

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
Serial.begin(57600);
Wire.begin();
RTC.begin();

if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
//RTC.adjust(DateTime(__DATE__, __TIME__));
}

}

void loop () {
DateTime now = RTC.now();

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

Serial.print(" since 1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
}

ook hier krijg ik de fout melding:

'RTC_DS1307' does not name a type

dus als iemand me kan vertellen hoe ik deze foutmeldingen op kan lossen en hoe ik de gegeven kan gebruiken om een relais te schakelen ben ik al een heel stuk verder denk ik.

gr,

leon

Berichten: 67
Geregistreerd: 06 Okt 2012, 10:57

Re: greenhous project

Berichtdoor Beamer » 14 Feb 2013, 23:35

Probeer eens #include <DHT.h>

en #include <RTClib.h>

Dus met groter en kleiner dan tekens.

Berichten: 7
Geregistreerd: 13 Feb 2013, 23:32

Re: greenhous project

Berichtdoor coppuske » 15 Feb 2013, 20:54

ik kwam er achter dat ik de library van van de dht en rtc niet toe gevoegd, nu ik dit gedaan heb is het al gelukt om de temperatuur te regelen. hiervoor heb ik dit programma gemaakt:

#include "DHT.h"

#define DHTPIN 8

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
const int relay1 = 12;
const int relay2 = 11;
const int temphoog = 23;
const int templaag = 24;
const int vochtlaag = 85;
const int vochthoog = 90;
const int schakelaar1 = 1;
const int schakelaar2 = 2;

int buttonState1 = 0;

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
}

void loop() {

float h = dht.readHumidity();
float t = dht.readTemperature();


if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
delay(3000);
}
if ((t) < temphoog) {
digitalWrite(relay1, HIGH);
}
if ((t) > temphoog) {
digitalWrite(relay1, LOW);
}
if ((h) < vochtlaag) {
digitalWrite(relay2, HIGH);
}
if ((h) > vochthoog) {
digitalWrite(relay2, LOW);
}

nu wil ik hierbij een RTC integreren om een groeilamp op een bepaalde tijd aan en uit te zetten.
hiervoor heb ik dit maakt:


#include "DHT.h"
#include <Wire.h>
#include "RTClib.h"
#define DHTPIN 8

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
const int relay1 = 12;
const int relay2 = 11;
const int temphoog = 23;
const int templaag = 24;
const int vochtlaag = 85;
const int vochthoog = 90;

RTC_DS1307 RTC;


void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");

dht.begin();
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);

Serial.begin(57600);
Wire.begin();
RTC.begin();

if (! RTC.isrunning()) {
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
RTC.adjust(DateTime(__DATE__, __TIME__));
}


void loop() {

float h = dht.readHumidity();
float t = dht.readTemperature();


if (isnan(t) || isnan(h)) {
Serial.println("Failed to read from DHT");
} else {
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C");
delay(3000);
}
if ((t) < temphoog) {
digitalWrite(relay1, HIGH);
}
if ((t) > temphoog) {
digitalWrite(relay1, LOW);
}
if ((h) < vochtlaag) {
digitalWrite(relay2, HIGH);
}
if ((h) > vochthoog) {
digitalWrite(relay2, LOW);
}
digitalWrite (relay2, HIGH);


DateTime now = RTC.now();

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
}

nu krijg ik een foutmelding:

" a function-difinition is not allowed hele before '{' token "

void loop () { is bij deze foutmelding geel gemarkeerd.

weet iemand wat het probleem is en hoe ik die op kan lossen?

Berichten: 85
Geregistreerd: 10 Jan 2013, 14:51
Woonplaats: Waddinxveen

Re: greenhous project

Berichtdoor Karel » 15 Feb 2013, 22:41

coppuske schreef:ik kwam er achter dat ik de library van van de dht en rtc niet toe gevoegd, nu ik dit gedaan heb is het al gelukt om de temperatuur te regelen. hiervoor heb ik dit programma gemaakt:
Code: Alles selecteren
#include "DHT.h"

#define DHTPIN 8

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
const int relay1 = 12;
const int relay2 = 11;
const int temphoog = 23;
const int templaag = 24;
const int vochtlaag = 85;
const int vochthoog = 90;
const int schakelaar1 = 1;
const int schakelaar2 = 2;

int buttonState1 = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
 
  dht.begin();
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);
}

void loop() {

  float h = dht.readHumidity();
  float t = dht.readTemperature();


  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    delay(3000);
  }
  if ((t) < temphoog) {
    digitalWrite(relay1, HIGH);
  }
  if ((t) > temphoog) {
    digitalWrite(relay1, LOW);
  }
  if ((h) < vochtlaag) {
    digitalWrite(relay2, HIGH);
  }
  if ((h) > vochthoog) {
    digitalWrite(relay2, LOW);
  }


nu wil ik hierbij een RTC integreren om een groeilamp op een bepaalde tijd aan en uit te zetten.
hiervoor heb ik dit maakt:

Code: Alles selecteren
#include "DHT.h"
#include <Wire.h>
#include "RTClib.h"
#define DHTPIN 8

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
const int relay1 = 12;
const int relay2 = 11;
const int temphoog = 23;
const int templaag = 24;
const int vochtlaag = 85;
const int vochthoog = 90;

RTC_DS1307 RTC;


void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
 
  dht.begin();
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);

    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }


void loop() {

  float h = dht.readHumidity();
  float t = dht.readTemperature();


  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    delay(3000);
  }
  if ((t) < temphoog) {
    digitalWrite(relay1, HIGH);
  }
  if ((t) > temphoog) {
    digitalWrite(relay1, LOW);
  }
  if ((h) < vochtlaag) {
    digitalWrite(relay2, HIGH);
  }
  if ((h) > vochthoog) {
    digitalWrite(relay2, LOW);
  }
  digitalWrite (relay2, HIGH);


    DateTime now = RTC.now();
   
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
}


nu krijg ik een foutmelding:

" a function-difinition is not allowed hele before '{' token "

void loop () { is bij deze foutmelding geel gemarkeerd.

weet iemand wat het probleem is en hoe ik die op kan lossen?


Zo, eerst de code tussen code-tags gezet, dat leest al beter.

Hier:
Code: Alles selecteren

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }


void loop() {


Je hebt wel een openings '{' gezet na de if, , en die sluit je wel af, maar daarna sluit je de definitie van de functie setup niet af. Dan vindt de compiler het niet zo fijn dat je binnen de setupfunctie een nieuwe functie loop probeert te definiëren.

Probeer het eens zo:

Code: Alles selecteren

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}   // <-------  deze accolade dus toevoegen

void loop() {
If you think education is expensive, try ignorance! (Derek Bok)

Berichten: 7
Geregistreerd: 13 Feb 2013, 23:32

Re: greenhous project

Berichtdoor coppuske » 15 Feb 2013, 23:36

heel erg bedankt dat probleem is op gelost, nu alleen het minder goede nieuws, de volgende error is er weer.

ik krijg deze foutmeldingen:

temperature_control_rtc:73: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:74: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:75: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:76: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:77: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:78: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:79: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:80: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:81: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:82: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:83: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:84: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:86: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:87: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:88: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:89: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:90: error: expected constructor, destructor, or type conversion before '.' token
temperature_control_rtc:91: error: expected declaration before '}' token

dit gaat over dit stukje programma:

Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();

Serial.print(" since midnight 1/1/1970 = ");
Serial.print(now.unixtime());
Serial.print("s = ");
Serial.print(now.unixtime() / 86400L);
Serial.println("d");
}

alvast bedankt!!

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: greenhous project

Berichtdoor astrofrostbyte » 19 Feb 2013, 20:30

Plaats ff de volledige code in [code][/code] , ik denk dat het gewoon een syntax foutje is. vaak help het al heel wat om de code in een 'echte' programmers editor te zetten zoals notepad++ om syntax fouten te zien.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 7
Geregistreerd: 13 Feb 2013, 23:32

Re: greenhous project

Berichtdoor coppuske » 20 Feb 2013, 17:15

hier de complete code:
Code: Alles selecteren
#include "DHT.h"
#include <Wire.h>
#include "RTClib.h"
#define DHTPIN 8

#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
const int relay1 = 12;
const int relay2 = 11;
const int temphoog = 23;
const int templaag = 24;
const int vochtlaag = 85;
const int vochthoog = 90;

RTC_DS1307 RTC;


void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
 
  dht.begin();
  pinMode(relay1, OUTPUT);
  pinMode(relay2, OUTPUT);

    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop() {

  float h = dht.readHumidity();
  float t = dht.readTemperature();


  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
    delay(3000);
  }
  if ((t) < temphoog) {
    digitalWrite(relay1, HIGH);
  }
  if ((t) > temphoog) {
    digitalWrite(relay1, LOW);
  }
  if ((h) < vochtlaag) {
    digitalWrite(relay2, HIGH);
  }
  if ((h) > vochthoog) {
    digitalWrite(relay2, LOW);
  }
  digitalWrite (relay2, HIGH);

}
    DateTime now = RTC.now();
   
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
   
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
}

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: greenhous project

Berichtdoor astrofrostbyte » 20 Feb 2013, 22:29

haakjes staan niet goed in je loop().
het } haakje na de instructie " digitalWrite (relay2, HIGH); " sluit loop() { af . en dan komt er nog wat code waar de compiler geen raad mee weet.

In notepad++ zie je dit soort dingen direct.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 2 gasten