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
- Abrir Arduino IDE.
- Vá para Esboço → Incluir biblioteca → Gerenciar bibliotecas.
- 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.