-
Notifications
You must be signed in to change notification settings - Fork 1
sensor DHT11
#Sensor de Temperatura e Umidade (DHT11)
##Recursos Os recursos físicos necessários para a criação de um sensor de umidade e temperatura neste projeto são descritos abaixo:
- 01 Arduino
- 01 Sensor DHT11
- 01 Módulo NRF24L01
- 10 Conectores
##Esquemático O esquemático a seguir ilustra a configuração física necessária. (ADD IMAGEM DHT11 SCHEMA)
Podemos resumir as configurações físicas da seguinte maneira:
-
Para o Módulo HC-SR501:
- VCC (Vermelho): Arduino 5V
- DATA (Verde): Arduino 3
- GND (Preto): Arduino GND
-
Para o Módulo NRF24L01:
- VCC (Vermelho): Arduino 3.3V
- GND (Preto): Arduino GND
- SCK (Verde): Arduino 13
- MISO (Rosa): Arduino 12
- MOSI (Azul): Arduino 11
- CSN (Amarelo): Arduino 6
- CE (Laranja): Arduino 5
##Código O código abaixo, escrito na linguagem wiring, é utilizado para configurar o arduino como nó sensor, utilizando a biblioteca do mysensors, e fazer a leitura do sensor DHT11 (sensor de temperatura e humidade). Demais explanações são dadas logo abaixo.
#include <SPI.h>
#include <MySensor.h>
#include <DHT.h>
#define CHILD_ID_HUM 0 //Id do sensor filho (humidade)
#define CHILD_ID_TEMP 1 //Id do sensor filho (temperatura)
#define HUMIDITY_SENSOR_DIGITAL_PIN 3
unsigned long SLEEP_TIME = 30000; //Tempo de espera entre as leituras (em milisegundos)
MySensor gw;
DHT dht;
float lastTemp;
float lastHum;
boolean metric = true;
MyMessage msgHum(CHILD_ID_HUM, V_HUM);
MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
void setup()
{
gw.begin();
dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN);
// Manda a informaçao da versão do esquematico para o gateway.
gw.sendSketchInfo("Humidity", "1.0");
// Registra todos os sensores no gateway (eles serão criados como dispositivos filhos)
gw.present(CHILD_ID_HUM, S_HUM);
gw.present(CHILD_ID_TEMP, S_TEMP);
metric = gw.getConfig().isMetric;
}
void loop()
{
delay(dht.getMinimumSamplingPeriod());
float temperature = dht.getTemperature();
if (isnan(temperature)) {
Serial.println("Failed reading temperature from DHT");
} else if (temperature != lastTemp) {
lastTemp = temperature;
if (!metric) {
temperature = dht.toFahrenheit(temperature);
}
gw.send(msgTemp.set(temperature, 1));
Serial.print("T: ");
Serial.println(temperature);
}
float humidity = dht.getHumidity();
if (isnan(humidity)) {
Serial.println("Failed reading humidity from DHT");
} else if (humidity != lastHum) {
lastHum = humidity;
gw.send(msgHum.set(humidity, 1));
Serial.print("H: ");
Serial.println(humidity);
}
gw.sleep(SLEEP_TIME); //Dorme um pouco...
}
Na função setup, o nó é inicializado com o ID definido no MySensors e os sensores de temperatura e umidade são registrados como nós filhos do dispositivo. Na função loop (o loop principal do programa), uma espera inicial é dada com o valor minimo de espera do sensor DHT11 (aproximadamente 6 segundos), e então a leitura de temperatura é realizada. Caso a temperatura foi alterada desde a ultima leitura, seus novos dados são enviados ao gateway e à porta serial. A umidade é lida logo em seguida e o mesmo procedimento é aplicado. Por fim o dispositivo dorme por alguns milisegundos com o intuito de preservar energia. Desta forma, este nó sensor será disposto na unidade solar e suas leituras serão realizadas a cada 30 segundos e as informações enviadas ao gateway para posterior processamento.