Arduino Thẻ nhớ Micro SD

Trong hướng dẫn này, chúng ta sẽ học cách sử dụng thẻ nhớ Micro SD với Arduino. Cụ thể, chúng ta sẽ học:

thẻ nhớ microsd cho Arduino

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×Micro SD Card
1×Micro SD Card Module
1×dây jumper
1×(Tùy chọn) MicroSD to SD Memory Card Adapter
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về mô-đun thẻ nhớ microSD

Module thẻ Micro SD có thể giao tiếp với Arduino và nó có thể chứa một thẻ Micro SD. Nói cách khác, Module thẻ Micro SD là một cầu nối giữa Arduino và thẻ Micro SD.

Bố trí chân

sơ đồ chân của mô-đun thẻ nhớ micro sd

Mô-đun thẻ nhớ Micro SD gồm 6 chân:

  • Chân VCC: kết nối với chân 5V của Arduino.
  • Chân GND: kết nối chân này với GND của Arduino.
  • Chân MISO: (Master In Slave Out) kết nối chân này với chân MISO của Arduino.
  • Chân MOSI: (Master Out Slave In) kết nối chân này với chân MOSI của Arduino.
  • Chân SCK: kết nối chân này với chân SCK của Arduino.
  • Chân SS: (Slave Select) kết nối chân này với chân được chỉ định trong mã Arduino là một chân SS.

Chuẩn bị

  • Kết nối thẻ nhớ Micro SD với PC qua đầu đọc thẻ SD USB 3.0
  • Đảm bảo thẻ nhớ Micro SD được định dạng FAT16 hoặc FAT32 (tìm trên Google để biết)

Sơ đồ đấu dây

sơ đồ đấu nối mô-đun thẻ nhớ micro sd Arduino

This image is created using Fritzing. Click to enlarge image

※ Lưu ý:

Nếu bạn sử dụng một shield Ethernet hoặc bất kỳ shield nào có khe cắm thẻ Micro SD, bạn sẽ không cần dùng mô-đun thẻ Micro SD. Bạn chỉ cần chèn thẻ Micro SD vào khe cắm thẻ Micro SD trên shield.

Arduino - Cách mở một tập tin trên thẻ nhớ Micro SD và tạo nếu chưa tồn tại

Mã Arduino

