欢迎光临
我们一直在努力

零基础学ESP32:读写SD卡——让ESP32拥有海量存储空间!

前面我们学了各种传感器、屏幕、音频播放,但ESP32自带的存储空间非常有限——放几个文件就满了。

如果要做数据记录仪(记录温度变化)、做音乐播放器(存几十首歌)、做摄像头(存照片),自带的存储根本不够用。这时候就需要SD卡来扩展存储空间了。

今天这节课,我们就来学习如何用ESP32读写SD卡,让ESP32拥有海量存储能力!

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部 “文档”,在 “课程” → “ESP32 + MicroPython” 分类下,找到读写SD卡。

在这里插入图片描述

打开课件,你会看到本节课的最终效果:ESP32挂载SD卡后,成功向卡中写入1~100的数字,终端打印出挂载前后的文件列表对比。

在这里插入图片描述

在这里插入图片描述

第二步:SD卡模块与SPI通信

本节课使用的是SPI接口的SD卡模块,它通过SPI协议与ESP32通信。

SPI协议四根线:

信号线全称作用
SCK Serial Clock 时钟信号,控制传输节奏
MOSI Master Out Slave In 主机→从机,发送数据
MISO Master In Slave Out 从机→主机,接收数据
CS Chip Select 片选信号,选择通信对象

在这里插入图片描述

第三步:动手接线

SD卡模块有6个引脚,接线如下:

SD卡模块引脚连接ESP32说明
VCC 5V 或 3.3V 电源正极(按模块要求)
GND GND 电源地
CS GPIO5 片选信号
SCK GPIO18 SPI时钟
MOSI GPIO23 主机输出
MISO GPIO19 主机输入

在这里插入图片描述

第四步:上传SD卡驱动

在运行代码之前,需要先将SD卡驱动文件sdcard.py上传到ESP32。

操作步骤:

在MicroPython端新建sdcard.py文件,将课件中提供的完整驱动代码复制进去,然后上传到ESP32。

在这里插入图片描述

这个驱动文件的作用:

  • 实现了SD卡的初始化、读写、挂载等底层操作
  • 让MicroPython能够像操作U盘一样操作SD卡

第五步:代码——挂载SD卡并写入文件

import os
from machine import Pin, SoftSPI
from sdcard import SDCard

# 接线说明:
# MISO -> GPIO 19
# MOSI -> GPIO 23
# SCK -> GPIO 18
# CS -> GPIO 5

# 创建SPI对象
spisd = SoftSPI(1, miso=Pin(19), mosi=Pin(23), sck=Pin(18))

# 创建SD卡对象
sd = SDCard(spisd, Pin(5))

# 挂载前,查看当前文件系统
print('未挂载SD之前:{}'.format(os.listdir()))

# 将SD卡挂载到 /sd 目录
vfs = os.VfsFat(sd)
os.mount(vfs, '/sd')

# 挂载后,查看文件系统
print('挂载SD之后:{}'.format(os.listdir()))

# 切换到SD卡目录
os.chdir('sd')

# 查看SD卡中的文件
print('SD卡中的文件:{}'.format(os.listdir()))

# 向SD卡写入文件
with open("/sd/test.txt", "w") as f:
for i in range(1, 101):
f.write(str(i) + "\\n")

print("已经将1 2 3….100写入到SD卡中的test.txt文件")

代码逻辑:

步骤操作说明
1 创建SPI对象 指定MISO/MOSI/SCK引脚
2 创建SD卡对象 指定CS引脚
3 挂载SD卡到/sd目录 像U盘一样插入
4 切换到SD卡目录 os.chdir('sd')
5 写入文件 打开test.txt,写入1~100
6 关闭文件 自动完成(with语句)

第六步:保存运行,看效果!

在这里插入图片描述

点击运行按钮,终端依次打印:

在这里插入图片描述

验证写入是否成功:

再次运行程序(或新建一个读取代码),查看SD卡中的文件:

with open("/sd/test.txt", "r") as f:
print(f.read())

终端会打印出1到100的数字,证明文件写入成功!

在这里插入图片描述

SD卡能做什么?

应用场景用途
数据记录仪 记录温度、湿度等传感器数据
音乐播放器 存储几十首WAV歌曲
摄像头存储 保存拍摄的照片
日志记录 记录程序运行日志
配置文件 保存WiFi密码等配置信息
数据备份 将重要数据备份到SD卡

SD卡与ESP32内置存储对比

ESP32内置存储SD卡
容量 约4MB 1GB~32GB
可存储文件 少量代码和小文件 海量数据
读写速度 中等(SPI接口)
是否需要额外硬件 ❌ 不需要 ✅ 需要SD卡模块
适合场景 程序代码 数据存储

常见问题

Q:SD卡识别不到怎么办?

A:检查以下几点:

  • SD卡格式是否为FAT32(大多数SD卡默认是这个格式)
  • 接线是否正确(尤其是MISO/MOSI不要接反)
  • 供电是否充足(推荐接5V)
  • Q:能同时使用多个SD卡吗?

    A:可以,通过不同的CS引脚选择不同的SD卡,但需要额外的片选控制逻辑。

    全程回顾

    步骤操作效果
    找到课程 文档→课程→ESP32+MicroPython→读写SD卡 了解SD卡读写
    认识原理 SPI协议 + 文件系统挂载 理解SD卡通信方式
    上传驱动 上传sdcard.py到ESP32 驱动就绪
    动手接线 VCC→5V, GND→GND, CS→GPIO5, SCK→GPIO18, MOSI→GPIO23, MISO→GPIO19 硬件就位
    打开代码 点击“打开”按钮 代码进入编辑器
    保存运行 Ctrl+S → 选择ESP32 → 运行 挂载SD卡并写入文件!

    在这里插入图片描述

    赞(0)
    未经允许不得转载:171主机测评 » 零基础学ESP32:读写SD卡——让ESP32拥有海量存储空间!
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址