ESP32 เก็บข้อมูล Environment ลง MicroSD พร้อม mmWave และ Air Quality Sensor
อ่านค่า Temperature, Humidity, Air Quality และ Human Presence บนจอได้แล้ว แล้วถ้าอยากย้อนกลับมาดูข้อมูลหลังจากระบบทำงานผ่านไปหลายชั่วโมงล่ะ?
Project #15: Environment – MicroSD Card – Mk51 ของ Luc Paquin ต่อยอดชุด Environment Monitoring ที่สร้างบน FireBeetle 2 ESP32-E โดยเพิ่ม MicroSD เข้ามาเป็น Storage สำหรับระบบที่ก่อนหน้านี้มีทั้ง Sensor, Display และ Real-Time Clock อยู่แล้ว
ทำให้ Mk51 น่าสนใจในฐานะตัวอย่างของการพัฒนา จาก Sensor Dashboard ไปสู่แนวคิด Environmental Data Logger: Sensor สร้างข้อมูล, RTC ช่วยเพิ่มบริบทด้านเวลา, Display ใช้ดูสถานะปัจจุบัน และ MicroSD เปิดทางให้เก็บข้อมูลไว้ใช้งานภายหลัง
- Controller หลักคือ DFRobot FireBeetle 2 ESP32-E
- ใช้ Fermion C4002 mmWave Human Presence Sensor
- ใช้ ENS160 + BME280 สำหรับ Air Quality และข้อมูลสภาพแวดล้อม
- ใช้ SD2405 RTC สำหรับ Date / Time ใน Series นี้
- ใช้จอ Fermion 3.5 นิ้ว ความละเอียด 480×320
- Mk51 เพิ่ม Fermion MicroSD Card Module และ MicroSD 2GB
- Source มีไฟล์แยกสำหรับ BME280, C4002, Display, ENS160, RTC และ SD
- Source ที่ตรวจยังไม่ได้ยืนยัน Logging Schema, ชื่อไฟล์ และ Logging Interval ของ Mk51 จึงไม่ควรเดาเพิ่ม
Project Mk51 คืออะไร?
Mk51 เป็นโปรเจกต์ Environment Monitoring ใน Series ของ Luc Paquin ที่ใช้ FireBeetle 2 ESP32-E เป็น Microcontroller หลัก
ระบบรวม Sensor หลายประเภทเพื่อมองสภาพแวดล้อม จากคนละมุม:
- C4002 สำหรับ Human Presence
- BME280 สำหรับข้อมูลสภาพแวดล้อม
- ENS160 สำหรับ Air Quality
- SD2405 RTC สำหรับ Date / Time
- Display สำหรับแสดงข้อมูล
- MicroSD สำหรับ Storage
ดังนั้นมันไม่ได้เป็นเพียง “ESP32 ต่อ SD Card” แต่เป็นการเพิ่ม Storage เข้าไปในระบบ Sensor Monitoring ที่มีองค์ประกอบอื่นทำงานร่วมกันอยู่ก่อนแล้ว
จาก Mk49 → Mk50 → Mk51 โปรเจกต์เพิ่มอะไรทีละขั้น?
จุดที่น่าสนใจของ Series นี้ คือผู้สร้างไม่ได้ใส่ทุก Feature เข้าไปพร้อมกันตั้งแต่ต้น แต่เพิ่มความสามารถทีละชั้น
| Project | แกนหลักที่ Source แสดง |
|---|---|
| Mk49 | C4002 + BME280 + ENS160 พร้อม Display สำหรับ Environment Monitoring |
| Mk50 | เพิ่ม SD2405 RTC เพื่อให้ระบบมีข้อมูล Date / Time |
| Mk51 | เพิ่ม Fermion MicroSD Card Module และ MicroSD 2GB |
Architecture ของระบบ: Sensor, Time, Display และ Storage ทำหน้าที่คนละส่วน
↓ C4002 + BME280 + ENS160
↓ FireBeetle 2 ESP32-E
↙ ↓ ↘
Display RTC MicroSD
↓ ↓ ↓
ดูค่าปัจจุบัน เวลา Storage
การแยกหน้าที่แบบนี้ช่วยให้เข้าใจ Data Logger ได้ง่ายกว่าการมองทุกอย่างเป็น Sensor
Sensor
ทำหน้าที่สร้าง Measurement หรือสถานะที่ระบบต้องการติดตาม
RTC
ทำหน้าที่ให้ข้อมูล Date / Time เพื่อเพิ่มบริบทด้านเวลาให้ระบบ
Display
ใช้แสดงผลสำหรับผู้ใช้งานในขณะนั้น
MicroSD
เป็น Storage ซึ่งเปิดทางให้ข้อมูลไม่จำเป็นต้องหายไป เมื่อค่าบนหน้าจอเปลี่ยนเป็นค่าชุดถัดไป
Hardware ที่ใช้ใน Mk51
| อุปกรณ์ | จำนวนตาม Hackster | หน้าที่ในระบบ |
|---|---|---|
| DFRobot FireBeetle 2 ESP32-E | 1 | Controller หลัก |
| Fermion 3.5" 480×320 TFT Capacitive | 1 | Display / User Interface |
| GDL Line 10 CM | 1 | Connection สำหรับ Hardware ที่เกี่ยวข้อง |
| Fermion MicroSD Card Module | 1 | Storage Interface |
| MicroSD 2 GB | 1 | Storage Media |
| Gravity LED Switch Red | 1 | Input / Indicator ตามการออกแบบของ Project |
| Gravity I2C SD2405 RTC Module | 1 | Real-Time Clock |
| Fermion C4002 mmWave Human Presence Sensor | 1 | Human Presence Detection |
| Fermion ENS160+BME280 Environmental Sensor | 1 | Environment / Air Quality Sensing |
| Gravity IO Shield for FireBeetle 2 | 1 | ช่วยเชื่อม Module กับ Controller |
| Terminal Block Board for FireBeetle 2 ESP32-E | 1 | Terminal Connection |
| Lithium Ion Battery 1000mAh | 1 | Battery ตาม Hardware List |
| USB 3.0 to Type-C Cable | 1 | USB Connection |
FireBeetle 2 ESP32-E เป็นสมองกลางของระบบ
Project ระบุ DFRobot FireBeetle 2 ESP32-E เป็น Controller หลัก สำหรับเชื่อม Sensor, Display, RTC และ MicroSD
Board ตระกูลนี้ใช้ ESP32 และเหมาะกับงาน IoT / Embedded ที่ต้องจัดการ Interface หลายประเภท บน Microcontroller ตัวเดียว
C4002 mmWave เพิ่มมิติ “มีคนอยู่หรือไม่” เข้าไปใน Environment Monitoring
Fermion C4002 เป็น 24GHz mmWave Human Presence Sensor ซึ่งแตกต่างจาก Sensor Environment เพราะเป้าหมายของมันคือการตรวจ Presence ของคน
ข้อมูลจากผู้ผลิตระบุว่า Sensor รองรับทั้ง Motion และ Static / Micro-motion Detection สำหรับสถานการณ์ที่คนอาจไม่ได้เคลื่อนไหวมาก
เมื่อรวมกับ Environment Sensor ระบบจึงสามารถมี Context มากกว่า “ห้องนี้อุณหภูมิเท่าไร” โดยสามารถมีข้อมูลว่า Environment นั้นสัมพันธ์กับการมีคนอยู่หรือไม่ ตาม Logic ที่ผู้พัฒนานำไปสร้างต่อ
BME280 + ENS160 แยก “สภาพแวดล้อม” กับ “คุณภาพอากาศ” ออกจากกัน
Fermion ENS160+BME280 Environmental Sensor รวม Sensor สองกลุ่มที่มีหน้าที่ต่างกัน อยู่ใน Module เดียว
BME280
จาก Code ใน Series ก่อนหน้า โปรเจกต์อ่านข้อมูล:
- Temperature
- Pressure
- Humidity
- Altitude ที่คำนวณจาก Pressure Reference ตาม Code ของโปรเจกต์
ENS160
Series ก่อนหน้าอ่านข้อมูลจาก ENS160 เช่น:
- Sensor Status
- AQI
- TVOC
- eCO2
RTC สำคัญกับ Data Logging เพราะ “ค่า” อย่างเดียวอาจยังไม่พอ
Mk50 ใน Series ก่อนหน้า เพิ่ม Gravity SD2405 RTC เข้ามาก่อนที่ Mk51 จะเพิ่ม MicroSD
Code ของ Mk50 มีตัวแปร สำหรับ Date และ Time และใช้งาน GravityRtc จึงยืนยันได้ว่าระบบเริ่มมี Time Context ก่อนเข้าสู่ Mk51
ในมุม Data Logger ข้อมูลอย่าง Temperature 29°C มีความหมายมากขึ้น เมื่อสามารถผูกกับเวลา เช่นเกิดขึ้นช่วงเช้า กลางวัน หรือหลังจากมีคนเข้ามาในพื้นที่
MicroSD คือ Step ที่เปลี่ยนระบบจาก Monitoring ไปสู่แนว Data Logger
Mk51 เพิ่ม Fermion MicroSD Card Module และ MicroSD 2GB เข้าไปใน Hardware List
DFRobot อธิบาย MicroSD Module ว่าเหมาะกับงาน Storage อย่าง Data Logging และใช้ SPI Interface
ใน Series นี้จึงเห็น Evolution ชัดเจน:
↓ Display Current Data
↓ Add RTC
↓ Add MicroSD Storage
นี่คือพื้นฐานสำคัญของ Data Logger: ระบบไม่เพียงบอกว่า “ตอนนี้เกิดอะไรขึ้น” แต่มี Storage สำหรับนำข้อมูล ไปใช้งานต่อภายหลัง
จอ 3.5 นิ้วทำหน้าที่เป็น Local Dashboard
Project ใช้ Fermion 3.5-inch 480×320 TFT Capacitive Display
หน้าที่ของ Display ต่างจาก MicroSD:
- Display → ดูค่าปัจจุบัน
- MicroSD → Storage สำหรับข้อมูล
- RTC → Date / Time Context
- Sensor → สร้าง Measurement
การแบ่งหน้าที่แบบนี้เป็น Pattern ที่นำไปใช้กับ Data Logger Project อื่นได้ง่าย ไม่ว่าจะเป็น Greenhouse, Indoor Air Monitoring หรือระบบเก็บข้อมูล Sensor หน้างาน
Software Structure แยกเป็นไฟล์ตามหน้าที่
Hackster ระบุไฟล์ใน Mk51 แยกตาม Module หลายส่วน:
DL2609Mk04p.inogetBME280.inogetC4002.inogetDisplay.inogetENS160.inogetRTC.inogetSD.inosetup.ino
โครงสร้างแบบนี้ช่วยแยก Logic ของ Sensor แต่ละประเภทออกจากกัน ทำให้คนอ่าน Source Code สามารถเปิดดูเฉพาะส่วนที่สนใจได้ง่ายขึ้น
Software Environment ที่ Hackster ระบุคือ Arduino IDE
Code Flow ที่ยืนยันได้จาก Project ก่อนหน้าใน Series
Code ของ Mk49 และ Mk50 ช่วยยืนยันลำดับแนวคิดของระบบ Sensor ก่อนมาถึง Mk51
Snippet ด้านล่างเป็น Flow ที่ยืนยันจาก Project ก่อนหน้าใน Series ไม่ใช่การอ้างว่าเป็นเนื้อหาเต็มของ getSD.ino ใน Mk51
isBME280();
isENS160();
isC4002();
isDisplayC4002();
isRTC();
Mk49 ยืนยัน Flow ของ BME280, ENS160, C4002 และ Display ขณะที่ Mk50 เพิ่ม RTC เข้ามา
getSD.ino แต่บทความนี้จะไม่สร้าง SD.open(), Filename, CSV Fields หรือ Logging Loop ขึ้นมาเอง หาก Source Mk51 ที่ตรวจยังไม่เปิดเผยรายละเอียดนั้นอย่างชัดเจนดาวน์โหลด Source Code ต้นฉบับจาก Hackster
Hackster มี Code Files แยกหลายไฟล์ สำหรับโปรเจกต์นี้ แนะนำเปิด Project Page ควบคู่กัน เพื่อตรวจชื่อไฟล์และ Version ก่อนนำไป Compile
Project Page ระบุไฟล์: DL2609Mk04p.ino, getBME280.ino, getC4002.ino, getDisplay.ino, getENS160.ino, getRTC.ino, getSD.ino และ setup.ino
ข้อมูลอะไรที่ Source ยังไม่ได้ระบุชัด?
จุดนี้สำคัญมากสำหรับคนที่จะนำ Project ไปทำ Data Logger จริง
จาก Source ที่ตรวจ ยังไม่ควรสร้างรายละเอียดต่อไปนี้ขึ้นมาเอง:
- ชื่อไฟล์ที่ Mk51 สร้างบน SD
- File Format เช่น CSV หรือ TXT
- Column / Field Order
- Logging Interval
- Sampling Rate
- จำนวนวันสูงสุดที่ MicroSD 2GB เก็บข้อมูลได้
- Battery Runtime
- Write Endurance ของ MicroSD ที่ใช้
- Sensor Accuracy ของระบบรวม
- Cloud Upload หรือ Database Backend
ดู Project Environment Series จากผู้สร้าง
ผู้สร้างแนบ Video ไว้กับ Project สำหรับดู Hardware และการทำงานเพิ่มเติม ควรใช้ควบคู่กับ Hackster Page และ Source Code ต้นฉบับ
Maker เรียนรู้อะไรจาก Mk51 ได้?
โปรเจกต์นี้เป็นตัวอย่างที่ดีว่า Data Logger ไม่ได้เริ่มจากคำว่า “เขียนข้อมูลลง SD ยังไง” เพียงอย่างเดียว
สิ่งที่ต้องคิดเป็นระบบมีหลายส่วน:
- เลือก Sensor ว่าต้องการวัดอะไร
- อ่าน Sensor แต่ละตัวผ่าน Interface ที่เหมาะสม
- มี RTC หากข้อมูลต้องสัมพันธ์กับเวลา
- มี Local Display หากต้องการดูค่าที่หน้างาน
- เพิ่ม Storage สำหรับเก็บข้อมูลย้อนหลัง
- แยก Software เป็น Module เพื่อให้ดูแล Code ง่ายขึ้น
การมี C4002 ยังช่วยให้ Project นี้ไม่ได้มอง Environment เป็นเพียง Temperature หรือ Air Quality แต่สามารถผูกเข้ากับ Human Presence สำหรับการทดลองด้าน Indoor Monitoring ได้ด้วย
ถ้ากำลังทำ ESP32 Data Logger, Environment Monitoring หรือ Sensor Project สามารถสอบถามทีม GlobalByte เรื่อง Development Board, Sensor, Display, Storage Module และ Maker Accessories ที่เหมาะกับ Requirement ได้
โปรเจกต์นี้มีหลาย Module แนะนำอ่าน Source ต้นฉบับควบคู่กัน
โดยเฉพาะ Wiring, Library Version, Pin Assignment และรายละเอียดการเขียนข้อมูลลง MicroSD ควรตรวจ Code ของผู้สร้างก่อนลงมือทำ
FAQ — คำถามเกี่ยวกับ ESP32 Environment Data Logger Mk51
1. Mk51 ใช้บอร์ดอะไร?
Hackster ระบุ DFRobot FireBeetle 2 ESP32-E เป็น Controller หลัก
2. Mk51 วัดอุณหภูมิได้หรือไม่?
Series ใช้ BME280 และ Code ก่อนหน้าของโปรเจกต์ยืนยันการอ่าน Temperature
3. วัดความชื้นได้ไหม?
ได้ผ่าน BME280 ตาม Sensor Stack ที่ผู้สร้างใช้
4. วัด Air Quality อะไรบ้าง?
ENS160 ใน Series มีการอ่าน AQI, TVOC และ eCO2 รวมถึง Sensor Status
5. ตรวจว่ามีคนอยู่ในพื้นที่ได้อย่างไร?
Project ใช้ Fermion C4002 24GHz mmWave Human Presence Sensor
6. ทำไมต้องใช้ RTC?
Mk50 เพิ่ม SD2405 RTC เพื่อให้ระบบมี Date / Time ซึ่งเป็นองค์ประกอบที่มีประโยชน์ เมื่อต้องจัดข้อมูลตามเวลา
7. Mk51 เพิ่มอะไรจาก Mk50?
Hardware List ของ Mk51 เพิ่ม Fermion MicroSD Card Module และ MicroSD 2GB
8. MicroSD ใช้ Interface อะไร?
Fermion MicroSD Module ที่ผู้สร้างระบุเป็น Module ที่รองรับ SPI ตามข้อมูลผลิตภัณฑ์
9. Mk51 เขียนข้อมูลเป็น CSV หรือไม่?
Source ที่ตรวจในรอบนี้ ยังไม่ได้ยืนยัน File Format ของ Mk51 อย่างชัดเจน จึงไม่ควรสรุปว่าเป็น CSV
10. บันทึกข้อมูลทุกกี่วินาที?
Source ที่ตรวจไม่ได้ระบุ Logging Interval ที่สามารถยืนยันได้สำหรับ Mk51
11. MicroSD 2GB เก็บข้อมูลได้กี่วัน?
ยังตอบไม่ได้จาก Source เพราะต้องทราบ Record Size, Logging Interval และ File Overhead ก่อน
12. Project ใช้ช่อง MicroSD บนจอหรือไม่?
Hardware List ของ Mk51 ระบุ Fermion MicroSD Card Module แยกเป็นอุปกรณ์อีกชิ้น จึงไม่ควรเหมารวมว่าใช้ Slot บน Display หาก Wiring หรือ Code ยังไม่ได้ยืนยันเช่นนั้น
13. ใช้ Arduino IDE หรือไม่?
ใช่ Hackster ระบุ Arduino IDE ใน Software Apps and Online Services
14. มี Source Code ให้ดาวน์โหลดหรือไม่?
มี Hackster ระบุ Code Files แยกหลายไฟล์สำหรับ Sensor, Display, RTC, SD และ Setup
15. ใช้ Battery ขนาดเท่าไร?
Hardware List ระบุ Lithium Ion Battery 1000mAh
16. Battery ใช้งานได้กี่ชั่วโมง?
Source ไม่ได้ระบุ Runtime และไม่มีข้อมูล Power Profile ครบพอ สำหรับคำนวณ Runtime อย่างถูกต้อง
17. C4002 ตรวจ Static Presence ได้ไหม?
ข้อมูลของผู้ผลิตระบุว่ารองรับ Static และ Micro-motion Presence Detection นอกเหนือจาก Motion Detection
18. โปรเจกต์ส่งข้อมูลขึ้น Cloud หรือไม่?
Source ที่ใช้ในบทความนี้ ไม่ได้ให้ข้อมูลเพียงพอที่จะยืนยัน Cloud Logging หรือ Database Backend สำหรับ Mk51
สรุป: Mk51 แสดงให้เห็นว่า Data Logger เริ่มจากการจัดบทบาทของข้อมูลให้ชัด
สิ่งที่น่าสนใจของ Mk51 ไม่ใช่เพียงจำนวน Module ที่ต่ออยู่กับ ESP32 แต่คือการแบ่งหน้าที่อย่างเป็นขั้นตอน
BME280 และ ENS160 ให้ข้อมูล Environment และ Air Quality, C4002 เพิ่ม Human Presence, RTC เพิ่มบริบทด้านเวลา, Display ใช้ดูค่าปัจจุบัน และ MicroSD เพิ่ม Storage
เมื่อมองแบบนี้ Project จึงเป็นตัวอย่างที่ดีสำหรับคนเริ่มทำ ESP32 Data Logger ว่าระบบเก็บข้อมูลจริง มักต้องคิดมากกว่าแค่คำสั่ง Write File
ขณะเดียวกัน Source ยังมีรายละเอียดบางส่วนที่ไม่ควรเดา โดยเฉพาะ Logging Schema, Interval และ Storage Duration ดังนั้นหากจะ Build ตามจริง ควรอ่าน Code Mk51 ต้นฉบับควบคู่กับบทความนี้
References / แหล่งข้อมูลต้นฉบับ
อยากทำ ESP32 Data Logger หรือ Environment Monitoring?
ถ้ากำลังทดลอง ESP32, Air Quality Sensor, Environmental Sensor, mmWave, RTC, Display หรือ MicroSD Data Logger สามารถสอบถามทีม GlobalByte เรื่องบอร์ดและ Module ที่เหมาะกับ Requirement ของ Project ได้
ก่อนเลือกอุปกรณ์ ควรเริ่มจากคำถามว่า ต้องวัดข้อมูลอะไร, ต้องดูข้อมูลแบบ Real-time หรือย้อนหลัง, ต้อง Timestamp หรือไม่ และต้องเก็บข้อมูลมากแค่ไหน
Project Mk51 มี Code Files สำหรับ BME280, C4002, Display, ENS160, RTC, SD และ Setup แต่ Source ที่ตรวจสำหรับบทความนี้ ยังไม่ได้ยืนยัน Logging Schema, File Format, Filename, Field Order และ Logging Interval ของ Mk51 อย่างชัดเจน จึงไม่มีการสร้างรายละเอียดดังกล่าวขึ้นเอง
Code Flow ที่แสดงในบทความ ใช้เพื่ออธิบาย Architecture จาก Mk49/Mk50 ซึ่งเป็น Project ก่อนหน้าใน Series เดียวกัน ไม่ได้อ้างว่าเป็น Code เต็มของ
getSD.ino ใน Mk51 FireBeetle 2 ESP32-E มีหลาย Hardware Variant บทความนี้ไม่อ้าง Flash/PSRAM Variant เฉพาะเจาะจงเกินกว่าที่ Mk51 Source ระบุ
Source ไม่ได้ให้ข้อมูลครบสำหรับคำนวณ Battery Runtime, จำนวนวันที่ MicroSD 2GB เก็บข้อมูลได้, Sensor Accuracy ของระบบรวม หรือ Maximum Logging Rate จึงไม่มีการคำนวณค่าดังกล่าวเพิ่มเติม