Ang pag -log ng data kasama ang Arduino at isang module ng SD card

Data Logging with Arduino and an SD Card Module

Ang pag -log ng data ay isang mahalagang aspeto ng marami IoT, pagsubaybay sa kapaligiran, at mga proyekto na batay sa sensor. Na may isang Arduino at isang module ng SD card, kaya mo Mag -imbak ng data ng sensor, timestamp, at iba pang mga pagbabasa para sa pagsusuri sa hinaharap. Ang gabay na ito ay magpapakita sa iyo kung paano Ikonekta ang isang module ng SD card sa Arduino, sumulat at magbasa ng data, at mag -troubleshoot ng mga karaniwang isyu.


1. Ano ang kailangan mo

Lupon ng Arduino (Uno, mega, nano, atbp.)
Micro SD Card Module (batay sa SPI)
MicroSD Card (FAT32 Formatted, Inirerekomenda ng 2GB - 32GB)
Jumper wires
Mga Sensor (Opsyonal, hal., DHT11, BMP280, atbp.)

🔹 Tandaan: Ang module ng SD ay nakikipag -usap sa paggamit ni Arduino SPI (Serial Peripheral Interface).


2. Wiring Ang SD Card Module sa Arduino

SD Card Module Pin 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 (Chip Select) 10 (SPI CS) 53 (SPI CS)

3. Pag -install ng kinakailangang library

  1. Buksan Arduino Ide.
  2. Pumunta sa Sketch → Isama ang Library → Pamahalaan ang mga aklatan.
  3. Maghanap SD at i -install ang SD Library ni Arduino.

4. Pagsisimula sa SD Card (Pagsubok Kung Gumagana ang SD Module)

Gamitin ang sumusunod pangunahing code ng pagsubok Upang suriin kung gumagana ang module ng SD:

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

Ano ang ginagawa ng code na ito:

✔ Initialize ang SD module.
✔ Mga kopya "Handa na ang SD Card" kung napansin.
✔ Mga kopya "Nabigo ang pagsisimula ng SD card!" Kung mayroong isang error.

🔹 Pag -aayos:
✅ Suriin na ang SD card ay FAT32 Na -format.
✅ Matiyak Tamang mga kable (Miso, Mosi, SCK, at CS).
✅ Subukan ang isa pa CS PIN (hal., 4 sa halip na 10) at i -update ang code.


5. Ang data ng pagsulat sa SD card

Ang halimbawang ito Lumilikha ng isang file (data.txt) at nagsusulat ng mga pagbabasa ng sensor dito.

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

Ano ang ginagawa ng code na ito:

✔ Lumilikha o magbubukas data.txt.
✔ Nagsusulat "Kumusta, ito ay isang test log!" sa file.
✔ Isinasara ang file pagkatapos ng pagsulat.

🔹 Mga Pag -andar sa Paghahawak ng File:
SD.open("filename.txt", FILE_WRITE); → Buksan ang file para sa pagsulat.
dataFile.println("Text"); → Sumulat ng data upang mag -file.
dataFile.close(); → Isara ang file upang makatipid ng data.


6. Pagbasa ng Data mula sa SD Card

Gamitin ang code na ito sa Basahin at ipakita ang data mula sa SD card.

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

Ano ang ginagawa ng code na ito:

✔ Magbubukas data.txt para sa pagbabasa.
✔ Nag -print ng mga nilalaman ng file na Serial monitor.

🔹 Tip: Tiyaking ang file umiiral bago basahin Upang maiwasan ang mga pagkakamali.


7. Pag -log ng data ng sensor sa SD card

Ang halimbawang ito ay nag -log Ang data ng temperatura at kahalumigmigan mula sa isang sensor ng DHT11.

Mga kinakailangang sangkap

DHT11 temperatura at sensor ng kahalumigmigan
DHT Library (Adafruit DHT Sensor Library)

Mga kable para sa sensor ng DHT11

DHT11 PIN Arduino Pin
VCC 5v
Gnd Gnd
Data 2

Code: Pag -log ng DHT11 Data sa SD Card

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

Ano ang ginagawa ng code na ito:

✔ Nagbabasa temperatura at kahalumigmigan mula sa Sensor ng DHT11.
✔ Log ang data sa log.txt sa SD card.
✔ Nag -print ng mga halaga sa Serial monitor.


8. Mga tip sa pag -aayos

Suliranin: Hindi napansin ang SD card?
✅ Tiyakin na ang SD card ay FAT32 Na -format.
✅ Double-check Miso, Mosi, SCK, at CS Wiring.
✅ Subukan Iba't ibang SD card (Ang ilang mga kard ay hindi tugma).

Suliranin: Hindi naka -save ang data?
✅ Palagi Isara ang file Paggamit dataFile.close();.
✅ Matiyak Sapat na espasyo sa imbakan ay magagamit sa SD card.


9. Mga praktikal na aplikasyon

Sistema ng pagsubaybay sa panahon - temperatura ng log, kahalumigmigan, at presyon ng hangin.
Pagmamanman ng enerhiya - Magtala boltahe at kasalukuyang pagbabasa sa paglipas ng panahon.
Pagsubaybay sa GPS - Tindahan latitude at longitude data mula sa isang module ng GPS.
Pag -log ng Kaganapan - Mag -record ng sensor na nag -trigger o mga pindutan ng pindutan.


10. Konklusyon

Gamit ang isang SD Card Module kasama si Arduino ay isang mahusay na paraan upang Mag -imbak ng data ng sensor, mga kaganapan sa log, o lumikha ng isang portable data logger. Kasama Komunikasyon ng SPI, madali mo Basahin at isulat ang mga file, ginagawang perpekto para sa IoT at mga proyekto ng automation.

Mag -iwan ng komento

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.