Arduino SD 卡入门:设置、连接与使用全攻略
执行大量 Arduino 项目?需存储海量关键信息和日志数据?解决方案是 Arduino SD 卡。如何工作?
本文带你了解设备方方面面:是什么、如何连接、如何使用等。
继续阅读获取所有所需知识。
Arduino 中的 SD 是什么?
Arduino SD 卡
图片来源:Pixlr
SD 卡或 micro SD 卡有两大核心组件,帮你轻松为 Arduino 项目添加数据记录。大多数 micro SD 卡工作电压 3.3V。故不可直接连接 5V 逻辑电路。简而言之,若尝试 3.6V 以上电压工作,会毁坏 SD 卡。
因此模块搭载稳压器 (板载超低压差) 将 3.3–6V 电压转为约 3.3V。
此外,模块芯片 (74LVC125A) 将连接逻辑从 3.3–5V 转为 3.3V,称“逻辑电平转换”,意味板卡可连接 3.3V 和 5V 两类微控制器如 Arduino。
微控制器组件
如何用标准 SD 卡接口 Arduino?两种方法:SDIO 模式和 SPI 模式。大多数 SD 卡模块基于 SPI 模式 (开销小、速度较低),多数微控制器易用。更快的是 SDIO 模式,适用于手机、相机等,但较复杂,需签署保密文件。
存储卡模块
Arduino SD 卡模块引脚定义
SD 卡模块适配器有六个引脚:
- MOSI — SPI 输入
- CS — 片选信号引脚,禁用/启用线路
- GND — 接地引脚
- MISO — SPI 输出
- VCC — +5V 电源
- SCK — 接收时钟脉冲同步数据
如何准备 Micro SD 卡
先获取 SD 卡模块插入 micro SD 卡。再将模块置于 Arduino 格式化卡。确保按 Arduino 库格式化,即格式化为 FAT32 或 FAT16。全新 SD 卡厂商可能预格式化为 FAT 文件系统,但可能遇格式问题。经验法则:无论新旧卡,重新格式化。
如何将 SD 卡连接到 Arduino?
Arduino 卡连接 SD 卡
图片来源:Wikimedia Commons
SD 卡就绪后,连接到 SD 扩展板。将 micro SD 卡模块放面包板。模块 VCC 接 Arduino 5V,GND 接地。剩余为 SPI 通信引脚。
通常 micro SD 卡需大量数据传输。连接到微控制器硬件 SPI 引脚性能更好,因 SPI 引脚比用其他引脚“位操作”接口代码更快。
注意 Arduino 板有不同 SPI 引脚需对应连接。如 Arduino Nano 引脚 11 (MOSI)、12 (MISO)、13 (SCK)。需第四引脚:SS 线“片选”。可用引脚 10 或任意首选。Arduino Mega 引脚不同:53 (SS)、50 (MISO)、51 (MOSI)、52 (SCK)。其他板参考官方文档。准备好记录数据。
如何用 Arduino 代码通过 CardInfo 测试 SD 卡模块?
与 SD 卡通信繁琐。好在 Arduino IDE 内置优秀库“SD”,简化读写。运行草图点 File→Examples→SD→card info。草图显示是否识别 SD 卡及数据。回草图确认“chip Select”用正确数字引脚,否则改为 10。
一切正常后,插入 SD 卡上传草图。打开串口监视器即见提示。提示显示卷类型 FAT32、容量、卡类型 SDHC (大容量 SD)。
Arduino 草图截图
若为克隆卡或坏卡,可能显示卡类型 SD1 无产品和制造商 ID。尝试重新格式化。同结果则弃卡。
Arduino 草图截图
最后无卡重跑草图。草图不初始化 SD 卡。卡损坏或接线错误也得此提示。
Arduino 草图截图
若 SD 卡正确格式化且接线无误?提示:“wiring is correct, and a card is present.”
用 Arduino SD 卡读写数据
SD 卡初始化成功,进入下步。上传草图代码。一切好会显示“initialization done”。见“writing to test done”。复位 Arduino 重跑草图,旧数据不覆盖,新数据追加。
代码含义?
第 1 部分
草图含 SPI 库和内置 SD 库,易用 SD 卡联系 SPI 接口。选 Arduino 引脚连模块 CS 引脚,因 CS 引脚不固定。用硬件 SPI 库无需声明引脚因固定。创建对象 myFile 存储 SD 卡信息。
进入 setup() 开始串口通信在串口监视器显示结果。用 SD.begin() 初始化卡。初始化成功“if”真,“initialization done”显示串口监视器。否则“else String”:“initialization failed”显示,程序结束。
SD.open() 打开文件“test.txt”。无此文件则创建。FILE_WRITE 以读写模式打开。
文件打开,串口显示“Writing to test.txt..”。myFile.println() 处见“testing 1, 2, 3”。用 close() 保存写入数据。
第 2 部分
检查文件确认写入成功。用 SD.open() 打开“test.txt”。用 myFile.read() 读取文件显示串口监视器。用“while”循环和 myFile.available() 读文件字符。因 read() 单次读一字符。关闭文件。
演示草图无需多次跑代码,所有代码在 setup() 运行一次。
重要注意事项
1. 文件名不区分大小写。WriteLog.Txt 同 writelog.txt 和 WRITELOG.TXT。
2. 可在目录中打开文件。
3. println() 和 print() 可写变量、字符串等。
4. Read() 不读完整数字或行,单次返回一个字符。
5. 文件名须短,SD 卡库不支持“长文件名”。
常见问题
Arduino SD 卡最大容量?
最大 2GB。
Arduino SD 卡会损坏吗?
可能。因物理损坏、不当使用、制造缺陷、恶意软件。
结语
Arduino SD 卡是实用存储设备,可记录数据。准确接线下易设置。可方便读写数据。
需帮助获取最适合项目的 Arduino SD 卡?随时联系。
工业技术