Irrigação inteligente com Arduino: parte 2

Chegando no galpão em Lumiar (Nova Friburgo) só tive que fazer uns ajustes para isolar mais a caixa que protege a eletrônica e usei cola derretida (silicone) para prender o sensor de temperatura e umidade DHT11 para o lado de fora da caixa assim como prender o relay (relé) que não tinha buraco para parafusos.

Sendor DHT11

Sendor DHT11 colado na caixa de proteção com cola quente.

Fiz a fixação dos relés e do Arduíno com cola quente. Os orifícios são para passar os fios por baixo desta caixa plástica, assim a isolação contra umidade foi melhor. Depois dos fios passados ainda coloquei mais silicone.

Caixa para proteger as ligações e alimentação elétrica
Estando a eletrônica protegida, a próxima etapa foi passar os fios (220V~240V) para dentro do galpão e puxei de um outro prédio da Lumiar Cogumelos que fica uns 10 metros do galpão. Para proteger as tomadas fiz uma caixa de MDF e coloquei um pedaço de telha que estava sobrando, ficou assim:

Caixa de proteção da eletrônica

Caixa de proteção, a tomada da esquerda está controlada pelo relay e a da direita é para alimentar o Arduíno, ficando ligada direta.

Depois de colocar no lugar, dei uma verificada na corrente, se não tinha nenhum curto etc e finalmente liguei, foi mais simples do que eu achava e funcionou de primeira. Agora estou em contato com o cliente para irmos acertando os parametros corretos para a irrigação, de início vamos espaçar mais o intervalo de 15 minutos para 4 horas.

Confesso que ver um projeto destes funcionando é bem emocionante, num dia quente como estava sentir a água fria preenchendo o espaço foi bem agradável:

Água gelada sobre os cogumelos no galpão

Irrigação inteligente com Arduino Parte 1:
Veja aqui sobre o código, montagem e sensores

Anúncios

Projeto de irrigação inteligente com Arduino – parte 1

Desenvolvi este sistema para um cliente irrigar seu cultivo de uma iguaria deliciosa: cogumelos Shiitake. Como é muito sensível a variações de temperatura e umidade, o objetivo é equilibrar e manter estas variáveis mais constantes dentro da estufa. Em uma semana muito quente ou pouco úmida, a quantidade da colheita pode variar mais de 100% e a qualidade com a falta de umidade deixa o fungo muito mais seco.

Caixa da eletrônica.

Esse é o aspecto geral da traquitana, com exceção do sensor de temperatura e umidade, que fiz um orifício para ele ficar para fora. Tudo fica bem vedado aí dentro para entrar menos umidade quanto possível, que é bem alta o tempo todo, fora a possibilidade de pequenos insetos entrarem também e causarem um curto.

Tomadas de decisão
A estufa/galpão já está em operação e a irrigação por aspersores é feita por uma bomba acionada manualmente pelo funcionário todas as manhãs. Então o meu trabalho aqui se resume a fazer a eletrônica, o software e a sua instalação no galpão.

Como ainda não sabemos o impacto no cultivo, planejei com a Lumiar Cogumelos a implementação em várias etapas incrementais e começar o mais rápido possível. Assim, o protótipo V Mk I (Vinagre, marco 1) é bem básico e não tem mostrador nem grava log. Suas funções são:

  1. A cada 10 minutos verifica a temperatura e umidade;
  2. Caso a temperatura esteja MENOR IGUAL QUE 28ºC OU umidade MENOR IGUAL 85%, uma bomba é acionada.

Coloquei todos os componentes dentro de uma única caixa para facilitar a montagem em casa e depois só montar lá em Nova Friburgo. Pensamos na possibilidade de espalhar mais sensores e deixar a eletrônica perto da tomada da bomba, mas isso ia requerer passar um fio de 10m para o sensor, o que consideramos inviável.

Dadas as condições  com uma só caixa o sistema fica mais robusto. Isso é importante pois temos que considerar as intempéries  numerosos animais e que é uma área de movimentação na colheita, a probabilidade de romper um fio fino era grande. E o Xbee (para wireless) ia complicar o projeto e triplicar o preço.

