Sensor de temperatura DHT11 com registro em arquivo
O DHT11 é um sensor de temperatura e umidade, relativamente barato, e interessante para automação. Em um projeto IOT (Internet of Things) você pode consultar a temperatura da sua casa a distância, por exemplo, e determinar se vai ligar o ar condicionado (também a distância) previamente para chegar em casa já com um ambiente refrigerado. Este, claro, é só um exemplo de utilização.
Vejamos como usá-lo para, a cada 2 segundos, exibir estas informações (temperatura e umidade) no Monitor Serial (Arduino IDE) e também fazer o registro em arquivo no cartão SD. As ligações são as seguintes:
[table]
DHT11,Arduino
+,5V
-,GND
S/DATA/OUT,A1
[/table]
Você precisará instalar esta biblioteca (DHT11.zip) no Arduino IDE (Sketch -> Include Library -> Add .ZIP Library…).
E o código a ser utilizado é este:
#include <dht11.h>
#include <SPI.h>
#include <SD.h>
File f;
dht11 DHT11;
#define DHT11PIN A1
void setup()
{
Serial.begin(9600);
delay(1000);
Serial.println("DHT11 to SDCard EXAMPLE");
Serial.print("LIBRARY VERSION: ");
Serial.println(DHT11LIB_VERSION);
Serial.println();
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
}
void loop()
{
Serial.println("\n");
int chk = DHT11.read(DHT11PIN);
Serial.print("Read sensor: ");
switch (chk)
{
case DHTLIB_OK:
Serial.println("OK");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.println("Checksum error");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.println("Time out error");
break;
default:
Serial.println("Unknown error");
break;
}
int h = DHT11.humidity;
int t = DHT11.temperature;
Serial.print("Humidity (%): ");
Serial.println((float)h, 2);
Serial.print("Temperature (Celsius): ");
Serial.println((float)t, 2);
f = SD.open("readings.txt", FILE_WRITE);
// if the file opened okay, write to it:
if (f) {
Serial.print("Writing to readings.txt...");
f.print(h);
f.print(",");
f.println(t);
// close the file:
f.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening readings.txt");
}
delay(2000);
}
Para o cartão SD utilizei o Ethernet Shield, cujo pino CS é o 4 (utilizado no SD.begin(4)). Caso utilize outro módulo com slot SD verifique qual é o pino CS para fazer a alteração.
Então, vai usar o DHT11 para fazer o quê? Deixe seu comentário!
na realidade seria para uma horta 4.0 , pois no futuro próximo fazer controle remoto, mas no momento queria associar estes dados de temperatura e umidade ao tempo, colocando um RTC, que também acionaria uma solenoide para a rega da horta. Estou apanhando no código pois sou iniciante. Se você pudesse me ajudar . Grato Prof. Salgueiro