Estufa Inteligente com sensor HDC1080 e Arduino - MakerHero
Estufa Inteligente com Sensor HDC1080 e Arduino

Estufa Inteligente com sensor HDC1080 e Arduino Deixe um comentário

Neste tutorial, você aprenderá a criar uma Estufa Inteligente utilizando o sensor de temperatura e umidade HDC1080 com Arduino. O sensor HDC1080 se destaca por sua alta precisão e facilidade de integração com o Arduino, tornando-o uma excelente escolha para projetos de monitoramento ambiental.

Estufa Inteligente com Sensor HDC1080

Com a ajuda da plataforma Arduino Cloud, você poderá visualizar e gerenciar remotamente os dados coletados pelo sensor HDC1080, além de controlar atuadores como lâmpadas, bombas d’água e coolers.

Objetivos

O objetivo deste tutorial é ensinar como criar uma estufa inteligente utilizando o sensor de temperatura e umidade HDC1080, o sensor de luminosidade BH1750, um módulo relé de 4 canais, LEDs e um display OLED, todos conectados ao Arduino Uno R4 WiFi. O projeto será integrado à Arduino Cloud para monitoramento e controle remoto. Além disso, neste tutorial você aprenderá a:

  • Montar o circuito utilizando os componentes mencionados.
  • Integrar o projeto com a Arduino Cloud para monitoramento e controle remoto.
  • Criar um dashboard personalizado na Arduino Cloud para visualização em tempo real dos dados coletados pelos sensores e para controle dos atuadores.
  • Automatizar o controle dos atuadores para manter as condições ideais dentro da estufa.

Materiais Necessários

Para seguir com este tutorial, você irá precisar dos seguintes materiais:

Materiais Necessários

Além dos itens mencionados acima, você também precisará de uma conta cadastrada na Arduino Cloud.

Como funciona o sensor HDC1080?

O sensor HDC1080 é um sensor digital de alta precisão para medir temperatura e umidade. Ele é bastante utilizado em aplicações que requerem monitoramento ambiental devido à sua precisão e facilidade de integração. Aqui está uma descrição detalhada de como ele funciona:

  • Medida de Temperatura: O HDC1080 utiliza um termistor integrado para medir a temperatura ambiente. Um termistor é um resistor cujo valor de resistência muda com a temperatura. O sensor mede a resistência e converte essa medida em uma leitura de temperatura.
  • Medida de Umidade: Para medir a umidade relativa do ar, o HDC1080 usa um polímero capacitivo. A capacitância de um polímero varia com a quantidade de água absorvida do ambiente. O sensor mede a capacitância e a converte em uma leitura de umidade relativa.

As principais características do sensor HDC1080 são as seguintes:

  • Precisão da Temperatura: ±0.2 °C
  • Precisão da Umidade: ±2% de umidade relativa
  • Faixa de Medição de Temperatura: -40 °C a +125 °C
  • Faixa de Medição de Umidade: 0% a 100% de umidade relativa
  • Interface: Comunicação via I2C, facilitando a integração com microcontroladores. Por exemplo, é possível integrar o HDC1080 ao ESP32.
  • Consumo de Energia: Baixo consumo de energia (100 nA em sleep mode), ideal para aplicações em dispositivos alimentados por bateria.

O HDC1080 possui os seguintes pinos:

HDC1080

  • VCC: Alimentação (2.7V a 5.5V)
  • GND: Terra
  • SDA: Linha de dados I2C
  • SCL: Linha de clock I2C

Para mais informações, consulte o HDC1080 datasheet aqui.

Como conectar o sensor HDC1080 ao Arduino?

Conectar o HDC1080 ao Arduino é um processo simples, pois o sensor utiliza a interface I2C para comunicação. Aqui estão os passos detalhados para fazer essa conexão e usar o sensor:

Primeiro conecte os seguintes pinos do HDC1080 ao Arduino:

Como conectar o sensor HDC1080 ao Arduino

  • VCC do HDC1080 ao 5V do Arduino
  • GND do HDC1080 ao GND do Arduino
  • SDA do HDC1080 ao pino SDA do Arduino
  • SCL do HDC1080 ao pino SCL do Arduino

Na sequência, é necessário fazer a instalação da biblioteca ClosedCube HDC1080 na Arduino IDE:

  • Abra o Arduino IDE.
  • Vá para Ferramentas -> Gerenciador de Bibliotecas.
  • Pesquise por “ClosedCube HDC1080” e instale a biblioteca.

