Read/Write Data for Micro SD card Module with Arduino UNO
บทความนี้เป็นการทดลองใช้งานโมดูลสำหรับอ่านและเขียนข้อมูลไปยัง SD Card โดยใช้บอร์ดควบคุม Arduino UNO และใช้การสื่อสารระหว่างตัว SD Card กับบอร์ดควบคุม Arduino UNO แบบ SPI ซึ่งในบทความการทดลองนี้จะใช้ตัวอย่างโปรแกรมไม่ยากนัก ซึ่งใช้ไลบารี่ SPI.h และ SD.h ในการพัฒนาร่วมกับโปรแกรมหลักให้เข้าใจง่ายยิ่งขึ้น
ในรูปที่ 1 และรูปที่ 2 แสดงลักษณะของโมดูล SD Card และการต่อวงจรระหว่างโมดูล SD Card กับบอร์ดควบคุม Arduino UNO โดยจะใช้สายไฟแบบแพรที่ช่วยให้ต่อวงจรได้ง่ายและรวดเร็ว รวมทั้งการต่อวงจรแบ่งแรงดัน (Voltage Divider) สำหรับเป็นสัญญาณอินพุตให้กับขารับสัญญาณอะนาลอก A0, A1 และ A2 ในการทดลองครั้งนี้
/* Arduino Code Ref. https://how2electronics.com/using-sd-card-module-with-arduino-read-write-data-logger/#google_vignette */ #include <SPI.h> // Include SPI library #include <SD.h> // Include SD library int ADC_CH0=0; int ADC_CH1=0; int ADC_CH2=0; File dataFile; void setup() { // Open serial communications and wait for port to open: Serial.begin(9600); while (!Serial); // wait for serial port to connect. Needed for native USB port only Serial.print("Initializing SD card..."); if (!SD.begin()) { Serial.println("initialization failed!"); while (1); } Serial.println("initialization done."); delay(2000); } uint16_t line = 1; void loop() { delay(1000); ADC_CH0 = analogRead(A0); ADC_CH1 = analogRead(A1); ADC_CH2 = analogRead(A2); dataFile = SD.open("ADCLog.txt", FILE_WRITE); // if the file opened okay, write to it: if (dataFile) { // Sense to Serial monitor Serial.print(line); Serial.print(": ADC0 = "); Serial.print(ADC_CH0); Serial.print(", ADC1 = "); Serial.print(ADC_CH1); Serial.print(", ADC2 = "); Serial.print(ADC_CH2); Serial.println(" "); // Write data to SD card file (ADC Log.txt) dataFile.print(line++); dataFile.print(": ADC0 = "); dataFile.print(ADC_CH0); dataFile.print(", ADC1 = "); dataFile.print(ADC_CH1); dataFile.print(", ADC2 = "); dataFile.print(ADC_CH2); dataFile.println(" "); dataFile.close(); } // if the file didn't open, print an error: else Serial.println("error opening ADC Log.txt"); }
Important SD Module Library Commands
รูปที่ 4 การแสดงผลข้อมูลที่เขียนลง SD Card ผ่านหน้าต่างพอร์ตอนุกรม เพื่อให้ผู้ทดลองทราบลำดับการทำงานเพื่อเชื่อมต่อกับโมดูล SD Card ซึ่งจะเห็นว่าโปรแกรมจะทำหน้าที่อ่านค่าที่ได้จากสัญญาณอะนาลอกที่ช่อง A0,A1 และ A2 และบันทึกลงใน SD Card นั้นเอง
รูปที่ 5 เป็นการเปิดไฟล์ข้อมูลที่เขียนใน SD Card โดยระบบปฏิบัติการวินโดว์ (Windows) เมื่อนำหน่วยความจำ SD Card เสียบเข้ากับวินโดว์ จะมีไฟล์ข้อมูลที่ชื่อ ADCLOG.TXT ให้ทราบ (ในกรอบสีแดง)
รูปที่ 6 เมื่อทำการเปิดไฟล์ ADCLOG.TXT ภายในไฟล์จะแสดงข้อมูลต่างๆ ที่ทำการบันทึกไว้ โดยสามารถนำข้อมูลที่ได้นำเข้าสู่โปรแกรม Excel เพื่อจัดรูปแบบให้เรียนร้อยและนำไปแสดงผลให้เข้าใจได้ง่ายในรูปแบบกราฟหรือตัวเลขได้ตามที่ต้องการภายหลัง
สำหรับบทความการทดลองใช้งานโมดูลสำหรับอ่านและเขียนข้อมูลไปยัง SD Card โดยใช้บอร์ดควบคุม Arduino UNO นี้ เป็นการนำโมดูลสำเร็จมาใช้งานได้ทันที ซึ่งตัวอย่างในบทความนี้จะทำการอ่านค่าสัญญาณอะนาลอกเข้าที่ช่อง A0,A1 และ A2 ตามลำดับ เพื่อให้เห็นลักษณะของการนำไปใช้งานจริง ทั้งนี้ผู้อ่านยังสามารถปรับรูปแบบการรับค่าจากอุปกรณ์เซนเซอร์หรืออินพุตต่างๆ ได้ตามที่ต้องการ
Reference
- https://www.instructables.com/SD-Card-Module-With-Arduino-How-to-ReadWrite-Data/
- https://medium.com/@madhurajayashanka/complete-guide-to-connecting-a-microsd-card-module-to-arduino-and-saving-data-in-csv-format-1f30a163cab
- https://www.arduino.cc/reference/en/libraries/sd/
- https://docs.arduino.cc/learn/programming/sd-guide/
- https://www.hackster.io/electropeak/sd-card-module-with-arduino-how-to-read-write-data-37f390
- https://how2electronics.com/using-sd-card-module-with-arduino-read-write-data-logger/#google_vignette