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

Data Logging with Arduino and an SD Card Module

Ang data logging ay isang mahalagang aspeto ng maraming IoT, pagsubaybay sa kapaligiran, at mga proyektong nakabatay sa sensor Arduino at isang SD card module mag-imbak ng data ng sensor, mga timestamp, at iba pang mga reading mag-connect ng isang SD card module to Arduino, magsulat at magbasa ng data, at mag-troubleshoot ng mga karaniwang isyu.


1. Ang mga Kailangan Mo

Arduino Board (Uno, Mega, Nano, atbp.)
Micro SD Card Module (Batay sa SPI)
MicroSD Card (naka-format sa FAT32, inirerekomenda ang 2GB–32GB)
Mga Jumper Wire
Mga Sensor (Opsyonal, hal., DHT11, BMP280, atbp.)

🔹 Tandaan: Nakikipag-usap ang SD module sa Arduino gamit ang SPI (Serial Peripheral Interface).


2. Pag-wire sa SD Card Module to 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 Library.
  3. Maghanap para sa SD at i-install ang SD Library ng Arduino.

4. Pag-initialize sa SD Card (Subukan kung Gumagana ang SD Module)

Gamitin ang sumusunod pangunahing test code upang suriin kung gumagana ang SD module:

c
#include 
#include 

const int chipSelect = 10;  // I-set ang CS pin para sa SD card

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

    if (!SD.begin(chipSelect)) {
        Serial.println("Nabigo ang paghahanda sa SD card!");
        return;
    }
    Serial.println("Handa na ang SD card.");
}

void loop() {
    // Walang laman dito
}

Ano ang Ginagawa ng Code na Ito:

✔ Pinasisimulan ang SD module.
✔ Mga Print "Handa na ang SD card" kung matukoy.
✔ Mga Print "Bigo ang pag-initialize ng SD card!" kung mayroong error.

🔹 Pag-troubleshoot:
✅ Siguraduhing ang SD card ay Naka-format sa FAT32.
✅ Siguraduhing tamang pagkakakable (MISO, MOSI, SCK, at CS).
✅ Subukan ang iba CS pin (hal., 4 sa halip na 10) at i-update ang code.


5. Pagsusulat ng Data sa SD Card

Ang halimbawang ito gumagawa ng file (data.txt) and writes sensor readings to it.

#include 
#include 

const int chipSelect = 10;  

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("Pagsisimula ng SD card ay nabigo!");
        return;
    }
    
    File dataFile = SD.open("data.txt", FILE_WRITE);
    if (dataFile) {
        dataFile.println("Hello, this is a test log!");
        dataFile.close();
        Serial.println("Ang data ay naisulat na sa SD card.");
    } else {
        Serial.println("Nabigong buksan ang file.");
    }
}

void loop() {
    // Walang laman dito
}

Ano ang Ginagawa ng Code na Ito:

✔ Gumagawa o nagbubukas ng data.txt.
✔ Nagsusulat "Halo, ito ay isang test log!" sa file.
✔ Isinasara ang file pagkatapos magsulat.

🔹 Mga Function sa Paghawak ng File:
SD.open("filename.txt", FILE_WRITE); → Buksan ang file para isulat.
java dataFile.println("Teksto"); → Isulat ang data sa file.
dataFile.close();


6. Pagbabasa ng Datos mula sa SD Card

basahin at i-display ang data mula sa SD card_.

c
#include 
#include 

const int chipSelect = 10;

void setup() {
    Serial.begin(115200);
    if (!SD.begin(chipSelect)) {
        Serial.println("Pagsisimula ng SD card ay nabigo!");
        return;
    }

    File dataFile = SD.open("data.txt");
    if (dataFile) {
        Serial.println("Binabasa ang file...");
        while (dataFile.available()) {
            Serial.write(dataFile.read());  // I-print ang nilalaman ng file
        }
        dataFile.close();
    } else {
        Serial.println("Nabigong buksan ang file.");
    }
}

void loop() {
    // Walang laman dito
}

Ano ang Ginagawa ng Code na Ito:

✔ Bumubukas data.txt para sa pagbabasa.
✔ Ipi-print ang mga nilalaman ng file sa Serial Monitor.

🔹 Tip: Siguraduhing ang file ay mayroon na bago basahin


7. Pagtatala ng Data ng Sensor sa SD Card

