Dica: Otimização de memória com Arduino e DHT11

Veja nesta pequena dica como economizar memória do Arduino com esta library para o DHT11


Caso seu projeto use o sensor de temperatura DHT11, provavelmente você deve estar usando a excelente biblioteca da Adafruit DHT.

No entanto, existe um lib mais simples e rápida que pode ser um alternativa para projetos que precisam economizar o máximo possível de memória.

Trata-se da biblioteca SimpleDHT desenvolvida pelo desenvolvedor chinês Win Lin

Fiz um teste com o NodeMCU e tive um ganho de 6000 bytes de memória. No Arduino tive um ganho de 50%

Veja a seguir como utilizar a library…

Utilização

Esta biblioteca pode ser baixada e configurada pela própria IDE do Arduino.

Para isso, acesse o menu Sketch → Incluir Biblioteca → Gerenciar bibliotecas.
Digite na caixa de pesquisa o nome da lib SimpleDHT e solicite sua instalação.

Vá até o menu Arquivo → Exemplos e procure por DHT11Default

Veja o sketch de exemplo comentado:


#include <SimpleDHT.h>

// for DHT11, 
//      VCC: 5V or 3V
//      GND: GND
//      DATA: 2
int pinDHT11 = 2; //Sensor conectado ao pino 2
SimpleDHT11 dht11; //Criação do objeto para a biblioteca

void setup() {
  Serial.begin(9600); 
}

void loop() {
  // start working...
  Serial.println("=================================");
  Serial.println("Sample DHT11...");
  
  // read without samples.
  //Variáveis para as leitura
  byte temperature = 0;
  byte humidity = 0;
  if (dht11.read(pinDHT11, &temperature, &humidity, NULL)) {
    Serial.print("Read DHT11 failed.");
    return;
  }
  
  Serial.print("Sample OK: ");
  Serial.print((int)temperature); Serial.print(" *C, "); 
  Serial.print((int)humidity); Serial.println(" %");
  
  // DHT11 sampling rate is 1HZ.
  delay(1000); //Delay necessário
}

Conclusão

A simpleDHT foi construída especificamente para o DHT11.
Para o DHT22 existe outra biblioteca que ocupa muito pouco espaço na memória e tem a vantagem de detectar qual o modelo do sensor está sendo usado:

https://github.com/markruys/arduino-DHT

Happy Sketching!

 

3 comentários em “Dica: Otimização de memória com Arduino e DHT11”

  1. Poderia me ajudar por favor, estou há dias tentando ler os dados do sensor dht11(o módulo com 3 pinos) com o nomemcu e só me retorna “err=101”, utilizando no arduino ele funciona normalmente.

    ele fica em loop nesse trecho:
    if (dht11.read(pinDHT11, &temperature, &humidity, NULL)) {
    Serial.print(“Read DHT11 failed.”);
    return;
    }

    conexões
    Pino 1 coloquei no 3v e 5v, testei nos dois.
    Pino 2 coloquei 2 (igual ao seu código) e conectei na D4(testei também na D2)
    Pino 3 gnd

    Testei nos meus dois nodemcu e fiz o teste com os dois sensores mas há sempre o mesmo retorno.

    se puder por favor me ajudar, agradeço.

    Obrigado!!!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *