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
- Buksan Arduino IDE.
- Pumunta sa Sketch → Isama ang Library → Pamahalaan ang mga Library.
- 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.
