sábado, 14 de setembro de 2013

Sistema de Irrigação


Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada, sendo:
"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);



ARDUINO SISTEMA DE IRRIGAÇÃO



INTRODUÇÃO & OBJETIVOS:

Um sistema simples, usando Arduino para automatizar a irrigação de pequenos vasos de planta ou plantações.

Ele faz o controle da umidade do solo, fazendo indicações através de LEDs e em caso de solo seco emitindo um aviso sonoro. Em caso de solo seco ativa o sistema de irrigação, bombeando água para regar as plantas.

O uso de um display LCD possibilita notificar todas as ações que estão ocorrendo além de um relógio em tempo real.

Teoria:


"A umidade do solo (h) ou teor em água (w) é definida como o peso da água (P_a) contida em uma amostra de solo dividido pelo peso seco das partículas sólidas (P_s) do solo, sendo expressa empercentagem.
Para determinação do peso seco, o método tradicional é a secagem em estufa, na qual a amostra é mantida com temperatura entre 105 °C e 110 °C, até que apresente peso constante, o que significa que ela perdeu a sua água por evaporação.
O peso da água é determinado pela diferença entre o peso da amostra (P) e o peso seco (P_s)."
Desta forma temos: h=\frac{P - P_s}{P_s}\cdot 100=\frac{P_a}{P_s}\cdot 100


DESCRIÇÃO:

O sistema faz uso de um sensor de umidade (higrometro), através do qual, é possível monitorar a quantidade de água (umidade) presente no solo. 

Este sensor higrômetro entrega ao Arduino um sinal que varia entre 0 a 5V (0 a 1023 no arduino), deste modo, é possível especificar alcances de umidade relativa do sólo e assim caracterizar se o solo está: mais, ou menos úmido. 

Por exemplo:
- entre 0 a 500, umidade excessiva (solo encharcado); 
- entre 500 a 800, umidade normal (solo úmido);
- entre 800 a 1023, umidade escassa (solo seco).  
Todas estas etapas acima, serão indicadas em display LCD e LEDs.

Quando o solo estiver seco, o sistema efetuará essa indicação através de um LED vermelho, um aviso sonoro e mostrará uma mensagem no display LCD
Quando o solo estiver seco, será acionado uma bomba d'água para efetuar a irrigação do local. Um LED verde efetuará a indicação enquanto a bomba d'água estiver acionada.

A bomba d'água será desligada automáticamente após decorrido um tempo pré determinado de operação mínimo (por exemplo 30 segundos); se a irrigação não foi suficiente e o solo continua seco, a bomba será acionada novamente, e assim por diante... até quando a umidade do sólo atingir a condição de umidade normal ( a bomba será desligada e só acionará no próximo periodo de irrigação).
Se na hora estima o solo não estiver seco, o sistema irá esperar até o próximo horário de verificação.

O acionamento da bomba d'água é feito por um relé, isolado da parte eletrônica através de um acoplador óptico na entrada.

A irrigação será feita somente se:
1-  o solo estiver seco;
2 - uma hora pré determinada for alcançada (por exemplo: 06:00 da manhã)
Para isto usamos um relógio de tempo real (RTC) para gerar a hora do sistema.

O sistema é composto também de um sensor de nível para o reservatório de água. Sempre que o nível cair abaixo do mínimo estabelecido pelo posicionamento do sensor, será indicado através de um aviso sonoro e mensagem no display LCD.



HARDWARE & MATERIAL:

Para realizar este projeto, você necessitará de:
1 x Arduino UNO, MEGA, Duemilanove, ou Teensy 2.0+
1 x Display LCD com comunicação I2C
1 x Módulo RTC com comunicação I2C
1 x Módulo Relé opto-acoplado para 250V/10A
2 x Módulos "Driver" LM-393 de uso geral
1 x Sensor de umidade do Solo (Hygrometer) KDQ11
1 x Sensor de Nível de água (Feito em casa)
1 x Buzzer piezo-elétrico
2 x LEDs Verdes 10mm
1 x LED Vermelho 10mm
1 x LED Amarelo 10mm
4 x Resistores 150 Ohm 1/4 W
1 x Bomba dágua para Aquários com sistema de filtro (127 ou 220V)
1 x Cabo de Energia Elétrica, com plug CA 127/220V @10A
1 x Tomada para cabo de energia AC 127/220V @10A
Fios e cabos para as conexões

Você pode adquirir o sensor de umidade do solo e o "Driver" no ebay.
http://www.ebay.com/itm/KDQ11-MOISTURE-SENSOR-KIT-URBAN-GARDEN-TOOL-SOIL-MOISTURE-SENSOR-SCA-1703-/221227848188?pt=LH_DefaultDomain_0&hash=item33823511fc


Você pode adquirir o módulo relé no ebay.



COMPONENTES:

Abaixo uma visão geral dos componentes utilizados.

LCD I2C:





LM-393 DIVER:


Este é umdiagrama ilustrativo do uso do LM-393


Driver LM-393; Notar que N1 é o sensor a ser utilizado no Driver