Por fim, para testar o funcionamento do HDC1080 no Arduino, siga esse passos:

  • Vá para Arquivo -> Exemplos -> ClosedCube HDC1080 e selecione o exemplo hdc1080demo.
  • Faça o upload do código para a placa Arduino.
  • Abra o Monitor Serial da Arduino IDE. Você verá os valores de temperatura (ºC) e umidade (%) sendo impressos. 

Circuito Eletrônico: Estufa Inteligente com Sensor HDC1080 e Arduino 

O esquema de ligações para o projeto de estufa inteligente com sensor HDC1080 e Arduino está representado abaixo:

Circuito Eletrônico

As ligações realizadas são as seguintes:

Sensor HDC1080 <-> Arduino Uno R4 WiFi
GND <-> GND
SCL <-> SCL
SDA <-> SDA
VCC <-> 5V

Sensor BH1750 <-> Arduino Uno R4 WiFi
SDA <-> SDA
SCL <-> SCL
GND <-> GND
VCC <-> 5V

Display OLED 0,96” <-> Arduino Uno R4 WiFi
VCC <-> 5V
GND <-> GND
SCL <-> SCL
SDA <-> SDA

Módulo Relé 4 Canais <-> Arduino Uno R4 WiFi
GND <-> GND
IN1 <-> Pino 5
IN2 <-> Pino 4
IN3 <-> Pino 3
IN4 <-> Pino 2
VCC <-> 5V

LEDs <-> Arduino Uno R4 WiFi
Terminal Positivo LED Amarelo 1 <-> Pino 6
Terminal Positivo LED Vermelho 1 <-> Pino 7
Terminal Positivo LED Amarelo 2 <-> Pino 8
Terminal Positivo LED Vermelho 2 <-> Pino 9
Terminal Positivo LED Amarelo 3 <-> Pino 10
Terminal Positivo LED Vermelho 3 <-> Pino 11
Terminal Positivo LED Amarelo 4 <-> Pino 12
Terminal Positivo LED Vermelho 4 <-> Pino 13
OBS: Inserir resistores de 220Ω entre o pino negativo de cada um dos LEDs e o GND.

Preparação Arduino Cloud

Para configurar a placa Arduino Uno R4 na Arduino Cloud, siga os seguintes passos:

  • Vá para a aba Devices da Arduino Cloud.
  • Clique em Add Device.
  • Clique em Arduino board.
  • Faça a instalação do Arduino Cloud Agent.
  • Conecte sua placa Arduino Uno R4 WIFi ao computador.
  • Clique em Configure.
  • Dê um nome para sua placa.
  • Por fim, clique em Done. Sua placa já está configurada!

 

Agora precisamos criar as variáveis que serão utilizadas no projeto da Estufa Inteligente com Sensor HDC1080 e Arduino. Para isso, siga os seguinte passos:

  • Vá para a aba Things na Arduino Cloud.
  • Clique em Create Thing.
  • Em Cloud Variables, clique em Add
  • Configure a variável Luminosidade com os seguintes parâmetros:
    • Name: Luminosidade
    • Variable Type: Floating Point Number
    • Declaration: float luminosidade;
    • Variable Permission: Read only
  • Clique em Add Variable
  • Repita o processo anterior para a variável Umidade:
    • Name: Umidade
    • Variable Type: Floating Point Number
    • Declaration: float umidade;
    • Variable Permission: Read only
  • Clique em Add Variable
  • Repita o processo anterior para a variável Temperatura:
    • Name: Temperatura
    • Variable Type: Floating Point Number
    • Declaration: float temperatura;
    • Variable Permission: Read only
  • Clique em Add Variable
  • Repita o processo anterior para a variável Atuador1:
    • Name: Atuador1
    • Variable Type: Boolean
    • Declaration: bool atuador1;
    • Variable Permission: Read & Write
  • Clique em Add Variable
  • Repita o processo anterior para a variável Atuador2:
    • Name: Atuador2
    • Variable Type: Boolean
    • Declaration: bool atuador2;
    • Variable Permission: Read & Write
  • Para associar a placa que será utilizada no projeto, clique em Select Device.
  • Selecione a placa e clique em Associate.
  • Na sequência precisamos configurar a conexão WiFi. Para isso, clique em Configure.
  • Insira o nome e a senha da rede WiFi que a placa estará conectada.
  • Clique em Save.

 

