SD Card Module CN

概述
Arduino SD卡模块是与Arduino板兼容的SD卡接口模块。它使Arduino板能够读取和写入SD卡,从而在各种项目中用于数据存储、日志记录、文件管理等。
规格
| 项目 | 内容 |
|---|---|
| 支持卡片 | Micro SD卡、Micro SDHC卡(支持高速卡) |
| 电源电平转换 | 兼容5V和3.3V系统接口 |
| 电源供应范围 | 4.5V - 5.5V,内置3.3V稳压电路 |
| 通信接口 | 标准SPI接口 |
| 引脚配置 | GND、VCC、MISO、MOSI、SCK、CS |
| 定位孔 | 4个M2螺丝定位孔(直径2.2mm) |
应用示例
电路配置
| Arduino引脚编号 | SD卡模块 |
|---|---|
| 4 | CS |
| 11 | MOSI |
| 12 | MISO |
| 13 | SCK |
| GND | GND |
| 5V或3.3V | VCC |

SD卡格式化
为了开始使用本示例,我们将SD卡格式化为干净的状态。
使用SD卡读卡器连接到PC后,右键点击文件夹并格式化它。
(※ 这不是强制性的!如果SD卡上有重要资料,请务必备份。)
1. 写入SD卡
此示例将“GONGZIPSA”文本写入SD卡,并在内部创建一个文本文件。
#include <SD.h>
File myFile;
void setup() {
Serial.begin(9600);
// 初始化SD卡
if (!SD.begin(4)) {
Serial.println("SD卡初始化失败");
return;
}
// 写入文件
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
Serial.println("开始写入test.txt文件");
myFile.println("GONGZIPSA");
myFile.close();
Serial.println("文件写入完成");
} else {
Serial.println("文件写入失败");
}
}
void loop() {
// 不进行任何操作
}
在第15行,除了FILE_WRITE之外,还有READ模式:
| 模式 | 描述 |
|---|---|
FILE_READ
|
以只读模式打开文件。无法写入文件。如果文件不存在,则无法打开。 |
FILE_WRITE
|
以写模式打开文件。如果文件不存在,则会创建该文件。如果文件已存在,则将数据追加到文件末尾,不会覆盖现有内容。 |
执行结果

2. 从SD卡读取文件
此示例从SD卡读取文件并将其输出到串口监视器。
#include <SD.h>
File myFile;
void setup() {
Serial.begin(9600);
// 初始化SD卡
if (!SD.begin(4)) {
Serial.println("SD卡初始化失败");
return;
}
// 读取文件
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("开始读取test.txt文件");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
Serial.println("文件读取完成");
} else {
Serial.println("文件读取失败");
}
}
void loop() {
// 不进行任何操作
}
执行结果

3. 查看SD卡内文件列表
此示例列出SD卡中的文件,并将文件列表输出到串口监视器。
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("SD卡初始化失败");
return;
}
Serial.println("文件列表:");
listFiles(SD.open("/"));
}
void loop() {
// 不进行任何操作
}
void listFiles(File dir) {
while (true) {
File entry = dir.openNextFile();
if (!entry) {
break; // 没有更多文件
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println(" [目录]");
listFiles(entry); // 递归输出目录内文件
} else {
Serial.print(" [文件大小:");
Serial.print(entry.size());
Serial.println(" 字节]");
}
entry.close();
}
}
执行结果

4. 记录传感器数据
此示例每3秒记录一次土壌湿度传感器(YL-69)数据,并将其保存到SD卡中。
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
// 初始化SD卡
if (!SD.begin(4)) {
Serial.println("SD卡初始化失败");
return;
}
// 初始化YL-69传感器(设置模拟引脚)
pinMode(A0, INPUT);
}
void loop() {
// 读取YL-69传感器数据
int moistureLevel = analogRead(A0);
// 以FILE_WRITE模式打开moisture.txt文件
File myFile = SD.open("moisture.txt", FILE_WRITE);
if (myFile) {
// 将传感器数据写入文件
myFile.print("Moisture Level: ");
myFile.println(moistureLevel); // 将数据追加到文件
myFile.close(); // 关闭文件
Serial.println("数据记录完成");
} else {
Serial.println("文件写入失败");
}
delay(3000); // 每3秒记录一次数据
}
执行结果
串口监视器会显示“数据记录完成”,并且当将SD卡连接到PC时,可以看到之前创建的TEXT.txt文件和当前记录的MOISTURE.txt文件。您可以在MOISTURE.txt文件中查看土壤湿度传感器(YL-69)的数据。

