ATIVIDADE PRÁTICA – SISTEMAS SUPERVISÓRIOS – MONITORAMENTO DE TEMPERATURA E UMIDADE COM ARDUINO E DISPLAY LCD

SISTEMAS SUPERVISÓRIOS
Profa. MSc. Maria Aline Gonçalves
Roteiro de Atividade Prática: Monitoramento de Temperatura e Umidade com Arduino
e Display LCD
1. Objetivo Geral
Aquisição de dados utilizando o ScadaBR para exibir a temperatura e umidade obtidas
através do sensor DHT11.
2. Materiais:
Nome Qtde Componente
U3
1
LCD 16 x 2
Rpot1
1
10 kΩ Potenciômetro
R1
1
220 Ω Resistor
U1
1
Arduino Uno R3 ou similar
U2
1
Sensor de temperatura [DHT11]
R2
1
4.7 kΩ Resistor –
kit
Jumpers e cabos
3. Atividade
3.1. Montagem do Circuito
1. Conecte os pinos do display LCD ao Arduino: 8,9,10,11,12 e 13.
2. Utilize o potenciômetro para ajustar o contraste do display.
Atenção: Observe a posição correta dos pinos e o uso do potenciômetro para controle
de contraste.
3. Conecte o pino 1 do DHT11 ao Vcc (3.3V ou 5V).
4. Conecte o pino 2 ao pino digital 2 do Arduino.
5. Conecte o pino 3 ao GND (0V).
6. Opcional: Conecte um resistor “pull-up” de 4,7KΩ a 10KΩ entre Vcc e o pino 2 do
DHT11 para evitar flutuações.
Figura 1 – Esquemático de montagem do circuito. (Fonte: Gonçalves, 2024)
*O projeto do TinkerCAD pode ser acessado e copiado em (https://shorturl.at/wiCl7).
SISTEMAS SUPERVISÓRIOS
Profa. MSc. Maria Aline Gonçalves
2. Código na IDE do Arduino
2.1. Baixando a Biblioteca DHT11
 Faça o download da biblioteca SimpleModbusSlaveV10.zip
2.2. Instalando a Biblioteca
 No IDE do Arduino, vá ao menu Sketch -> Incluir biblioteca -> Adicionar biblioteca.ZIP.
 Selecione o arquivo SimpleModbusSlaveV10.zip e clique em Abrir.
 Confirme a inclusão da biblioteca.
Nesta interface, deve-se utilizar a biblioteca de sensores DHT (DHT11, DHT21 e DHT22)
da Adafruit. Esta biblioteca inicia o sensor DHT11 e lê os valores de umidade e
temperatura
Copie e cole o código abaixo no IDE do Arduino.
#include <SimpleModbusSlave.h> // inclui a biblioteca Modbus para
comunicação com o SCADA
#include <DHT.h> // inclui a biblioteca do DHT
#include <LiquidCrystal.h> // inclui a biblioteca do LCD
DHT sensor(2, DHT11); // (PINO, TIPO DO SENSOR) Define que o pino 2 do
Arduino está conectado ao sensor DHT11
LiquidCrystal lcd(8, 9, 10, 11, 12, 13); //Conexão do módulo LCD (RS, E,
D4, D5, D6, D7)
enum {
UMIDADE_DHT11,
TEMPERATURA_DHT11,
//POTENCIOMETRO_VAL,
//SENSOR_VAL,
//CHAVE_VAL,
//LED1_VAL,
HOLDING_REGS_SIZE // tamanho total dos registradores
};
unsigned int holdingRegs[HOLDING_REGS_SIZE]; // array de registradores
Modbus
void setup() {
sensor.begin();
lcd.begin(16, 2); // Define o número de colunas e linhas do LCD
// Configura a comunicação Modbus
modbus_configure(&Serial, 115200, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE,
holdingRegs);
modbus_update_comms(115200, SERIAL_8N1, 1); // Configura os parâmetros
de comunicação Modbus
SISTEMAS SUPERVISÓRIOS
Profa. MSc. Maria Aline Gonçalves

//pinMode(11, INPUT);
//pinMode(10, OUTPUT);

}

void loop() {
modbus_update(); // Atualiza a comunicação Modbus

// modbus_update() é o único método utilizado no loop(). Ele retorna o
total de erros
// desde que o escravo foi iniciado. Você não precisa usá-lo, mas ele
é útil
// para encontrar falhas pelo mestre modbus.

// Leitura dos sensores
float umidade = sensor.readHumidity();
float temperatura = sensor.readTemperature();

// Atualiza os registradores Modbus
holdingRegs[UMIDADE_DHT11] = umidade;
holdingRegs[TEMPERATURA_DHT11] = temperatura;
// holdingRegs[POTENCIOMETRO_VAL] = analogRead(A0); // atualiza os
dados para serem lidos pelo mestre para ajustar o PWM
// holdingRegs[SENSOR_VAL] = analogRead(A1); // atualiza os dados do
sensor para serem lidos pelo mestre
// holdingRegs[CHAVE_VAL] = digitalRead(11); // atualiza o estado da
chave para ser lido pelo mestre
// digitalWrite(10, holdingRegs[LED1_VAL]); // escreve no pino 10 o
valor do LED1 lido pelo mestre

/* Nota:
O uso da instrução enum não é necessário. Você pode definir um
tamanho máximo permitido
para holdinRegs[] definindo HOLDING_REGS_SIZE usando uma constante e
então acessar
holdingRegs[] pelo “índice”.
Ou seja,
holdingRegs[0] = analogRead(A0);
analogWrite(LED, holdingRegs[1]/4);
*/

// Verifica se a leitura dos sensores falhou
if (isnan(umidade) || isnan(temperatura)) {
lcd.clear();
lcd.setCursor(5, 0);
lcd.print(“Error”);
return;
}
SISTEMAS SUPERVISÓRIOS
Profa. MSc. Maria Aline Gonçalves
// Atualiza o display LCD
lcd.setCursor(0, 0);
lcd.print(“Temp = “);
lcd.print(temperatura);
lcd.print(” C”);
lcd.setCursor(0, 1);
lcd.print(“RH = “);
lcd.print(umidade);
lcd.print(” %”);
delay(1000); // Espera 1 segundo entre leituras
}
Faça a verificação e upload do código para o Arduino.
5. Execução e Verificação
 Observe se o display LCD mostra a temperatura e umidade corretamente.
 Use o monitor serial para visualizar as leituras.
 Ajuste o circuito e o código conforme necessário para corrigir possíveis erros.
 Conecte com o ScadaBr conforme instruções da Aula 9 – Aula Prática sobre
Comunicação e Protocolos
Considerações Finais
 Verifique todas as conexões antes de ligar o Arduino.
 Se ocorrer leitura “zero” ou variações bruscas, inclua o resistor “pull-up”.
 Utilize este projeto como base para outros experimentos com sensores e displays
LCD.
Espero que este roteiro ajude a desenvolver e executar a atividade prática com sucesso. Se
precisar de mais assistência, estou à disposição.
Bons Estudos!
Professora Maria Aline

Olá, somos a Cavalini Assessoria Acadêmica.

Fazemos esse trabalho por um preço justo, sem cópia.

Nossa equipe multidisciplinar é altamente capacitada para oferecer assessoria na elaboração das mais variadas atividades, garantindo autenticidade e originalidade em todos os trabalhos.

Entre em contato conosco para solicitar o seu.

Aponte o celular para abrir o WhatsApp