Agora precisamos configurar o Dashboard onde poderemos monitorar e controlar as variáveis do projeto. Siga os seguintes passos:

  • Vá para a aba Dashboards na Arduino Cloud.
  • Clique em Create Dashboard.
  • Clique em Add e adicione o widget Switch.
  • Nomeie o widget para Atuador1.
  • Clique em Link Variable e selecione a variável Atuador1.
  • Clique em Done
  • Repita o mesmo processo para a variável Atuador 2
  • Para as variáveis Temperatura, Umidade e Luminosidade, use o widget Value.
  • Para configurar a visualização dos botões, clique no ícone Show Mobile Layout e depois no ícone Arrange widgets.
  • Configure a disposição dos botões da maneira que desejar e quando finalizar, clique em Done.

 

Código: Estufa Inteligente com Sensor HDC1080 e Arduino

Para carregar o código para a sua placa, siga os passos abaixo:

  • Vá para a aba Sketches na Arduino Cloud.
  • Selecione o código recém-criado.
  • Apague todo o conteúdo no editor de código e cole o código fornecido abaixo.
  • Clique no ícone de Upload.

Não é necessário instalar as bibliotecas manualmente, pois a Arduino Cloud as carregará automaticamente. Além disso, as configurações da rede WiFi já estão configuradas devido aos passos anteriores.

// Programa: Estufa Inteligente com Sensor HDC1080 e Arduino
// Autor: Rosana Guse

#include <SPI.h>
#include <Wire.h>
#include "ClosedCube_HDC1080.h"   // Biblioteca para o sensor HDC1080
#include <BH1750FVI.h>            // Biblioteca para o sensor de luminosidade BH1750FVI
#include <Adafruit_GFX.h>         // Biblioteca gráfica para displays
#include <Adafruit_SSD1306.h>     // Biblioteca para display OLED SSD1306
#include "thingProperties.h"      // Biblioteca para integração com Arduino IoT Cloud

// Definição de parâmetros do display OLED
#define LARGURA_OLED 128
#define ALTURA_OLED 64
#define RESET_OLED -1

// Definição dos pinos dos atuadores
#define in4 2
#define in3 3
#define in2 4
#define in1 5

// Definição dos pinos dos LEDs indicativos dos atuadores
#define in4LedOn 6
#define in4LedOff 7
#define in3LedOn 8
#define in3LedOff 9
#define in2LedOn 10
#define in2LedOff 11
#define in1LedOn 12
#define in1LedOff 13

// Criação de objetos para o display OLED, sensor HDC1080 e sensor BH1750
Adafruit_SSD1306 display(LARGURA_OLED, ALTURA_OLED, &Wire, RESET_OLED);
ClosedCube_HDC1080 hdc1080;
BH1750FVI LightSensor(BH1750FVI::k_DevModeContLowRes);

void setup() {
  Serial.begin(9600);  // Inicializa a comunicação serial a 9600 bps
  delay(1500);         // Aguarda 1.5 segundos

  // Inicializa propriedades para integração com Arduino IoT Cloud
  initProperties();
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();

  // Configura os pinos dos LEDs indicativos dos atuadores como saída
  pinMode(in1LedOn, OUTPUT);
  pinMode(in1LedOff, OUTPUT);
  pinMode(in2LedOn, OUTPUT);
  pinMode(in2LedOff, OUTPUT); 
  pinMode(in3LedOn, OUTPUT);
  pinMode(in3LedOff, OUTPUT);
  pinMode(in4LedOn, OUTPUT);
  pinMode(in4LedOff, OUTPUT);

  // Inicializa os LEDs indicativos dos atuadores
  digitalWrite(in1LedOn, LOW);
  digitalWrite(in1LedOff, HIGH);
  digitalWrite(in2LedOn, LOW);
  digitalWrite(in2LedOff, HIGH);
  digitalWrite(in3LedOn, LOW);
  digitalWrite(in3LedOff, HIGH);
  digitalWrite(in4LedOn, LOW);
  digitalWrite(in4LedOff, HIGH);

  // Configura os pinos dos atuadores como saída
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);

  // Inicializa os pinos dos atuadores em LOW
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);

  // Inicializa o display OLED
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("Falha ao inicializar o display SSD1306"));
    while (true);  // Se falhar, entra em loop infinito
  }
  display.setTextColor(SSD1306_WHITE);
  display.clearDisplay();

  // Inicializa o sensor HDC1080
  hdc1080.begin(0x40);
  Serial.println(F("Sensor HDC1080 inicializado"));

  // Inicializa o sensor de luminosidade BH1750
  LightSensor.begin();
  Serial.println(F("Sensor BH1750 inicializado"));

  // Mensagem inicial no display OLED
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.print(F("Sensores Iniciados"));
  display.display();
  delay(3000);  // Aguarda 3 segundos
  display.clearDisplay();
}