Montagem
Comecei a montagem fazendo os testes somente a leitura de temperatura, depois só o acionamento do relay (Relé), vi que tudo funcionava e depois juntei as duas. Com a quantidade de fios aumentando começa a ficar mais complicado, principalmente para puxar e compartilhar a alimentação de 5V mas ainda dá pra fazer direto no Arduino usando os pinos VIN. Mais que isso, com o SD e o LCD, temos que usar uma prototype shield ou uma placa PCB de prototipagem e soldar as ligações.

Estágio de testes, montei com calma cada um separado e depois juntei a eletrônica e o código. Isso foi importante para entender a dinâmica e comportamento de cada elemento.

Lista de Material
Muitas peças eu já tinha estocadas, mas outras comprei na rua República do Líbano aqui no Saara. Se voce puder esperar pela entrega do eBay, a economia sai no mínimo em 50% incluindo a entrega, mas demora sempre entre 30 e 60 dias.

  1. Arduino Duemila – R$ 34.00 no eBay;
  2. Sensor DHT11 já montado- R$ 7,00 no eBay;
  3. Módulo relay (1 relay)- R$ 3,60 no eBay;
  4. Verniz para proteger eletrônica: R$ 12,00 no Saara;
  5. Fonte 220V input – 9V output 1A: R$ 18,00 no Saara (pelo menos é made in Brazil);
  6. Vasilha para servir de case: R$ 3,50 em loja de potes de cozinha;
  7. Base de mdf de 6mm, sucata.

Custo total: R$ 78,10
Sendo que o verniz ainda pode ser usado em muitos outros projetos, então o custo somente dos componentes seria de R$ 66,10.

Esquema de ligação do arduino, o relé e o sensor de temperatura e umidade

O esquema é basicamente este, foi desenhado no Fritzing. Só atenção aos pinos de saída que voce pode mudar como quiser.

Referências e programação
Provalvemente voce vai ter que baixar e instalar uma biblioteca do Arduino dentro da pasta libraries para poder incluir a dht11.h, para o relay não é necessário instalar nada. Segui este ótimo tutorial para o sensor de temperatura:
http://learn.adafruit.com/dht

Para o relay, este é bacana:
http://www.arduinotutorials.com/view.php?id=5555

Código

/*************************************************************
project: Irrigacao da Lumiar Cogumelos
author: Raphael Vinagre
data: 23/01/2013
description: Sistema de controle de temperatura e umidade de
estufa. Parametros definidos no codigo.

Intervalo de leitura: 10 minutos

Tempo de acionamento da bomba: 1 minuto
Componentes: Sensor DHT11, Relay.
*************************************************************/

int i = 0; // para contar o n de acionamentos da bomba

#include <dht11.h>
dht11 DHT11;

#define DHT11PIN 2 //pino do DHT11

#define RELAY1 7 //pino do relé

void setup()      {

Serial.begin(115200);
Serial.println("DHT11 TEST PROGRAM ");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
pinMode(led, OUTPUT);
pinMode(RELAY1, OUTPUT); 
}

