Rejestrowanie danych z Arduino i modułem karty SD

Data Logging with Arduino and an SD Card Module

Rejestrowanie danych jest kluczowym aspektem wielu IoT, monitorowanie środowiska i projekty oparte na czujnikach. Z Arduino i moduł karty SD, możesz przechowuj dane czujników, znaczniki czasu i inne odczyty Do przyszłej analizy. Ten przewodnik pokaże, jak to zrobić Podłącz moduł karty SD do Arduino, pisz i odczyt dane oraz rozwiąż problemy z typowymi problemami.


1. Czego potrzebujesz

Board Arduino (Uno, Mega, Nano itp.)
Moduł karty Micro SD (oparty na SPI)
Karta microSD (sformatowana FAT32, zalecana 2 GB - 32 GB)
Przewody zworki
Czujniki (opcjonalnie, np. DHT11, BMP280 itp.)

🔹 Notatka: Moduł SD komunikuje się z Arduino za pomocą SPI (szeregowy interfejs peryferyjny).


2. Okablowanie modułu karty SD do Arduino

Pin modułu karty SD Arduino Uno Pin Mega Pin Arduino
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 (Chip Select) 10 (SPI CS) 53 (SPI CS)

3. Instalowanie wymaganej biblioteki

  1. Otwarte Arduino Ide.
  2. Idź do Szkic → Dołącz bibliotekę → Zarządzaj bibliotekami.
  3. Szukaj Sd i zainstaluj Biblioteka SD autorstwa Arduino.

4. Inicjowanie karty SD (test, jeśli działa moduł SD)

Użyj następujących Podstawowy kod testowy Aby sprawdzić, czy moduł SD działa:

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

Co robi ten kod:

✔ Inicjuje Moduł SD.
✔ Wydruki „Karta SD jest gotowa” Jeśli zostanie wykryte.
✔ Wydruki „Inicjalizacja karty SD nie powiodła się!” Jeśli wystąpi błąd.

🔹 Rozwiązywanie problemów:
✅ Sprawdź, czy karta SD jest Fat32 sformatowane.
✅ Zapewnić Prawidłowe okablowanie (Miso, Mosi, SCK i CS).
✅ Wypróbuj inny PIN CS (np. 4 zamiast 10) i zaktualizuj kod.


5. Pisanie danych do karty SD

Ten przykład tworzy plik (data.txt) i zapisuje odczyty czujników.

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

Co robi ten kod:

✔ Tworzy lub otwiera data.txt.
✔ Pisze „Cześć, to dziennik testowy!” do pliku.
✔ Zamyka plik po napisaniu.

🔹 Funkcje obsługi plików:
SD.open("filename.txt", FILE_WRITE); → Otwórz plik do pisania.
dataFile.println("Text"); → Zapisz dane do pliku.
dataFile.close(); → Zamknij plik, aby zapisać dane.


6. Czytanie danych z karty SD

Użyj tego kodu, aby Odczytaj i wyświetl dane z karty 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
}

Co robi ten kod:

✔ Otwiera się data.txt do czytania.
✔ Drukuje zawartość pliku do Monitor szeregowy.

🔹 Wskazówka: Upewnij się, że plik istnieje przed przeczytaniem Aby uniknąć błędów.


7. Dane czujnika rejestrowania do karty SD

Ten przykład dziennika Dane dotyczące temperatury i wilgotności z czujnika DHT11.

Wymagane komponenty

DHT11 Czujnik temperatury i wilgotności
Biblioteka DHT (biblioteka czujników Adafruit DHT)

Okablowanie dla czujnika DHT11

Pin DHT11 PIN Arduino
VCC 5v
GND GND
DANE 2

Kod: rejestrowanie danych DHT11 do karty 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
}

Co robi ten kod:

✔ Czyta Temperatura i wilgotność z Czujnik DHT11.
✔ Rejestruje dane log.txt Na karcie SD.
✔ Drukuje wartości do Monitor szeregowy.


8. Wskazówki dotyczące rozwiązywania problemów

Problem: Karta SD nie została wykryta?
✅ Upewnij się, że karta SD jest Fat32 sformatowane.
✅ Dwukrotnie sprawdź Okablowanie MISO, MOSI, SCK i CS.
✅ Próbować inna karta SD (Niektóre karty są niezgodne).

Problem: Dane nie zapisują?
✅ Zawsze Zamknij plik używając dataFile.close();.
✅ Zapewnić wystarczająco dużo miejsca do przechowywania jest dostępny na karcie SD.


9. Praktyczne zastosowania

System monitorowania pogody - Temperatura dziennika, wilgotność i ciśnienie powietrza.
Monitorowanie energii - Nagrywać napięcie i prąd odczyty w czasie.
Śledzenie GPS - Sklep szerokość i długość geograficzna Dane z modułu GPS.
Rejestrowanie zdarzeń - Nagryj wyzwalacze czujnika lub naciśnięcia przycisków.


10. Wniosek

Za pomocą Moduł karty SD z Arduino to świetny sposób Przechowuj dane czujnika, rejestrowanie zdarzeń lub utwórz przenośny rejestrator danych. Z Komunikacja SPI, możesz łatwo Przeczytaj i zapisz pliki, czyni to idealne Projekty IoT i automatyzacji.

Zostaw komentarz

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.