Skip to content

วิธีใช้ ESP32 บันทึกข้อมูลลง SD Card ทำระบบ Data Logger เก็บค่าไฟโซลาร์เซลล์ไว้ดูย้อนหลัง

  • by

วิธีใช้ ESP32 บันทึกข้อมูลลง SD Card ทำระบบ Data Logger เก็บค่าไฟโซลาร์เซลล์ไว้ดูย้อนหลัง

สอนวิธีต่อ Micro SD Card Module กับ ESP32 เพื่อบันทึกค่าเซนเซอร์และแรงดันแบตเตอรี่ลงเป็นไฟล์ .CSV เปิดดูใน Excel ได้ง่ายๆ แจกโค้ดพร้อมตัวอย่างการเก็บข้อมูล


ทำไมต้องบันทึกข้อมูลลง SD Card?

ในการมอนิเตอร์จริง เราไม่ได้นั่งจ้องหน้าจอตลอดเวลาครับ การเก็บข้อมูล (Logging) จะช่วยให้เราเห็นพฤติกรรมของระบบ เช่น “แบตเตอรี่ลดลงเร็วผิดปกติในช่วงกี่โมง?” หรือ “แผงโซลาร์ผลิตไฟได้สูงสุดตอนไหน?” ข้อมูลเหล่านี้จะถูกเขียนลงในไฟล์เล็กๆ ใน SD Card ที่คุณสามารถดึงมาเสียบคอมพิวเตอร์เพื่อดูย้อนหลังได้ทุกเมื่อครับ

อุปกรณ์ที่ต้องใช้

  1. บอร์ด ESP32

  2. Micro SD Card Adapter Module (แบบ SPI)

  3. Micro SD Card (ความจุเท่าไหร่ก็ได้ แนะนำให้ Format เป็น FAT32)

  4. สาย Jump สำหรับต่อวงจร


วิธีการต่อสาย (แบบ SPI)

การต่อ SD Card Module กับ ESP32 จะใช้ขามาตรฐาน SPI ดังนี้ครับ:

  • VCC -> 5V (หรือ 3.3V ตามสเปกโมดูล)

  • GND -> GND

  • MISO -> GPIO 19

  • MOSI -> GPIO 23

  • SCK -> GPIO 18

  • CS -> GPIO 5


แจก Full Source Code: SD Card Data Logger v1.0

โค้ดนี้จะทำการสร้างไฟล์ชื่อ data.csv และบันทึกค่าโวลต์สมมติลงไปทุกๆ 5 วินาทีครับ

C++

/* * Project: ESP32 SD Card Data Logger v1.0
 * Source: satawat.com
 * Update: 2026-03-21
 */

#include "FS.h"
#include "SD.h"
#include "SPI.h"

const char* hostName = "esp32-0B060089FD08";
const int chipSelect = 5;

void writeFile(fs::FS &fs, const char * path, const char * message){
    File file = fs.open(path, FILE_APPEND); // ใช้ APPEND เพื่อเขียนต่อท้ายไฟล์เดิม
    if(!file){
        Serial.println("เปิดไฟล์เพื่อบันทึกไม่ได้");
        return;
    }
    if(file.println(message)){
        Serial.println("บันทึกข้อมูลเรียบร้อย");
    } else {
        Serial.println("บันทึกล้มเหลว");
    }
    file.close();
}

void setup() {
    Serial.begin(115200);
    
    // เริ่มต้นใช้งาน SD Card
    if(!SD.begin(chipSelect)){
        Serial.println("ไม่พบ SD Card!");
        return;
    }
    
    // เขียนหัวตารางในไฟล์ CSV (ทำครั้งเดียวตอนเริ่ม)
    File file = SD.open("/data.csv");
    if(!file) {
        writeFile(SD, "/data.csv", "Time(ms), Voltage(V), DeviceID");
    }
    file.close();
}

void loop() {
    // จำลองการอ่านค่าแรงดันไฟ
    float currentVolt = 12.5 + (random(0, 100) / 100.0);
    
    // สร้างข้อความเพื่อบันทึก (รูปแบบ CSV: ค่า1, ค่า2, ค่า3)
    String dataString = String(millis()) + ", " + String(currentVolt) + ", " + String(hostName);
    
    Serial.print("กำลังบันทึก: ");
    Serial.println(dataString);
    
    writeFile(SD, "/data.csv", dataString.c_str());
    
    delay(5000); // บันทึกทุกๆ 5 วินาที
}

วิธีนำข้อมูลไปใช้งาน

  1. หลังจากรันโปรแกรมไปสักพัก ให้ถอด SD Card มาเสียบคอมพิวเตอร์

  2. คุณจะพบไฟล์ชื่อ data.csv

  3. คลิกขวาแล้วเลือก Open with Excel

  4. คุณจะเห็นข้อมูลเรียงเป็นคอลัมน์สวยงาม สามารถกดสร้าง Graph เพื่อดูการขึ้นลงของไฟแบตเตอรี่ได้ทันทีครับ!

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *