Compostino- Monitor de Composteira com Arduino: mudanças entre as edições
De Pontão Nós Digitais
Ir para navegaçãoIr para pesquisar
(Criou página com 'Usando um sensor de metano, um de temperatura e um de umidade produziremos um painel indicador das condições da composteira. A meta é produzir dados para a evolução até ...') |
Sem resumo de edição |
||
Linha 1: | Linha 1: | ||
Usando um sensor de metano, um de temperatura e um de umidade produziremos um painel indicador das condições da composteira. A meta é produzir dados para a evolução até um sistema de regulação automática de alguns destes fatores para acelerar e otimizar o processo de compostagem. | Usando um sensor de metano, um de temperatura e um de umidade produziremos um painel indicador das condições da composteira. | ||
A meta é produzir dados para a evolução até um sistema de regulação automática de alguns destes fatores para acelerar e otimizar o processo de compostagem. | |||
==Codigo do Compostino versão 0.1 (8/7/2013)== | |||
/* | |||
Compostino = Unidade de monitoramento de composteiras. | |||
inicio em 7/7/2013 durante oficina aberta no veracidade Sao Carlos SP brasil copyleft | |||
Partimos de: | |||
metano in arduino.cc | |||
Created by David Cuartielles | |||
modified 30 Aug 2011 | |||
By Tom Igoe | |||
lm35 in arduino.cc | |||
Created by David Cuartielles | |||
modified 30 Aug 2011 | |||
By Tom Igoe | |||
*/ | |||
#include <dht11.h> | |||
dht11 DHT11; | |||
int dht11pino = 2; // pino digital do sensor dht11 | |||
int metanoPino = A0; // escolha o pino que recebe o sinal do sensor de metano | |||
int calorPino = A1; // escolha o pino que recebe o sinal do sensor de temperatura | |||
int umidadePino = A2; // escolha o pino que recebe o sinal do sensor de umidade | |||
int ledMetano = 13; // escolha o pino que acendera o ledMetano | |||
float valorMetano = 0; // guarda o valor medido no sensor MQ-4(metano) | |||
float limiteMetano = 600; // valor definido como limiar maximo de metano | |||
int ledcalormeso = 10; //ascende pino na temperatura boa para bact mesofilicas | |||
int ledcalortermo = 11; //ascende pino na temperatura boa para bact termofilicas | |||
int ledcalorfrito = 12; //ascende pino quando temperatura muito alta | |||
float valorcalor = 0; //guarda valor medido sensor LM35(temperatura) | |||
float limitecalor = 70; //Limite maximo de temperatura | |||
int ledseco = 8; //ascende pino quando umidade esta baixa. Precisa molhar composteira. | |||
int ledmolhado = 9; //ascende pino quando umidade esta muito alta. | |||
float valorumidade = 0; //guarda valor do sensor caseiro (umidade) | |||
float umidademin = 300; //limite minimo da faixa ideal de umidade | |||
float umidademax = 370; //limite maximo da faixa ideal de umidade | |||
void setup() { | |||
// declarando o ledMetano como OUTPUT: | |||
pinMode(ledMetano, OUTPUT); | |||
// declarando os ledcalor como OUTPUT: | |||
pinMode(ledcalormeso, OUTPUT); | |||
pinMode(ledcalortermo, OUTPUT); | |||
pinMode(ledcalorfrito, OUTPUT); | |||
// declarando os ledumidade como OUTPUT: | |||
pinMode(ledseco, OUTPUT); | |||
pinMode(ledmolhado, OUTPUT); | |||
Serial.begin(9600); | |||
} | |||
void loop() { | |||
// funçao Metano | |||
// lendo o valor do sensor: | |||
valorMetano =analogRead(metanoPino); | |||
// liga o ledMetano | |||
// imprime o resultado no monitor serial: | |||
Serial.print("Metano igual a: " ); | |||
Serial.println(valorMetano); | |||
// dependendo do valorMetado acende ou apaga led limiteMetano | |||
if (valorMetano >= limiteMetano){ | |||
digitalWrite(ledMetano, HIGH); | |||
} | |||
else{ | |||
digitalWrite(ledMetano, LOW); | |||
} | |||
// funçao temperatura | |||
valorcalor =(5.0 * analogRead(calorPino) * 100.0) / 1024; | |||
// acender o primeiro ledCalor, se temperatura maior que 35 | |||
if (valorcalor > 35) { | |||
digitalWrite(ledcalormeso, HIGH); | |||
digitalWrite(ledcalortermo, LOW); | |||
digitalWrite(ledcalorfrito, LOW); | |||
} | |||
// acender primeiro e segundo ledCalor, se temperatura maior que 50 | |||
if (valorcalor > 50) { | |||
digitalWrite(ledcalormeso, HIGH); | |||
digitalWrite(ledcalortermo, HIGH); | |||
digitalWrite(ledcalorfrito, LOW); | |||
} | |||
// acende primeiro, segundo e terceiro ledCalor, se temperatura maior que 70 | |||
if (valorcalor > 70) { | |||
digitalWrite(ledcalormeso, HIGH); | |||
digitalWrite(ledcalortermo, HIGH); | |||
digitalWrite(ledcalorfrito, HIGH); | |||
} | |||
// se temperatura menor que 35, primeiro, segundo e terceiro ledcalor desligado | |||
else { | |||
digitalWrite(ledcalormeso, LOW); | |||
digitalWrite(ledcalortermo, LOW); | |||
digitalWrite(ledcalorfrito, LOW); | |||
} | |||
// imprime resultados no monitor serial: | |||
Serial.print("A temperatura igual a: " ); | |||
Serial.println(valorcalor); | |||
//funçao umidade | |||
// lendo o valor do sensor: | |||
valorumidade =analogRead(umidadePino); | |||
// umidade menor que 40, significa que esta muito seco, ledseco ligado: | |||
if (valorumidade < umidademin) { | |||
digitalWrite(ledseco, HIGH); | |||
digitalWrite(ledmolhado, LOW); | |||
} | |||
// umidade maior que 370, significa que esta muito molhado, ledmolhado ligado: | |||
if (valorumidade > umidademax){ | |||
digitalWrite(ledseco, LOW); | |||
digitalWrite(ledmolhado, HIGH); | |||
} | |||
// umidade entre 40 e 370, todos os leds desligado: | |||
if (valorumidade > umidademin && valorumidade < umidademax) { | |||
digitalWrite(ledseco, LOW); | |||
digitalWrite(ledmolhado, LOW); | |||
} | |||
Serial.print("Umidade do composto igual a: " ); | |||
Serial.println(valorumidade); | |||
// funçao umidade do ar: | |||
int chk = DHT11.read(dht11pino); | |||
Serial.print("umidade do ar: "); | |||
Serial.println((float)DHT11.humidity, 2); | |||
Serial.print("Temperatura do ar: "); | |||
Serial.println((float)DHT11.temperature, 2); | |||
Serial.println ( ); | |||
delay(3000); | |||
} |
Edição das 18h30min de 7 de julho de 2013
Usando um sensor de metano, um de temperatura e um de umidade produziremos um painel indicador das condições da composteira.
A meta é produzir dados para a evolução até um sistema de regulação automática de alguns destes fatores para acelerar e otimizar o processo de compostagem.
Codigo do Compostino versão 0.1 (8/7/2013)
/* Compostino = Unidade de monitoramento de composteiras. inicio em 7/7/2013 durante oficina aberta no veracidade Sao Carlos SP brasil copyleft Partimos de: metano in arduino.cc Created by David Cuartielles modified 30 Aug 2011 By Tom Igoe lm35 in arduino.cc Created by David Cuartielles modified 30 Aug 2011 By Tom Igoe */
#include <dht11.h>
dht11 DHT11;
int dht11pino = 2; // pino digital do sensor dht11 int metanoPino = A0; // escolha o pino que recebe o sinal do sensor de metano int calorPino = A1; // escolha o pino que recebe o sinal do sensor de temperatura int umidadePino = A2; // escolha o pino que recebe o sinal do sensor de umidade
int ledMetano = 13; // escolha o pino que acendera o ledMetano float valorMetano = 0; // guarda o valor medido no sensor MQ-4(metano) float limiteMetano = 600; // valor definido como limiar maximo de metano
int ledcalormeso = 10; //ascende pino na temperatura boa para bact mesofilicas int ledcalortermo = 11; //ascende pino na temperatura boa para bact termofilicas int ledcalorfrito = 12; //ascende pino quando temperatura muito alta float valorcalor = 0; //guarda valor medido sensor LM35(temperatura) float limitecalor = 70; //Limite maximo de temperatura
int ledseco = 8; //ascende pino quando umidade esta baixa. Precisa molhar composteira. int ledmolhado = 9; //ascende pino quando umidade esta muito alta. float valorumidade = 0; //guarda valor do sensor caseiro (umidade) float umidademin = 300; //limite minimo da faixa ideal de umidade float umidademax = 370; //limite maximo da faixa ideal de umidade
void setup() { // declarando o ledMetano como OUTPUT: pinMode(ledMetano, OUTPUT);
// declarando os ledcalor como OUTPUT: pinMode(ledcalormeso, OUTPUT); pinMode(ledcalortermo, OUTPUT); pinMode(ledcalorfrito, OUTPUT);
// declarando os ledumidade como OUTPUT: pinMode(ledseco, OUTPUT); pinMode(ledmolhado, OUTPUT);
Serial.begin(9600); }
void loop() {
// funçao Metano
// lendo o valor do sensor: valorMetano =analogRead(metanoPino); // liga o ledMetano
// imprime o resultado no monitor serial: Serial.print("Metano igual a: " ); Serial.println(valorMetano);
// dependendo do valorMetado acende ou apaga led limiteMetano if (valorMetano >= limiteMetano){ digitalWrite(ledMetano, HIGH); } else{
digitalWrite(ledMetano, LOW); }
// funçao temperatura
valorcalor =(5.0 * analogRead(calorPino) * 100.0) / 1024;
// acender o primeiro ledCalor, se temperatura maior que 35 if (valorcalor > 35) { digitalWrite(ledcalormeso, HIGH); digitalWrite(ledcalortermo, LOW); digitalWrite(ledcalorfrito, LOW); }
// acender primeiro e segundo ledCalor, se temperatura maior que 50 if (valorcalor > 50) { digitalWrite(ledcalormeso, HIGH); digitalWrite(ledcalortermo, HIGH); digitalWrite(ledcalorfrito, LOW);
} // acende primeiro, segundo e terceiro ledCalor, se temperatura maior que 70 if (valorcalor > 70) { digitalWrite(ledcalormeso, HIGH); digitalWrite(ledcalortermo, HIGH); digitalWrite(ledcalorfrito, HIGH);
}
// se temperatura menor que 35, primeiro, segundo e terceiro ledcalor desligado else { digitalWrite(ledcalormeso, LOW); digitalWrite(ledcalortermo, LOW); digitalWrite(ledcalorfrito, LOW);
}
// imprime resultados no monitor serial: Serial.print("A temperatura igual a: " ); Serial.println(valorcalor);
//funçao umidade
// lendo o valor do sensor: valorumidade =analogRead(umidadePino);
// umidade menor que 40, significa que esta muito seco, ledseco ligado: if (valorumidade < umidademin) { digitalWrite(ledseco, HIGH); digitalWrite(ledmolhado, LOW); }
// umidade maior que 370, significa que esta muito molhado, ledmolhado ligado: if (valorumidade > umidademax){ digitalWrite(ledseco, LOW); digitalWrite(ledmolhado, HIGH);
} // umidade entre 40 e 370, todos os leds desligado: if (valorumidade > umidademin && valorumidade < umidademax) { digitalWrite(ledseco, LOW); digitalWrite(ledmolhado, LOW); }
Serial.print("Umidade do composto igual a: " ); Serial.println(valorumidade);
// funçao umidade do ar:
int chk = DHT11.read(dht11pino); Serial.print("umidade do ar: "); Serial.println((float)DHT11.humidity, 2);
Serial.print("Temperatura do ar: "); Serial.println((float)DHT11.temperature, 2);
Serial.println ( ); delay(3000);
}