Recentemente, comecei a estudar a programação do microcontrolador Arduino. Depois de concluir vários exercícios básicos (LEDs piscando, trabalhando com entradas discretas e analógicas, exibindo informações em um monitor de cristal líquido etc.), eu queria criar algum tipo de dispositivo útil para o lar.Decidi fazer um medidor de temperatura e umidade na sala, com uma indicação dos parâmetros no LCD. Também fiz uma luz de fundo de tela adaptável, que altera o brilho, dependendo do nível de iluminação da sala. Isso permite reduzir o consumo de energia do dispositivo e, assim, aumentar a vida útil da bateria.No projeto, usei os seguintes componentes:1. Placa Arduino Uno
2. Tela LCD1602 com módulo de suporte ao protocolo I2C. Para reduzir o número de fios e simplificar a conexão do monitor, decidi conectá-lo através do protocolo I2C. Para isso, soldamos um módulo conversor especial no monitor LCD.
"3. Sensor de temperatura e umidade DHT11. Permite determinar a umidade de 20-80% e a temperatura de 0-50˚C. O sensor possui 4 saídas, mas apenas 3 são usadas. Um resistor de 10k ohm deve ser instalado entre a saída de potência e a saída de dados. I Usei um sensor pronto montado na placa com um resistor conectado, para que você possa conectá-lo com segurança à placa Arduino
" .4. Fotoresistor. É conectado à placa Arduino com um pull-up para GND, através de um resistor de 10kΩ.
O diagrama de conexão é o seguinte: O
fotorresistor está conectado à entrada analógica A0 da placa Arduino. A linha de dados do sensor DHT11 é conectada ao pino discreto 2, o pino de alimentação é conectado ao + 5V Arduino, respectivamente, o pino GND é conectado no terra da placa Arduino. O visor LCD está conectado à energia da placa, o pino SDA está conectado ao A4, o pino SCL está ao A5. A linha de controle de brilho da luz de fundo está conectada ao pino 9, no qual o sinal PWM é gerado.Abaixo está o código fonte:#include "DHT.h"
#include "Wire.h"
#include "LiquidCrystal_I2C.h"
int LD;
#define DHTPIN 2
#define LED 9
#define FOTO 0
DHT dht(DHTPIN, DHT11);
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
pinMode(LED, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
}
int light(int svet)
{
if (svet<25)
{
return 255;
}
if(svet>1020)
{
return 2;
}
else
{
int L=(int)(-0.2*svet+261.262);
return L;
}
}
void loop() {
int f = analogRead(FOTO);
LD=light(f);
delay(2000);
analogWrite(LED, LD);
float h=dht.readHumidity();
float t=dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("Temp ");
lcd.print(t);
lcd.setCursor(0,1);
lcd.print("Hum ");
lcd.print(h);
}
Depois de compilar esse código, obtemos um dispositivo tão funcional:
no futuro, pretendo criar dispositivos mais interessantes e mais complexos no Arduino.Também fiz um vídeo onde mostrei como o dispositivo funciona: