风筝
发表于: 2019-4-17 20:58:22 | 显示全部楼层

了解如何将SD卡模块用于需要更多内存的数据量大的Arduino项目。


所需的组件

●    Arduino UNO开发板

●    SD卡适配器

●    跳线


某些项目可能会收集大量数据,例如一个月内读取的传感器数据,您要永久存储这些数据。这些大量数据可能不适合EEPROM。此外,您无法方便地将信息传输到计算机。


但是,如果将数据存储在SD卡上,则可以在具有SD卡读卡器的任何计算机上轻松传输和使用生成的文件。


本文将向您展示如何与Arduino连接和使用SD卡模块。所有代码和测试程序都可以在本文末尾的zip文件中找到。


将Arduino连接到适配器

这些适配器板通常使用串行外设接口(SPI)与微控制器通信。因此,它将占用Arduino上的三个GPIO引脚。此外,您还需要连接芯片选择线以启用SD卡和电源线,以便为适配器供电。

Schematic for connecting your Arduino to an SD card adapter.png

将Arduino连接到SD卡适配器的示意图。


绿色(MISO)和黄色(MOSI)线连接到Arduino的引脚12和11。时钟(蓝色)需要连接到引脚13。如果您不确定需要在Arduino上使用哪些引脚,请参阅Arduino文档。


短期测试计划

在进行必要的连接后,是时候连接SD卡了。简短的测试草图列出了卡上的文件。代码可以在本文末尾的zip文件中找到,作为sd_info。


如您所见,大多数代码处理控制台输出。只需几行即可连接到设备并初始化文件系统以读取和写入文件。但是,此示例仅打印卡的一些基本属性,如大小、类型和已保存的文件。

The SD_info example.png

SD_info示例。


向SD卡写入文件

现在我们知道卡和模块都在运行,是时候将一些值写入文件了。示例SD_write(在本文末尾找到)将两行写入存储在SD卡上的日志文件中。


代码的初始化部分几乎与第一个程序中的相同。但是,不是打开卷,而是必须初始化SD卡本身。初始化后,必须打开该文件。


打开文件进行写入时,如果文件尚不存在,则会自动创建该文件。光标始终位于文件的末尾。因此,如果您在打开文件时没有移动它,只需将新文本附加到其中即可。由于内容存储在SD卡上,因此您只需使用计算机即可读取文件内容。

SD_write program example.png

SD_write程序示例。


从存储在SD卡上的文件中读取

您还可以使用SD卡库读取文件。但是,与标准C函数相比,可用的方法非常有限。我发现SD卡库经常在查找文件夹中的文件时遇到问题。以下示例(在zip文件中的SD_read下)说明了如何从包含传感器读数的文件中读取值。


代码应该是不言自明的。此示例与写入示例之间唯一真正的区别在于文件按字节方式读取。因此,您必须循环遍历要从文件中读取的字节数。结果应如下所示:

the SD_read example.png

SD_read示例。


当您希望让项目无人值守并使其创建日志文件或在较长时间内保存大量传感器读数时,SD卡适配器非常有用。但是,我发现从SD卡读取文件并不总是按预期工作。

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-21 18:45 , Processed in 0.045667 second(s), 6 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表