void loop() {
Serial.println("\n");
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
 switch (chk)

 {
 case 0: Serial.println("OK"); break;
 case -1: Serial.println("Checksum error"); break;
 case -2: Serial.println("Time out error"); break;
 default: Serial.println("Unknown error"); break;
 }
Serial.print("Humidity (%): ");
Serial.println((float)DHT11.humidity, 2);
Serial.print("Temperature (oC): ");
Serial.println((float)DHT11.temperature, 2);

 if (DHT11.temperature >= 28 || DHT11.humidity <= 90 )
 {
 Serial.print("Temperatura Maior Igual 28C \n");
 digitalWrite(RELAY1,LOW); // Turns ON Relays 1
 Serial.print("Bomba LIGADA \n");
 delay(60000); // Wait 1 minute
 digitalWrite(RELAY1,HIGH); // Turns Relay Off
 Serial.print("Bomba DESLIGADA \n");
}
else {
delay(60000); // Espera 1 minuto para nao dar diferenca de tempo se a bomba nao é acionada.}
Serial.print("\n id:");
Serial.print(i); 

 i++; 
delay(540000); // send the temperature every 10 minutes 540000 + 60000 milliseconds (bomba acionada)
 //pausa final: 10minutos. Calibrar pois o tempo dos intervalos se somam.
}

//
// END OF FILE
//

 

Incrementos futuros

  • Trocar o sensor DHT11 para o DHT22, para melhor resolução da umidade;
  • Acoplar o módulo SD para gravar um log da temperatura em uma planilha;
  • Colocar um mostrador de LCD com o status da medição;
  • Reprogramar o software usando funções de timer mais avançadas.

Espero que seja útil, e qualquer dúvidas, melhorias ou sugestões são sempre bem vindas. Assim que eu tiver as fotos e avaliações da instalação eu coloco em um novo post.

Fritizing: software para desenho de esquema de eletrônica

Estava estudando um pouco de Arduino no tempo livre e descobri por acaso este belo software gratuito. Sou leigo em eletrônica e talvez por isso fique muito mais fácil para montar os componentes olhando um desenho ou esquema, e com o Fritizing voce pode ter algumas vizualizações diferentes, incluindo essa que parece com os elementos na vida real.

Diga voce se facilita ou não para montar? O programa é muito bom para documentar o que fizemos, pois sempre que eu monto um projeto acabo desmontando depois, pois só tenho uma peça de cada.

Dentre as vizualizações diferentes, há com a prototype board, a de esquema de eletrônica tradicional e PCB.

É só baixar e usar. Na loja deles tem vários componentes e sensores com bons preços além de imprimirem circuitos sob encomenda também.

Link:
http://fritzing.org/

Adaptando um thermistor de 100k na mesa aquecida

Quando fui comprar as peças estava em falta o thermistor que todo mundo usa da Farnell. Aí o Maia pegou um de 9K de uma sucata e servia para monitorar a temperatura de um processador de PC e tacamos lá embaixo da mesa, só que mesmo com as tabelas do Repetier e do Marlin nunca funcionou direito, os 30º C do Rio de Janeiro viravam 62ºC e calibramos a mesa para chegar a 130/140º C.

Thermistor antigo e novo

Thermistor antigo que se parece com o modelo mais adequedo e a minha adaptação ao fundo.

Aí quando eu estava desmontando a mesa para melhorar a ligação com a eletrônica, trocando fios etc, pensei em colocar o thermistor de 100K de vidro que o Roberto [RJ] me deu para montar o hotend com bico de gás e tubo de freio. Como ele é de um tipo diferente, tive que dar um jeito de prensar ele sem quebrar pois não cabe no buraquinho no meio da mesa aquecida. Eu isolei as pernas com tubo termo retrátil  fiz uma cavidade para ele caber e coloquei pasta térmica o que aparentemente resolveu e agora pelo menos na temperatura ambiente está marcando a temperatura real.

Detalhe da instalação do thermistor

Instalação do thermistor de vidro sob a mesa aquecida (PCB MarkI). O orifício maior é onde entrava o thermistor antigo que media a temperatura e fazia contato pela ponta.

Agora os 30ºC sao 30ºC e na leitura com a mesa aquecida (que não pude verificar se é correta) chega a 110ºC em cerca de 8 minutos.

MariaMole, uma IDE melhor para o Arduino

O nome não parece lá muito sério mas a proposta é ótima e já tinha visto propostas similares no Kickstarter, eu quero é ter um tempo livre agora para poder testar isso.

Print screen da IDE

Para quem ainda não se aventurou no Arduino, o que este programinha quer trazer, é uma interface mais fácil para programar o Arduino, como por exemplo ver os arquivos e classes interdependentes que pelo menos eu só acho através da documentação e de pesquisa no código.

Não conheço o uso e se alguém da comunidade está usando, mas vale a dica, se alguém tiver mais informações aceito de bom grado. E mais uma notícia boa, pra quem gosta de fuçar mas não lá muita intimidade com os tutoriais em inglês, tem tudo em português sim! Aqui.

Via:
Eu vi esta novidade na lista de discussão da ReprapBr

RAMBo, eletrônica nova na área

Vi hoje pelo blog da Ultimachine o anuncio da nova eletrônica que já está a venda. O custo vale a pena (185 USD) e fica mais compacta. Seu nome RAMBo vem de (R)epRap (A)rduino-(M)ega-compatible (M)other (Bo)ard e é feita para ter mais compatibilidade com os firmwares desenvolvidos para a RAMPS.

Foto da eletrônica da Ultimachine

RAMBo da Ultimachine

 

Parece que a tendência é mesmo usar a eletrônica sem o Arduino completo (usando somente o processador), ao contrário da RAMPS. Não sou expert nem conhecedor de eletrônica mas todos os lançamentos que vi apontam para este caminho: Gen6 e Gen7, Gen7BR, Sanguilolou, RA 3D etc.

Desde:
http://ultimachine.com/rambo

Referência e documentação:
http://reprap.org/wiki/Rambo

Sensor de distância no Arduíno

Ontem fiz a minha primeira aplicação com os sensores do Arduíno pois já estava incomodado por ter ele lá parado na estante há uns 6 meses me olhando sem ser usado. De início desejo aprender a ler os esquemas de eletrônica e montar meus apetrechos para o barco e para algum projeto do mestrado (que depois descobri não valorizar produtos). Comecei pelo sensor ultra-som de distância HCSR04.

O sensor é aquele com dois copos metálicos, um emite o ultrassom e o outro recebe. Então, ele pega quanto tempo o som demorou para voltar e calcula a distância. Simples, né?

Preço: Aqui no Brasil, R$ 20,oo a 50,oo. 
No ebay $ 3USD com entrega.
Precisão: 3mm
Distância máxima: 45/50cm
Datasheet do sensor HCSR04

Erros:
Eu já tinha testado o Arduino antes só com um código de piscar os leds com um programinha simpes sem problema algum. Mas ontem quando eu compilava qualquer código, mostrava 0 erros de código mas sempre voltava a mensagem:

avrdude: stk500_getsync(): not in sync: resp=0x30
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51

Tinha um monte de besteiras nos fóruns, falando pra dar reset repetidamente, tirar e colocar o cabo usb rapidamente (o que acho pode queimar ou perder a ROM) mas no final das contas depois de 1 hora aprendi que é só mudar a porta COM. A minha estava COM3 e ao mudar para a COM5 funcionou, compilou e instantaneamente já começou a receber as informações na janela de serial.

Primeira pegadinha
O programa do Arduino já vem com uma biblioteca e código pronto para um sensor de distância, só que não é este que eu tenho. Pelos tutoriais, o outro sensor só tem três pinos: alimentação 5V, GND (neutro), e o que transmite os dados. Esse meu separa o dado em entrada e saida, então tem 4 pinos. Então, tem que tomar cuidado para não montar tudo no automático sem prestar muita atenção e fazer qualquer coisa que não funcione. Tive que dar uma pesquisada no sensor específico e por sorte tinha bastante documentação, com o porém de a maioria ser de mais alto nível, sem estas minhas questões de iniciante.

Sensor montado com o arduino e breadboard

Conjunto em ação, mas esta configuração não foi a que funcionou.

Instalação de biblioteca
Sempre que um código chama um “qualquerCoisa.h” ele está chamando uma library. Só que este sensor não tinha esta library instalada no console do Arduino e demorei mais uma hora até ter calma de ler a documentação e ver o que deveria fazer. Aqui vai um passo a passo:

  1. Baixar a libray do sensor ou qualquer outro hardware que voce espetar, elas tem dois arquivos pelo menos um “qualquerCoisa.h” e um “qualquerCoisa.ccp”;
  2. Copiar para o diretório do programa do Arduino, na pasta de libraries criando uma pasta para ele.
  3. Reiniciar o programa, com isso já vai aparecer no menu e quando voce fizer a chamada, não vai mais receber o erro de biblioteca não localizada.

Documentação oficial
http://arduino.cc/it/Reference/Libraries

Conclusão:
Tudo funcionou como o esperado, fiz o esquema mais simples possível. Seguindo e lendo os tutorais oficiais e o datasheet não tem erro. Sempre vão surgir dúvidas, mas só se aprende fazendo e com a internet fica tudo muito mais fácil. Meus próximos passos serão colocar um display com as informações do sensor e um outro monitor de temperatura jogando os dados na internet.

Sensor de distância sendo testado

Agradecimentos
Bom, não poderia deixar de citar e agradecer as pessoas que conheci e fiz amizade no encontro CNC de Campinas e que estamos mantendo contato. O Wazen me emprestou um monte de coisas (entre elas o RFID) e está sempre mostrando coisas novas e incentivando pra eu fazer alguma coisa nova e o José Maia que me mandou os tutorais de protoboard e esquemas de eletrônica quando eu nem sabia por onde começar. Valeu!