Registro de dados com Arduino e um módulo de cartão SD

Data Logging with Arduino and an SD Card Module

O registro de dados é um aspecto crucial de muitos IoT, monitoramento ambiental e projetos baseados em sensores. Com um Arduino e um módulo de cartão SD, você pode armazenar dados do sensor, registro de data e hora e outras leituras para análise futura. Este guia mostrará como fazer Conecte um módulo de cartão SD a Arduino, Escreva e leia dados e solucione problemas comuns.


1. O que você precisa

Conselho de Arduino (Uno, Mega, Nano, etc.)
Módulo de cartão Micro SD (baseado em SPI)
Cartão microSD (FAT32 Formatted, 2 GB -32 GB recomendado)
Fios de jumper
Sensores (opcionais, por exemplo, DHT11, BMP280, etc.)

🔹 Observação: O módulo SD se comunica com Arduino usando SPI (interface periférica em série).


2. Fiação do módulo de cartão SD em Arduino

Pino do módulo de cartão sd Arduino Uno Pin Arduino Mega Pin
VCC 5V 5V
Gnd Gnd Gnd
Miso 12 (miso spi) 50 (MISO SPI)
Mosi 11 (Mosi SPI) 51 (SPI Mosi)
Sck 13 (SPI SCK) 52 (SPI SCK)
CS (seleção de chips) 10 (SPI CS) 53 (SPI CS)

3. Instalando a biblioteca necessária

  1. Abrir Arduino IDE.
  2. Vá para Esboço → Incluir biblioteca → Gerenciar bibliotecas.
  3. Procurar Sd e instale o Biblioteca SD por Arduino.

4. Inicializando o cartão SD (teste se o módulo SD funcionar)

Use o seguinte Código de teste básico Para verificar se o módulo SD está funcionando:

#include <SPI.h>
#include <SD.h>

const int chipSelect = 10;  // Set CS pin for SD card

void setup() {
    Serial.begin(115200);
    Serial.print("Initializing SD card...");

    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
    Serial.println("SD card is ready.");
}

void loop() {
    // Nothing here
}

O que este código faz:

✔ Inicializa o Módulo SD.
✔ Impressões "O cartão SD está pronto" se detectado.
✔ Impressões "A inicialização do cartão SD falhou!" Se houver um erro.

🔹 Solução de problemas:
✅ Verifique se o cartão SD é FAT32 formatado.
✅ Garantir fiação correta (Miso, Mosi, SCK e CS).
✅ Tente outro CS PIN (por exemplo, 4 em vez de 10) e atualize o código.


5. Escrevendo dados no cartão SD

Este exemplo cria um arquivo (data.txt) e escreve leituras de sensores para ele.

#include <SPI.h>
#include <SD.h>

const int chipSelect = 10;  

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
    
    File dataFile = SD.open("data.txt", FILE_WRITE);
    if (dataFile) {
        dataFile.println("Hello, this is a test log!");
        dataFile.close();
        Serial.println("Data written to SD card.");
    } else {
        Serial.println("Failed to open file.");
    }
}

void loop() {
    // Nothing here
}

O que este código faz:

✔ Cria ou abre data.txt.
✔ Escreve "Olá, este é um registro de teste!" para o arquivo.
✔ Fecha o arquivo após a gravação.

🔹 Funções de manuseio de arquivos:
SD.open("filename.txt", FILE_WRITE); → Abrir arquivo para gravar.
dataFile.println("Text"); → Escreva dados no arquivo.
dataFile.close(); → Feche o arquivo para salvar dados.


6. Lendo dados do cartão SD

Use este código para Leia e exiba dados do cartão SD.

#include <SPI.h>
#include <SD.h>

const int chipSelect = 10;

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }

    File dataFile = SD.open("data.txt");
    if (dataFile) {
        Serial.println("Reading file...");
        while (dataFile.available()) {
            Serial.write(dataFile.read());  // Print file content
        }
        dataFile.close();
    } else {
        Serial.println("Failed to open file.");
    }
}

void loop() {
    // Nothing here
}

O que este código faz:

✔ Abre data.txt para leitura.
✔ Imprime o conteúdo do arquivo para Monitor serial.

🔹 Dica: Verifique se o arquivo existe antes de ler Para evitar erros.


7. Dados do sensor de registro no cartão SD

Este exemplo de logs Dados de temperatura e umidade de um sensor DHT11.

Componentes necessários

Sensor de temperatura e umidade DHT11
Biblioteca DHT (Biblioteca do Sensor Adafruit DHT)

Fiação para o sensor DHT11

Pino DHT11 Pino Arduino
VCC 5V
Gnd Gnd
DADOS 2

Código: registro de dados DHT11 no cartão SD

#include <SPI.h>
#include <SD.h>
#include <DHT.h>

#define DHTPIN 2      // Pin connected to DHT sensor
#define DHTTYPE DHT11 // Define sensor type (DHT11 or DHT22)
DHT dht(DHTPIN, DHTTYPE);

const int chipSelect = 10;

void setup() {
    Serial.begin(115200);
    dht.begin();

    if (!SD.begin(chipSelect)) {
        Serial.println("SD card initialization failed!");
        return;
    }
}

void loop() {
    float temp = dht.readTemperature();
    float humidity = dht.readHumidity();

    if (isnan(temp) || isnan(humidity)) {
        Serial.println("Failed to read from DHT sensor!");
        return;
    }

    File dataFile = SD.open("log.txt", FILE_WRITE);
    if (dataFile) {
        dataFile.print("Temperature: ");
        dataFile.print(temp);
        dataFile.print(" °C, Humidity: ");
        dataFile.print(humidity);
        dataFile.println(" %");
        dataFile.close();
    } else {
        Serial.println("Failed to write to SD card.");
    }

    Serial.print("Logged: Temp = ");
    Serial.print(temp);
    Serial.print(" °C, Humidity = ");
    Serial.println(humidity);

    delay(2000);  // Log every 2 seconds
}

O que este código faz:

✔ Lê temperatura e umidade do Sensor DHT11.
✔ Registra os dados em log.txt no cartão SD.
✔ Imprime os valores para Monitor serial.


8. Dicas para solução de problemas

Problema: Cartão SD não detectado?
✅ Verifique se o cartão SD é FAT32 formatado.
✅ Verifique duas vezes Miso, mosi, SCK e fiação CS.
✅ Tentar um cartão SD diferente (Alguns cartões são incompatíveis).

Problema: Dados não salvando?
✅ Sempre feche o arquivo usando dataFile.close();.
✅ Garantir espaço de armazenamento suficiente está disponível no cartão SD.


9. Aplicações práticas

Sistema de monitoramento climático - Temperatura de toras, umidade e pressão do ar.
Monitoramento de energia - Registro tensão e corrente leituras ao longo do tempo.
Rastreamento GPS - Loja latitude e longitude dados de um módulo GPS.
Registro de eventos - O sensor de gravação aciona ou pressiona o botão.


10. Conclusão

Usando um Módulo de cartão SD com Arduino é uma ótima maneira de Armazene dados do sensor, eventos de log ou crie um registrador de dados portátil. Com Comunicação SPI, você pode facilmente Leia e escreva arquivos, tornando -o ideal para Projetos de IoT e automação.

Deixe um comentário

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.