Hướng dẫn từng bước

  • Chèn thẻ Micro SD vào module thẻ Micro SD
  • Thực hiện nối dây giữa module Micro SD và Arduino theo sơ đồ kết nối ở trên
  • Kết nối Arduino với PC bằng cáp USB
  • Mở Arduino IDE, chọn board và cổng phù hợp
  • Mở Serial Monitor trên Arduino IDE
  • Sao chép mã dưới đây và dán vào Arduino IDE
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); if (!SD.exists("arduino.txt")) { Serial.println(F("arduino.txt doesn't exist. Creating arduino.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("arduino.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("arduino.txt")) Serial.println(F("arduino.txt exists on SD Card.")); else Serial.println(F("arduino.txt doesn't exist on SD Card.")); } void loop() { }
  • Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
  • Kết quả trên Serial Monitor ở lần chạy đầu tiên
COM6
Send
SD CARD INITIALIZED. arduino.txt doesn't exist. Creating arduino.txt file... arduino.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Kết quả trên Serial Monitor cho các lần chạy tiếp theo.
COM6
Send
SD CARD INITIALIZED. arduino.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Bạn có thể sẽ không thấy đầu ra trên Serial Monitor cho lần chạy đầu tiên của lần tải lên đầu tiên của bạn, được thực hiện trước khi mở Serial Monitor.

  • Rút thẻ Micro SD khỏi mô-đun
  • Gắn thẻ Micro SD vào đầu đọc thẻ SD USB
  • Kết nối đầu đọc thẻ SD USB với máy tính
  • Kiểm tra xem tệp tin có tồn tại hay không

Arduino - Cách ghi và đọc dữ liệu vào/ra từ một tệp trên thẻ nhớ Micro SD

Đoạn mã dưới đây thực hiện những gì:

  • Ghi dữ liệu vào một tệp tin
  • Đọc nội dung của một tệp tin từng ký tự một và in nó ra Serial Monitor
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.txt", FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } } void loop() { }
  • Serial Monitor hiển thị nội dung của tệp
COM6
Send
Created by ArduinoGetStarted.com Learn Arduino and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Dữ liệu sẽ được thêm vào cuối tập tin theo mặc định. Nếu bạn khởi động lại Arduino bằng mã ở trên, văn bản sẽ được thêm vào tập tin một lần nữa ⇒ Serial Monitor sẽ hiển thị nhiều dòng hơn như dưới đây:

COM6
Send
Được tạo bởi ArduinoGetStarted.com Học Arduino và Thẻ SD Được tạo bởi ArduinoGetStarted.com Học Arduino và Thẻ SD
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bạn cũng có thể tháo thẻ Micro SD khỏi module và mở nó trên máy tính của bạn để kiểm tra nội dung (cần một đầu đọc thẻ SD USB).

Arduino - Cách đọc một tệp tin trên thẻ nhớ Micro SD theo từng dòng

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); // open file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.txt", FILE_READ); if (myFile) { int line_count = 0; while (myFile.available()) { char line[100]; // maximum is 100 characters, change it if needed int line_length = myFile.readBytesUntil('\n', line, 100); // read line-by-line from Micro SD Card line_count++; Serial.print(F("Line ")); Serial.print(line_count); Serial.print(F(": ")); Serial.write(line, line_length); // print the character to Serial Monitor // \n character is escaped by readBytesUntil function Serial.write('\n'); // print a new line charactor } myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } } void loop() { }
  • Kết quả trên Serial Monitor
COM6
Send
SD CARD INITIALIZED. Line 1: Created by ArduinoGetStarted.com Line 2: Learn Arduino and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Bạn có thể thấy nhiều dòng hơn trên Serial Monitor nếu nội dung của tập tin chưa bị xóa trước.

Arduino - Cách ghi đè lên một tệp tin trên thẻ microSD

Theo mặc định, nội dung sẽ được thêm vào cuối tệp. Cách đơn giản nhất để ghi đè lên một tệp là: xóa tệp hiện có và tạo một tệp mới có cùng tên.

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS 4 File myFile; void setup() { Serial.begin(9600); if (!SD.begin(PIN_SPI_CS)) { Serial.println(F("SD CARD FAILED, OR NOT PRESENT!")); while (1); // don't do anything more: } Serial.println(F("SD CARD INITIALIZED.")); SD.remove("arduino.txt"); // delete the file if existed // create new file by opening file for writing myFile = SD.open("arduino.txt", FILE_WRITE); if (myFile) { myFile.println("Created by ArduinoGetStarted.com"); // write a line to Arduino myFile.println("Learn Arduino and SD Card"); // write another line to Arduino myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } // open file for reading myFile = SD.open("arduino.txt", FILE_READ); if (myFile) { while (myFile.available()) { char ch = myFile.read(); // read characters one by one from Micro SD Card Serial.print(ch); // print the character to Serial Monitor } myFile.close(); } else { Serial.print(F("SD Card: error on opening file arduino.txt")); } } void loop() { }
  • Kết quả trên Serial Monitor
COM6
Send
SD CARD INITIALIZED. Created by ArduinoGetStarted.com Learn Arduino and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Khởi động lại Arduino
  • Kiểm tra xem nội dung của tập tin trên Serial Monitor có được thêm vào hay không.

Bạn cũng có thể tháo thẻ nhớ Micro SD khỏi mô-đun và mở nó trên máy tính để kiểm tra nội dung (cần đầu đọc thẻ SD USB).

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Tài liệu tham khảo về Hàm