Conectando Sensor de Umidade do Solo no Raspberry Pi

Mais um sensor para nosso baú de posts: o sensor de umidade do solo (em inglês utiliza-se um termo específico ‘moisture’) que vejo em posts como higrômetro, porém um pouco de pesquisa me mostrou que este termo é tão genérico como ‘medidor de umidade’ (explicação embasada aqui) – enfim, vamos medir a umidade do solo e quem sabe construirmos uma estufa automatizada de forma simples.

Observação antes de continuar: para projetos de estufa utilizando o módulo de sensor que vou mostrar a vocês nem necessitaria do Raspberry Pi (nem outro processador), portanto nosso interesse aqui é na obtenção dos dados analógicos e não apenas um liga-desliga de irrigação.

Sensor de Umidade do Solo

Este é o módulo sensor que adquiri para meus projetos. Possui uma saída Digital e uma saída Analógica. Desta forma, podemos utilizar o potenciômetro (quadrado azul) para regular um valor e receber a sinalização 0 ou 1 da saída digital ou captar através de um conversor Analógico Digital os valores detalhados da umidade do solo.

850xn_5__3_2
Sensor de Umidade de Solo: módulo mais sonda para solo

Especificação Técnica:

  • Tensão de Operação: 3,3-5v
  • Sensibilidade da saída digital ajustável via potenciômetro
  • Saída Digital e Analógica
  • LED indicador de alimentação (vermelho)
  • LED indicador saída digital (verde)
  • Dimensão placa: 3×1,5 cm
  • Dimensão sonda: 6×2 cm

Pinos:

  • VCC: 3,3-5v
  • GND: GND
  • D0: Saída Digital
  • A0: Saída analógica

Conectando ao Raspberry Pi

Iremos fazer o mais complicado e significante primeiro (só para ser diferente) conectando saída analógica e depois apresentaremos a (sem graça) da conexão via saída digital do sensor.

Utilizando a Saída Analógica

Caso você ainda não tenha adquirido o nosso querico MCP3008 e adicionado 8 lindas portas analógicas no magnânino Raspberry Pi, então é horas de fazê-lo. Siga este post passado nosso e veja como fazer isso: Adicionando Entradas Analógicas no Raspberry Pi

Caso você neste momento não tenha esta disponibilidade pule para as próximas etapas, e volte assim que estiver com o MCP3008 conectado!

 

esquema-higrometro
Raspberry Pi: ligação das Saídas Analógica (Azul) e Digital (Verde) do Higrômetro

 

Para a conexão Analógica utilizaremos o canal 2 do MCP3008 (conforme diagrama acima).

It’s Coding Time (Parte 1)

Caso você utilize outros canais do MCP3008 para seu sensor realize as adaptações necessárias no código  que segue.

Criaremos o arquivo:

sudo nano higrometro.py

Digite o código:

from gpiozero import MCP3008
from time import sleep
higro = MCP3008(2) # Atribui o canal 2 para esta leitura

while True:
      # Normalizei a escala onde 0 é completamente seco 
      # e 100 é completamente molhado
      higro_perc = (1 - higro) * 100
      print("Umidade do Solo {0}%".format(higro_perc))
      sleep(1)   # executa 1 leitura nova a cada segundo

Salve o arquivo com CTRL+X e confirme.

Para executar, na linha de comando digite:

sudo python higromeytro.py

Caso queiramos criar um limite (ou threshold) para que quando ultrapassado seja registrado um alerta ou mesmo acionada uma válvula de irrigação, podemos incrementar o esquemático e o programa conforme abaixo:

circuito-de-irrigacao-basico
Irrigação com base em níveis analógicos

Vamos criar um novo programa Python da seguinte forma:

sudo nano irrigacao.py

Digite o código:

from gpiozero import MCP3008
from gpiozero import DigitalOutputDevice
from time import sleep
higro = MCP3008(2)               # Atribui o canal 2 para esta leitura
valvula = DigitalOutputDevice(3) # Valvula na GPIO 3
limite = 50                      # definido limite de umidade como 50%

while True: 
      higro_perc = (1 - higro) * 100
      print("Umidade do Solo {0}%".format(higro_perc))
      if higro_perc < 50:
            valvula.on()
            print("Irrigação Ligada")
      else:
            valvula.off()
            print("Irrigação Desligada")
      sleep(1)   # executa 1 leitura nova a cada segundo

