Micro SD Card Module คืออะไร? วิธีบันทึกข้อมูลด้วย Arduino
Micro SD Card Module คือโมดูลอิเล็กทรอนิกส์ที่ทำหน้าที่เป็นตัวกลางให้ไมโครคอนโทรลเลอร์ เช่น บอร์ด Arduino สามารถอ่านและเขียนข้อมูลลงบนการ์ด Micro SD ได้โดยตรง ทำให้โปรเจกต์ของเราสามารถจัดเก็บข้อมูลจำนวนมากได้ เช่น ค่าที่อ่านจากเซนเซอร์ต่างๆ, การบันทึกเหตุการณ์ (Event Log), หรือแม้กระทั่งไฟล์รูปภาพและเสียง
โมดูลนี้มักจะมีวงจรแปลงระดับแรงดันไฟฟ้า (Logic Level Shifter) ในตัว ทำให้สามารถทำงานกับบอร์ดที่ใช้ไฟ 5V ได้อย่างปลอดภัย และสื่อสารผ่านโปรโตคอลมาตรฐานที่เรียกว่า SPI (Serial Peripheral Interface)
สเปคของ Micro SD Card Module
แรงดันไฟเลี้ยง |
3.3V – 5V (ใช้กับ Arduino ได้โดยตรง) |
อินเตอร์เฟส |
SPI (MISO, MOSI, SCK, CS) |
ความจุที่รองรับ |
การ์ด Micro SD สูงสุด 32GB (ฟอร์แมตแบบ FAT16 หรือ FAT32) |
ระดับแรงดันลอจิก |
มีวงจรแปลงระดับแรงดัน 5V → 3.3V ในตัว |
ขาเชื่อมต่อ |
VCC, GND, MISO, MOSI, SCK, CS |
ประเภทการ์ด |
รองรับการ์ด Micro SD และ Micro SDHC ขนาดมาตรฐาน |
การใช้งานกับ Arduino
✅ 1. การต่อสายกับ Arduino Uno
ขาบน SD Module |
ขาบน Arduino Uno |
หน้าที่ |
VCC |
5V |
ไฟเลี้ยงโมดูล |
GND |
GND |
กราวด์ |
MISO |
Pin 12 |
Master In Slave Out |
MOSI |
Pin 11 |
Master Out Slave In |
SCK |
Pin 13 |
Serial Clock |
CS |
Pin 10 |
Chip Select (สามารถเปลี่ยนเป็นขาอื่นได้) |
**สำหรับบอร์ดอื่น เช่น ESP32 หรือ Mega2560, ขา SPI อาจอยู่ตำแหน่งอื่น กรุณาตรวจสอบ Pinout ของบอร์ดที่ใช้งาน
✅ 2. ตัวอย่างโค้ด Arduino (บันทึกข้อความลงการ์ด)
โค้ดนี้ใช้ไลบรารี SD.h
ที่มาพร้อมกับ Arduino IDE เพื่อเขียนข้อความลงในไฟล์ชื่อ "data.txt"
#include <SPI.h>
#include <SD.h>
// กำหนดขา Chip Select (CS)
// หากต่อขา CS ไว้ที่ขาอื่น ให้เปลี่ยนเลขตรงนี้
const int chipSelect = 10;
void setup() {
// เริ่มการสื่อสารแบบ Serial เพื่อดูสถานะ
Serial.begin(9600);
Serial.print("Initializing SD card...");
// เริ่มต้นการทำงานของ SD Card
if (!SD.begin(chipSelect)) {
Serial.println("initialization failed!");
while (1); // วนลูปไม่รู้จบหากหาการ์ดไม่เจอ
}
Serial.println("initialization done.");
// เปิดไฟล์ชื่อ data.txt เพื่อเขียนข้อมูล
// FILE_WRITE คือโหมดการเขียน (จะสร้างไฟล์ใหม่หากยังไม่มี)
File dataFile = SD.open("data.txt", FILE_WRITE);
// ตรวจสอบว่าเปิดไฟล์ได้หรือไม่
if (dataFile) {
// เขียนข้อความลงในไฟล์
dataFile.println("Hello, this is a test from Arduino!");
// ปิดไฟล์หลังเขียนเสร็จ
dataFile.close();
Serial.println("Data saved successfully.");
} else {
// หากเปิดไฟล์ไม่ได้
Serial.println("Error opening data.txt");
}
}
void loop() {
// ส่วนนี้จะทำงานวนไปเรื่อยๆ
// สามารถนำไปประยุกต์ใช้เพื่อบันทึกค่าจากเซนเซอร์ทุกๆ 5 วินาที เป็นต้น
}
📌 การประยุกต์ใช้งาน
-
Data Logger: โปรเจกต์ที่ได้รับความนิยมสูงสุด คือการเก็บข้อมูลจากเซนเซอร์ต่างๆ (เช่น อุณหภูมิ, ความชื้น, GPS) ลงในการ์ดพร้อมประทับเวลา
-
บันทึกเหตุการณ์ (Event Logging): ใช้บันทึกการทำงานของระบบ เช่น เวลาที่ประตูเปิด-ปิด, เวลาที่มีการเคลื่อนไหว, หรือ Error ที่เกิดขึ้น
-
เก็บไฟล์ขนาดใหญ่: ใช้เก็บไฟล์ภาพจากกล้อง (เช่น ESP32-CAM), ไฟล์เสียง (WAV, MP3) สำหรับโปรเจกต์เครื่องเล่นเพลง, หรือไฟล์ตั้งค่าต่างๆ
-
เก็บข้อมูลในรูปแบบมาตรฐาน: บันทึกข้อมูลเป็นไฟล์ CSV หรือ JSON เพื่อนำไปวิเคราะห์ต่อในคอมพิวเตอร์ได้ง่าย
⭐ ข้อดีของโมดูล
-
ง่ายต่อการใช้งานกับ Arduino: มีไลบรารีมาตรฐาน (SD.h) รองรับ ทำให้เขียนโค้ดได้ไม่ซับซ้อน
-
ใช้พลังงานต่ำ: เหมาะสำหรับโปรเจกต์ที่ใช้พลังงานจากแบตเตอรี่
-
บันทึกข้อมูลได้มหาศาล: เมื่อเทียบกับหน่วยความจำภายในของ Arduino (EEPROM) ที่มีจำกัด
-
เข้าถึงข้อมูลง่าย: สามารถถอด Micro SD Card ไปเสียบกับคอมพิวเตอร์เพื่ออ่านหรือจัดการไฟล์ได้โดยตรง