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:
DHT11 | Arduino |
---|---|
+ | 5V |
- | GND |
S/DATA/OUT | A1 |
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