Salve o arquivo com CTRL+X e confirme.

Para executar, na linha de comando digite:

sudo python irrigacao.py

 

Vale ressaltar que este exemplo é meramente para explorarmos o Raspberry Pi, pois a solução mais simples e/ou prática para esta situação é utilizarmos apenas o Módulo do Higrômetro, ajustarmos o potênciometro no nível adequado e conectarmos diretamente sua saída digital na válvula.

Estamos explorando o uso do higrômetro com o Raspberry Pi para que possamos pensar em outras utilizações mais complexas, como por exemplo o projeto Emily Plunt, que estará em breve no blog.


Utilizando a saída digital

Para utilizar a saída digital, vamos seguir o mesmo esquemático apresentado, porém agora monitorando a GPIO 21 para captarmos se a saída digital foi ou não acionada. Este modelo de utilização faz tão pouco uso do Raspberry Pi que poderíamos (devido ao sensor estar acoplado ao módulo) dispensar seu uso em alguns casos.

 

esquema-higrometro
Raspberry Pi ligado ao Higrômetro: Saída Digital

Precisaremos ligar apenas os fios vermelho (Vcc), preto (GND) e verde (Digital), sem a necessidade do MCP3008.

Caso você utilize uma porta diferente da GPIO21, por favor, altere o código de acordo.

 

It’s Coding Time (Part 2)

Para interpretar a entrada digital, achei interessante utilizarmos da biblioteca GPIOZERO a entidade Button (botão), pois ela possui funcionalidades interessantes – consulte aqui como funciona no detalhe.

A (talvez) pegadinha aqui é configurá-la para ser do tipo ‘pull down’, isto é, ‘pull_up’ é igual a falso.

Indo direto ao ponto: isto deve ser feito, pois na configuração normal os botões quando pressionados, fecham o circuito conectando o GND no terminal de entrada da GPIO designada – esta é então configurada com um resistor de ‘pull-up’ para interpretar este GND em sua porta.

Porém como o módulo liberar um tradicional 1 (Vcc) e 0 (GND), não precisamos do ‘pull-up’, ele deve simplesmente interpretar o sinal como vier, assim ligaremos o resistor ‘pull-down’ – através desta configuração.

Para saber mais sobre pull-up e pull-down sugiro este vídeo:

Bom, vamos ao código – que no final é bem simples.

Criaremos o arquivo:

sudo nano simples.py

e editaremos o danado, desta forma:

#! usr/bin/python
#_*_ coding: utf-8 _*_

from gpiozero import Button
higr_dig = Button(pin = 21, pull_up = False)

higr_dig.wait_for_press()
print("o solo está úmido o suficiente")

Salve o arquivo com CTRL+X e confirme.

Para executar, na linha de comando digite:

sudo python simples.py

Mais um final feliz.

Abs,

DC

Anúncios

6 comentários sobre “Conectando Sensor de Umidade do Solo no Raspberry Pi

  1. Olá, gostaria de PARABENIZÁ-LOS pelo excelente Tutorial.
    Didático, elucidativo, claro, organizado, motivador e muito mais.
    Até então, só vinha encontrando tutoriais sobre este assunto para Arduino, e em 11/jan/2017 comprei um RPi 3. Por coincidência, 6 dias depois vcs publicaram este tutorial, o que me foi muito útil.
    Muito obrigado.

    1. Opa! Comprei um solenóide no Ebay de 5V, demorou para chegar, mas vai direto na GPIO. Porém a foto e no Brasil realmente é de 12V – vou incluir neste tutorial um adicional de como fazer a conexão com estas de 12V utilizando um transistor.
      Obrigado pelo feedback.

  2. Prezado, estou tentando utilizar a bomba de agua e nao estah funcionando. Eh uma bombinha de 3-6V ligada no pino 5 (gpio3) e no pino 6 (gnd). Ao executar valvula.on() ou valvula.off() nada acontece. Se ligo o jumper do pino 5 no pino 1 ou 2 (3.3 ou 5 V) a bombinha liga. Pode me ajudar ?

    1. Oi Rogério, provável que a corrente que a GPIO está liberando não seja suficiente para sensibilizar sua bomba.
      A corrente total dos pinos 1 e 2 são maiores que do GPIO, a bomba deve ter essa especificação para podermos comparar.
      Pensando agora em resolver, você sabe montar uma chave utilizando um transistor simples? Se não me avisa que eu atualizo o post! abs

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s