ได้รับส่งมอบฟรีในคําสั่งทั้งหมดมากกว่า 20 ปอนด์!

การบันทึกข้อมูลด้วย Arduino และโมดูลการ์ด SD

Data Logging with Arduino and an SD Card Module

การบันทึกข้อมูลเป็นส่วนสำคัญอย่างยิ่งของหลาย IoT, การเฝ้าติดตามสิ่งแวดล้อม, และโครงการที่ใช้เซ็นเซอร์. ด้วย Arduino และ โมดูลการ์ด SD, คุณสามารถ จัดเก็บข้อมูลเซ็นเซอร์ ตราประทับเวลา และการอ่านค่าอื่น ๆ สำหรับการวิเคราะห์ในอนาคต คู่มือนี้จะแสดงให้คุณเห็นวิธีการ เชื่อมต่อ โมดูลการ์ด SD ไปยัง Arduino, เขียนและอ่านข้อมูล และแก้ไขปัญหาที่พบบ่อย.


1. สิ่งที่คุณต้องมี

บอร์ด Arduino (Uno, Mega, Nano, ฯลฯ)
ไมโคร โมดูลการ์ด SD (บนพื้นฐานของ SPI)
การ์ด microSD (ฟอร์แมตเป็น FAT32, แนะนำขนาด 2GB–32GB)
สายจัมเปอร์
เซ็นเซอร์ (ไม่จำเป็น เช่น DHT11, BMP280, ฯลฯ)

🔹 หมายเหตุ: โมดูล SD สื่อสารกับ Arduino โดยใช้ SPI (อินเทอร์เฟซอุปกรณ์ต่อพ่วงแบบอนุกรม).


2. การเดินสายไฟของ โมดูลการ์ด SD ไปยัง Arduino

โมดูลการ์ด SD พิน พิน Arduino Uno ขา Arduino Mega
VCC 5V 5V
GND GND GND
มิโซะ 12 (SPI MISO) 50 (SPI MISO)
MOSI 11 (SPI MOSI) 51 (SPI MOSI)
SCK 13 (SPI SCK) 52 (SPI SCK)
CS (สัญญาณเลือกชิป) 10 (SPI CS) 53 (SPI CS)

3. การติดตั้งไลบรารีที่จำเป็น

  1. เปิด Arduino IDE.
  2. ไปที่ สเก็ตช์ → รวมไลบรารี → จัดการไลบรารี.
  3. ค้นหา SD และติดตั้ง ไลบรารี SD โดย Arduino.

4. การเริ่มต้นการ์ด SD (ทดสอบว่าโมดูล SD ทำงานหรือไม่)

ใช้สิ่งต่อไปนี้ โค้ดทดสอบพื้นฐาน เพื่อตรวจสอบว่าโมดูล SD ทำงานอยู่หรือไม่:

#include 
#include 

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
}

สิ่งที่โค้ดนี้ทำ:

✔ เริ่มต้น โมดูล SD.
✔ พิมพ์ได้ "การ์ด SD พร้อมใช้งานแล้ว" หากตรวจพบ.
✔ ลายพิมพ์ "การเริ่มต้นการ์ด SD ล้มเหลว!" หากมีข้อผิดพลาด.

🔹 การแก้ไขปัญหา:
✅ ตรวจสอบว่า การ์ด SD อยู่ ฟอร์แมตเป็น FAT32.
✅ ตรวจสอบให้แน่ใจ การเดินสายที่ถูกต้อง (MISO, MOSI, SCK, และ CS).
✅ ลองอันอื่น ขา CS (เช่น 4 แทน 10) และอัปเดตโค้ด.


5. การเขียนข้อมูลลงในการ์ด SD

ตัวอย่างนี้ สร้างไฟล์ (data.txt) และบันทึกค่าการอ่านของเซนเซอร์ลงไปในนั้น.

#include 
#include 

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
}

โค้ดนี้ทำอะไร:

✔ สร้างหรือเปิด data.txt.
✔ เขียน "สวัสดี นี่คือบันทึกการทดสอบ!" ไปยังไฟล์.
✔ ปิดไฟล์หลังจากเขียนเสร็จ.