void loop() {
  // Funções principais para atualizar dados dos sensores e atuadores
  dadosSensores();
  dadosAtuadores();
  ArduinoCloud.update();  // Atualiza a comunicação com a Arduino IoT Cloud
}

void dadosSensores() {
  // Lê dados dos sensores
  luminosidade = LightSensor.GetLightIntensity();
  temperatura = hdc1080.readTemperature();
  umidade = hdc1080.readHumidity();

  // Exibe dados no display OLED
  display.clearDisplay();
  display.setTextSize(1);

  display.setCursor(0, 0);
  display.print("Luminosidade");
  display.setCursor(0, 10);
  display.print(luminosidade);
  display.print(" lux");

  display.setCursor(0, 22);
  display.print("Temperatura");
  display.setCursor(0, 32);
  display.print(temperatura);
  display.print(" ");
  display.write(167);  // Exibe o símbolo de grau "º"
  display.print("C");

  display.setCursor(0, 44);
  display.print("Umidade");
  display.setCursor(0, 54);
  display.print(umidade);
  display.print(" %");

  display.display();

  delay(3000);  // Aguarda 3 segundos antes da próxima leitura
}

void dadosAtuadores() {
  // Exibe o status dos atuadores no display OLED
  display.clearDisplay();
  display.setTextSize(1);

  display.setCursor(0, 0);
  display.print("Atuador 1: ");
  if (atuador1 == HIGH) {
    display.print("ON"); 
  } else {
    display.print("OFF");  
  }

  display.setCursor(0, 15);
  display.print("Atuador 2: ");
  if (atuador2 == HIGH) {
    display.print("ON"); 
  } else {
    display.print("OFF");  
  }

  display.display();

  delay(3000);  // Aguarda 3 segundos antes da próxima leitura
}

// Função chamada quando o estado do atuador 1 muda
void onAtuador1Change() {
  if (atuador1 == HIGH) {
    digitalWrite(in1LedOn, HIGH);
    digitalWrite(in1LedOff, LOW);
    digitalWrite(in1, HIGH);
  } else {
    digitalWrite(in1LedOn, LOW);
    digitalWrite(in1LedOff, HIGH);
    digitalWrite(in1, LOW);
  }
}

// Função chamada quando o estado do atuador 2 muda
void onAtuador2Change() {
  if (atuador2 == HIGH) {
    digitalWrite(in2LedOn, HIGH);
    digitalWrite(in2LedOff, LOW);
    digitalWrite(in2, HIGH);
  } else {
    digitalWrite(in2LedOn, LOW);
    digitalWrite(in2LedOff, HIGH);
    digitalWrite(in2, LOW);
  }
}

Funcionamento

O projeto da Estufa Inteligente com Sensor HDC1080 e Arduino tem como objetivo monitorar e controlar o ambiente dentro de uma estufa, assegurando condições ideais de temperatura, umidade e luminosidade. Através da integração com a plataforma Arduino Cloud, é possível visualizar e gerenciar esses parâmetros remotamente, garantindo uma estufa automatizada e eficiente:

 

  • HDC1080: Mede continuamente a temperatura e umidade. A precisão do sensor garante leituras confiáveis, essenciais para manter um ambiente controlado.
  • BH1750FVI: Monitora a intensidade luminosa. Este sensor é crucial para ajustar a iluminação conforme necessário, garantindo que as plantas recebam a quantidade adequada de luz.
  • Display OLED: Os dados coletados pelos sensores são enviados para o Arduino Uno R4 WiFi. O Arduino processa esses dados e os exibe no display OLED, onde é possível visualizar os valores de temperatura, umidade e luminosidade em tempo real.

Funcionamento: Estufa Inteligente

  • Módulo Relé: Baseado nas leituras dos sensores, o Arduino aciona ou desliga os relés, controlando dispositivos como lâmpadas, bombas d’água e coolers.
  • LEDs: Indicadores visuais fornecem feedback sobre o estado dos atuadores, facilitando o monitoramento local.

Funcionamento: Estufa Inteligente

  • Conexão WiFi: O Arduino Uno R4 WiFi conecta-se à internet e se comunica com a Arduino Cloud.
  • Dashboard: Na plataforma Arduino Cloud, um dashboard permite monitorar e controlar remotamente os parâmetros da estufa. Widgets configuráveis exibem os dados de temperatura, umidade e luminosidade, enquanto switches permitem controlar os atuadores.

Através da Arduino Cloud, é possível configurar alertas e regras de automação. Por exemplo, pode-se programar para acionar a bomba d’água automaticamente se a umidade cair abaixo de um determinado nível.


Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.

Faça seu comentário

Acesse sua conta e participe