Skip to content
otavioon edited this page Jun 23, 2015 · 20 revisions

#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.

Clone this wiki locally