🔹 ฟังก์ชันการจัดการไฟล์:
SD.open("filename.txt", FILE_WRITE); → เปิดไฟล์สำหรับการเขียน.
dataFile.println("ข้อความ"); → เขียนข้อมูลลงไฟล์.
dataFile.close(); → ปิดไฟล์เพื่อบันทึกข้อมูล.


6. การอ่านข้อมูลจากการ์ด SD

ใช้โค้ดนี้เพื่อ อ่านและแสดงข้อมูลจากการ์ด SD.

#include 
#include 

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
}

โค้ดนี้ทำอะไร:

✔ เปิด data.txt สำหรับการอ่าน.
✔ พิมพ์เนื้อหาของไฟล์ไปยัง มอนิเตอร์พอร์ตอนุกรม.

🔹 เคล็ดลับ: ตรวจสอบให้แน่ใจว่าไฟล์ มีอยู่ก่อนการอ่าน เพื่อหลีกเลี่ยงข้อผิดพลาด


7. การบันทึกข้อมูลเซ็นเซอร์ลงในการ์ด SD

ตัวอย่างนี้บันทึกล็อก ข้อมูลอุณหภูมิและความชื้นจากเซนเซอร์ DHT11.

ส่วนประกอบที่จำเป็น

DHT11 เซ็นเซอร์วัดอุณหภูมิและความชื้น
ไลบรารี DHT (Adafruit DHT Sensor Library)

การเดินสายสำหรับเซ็นเซอร์ DHT11

ขา DHT11 พิน Arduino
VCC 5V
GND GND
ข้อมูล 2

โค้ด: บันทึกข้อมูล DHT11 ลงการ์ด SD

#include 
#include 
#include 

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

โค้ดนี้ทำอะไร:

✔ อ่านได้ อุณหภูมิและความชื้น จาก เซนเซอร์ DHT11.
✔ บันทึกข้อมูลไว้ใน log.txt บนการ์ด SD.
✔ พิมพ์ค่าไปยัง มอนิเตอร์อนุกรม.


8. เคล็ดลับการแก้ไขปัญหา

ปัญหา: การ์ด SD ไม่ถูกตรวจพบ?
✅ ตรวจสอบให้แน่ใจว่าการ์ด SD ฟอร์แมตเป็น FAT32.
✅ ตรวจสอบอีกครั้ง การเดินสาย MISO, MOSI, SCK และ CS.
✅ ลอง การ์ด SD ใบอื่น (การ์ดบางใบไม่สามารถใช้งานร่วมกันได้).

ปัญหา: ข้อมูลไม่ถูกบันทึกหรือ?
✅ เสมอ ปิดไฟล์ การใช้ dataFile.close();.
✅ ตรวจสอบให้แน่ใจ พื้นที่จัดเก็บเพียงพอ มีอยู่ในการ์ด SD


9. การประยุกต์ใช้ในทางปฏิบัติ

ระบบเฝ้าติดตามสภาพอากาศ – บันทึกอุณหภูมิ ความชื้น และความกดอากาศ.
การตรวจสอบการใช้พลังงาน – บันทึก แรงดันไฟฟ้าและกระแสไฟฟ้า ค่าที่อ่านได้ตามเวลา.
การติดตาม GPS – ร้านค้า ละติจูดและลองจิจูด ข้อมูลจากโมดูล GPS.
การบันทึกเหตุการณ์ – บันทึกการทริกเกอร์ของเซ็นเซอร์หรือการกดปุ่ม


10. บทสรุป

การใช้ โมดูลการ์ด SD ด้วย Arduino เป็นวิธีที่ยอดเยี่ยมในการ จัดเก็บข้อมูลจากเซนเซอร์, บันทึกเหตุการณ์, หรือสร้างเครื่องบันทึกข้อมูลแบบพกพา. ด้วย การสื่อสาร SPI, คุณสามารถทำได้อย่างง่ายดาย อ่านและเขียนไฟล์, ทำให้เหมาะสำหรับ โครงการด้าน IoT และระบบอัตโนมัติ.

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.

แสดงความคิดเห็น