ESP32是一款功能强大的物联网微控制器,支持Wi-Fi和蓝牙通信。结合SD卡模块,它可以轻松实现数据的存储与读取功能,非常适合用于日志记录、数据采集等场景。本文将详细介绍如何使用ESP32与SD卡模块进行数据存储,并通过代码示例展示具体操作步骤。
在开始之前,请确保你已经准备好以下硬件:
ESP32与SD卡模块的连接如下表所示:
ESP32 Pin | SD Card Module Pin |
---|---|
5V | VCC |
GND | GND |
GPIO13 | MOSI |
GPIO12 | MISO |
GPIO14 | SCLK |
GPIO15 | CS |
注意:部分ESP32型号可能需要调整引脚配置,请根据实际硬件参考手册确认。
文件 -> 偏好设置
。https://dl.espressif.com/dl/package_esp32_index.json
。工具 -> 开发板 -> 开发板管理器
,搜索并安装“ESP32”。SDFS
或FatFS
库。首先编写代码初始化SD卡模块,并检查是否成功挂载。
#include <SPI.h>
#include <SD.h>
// 定义CS引脚
const int chipSelect = 15;
void setup() {
Serial.begin(115200);
// 初始化SD卡
if (!SD.begin(chipSelect)) {
Serial.println("SD卡初始化失败!");
return;
}
Serial.println("SD卡初始化成功!");
}
void loop() {
// 循环空运行
}
接下来,我们尝试将数据写入SD卡中的一个文本文件。
#include <SPI.h>
#include <SD.h>
const int chipSelect = 15;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD卡初始化失败!");
return;
}
Serial.println("SD卡初始化成功!");
// 创建或打开文件
File dataFile = SD.open("data.txt", FILE_WRITE);
if (dataFile) {
// 写入数据
dataFile.println("Hello, SD Card!");
dataFile.println("This is a test.");
dataFile.close();
Serial.println("数据写入成功!");
} else {
Serial.println("无法创建或打开文件!");
}
}
void loop() {
// 循环空运行
}
为了验证数据存储是否成功,我们可以从SD卡中读取文件内容。
#include <SPI.h>
#include <SD.h>
const int chipSelect = 15;
void setup() {
Serial.begin(115200);
if (!SD.begin(chipSelect)) {
Serial.println("SD卡初始化失败!");
return;
}
Serial.println("SD卡初始化成功!");
// 打开文件
File dataFile = SD.open("data.txt");
if (dataFile) {
Serial.println("文件内容:");
while (dataFile.available()) {
Serial.write(dataFile.read());
}
dataFile.close();
} else {
Serial.println("无法打开文件!");
}
}
void loop() {
// 循环空运行
}
以下是ESP32与SD卡交互的整体逻辑流程图:
graph TD A[启动] --> B{初始化SD卡}; B --成功--> C[创建/打开文件]; B --失败--> E[输出错误信息]; C --> D{写入数据}; D --成功--> F[关闭文件]; D --失败--> G[输出错误信息]; F --> H[完成];