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!
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!!!
Olá Douglas!
O DHT11 funciona tanto em 3.3V ou 5V.
O problema pode ser:
1 – Número do pino errado no código. Use o número (index). Veja esse post para se orientar: https://iotbytes.wordpress.com/nodemcu-pinout/
2 – A versão da library não é compatível com NODEMCU. Nesse caso, use a library padrão: https://github.com/adafruit/DHT-sensor-library. A library sofreu alterações depois que postei o artigo