Toque no número: (18) 98206-3002 whatsapp

Módulo SD Card com ESP8266








Nesta montagem temos um SD Card conectado no ESP8266. Colocamos um DHT22, que mede temperatura e umidade e envia essas informações para o cartão SD.







Ligado o circuito, ele mostra 43.40 de umidade e, de temperatura, 26.80. Toda vez que ele mostra aquela mensagem “abrindo o arquivo com sucesso” é porque ele rodou uma vez no loop. O que acontece aí é o seguinte: apenas os valores estão sendo gravados no arquivo log, ou seja, a mensagem "abrindo o arquivo com sucesso" está apenas como aviso, ela não é gravada.




WiFi ESP8266 NodeMcu ESP-12E



Aqui detalhamos o componente que utilizamos, neste caso o NodeMCU ESP12, juntamente com o datasheet desse dispositivo.



Sensor de umidade


Na sequência, exponho detalhes sobre este outro componente, o DHT22, com a respectiva pinagem.



Módulo SD Card

Este é o nosso módulo de SD Card. Como vocês podem ver pela pinagem, ele é conexão SPI.



Montagem

O diagrama de montagem conta com o leitor, o DHT22, o NodeMCU ESP12. Este último, escolhi porque precisa de uma quantidade de IOs razoável, ou seja, o ESP01 também daria certo para esta montagem.



Bibliotecas

Para essa montagem você precisa da biblioteca do DHT da própria IDE do Arduino. Basta acessar “Sketch> Incluir Biblioteca> Gerenciar Bibliotecas” que você baixa o DHT. A mesma coisa você tem que fazer para a Biblioteca SD.



Código Fonte

//biblioteca responsável pela comunicação com o Cartão SD
#include <SD.h>
//biblioteca responsável pela comunicação com o sensor DHT22
#include <DHT.h>

// pino de dados do DHT será ligado no D6 do esp
#define DHTPIN D2     
// tipo do sensor
#define DHTTYPE DHT22   

// construtor do objeto para comunicar com o sensor
DHT dht(DHTPIN, DHTTYPE);
 
//pino ligado ao CS do módulo SD Card
#define CS_PIN  D8;
O código-fonte utilizado na montagem é simples, somente para mostrar o SD Card funcionando. Toda a sofisticação você tem que inserir depois, podendo utilizar outros inúmeros recursos, mas que não cabem a este exemplo.



Setup

void setup()
{
  Serial.begin(9600);
  Serial.print("Inicializando o cartão SD...");

  //inicializa o objeto para comunicarmos com o sensor DHT
  dht.begin();
  
  // verifica se o cartão SD está presente e se pode ser inicializado
  if (!SD.begin(CS_PIN)) {
    Serial.println("Falha, verifique se o cartão está presente.");
    //programa encerrrado
    return;
  }
  
  //se chegou aqui é porque o cartão foi inicializado corretamente  
  Serial.println("Cartão inicializado.");

}


Na função Setup, vamos iniciar nosso objeto para comunicar com o sensor e também inicializar o SD Card.



Loop
  //faz a leitura da umidade
  float umidade = dht.readHumidity();
  Serial.print("Umidade: ");
  Serial.println(umidade);
  //faz a leitura da temperatura
  float temperatura = dht.readTemperature();
  Serial.print("Temperatura: ");
  Serial.println(temperatura);

  File dataFile = SD.open("LOG.txt", FILE_WRITE);
  // se o arquivo foi aberto corretamente, escreve os dados nele
  if (dataFile) {
    Serial.println("O arquivo foi aberto com sucesso.");
      //formatação no arquivo: linha a linha >> UMIDADE | TEMPERATURA
      dataFile.print(umidade);
      dataFile.print(" | ");
      dataFile.println(temperatura);

      //fecha o arquivo após usá-lo
      dataFile.close();
  }
  // se o arquivo não pôde ser aberto os dados não serão gravados.
  else {
    Serial.println("Falha ao abrir o arquivo LOG.txt");
  }

  //intervalo de espera para uma nova leitura dos dados.
  delay(2000);

}


No loop, lemos umidade e jogamos dentro do float de umidade, lemos temperatura e jogamos dentro do float de temperatura. Isto é muito parecido com a linguagem C padrão.




Arquivos para download:






Nenhum comentário:

Tecnologia do Blogger.