Nagla-log ang halimbawang ito ng datos ng temperatura at humidity mula sa isang DHT11 sensor.

Mga Kinakailangang Bahagi

DHT11 Temperature & Humidity Sensor
DHT Library (Adafruit DHT Sensor Library)

Mga Koneksyon ng Kable para sa DHT11 Sensor`

DHT11 Pin Arduino Pin
VCC 5V
GND GND
{ "A classic, everyday essential.": "Isang klasiko at pang-araw-araw na essential.", "A classic, everyday essential. Made from 100% organic cotton, this t-shirt is soft, breathable, and built to last.": "Isang klasiko at pang-araw-araw na essential. Gawa sa 100% organic cotton, ang t-shirt na ito ay malambot, presko, at matibay.", "A versatile, everyday essential.": "Isang versatile at pang-araw-araw na essential.", "A versatile, everyday essential. Made from 100% organic cotton, this t-shirt is soft, breathable, and built to last.": "Isang versatile at pang-araw-araw na essential. Gawa sa 100% organic cotton, ang t-shirt na ito ay malambot, presko, at matibay.", "Add to Cart": "Idagdag sa Cart", "Add to cart": "Idagdag sa cart", "Address": "Address", "All": "Lahat", "Amount": "Halaga", "Availability": "Availability", "Billing Address": "Billing Address", "Billing address": "Billing address", "Blog": "Blog", "Brand": "Brand", "Breadcrumbs": "Breadcrumbs", "Browse our latest products": "I-browse ang aming mga pinakabagong produkto", "Cart": "Cart", "Cart icon": "Icon ng cart", "Cart template": "Template ng cart", "Category": "Kategorya", "Checkout": "Checkout", "Close": "Isara", "Close cart": "Isara ang cart", "Close search": "Isara ang paghahanap", "Collapse": "I-collapse", "Color": "Kulay", "Contact": "Contact", "Contact us": "Makipag-ugnayan sa amin", "Continue shopping": "Ipagpatuloy ang pamimili", "Country": "Bansa", "Create account": "Gumawa ng account", "Date": "Petsa", "Default Title": "Default na Pamagat", "Default title": "Default na pamagat", "Delete": "I-delete", "Description": "Paglalarawan", "Discount": "Diskwento", "Discounts": "Mga Diskwento", "Email": "Email", "Empty cart": "Walang laman ang cart", "Error": "Error", "Expand": "I-expand", "Explore our collection of high-quality, sustainable clothing.": "Galugarin ang aming koleksyon ng de-kalidad at sustainable na kasuotan.", "Featured": "Tampok", "Featured Products": "Mga Tampok na Produkto", "Featured products": "Mga tampok na produkto", "Filter": "I-filter", "Filter by": "I-filter ayon sa", "Filters": "Mga Filter", "First name": "Pangalan", "Free shipping": "Libreng shipping", "From": "Mula kay", "Full width": "Full width", "Grid": "Grid", "Header": "Header", "Home": "Home", "Image": "Larawan", "In stock": "May stock", "Info": "Impormasyon", "Information": "Impormasyon", "Item": "Item", "Items": "Mga Item", "Last name": "Apelyido", "List": "Listahan", "Log in": "Mag-log in", "Log out": "Mag-log out", "Logo": "Logo", "Menu": "Menu", "More": "Higit pa", "My Account": "Aking Account", "My account": "Aking account", "Name": "Pangalan", "Navigation": "Navigation", "New": "Bago", "Next": "Susunod", "No products found": "Walang nahanap na mga produkto", "On sale": "Naka-sale", "Order": "Order", "Order History": "Kasaysayan ng Order", "Order history": "Kasaysayan ng order", "Orders": "Mga Order", "Out of stock": "Walang stock", "Page": "Pahina", "Page not found": "Hindi nahanap ang pahina", "Pages": "Mga Pahina", "Payment": "Pagbabayad", "Payment Method": "Paraan ng Pagbabayad", "Payment method": "Paraan ng pagbabayad", "Phone": "Telepono", "Postal code": "Postal code", "Price": "Presyo", "Price: High to Low": "Presyo: Mataas pababa", "Price: Low to High": "Presyo: Mababa pataas", "Product": "Produkto", "Product details": "Mga detalye ng produkto", "Products": "Mga Produkto", "Quantity": "Dami", "Quick view": "Mabilisang tingin", "Remove": "Alisin", "Reset": "I-reset", "Results": "Mga Resulta", "Sale": "Sale", "Save": "I-save", "Search": "Maghanap", "Search results": "Mga resulta ng paghahanap", "Select": "Pumili", "Select options": "Pumili ng mga opsyon", "Share": "Ibahagi", "Shipping": "Shipping", "Shipping Address": "Shipping Address", "Shipping address": "Shipping address", "Shipping method": "Paraan ng shipping", "Shop": "Shop", "Shop All": "I-shop Lahat", "Shop all": "I-shop lahat", "Shopping Cart": "Shopping Cart", "Shopping cart": "Shopping cart", "Show": "Ipakita", "Sign in": "Mag-sign in", "Sign up": "Mag-sign up", "Size": "Sukat", "Size Guide": "Gabay sa Sukat", "Size guide": "Gabay sa sukat", "Sort": "I-sort", "Sort by": "I-sort ayon sa", "Status": "Status", "Subtotal": "Subtotal", "Success": "Tagumpay", "Tax": "Buwis", "Taxes": "Mga Buwis", "Thank you": "Salamat", "Thank you for your order!": "Salamat sa iyong order!", "Title": "Pamagat", "To": "Para kay", "Total": "Kabuuan", "Unit price": "Presyo kada unit", "Update": "I-update", "Update Cart": "I-update ang Cart", "Update cart": "I-update ang cart", "Vendor": "Vendor", "View": "Tingnan", "View Cart": "Tingnan ang Cart", "View cart": "Tingnan ang cart", "View details": "Tingnan ang mga detalye", "Welcome to our store": "Maligayang pagdating sa aming tindahan", "Wishlist": "Wishlist", "Write a review": "Sumulat ng review", "You may also like": "Maaari mo ring magustuhan", "Zip code": "Zip code" } 2

Code: Pag-log ng Data ng DHT11 sa SD Card

c
#include 
#include 
#include 

#define DHTPIN 2      // Pin na nakakonekta sa DHT sensor
#define DHTTYPE DHT11 // Tukuyin ang uri ng sensor (DHT11 o DHT22)
DHT dht(DHTPIN, DHTTYPE);

const int chipSelect = 10;

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

    if (!SD.begin(chipSelect)) {
        Serial.println("Pagsisimula ng SD card ay nabigo!");
        return;
    }
}

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

    if (isnan(temp) || isnan(humidity)) {
        Serial.println("Nabigong magbasa mula sa 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("Nabigong magsulat sa SD card.");
    }

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

    delay(2000);  // Mag-log bawat 2 segundo
}

Ano ang Ginagawa ng Code na Ito:

✔ Nabasa na temperatura at kahalumigmigan mula sa DHT11 sensor.
✔ Nagla-log ng data sa log.txt sa SD card.
✔ I-print ang mga value sa Serial Monitor.


8. Mga Tip sa Pag-troubleshoot

Problema: Hindi ba nade-detect ang SD card?
✅ Siguraduhing ang SD card ay Naka-format sa FAT32.
✅ I-double check Mga kable ng MISO, MOSI, SCK, at CS.
✅ Subukan ibang SD card (hindi tugma ang ilang card).

Problema: Hindi nai-save ang data?
✅ Palagi isara ang file gamit ang dataFile.close();.
✅ Siguraduhing sapat na espasyo sa imbakan ay available sa SD card.


9. Mga Praktikal na Aplikasyon

Sistema ng Pagsubaybay sa Panahon – I-log ang temperatura, halumigmig (humidity), at presyon ng hangin (air pressure).
Pagsubaybay sa Enerhiya boltahe at kuryente mga pagbasa sa paglipas ng panahon.
Pagsubaybay sa GPS latitude at longitude data mula sa isang GPS module.
Pag-log ng Event – Mag-record ng mga sensor trigger o pagpindot sa button.


10. Konklusyon

Gamit ang isang SD card module gamit ang Arduino ay isang mahusay na paraan upang mag-imbak ng data ng sensor, mag-log ng mga event, o gumawa ng portable data logger SPI na komunikasyon, madali mong magbasa at magsulat ng mga file, kaya perpekto ito para sa Mga proyekto sa IoT at automation.

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.

Mag -iwan ng komento