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.
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:
- Arduino Uno R4 WiFi
- Sensor de Temperatura e Umidade HDC1080
- Sensor de Luminosidade BH1750FVI
- Módulo Relé 5V 4 canais
- Display OLED I2C
- LED Amarelo (4 unidades)
- LED Vermelho (4 unidades)
- Resistor 220Ω (8 unidades)
- Jumpers Macho-Macho
- Jumpers Macho-Fêmea
- Protoboard
- Cabo USB tipo C
- Atuadores como Lâmpada, Bomba D’água e Cooler (Opcional)
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:
- 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:
- 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:
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.
- 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.
- 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.