Înregistrare de date cu Arduino și un modul de card SD

Data Logging with Arduino and an SD Card Module

Înregistrarea datelor este un aspect crucial al multora IoT, monitorizarea mediului și proiecte bazate pe senzori. Cu un Arduino și un modul de card SD, puteți Stocați datele senzorului, margini de timp și alte lecturi pentru analize viitoare. Acest ghid vă va arăta cum Conectați un modul de card SD la Arduino, scrieți și citiți date și depanați problemele comune.


1. Ce ai nevoie

Board Arduino (UNO, Mega, Nano, etc.)
Modulul de card micro SD (bazat pe SPI)
Card microSD (Formatat FAT32, recomandat de 2 GB - 32 GB)
Fire de jumper
Senzori (opțional, de exemplu, DHT11, BMP280, etc.)

🔹 Nota: Modulul SD comunică cu Arduino folosind SPI (interfață periferică serială).


2. Cablarea modulului cardului SD către Arduino

PIN MODUL CARD SD Arduino Uno Pin Arduino Mega Pin
VCC 5V 5V
GND GND GND
Miso 12 (SPI Miso) 50 (SPI Miso)
MOSI 11 (SPI MOSI) 51 (SPI MOSI)
SCK 13 (SPI SCK) 52 (SPI SCK)
CS (SELECT CHIP) 10 (SPI CS) 53 (SPI CS)

3. Instalarea bibliotecii necesare

  1. Deschide Arduino IDE.
  2. Du -te la Schiță → Includeți biblioteca → Gestionați bibliotecile.
  3. Caută SD și instalați Biblioteca SD de Arduino.

4. Inițializarea cardului SD (test dacă funcționează modulul SD)

Folosiți următoarele Cod de testare de bază Pentru a verifica dacă modulul SD funcționează:

#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
}

Ce face acest cod:

✔ Inițializează Modul SD.
✔ Imprimeuri „Cardul SD este gata” dacă este detectat.
✔ Imprimeuri "Inițializarea cardului SD a eșuat!" Dacă există o eroare.

🔹 Depanare:
✅ Verificați dacă cardul SD este FAT32 formatat.
✅ Asigura Cablarea corectă (Miso, Mosi, SCK și CS).
✅ Încercați altul Pin CS (de exemplu, 4 în loc de 10) și actualizați codul.


5. Scrierea datelor pe cardul SD

Acest exemplu creează un fișier (data.txt) și scrie lecturi senzor.

#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
}

Ce face acest cod:

✔ Creează sau se deschide data.txt.
✔ Scrie "Bună ziua, acesta este un jurnal de testare!" la fișier.
✔ Închide fișierul după scriere.

🔹 Funcții de gestionare a fișierelor:
SD.open("filename.txt", FILE_WRITE); → Deschideți fișier pentru scriere.
dataFile.println("Text"); → Scrieți date în fișier.
dataFile.close(); → Închideți fișierul pentru a salva date.


6. Citirea datelor de pe cardul SD

Folosiți acest cod pentru Citiți și afișați date de pe cardul 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
}

Ce face acest cod:

✔ Se deschide data.txt pentru lectură.
✔ Tipărește conținutul fișierului la Monitor în serie.

🔹 Sfat: Asigurați -vă că fișierul există înainte de citire pentru a evita erorile.


7. Datele senzorului de înregistrare pe cardul SD

Acest exemplu se jurnal date de temperatură și umiditate de la un senzor DHT11.

Componente necesare

DHT11 Senzor de temperatură și umiditate
Biblioteca DHT (biblioteca de senzori DHT Adafruit)

Cablare pentru senzorul DHT11

PIN DHT11 Pinul Arduino
VCC 5V
GND GND
Date 2

Cod: Date DHT11 de logare pe cardul 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
}

Ce face acest cod:

✔ Citește Temperatură și umiditate din Senzor DHT11.
✔ Înregistrează datele din log.txt pe cardul SD.
✔ Imprimă valorile la Monitor în serie.


8. Sfaturi de depanare

Problemă: Cardul SD nu este detectat?
✅ Asigurați -vă că cardul SD este FAT32 formatat.
✅ Dublu-verificare Cablaj Miso, Mosi, SCK și CS.
✅ Încerca un alt card SD (Unele cărți sunt incompatibile).

Problemă: Datele care nu salvează?
✅ Întotdeauna Închideți fișierul folosind dataFile.close();.
✅ Asigura suficient spațiu de depozitare este disponibil pe cardul SD.


9. Aplicații practice

Sistem de monitorizare a vremii - Temperatura jurnalului, umiditatea și presiunea aerului.
Monitorizarea energiei - Înregistrare tensiune și curent lecturi în timp.
Urmărirea GPS - Magazin latitudine și longitudine date dintr -un modul GPS.
Jurnal de evenimente - Înregistrați declanșatoarele senzorului sau apăsarea butonului.


10. Concluzie

Folosind un Modul de card SD cu Arduino este o modalitate excelentă de a stocați datele senzorului, evenimentele de jurnal sau creați un logger de date portabil. Cu Comunicare SPI, poți cu ușurință Citiți și scrieți fișiere, făcându -l ideal pentru Proiecte IoT și automatizare.

Lasă un comentariu

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.