Monitoramento Residencial I
O objetivo deste primeiro projeto é iniciar os testes para
monitoramento residencial. Nesta primeira fase será utilizarei a placa de desenvolvimento Wemos D1 R32, o sensor de temperatura DHT11 e sensor de movimento Hcsr501 Pir. Para monitoramento dos dados gerados acima iremos utilizar o aplicativo Blynk. .
Step 2 - Diagrama
Na figura 2 podemos identificar o diagrama proposto para montagem
Step 3 - Recursos Usados
Recursos usados
1x Placa Wemos D1 R32 + Cabo USB
- Tensão de Alimetação: DC 5 V-12 V
- Possui 1 entrada analógica (3.2 V de entrada max)
- Conexão Micro USB
- Compatível com Arduino
- Placa D1 = WiFi + Bluetooth
- 4 MB Flash
1x Sensor de Temperatura e Umidade DHT11
– Faixa de medição de umidade: 20 a 90% UR;
– Faixa de medição de temperatura: 0º a 50ºC;
– Alimentação: 3-5VDC (5,5VDC máximo);
– Corrente: 200uA a 500mA, em stand by de 100uA a 150 uA;
– Precisão de umidade de medição: ± 5,0% UR;
– Precisão de medição de temperatura: ± 2.0 ºC;
– Tempo de resposta: 2s
1 x Sensor de movimento Hcsr501 Pir
- Sensor Infravermelho com controle na placa;
- Sensibilidade e tempo ajustável;
- Tensão de Operação: 4,5-20V;
- Tensão Dados: 3,3V (Alto) - 0V (Baixo);
- Distância detectável: 3-7m (Ajustável);
- Tempo de Delay: 5-200seg (Default: 5seg);
- Tempo de Bloqueio: 2,5seg (Default);
- Trigger: (L)-Não Repetível (H)-Repetível (Default: H);
- Temperatura de Trabalho: -20 ~ +80C;
- Dimensões: 3,2 x 2,4 x 1,8cm;
1x Resistor 10 kΩ
1x Protoboard
Step 4 - Diagrama Elétrico
Conforme figura abaixo podemos ver o diagrama elétrico:
Step 5 - Montagem
Conforme figura abaixo:
Step 6 : Blynk
Na figura acima podemos perceber a configuração realizada no Blynk, Foi configurado de forma que podemos visualizar a temperatura e a umidade medida.
Quando houver movimento no ambiente será detectado pelo sensor e enviado uma mensagem para o aplicativo Blynk.
Quando não houver mais movimentos no ambiente receberemos também outra mensagem informando.
Step 7 - Configuração Do Arduino IDE
Conforme figura acima podemos ver as configurações para comunicação com a Placa Wemos D1 R32
Step 8 - Código De Programação
#define BLYNK_PRINT Serial
#include < WiFi.h >;
#include < BlynkSimpleEsp32.h >
#include < DHT.h >
char auth[] = "CODIGO DO BLYNK";
const char* ssid = "REDE WIFI";
const char* password = "SENHA";
#define DHTTYPE DHT11
#define DHTPIN 3
BlynkTimer timer;
//temperatura e umidade
const int pino_dht = 3; // pino onde o sensor DHT está conectado
float temperatura; // variável para armazenar o valor de temperatura
float umidade; // variável para armazenar o valor de umidade
DHT dht(pino_dht, DHT11); // define o pino e o tipo de DHT
//movimentos
const int SENSOR_MOV_1 = D4; // SENSOR DE MOVIMENTO INSTALADO NA COZINHA
int sensormov1sc; // estado atual
int sensormov1sp; // estado previo
// valor para o blynk ler
int pirValue;
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("Falha na leitura do dht!");
return;
}
Blynk.virtualWrite(V6, h);
Blynk.virtualWrite(V5, t);
}
void setup()
{
Serial.begin (115200);
Serial.println();
Serial.print("Conectando a ");
Serial.println(ssid);
WiFi.begin (ssid, password);
Serial.print ("Connecting to WiFi");
while(WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(500);
}
Serial.println("\nConnected to the Wifi network");
Serial.print(" IP address: ");
Serial.println(WiFi.localIP());
pinMode(LED_BUILTIN, OUTPUT);
Blynk.begin(auth, ssid, password);
dht.begin();
timer.setInterval(1000L, sendSensor);
// movimento
pinMode (SENSOR_MOV_1, INPUT); // DEFINE ESTADO DE LEITURA DO SENSOR DE MOVIMENTO
} // FIM VOID SETUP
void loop()
{
if ((WiFi.status() == WL_CONNECTED))
{
Serial.println("Conectado Wifi");
delay (5000);
}
else
{
Serial.println("Perdeu Conexão");
}
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
Blynk.run();
timer.run();
// A leitura da temperatura e umidade
temperatura = dht.readTemperature(); // lê a temperatura em Celsius
umidade = dht.readHumidity(); // lê a umidade
// Se ocorreu alguma falha durante a leitura
if (isnan(umidade) || isnan(temperatura))
{
Serial.println("Falha na leitura do Sensor DHT!");
}
else
{ // Se não
// Imprime o valor de temperatura
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.print(" *C ");
Serial.print("\t"); // tabulação
// Imprime o valor de umidade
Serial.print("Umidade: ");
Serial.print(umidade);
Serial.print(" %\t");
Serial.println(); // nova linha
}
// SENSOR DE MOVIMENTO 1
sensormov1sp = sensormov1sc; // Armazena o último estado
sensormov1sc = digitalRead (SENSOR_MOV_1); // leitura do nova estado
if (sensormov1sp == LOW && sensormov1sc == HIGH)
{
Serial.println ("MOVIMENTO DETECTADO NA COZINHA");
Blynk.notify("ALARME DECTECTADO!");
}
else
if (sensormov1sp == HIGH && sensormov1sc == LOW)
{
Serial.println ("SEM MOVIMENTOS NA COZINHA");
Blynk.notify("SEM MOVIMENTOS NA COZINHA");
}
} //FIM DO VOID LOOP
Step 9 - Vídeo
Conforme vídeo podemos ver o funcionamento.
Link do vídeo: https://www.youtube.com/watch?v=m_7n-wFjcas
Step 10 - Conclusão
A experiência com a programação, trabalho com os sensores e o desenvolvimento de um aplicativo para monitoramento foi bem interessante e motivante. Com isso o projeto de monitoramento continuará...