Sensor de umidade do Solo:






Dados deste conjunto sensor/driver:
Quando o solo estiver seco, impedância será alta e o driver mostrará um valor alto na saída.
Quando o solo estiver encharcado, será mostrado um valor baixo na saída.
O range de 3 LEDs pode ser definido como:
- encharcado, umidade entre 0 a 500;
- Normal, umidade entre 500 a 800;
- seco, umidade entre 800 a 1023;
O módulo tem 1 saída digital e uma saída analógica. (no projeto, deve ser utilizado a saída analógica)



RTC:






Sensor de Nível:

Este sensor deve ser confeccionado em placa de fenolite.
Espaçamentos de 1mm e trilhas de 1 mm



RELÉ:
Módulo duplo, será utilizado somente uma via
 BOMBA D'ÁGUA:






DIAGRAMA & INTERLIGAÇÃO:

Abaixo temos um diagrama de blocos descrevendo as principais interligações do sistema.
Você pode obter o original deste arquivo, acessando o driver abaixo:
https://docs.google.com/file/d/0B_YlEklLDDS7SllRMzUyQlhHVDg/edit?usp=sharing


Diagrama de blocos



Abaixo o diagrama de interligação (em manuscrito).
Você pode obter o original deste arquivo, acessando o driver abaixo:
https://docs.google.com/file/d/0B_YlEklLDDS7RkNMZko2ckhLcUU/edit?usp=sharing



Diagrama de interligação e fiação original, em manuscrito
****************************************************************
****************************************************************
Corrija em seu diagrama: o sensor de nível deve ser conectado ao pino A0 do Arduino e o sensor de umidade do solo deve ser conectado ao pino A1 do arduino.
****************************************************************
****************************************************************

Descrição das pincipais conexões:

RTC <-> Arduino:
GND <-> GND
+5V <-> +5V
SDA <-> A4
SCL <-> A5

Relé <-> Arduino:
GND <-> GND
+5V <-> +5V
IN <-> D7

LCD <-> Arduino:
GND <-> GND
+5V <-> +5V
SDA <-> A4
SCL <-> A5

BUZZER <-> Arduino:
+ <-> D2
-  <-> GND

LM-393 DRIVER (sensor de umidade) <-> Arduino
GND <-> GND
+5V <-> +5V
OUT <-> A1

LM-393 DRIVER (sensor de Nível) <-> Arduino
GND <-> GND
+5V <-> +5V
OUT <-> A0

Outros Componentes <-> Função <-> Arduino
LED Vermelho <-> Solo seco           <-> D5
LED Amarelo   <-> Solo encharcado  <-> D3
LED Verde      <-> Solo úmido         <-> D4
LED Verde      <-> Bomba d'água     <-> D6 








Link para o original da figura acima:

https://docs.google.com/file/d/0B_YlEklLDDS7Ym52UE1qcGlqQVE/edit?usp=sharing





Link para o original da figura acima:

https://docs.google.com/file/d/0B_YlEklLDDS7Z3hZY3pNZ0NWZG8/edit?usp=sharing

SOFTWARE & PROGRAMAÇÃO:

Você pode baixar, gratuitamente o código para este projeto no driver do google docs abaixo:

https://docs.google.com/file/d/0B_YlEklLDDS7T3JFX05rR21xbEE/edit?usp=sharing

Ou no GitHub:

https://github.com/Arduinobymyself/ArduinoWateringSystem.git


Qualquer problema, dúvidas e sugestões; entre em contato via email:

arduinobymyself@gmail.com



TESTES:

Este é um exemplo de como trabalhará o sistema e como devem ser realizados os testes.
Logicamente, como o sistema tem um horário pré definido para operar, você pode mudar o horário via software para o horário em que fará os testes, e depois ajustar para o horário de trabalho.


Como montar o aparato para os testes




VÍDEOS & FOTOS:



Dúvidas e sugestões enviem para: arduinobymyself@gmail.com


Parte 1: http://youtu.be/_jcDxYK33ew

Parte 2: http://youtu.be/-JOfP1J0OHY

Parte 3: http://youtu.be/Czvxi1r21Zc


Parte 1





Parte 2




Parte 3





Fotos do projeto:




Sistema Montado com Garagino Versão 1

Detalhe das interligações do Garagino V1

Detalhe do sistema de potência - Relé e entrada e saída 127/220 VCA

Detalhe dos sensore de umidade do solo e sensor de nível do reservatório de água

Visão geral do sistema





Primeiro rascunho e ideias

Conceito definido

Algumas diretivas de operações

Vista Geral 1

Vista Geral 2

Componentes 1

Componentes 2

Sensores de Umidade do solo e Nível

Driver LM-393 - Detalhe 1

Driver LM-393 - Detalhe 2




terça-feira, 9 de julho de 2013

Matriz de Pontos 16x8 com MAX7219




Esta barra, indica o nível de dificuldade encontrado para cada experiência realizada, sendo:

"VERDE", indicação de nível 1 a 5 (Fácil);
"AMARELO", indicação de nível 6 a 8 (Médio);
VERMELHO, indicação de nível 9 e 10 (Difícil);



Matriz de Pontos 16x8 com módulo MAX7219


Este projeto é para mostrar o uso do módulo "MAX7219 Dot matrix module MCU control Display module DIY".

Para usá-lo você necessitará do módulo que pode ser adquirido no ebay:

http://www.ebay.com/itm/171048735052?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649

E do sketch para o Arduino e também da biblioteca MaxMatrix:
Faça o download de todos os aquivos no GitHub:
https://github.com/Arduinobymyself/Matrix16x8.git


Este é o diagrama de interligação entre o Arduino e os módulos (foi utilizado apenas 2 neste caso):

Arduino pino 13 (alternativa: pino 10) conectado ao pino CLK do módulo MAX7219
Arduino pino 11 (alternativa: pino 8) conectado ao pino DIN do módulo MAX7219
Arduino pino 10 (alternativa: pino 9) conectado ao pino CS do módulo MAX7219
GND e VCC (+5V)

Para a expansão é só conetar o DOUT do módulo MAX7219 com o DIN do próximo MAX7219...... e assim por diante.

O DOUT do módulo MAX7219 fica na parte de cima do módulo, enquanto o DIN fica na parte de baixo do módulo.

A matriz de pontos utilizada foi a 1088AH, mas pode ser qualquer uma equivalente...





E este é o módulo MCU para controle de matrix 8 x 8













Interconexão dos módulos MAX7219 MCU.
O programa está testado para até 8 módulos.




Lembrando, você pode ligar quantos quiser; somente interligando a saída de um na entrada do outro e deixando os outros sinais em paralelo.
No sketch, você tem que  modificar o parâmetro "maxInUse" para a quantidade que você vai utilizar.



NOTA IMPORTANTE:
Abaixo a maniera correta de ligar vários módulos
Note que o barramento começa da direita para a esquerda, ou seja:a primeira matriz que recebe os dados no DIN é a matriz da direita, que libera a informação no DOUT para o DIN da próxima matriz à esquerda e assim segue a cascata.....




Outra visão:
Exibindo Diapositive1.jpg
Como aprendizagem extra, podemos estudar o acionamento de displays de 7 segmentos.......






ESQUEMA E SUGESTÃO DE PLACA:






Estes são bons links para aprender mais sobre o assunto:
http://playground.arduino.cc/Main/MAX72XXHardware
https://www.pjrc.com/teensy/td_libs_Matrix.html

Abaixo um vídeo apenas demonstrativo.
Lembre-se que você pode modificar as mensagens no próprio código, ou utilizar uma entrada via serial.

http://youtu.be/uG88Tt6Apoo




Um segundo vídeo com 4 módulos.

http://youtu.be/yFx4r-WUp5g






***Novas funcionalidades adicionadas a este projeto (em 1/11/2014)***


1 - Matrix de 40x8 (código foi totalmente corrigido);
2 - Botão de iniciar a rolagem do texto;
3 - Controle de velocidade de rolagem;
4 - Botões de incremento e decremento da intensidade de luminosidade dos LEDs;

Alguns botões foram adicionados para poder cumprir essas novas caracteristicas/funcionalidades, conforme figura abaixo:


Botões e Potenciômetro - para os novos controles
É só ligar o conjunto aos pinos do Arduino indicados no diagrama.

Biblioteca, continua a mesma, porém o código está na versão 9. Você pode obtê-lo no GitHub (https://github.com/Arduinobymyself/Matrix16x8.git )
Ou solicitar via e-mail abaixo indicado.

*** NOTA IMPORTANTÍSSIMA***
Se você está tendo erro com prog_uchar!!?
Use o seguinte artifício:

1 - Para as IDEs mais antigas:
PROGMEM prog_uchar CH[] = { //used for older arduino's IDE

2 - Para as IDEs mais novas:
PROGMEM const unsigned char CH[] = { //used for newer arduino's IDE



Veja o novo vídeo:
http://youtu.be/beo7N1SeYoE?list=UUgx66KiICvaM682IP4u7nng





Sinta-se a vontade para enviar-me as suas dúvidas, comentários e sugestões.




Marcelo Moraes
arduinobymyself.blogspot.com.br
arduinobymyself@gmail.com
Skype: marcelo.moraes

A empresa

O ArduinoByMyself é uma entidade sem fins lucrativos. Nosso objetivo é compartilhar conhecimento e disponibilizar SW e HW livre para todos. Buscamos uma sociedade melhor e por isso não comercializamos produtos, mas damos todo o suporte para que todos possam construir seu próprio projeto e também tirar as dúvidas que forem necessárias. 
Também não fazemos projetos sob encomenda, mas toda idéia é válidade e guardada para postagem futura caso seja interessante (técnicamente e didaticamente falando).
Não existem direitos autorais, você pode modificar e usar o código e descritivo de como fazer sem nenhuma 
implicação legal (somente peço que divulgue o blog ArduinoByMyself, para que outras pessoas também tenham acesso as informações nele contidas).