ESP8266 Thẻ nhớ Micro SD

Hướng dẫn này sẽ chỉ cho bạn cách sử dụng thẻ Micro SD với ESP8266. Cụ thể, chúng ta sẽ tìm hiểu:

thẻ nhớ microsd cho ESP8266 NodeMCU

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

1×ESP8266 NodeMCU ESP-12E
1×Recommended: ESP8266 NodeMCU ESP-12E (Uno-form)
1×USB Cable Type-A to Type-C (for USB-A PC)
1×USB Cable Type-C to Type-C (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 Expansion Board for ESP8266
1×(Khuyến nghị) Power Splitter for ESP8266 Type-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về mô-đun thẻ nhớ Micro SD

Mô-đun thẻ nhớ Micro SD là một cầu nối giữa ESP8266 và thẻ nhớ Micro SD. Nó có thể thiết lập kết nối với ESP8266 và có thể được dùng để chứa thẻ nhớ Micro SD. Nói cách khác, nó đóng vai trò là cầu nối giữa ESP8266 và thẻ nhớ Micro SD.

Bố trí các chân của mô-đun thẻ nhớ micro SD

bố trí chân của mô-đun thẻ micro sd

Mô-đun thẻ nhớ Micro SD có 6 chân:

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

Chuẩn bị

Đảm bảo thẻ Micro SD được định dạng ở FAT16 hoặc FAT32 (bạn có thể tra cứu trực tuyến để biết thêm thông tin).

Sơ đồ đấu dây

sơ đồ nối dây của module thẻ micro sd ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Xem thêm Sơ đồ chân ESP8266Cách cấp nguồn cho ESP8266.

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

Mã ESP8266

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

Để bắt đầu với ESP8266 trên Arduino IDE, hãy làm theo các bước sau:

  • Xem hướng dẫn ESP8266 - Cài đặt phần mềm nếu đây là lần đầu tiên bạn sử dụng ESP8266.
  • Nối các linh kiện như trong sơ đồ.
  • Kết nối bo mạch ESP8266 với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch ESP8266 phù hợp, ví dụ NodeMCU 1.0 (ESP-12E Module), và cổng COM tương ứng của nó.
  • Lắp thẻ Micro SD vào module Micro SD.
  • Kết nối giữa module Micro SD và ESP8266 theo sơ đồ nối dây.
  • Kết nối ESP8266 với PC bằng cáp USB.
  • Mở Arduino IDE và chọn bo mạch và cổng phù hợp.
  • Mở Serial Monitor trong Arduino IDE.
  • Sao chép và dán đoạn mã dưới đây vào Arduino IDE.
/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 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("esp8266.txt")) { Serial.println(F("esp8266.txt doesn't exist. Creating esp8266.txt file...")); // create a new file by opening a new file and immediately close it myFile = SD.open("esp8266.txt", FILE_WRITE); myFile.close(); } // recheck if file is created or not if (SD.exists("esp8266.txt")) Serial.println(F("esp8266.txt exists on SD Card.")); else Serial.println(F("esp8266.txt doesn't exist on SD Card.")); } void loop() { }
  • Nhấp vào nút Tải lên trên Arduino IDE để biên dịch và tải mã lên ESP8266.
  • Trình theo dõi Serial sẽ hiển thị kết quả của lần thực thi đầu tiên.
COM6
Send
SD CARD INITIALIZED. esp8266.txt doesn't exist. Creating esp8266.txt file... esp8266.txt exists on SD Card.
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Sẽ khác
  • Kết quả hiển thị trên Serial Monitor cho các lần chạy tiếp theo sẽ khác biệt.
COM6
Send
SD CARD INITIALIZED. esp8266.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 khi lần đầu tải mã của bạn lên, nếu việc này được thực hiện trước khi mở Serial Monitor.

  • Rút thẻ Micro SD khỏi mô-đun.
  • Đặt thẻ Micro SD vào đầu đọc thẻ SD USB.
  • Cắm đầu đọc thẻ SD USB vào máy tính.
  • Kiểm tra xem tập tin có tồn tại hay không.

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

Đoạn mã dưới đây:

  • Lưu dữ liệu vào một tệp
  • Đọc nội dung của tệp từng ký tự và hiển thị nó trên Serial Monitor
/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 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("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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 esp8266.txt")); } } void loop() { }
  • Serial Monitor đã hiển thị nội dung của tệp tin.
COM6
Send
Created by ArduinoGetStarted.com Learn ESP8266 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

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

COM6
Send
Được tạo bởi ArduinoGetStarted.com Tìm hiểu ESP8266 và thẻ SD Được tạo bởi ArduinoGetStarted.com Tìm hiểu ESP8266 và thẻ SD
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Bạn có thể tháo thẻ Micro SD khỏi mô-đun và sử dụng đầu đọc thẻ SD USB để xem nội dung của nó trên máy tính của bạn.

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

/* * Mã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 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("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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 esp8266.txt")); } } void loop() { }
  • Đầu ra được hiển thị trên Trình theo dõi nối tiếp.
COM6
Send
SD CARD INITIALIZED. Line 1: Created by ArduinoGetStarted.com Line 2: Learn ESP8266 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

※ Lưu ý:

Bạn có thể thấy thêm các dòng trên Serial Monitor nếu nội dung của tệp chưa bị xóa trước đó.

ESP8266 - Cách ghi đè một tệp trên thẻ nhớ Micro SD

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ã ESP8266 NodeMCU này được phát triển bởi newbiely.vn * Mã ESP8266 NodeMCU 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/esp8266/esp8266-micro-sd-card */ #include <SD.h> #define PIN_SPI_CS D8 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("esp8266.txt"); // delete the file if existed // create new file by opening file for writing myFile = SD.open("esp8266.txt", FILE_WRITE); if (myFile) { myFile.println("Created by newbiely.com"); // write a line to esp8266.txt myFile.println("Learn ESP8266 and SD Card"); // write another line to esp8266.txt myFile.close(); } else { Serial.print(F("SD Card: error on opening file esp8266.txt")); } // open file for reading myFile = SD.open("esp8266.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 esp8266.txt")); } } void loop() { }
  • Kết quả được hiển thị trên Serial Monitor.
COM6
Send
SD CARD INITIALIZED. Created by ArduinoGetStarted.com Learn ESP8266 and SD Card
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Khởi động lại ESP8266
  • Xác nhận xem nội dung trong tệp có được thêm vào Trình theo dõi nối tiếp hay không.

Bạn có thể tháo thẻ nhớ Micro SD khỏi mô-đun và xem nội dung của nó trên máy tính của bạn. Cần một đầu đọc thẻ SD USB để thực hiện việc này.

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.