如果您的数据更敏感,并且您不希望通过Wi-Fi网络共享数据,或者您没有Wi-Fi连接,则解决方案是将数据存储在SD卡上。
让我们看看如何将数据存储在SD卡上。
将使用的必要硬件:
- Wemos D1 mini:
- microSD card shield(microSD 卡槽):
- microSD 卡:
由于microSD卡是Wemos D1 mini的盖子,因此很容易堆叠它们;你只需要焊接进入包装的引脚:
让我们用下面包含 SPI.h 和 SD.h 库的工程代码确定SD卡的大小
#include <SPI.h>
#include <SD.h>
使用 SD 实用程序库函数设置变量:
Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = D8;
在 setup 函数中,我们将确定是否插入了卡,并且将通过SPI读取卡的详细信息:
void setup()
{
Serial.begin(115200);
Serial.print("nInitializing SD card. ..");
使用实用程序库中的初始化代码:
扫描二维码关注公众号,回复:
5551517 查看本文章
if (!card.init(SPI_HALF_SPEED, chipSelect) )
{
Serial.println( "initialization failed Things to check:") ;
Serial.println("* is a card inserted?");
Serial.println("* is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
return;
} else {
Serial.println("Wiring is correct and a card is present.") ;
}
// 打印卡的类型
Serial.print("nCard type: ");
switch(card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC" );
break;
default:
Serial.println("Unknown");
}
//现在我们将尝试打开 'volume'/'partition' 它应该是FAT16或FAT32
if (!volume. init(card)) {
Serial.println( "Could not find FAT16/FAT32 partition. nMake sure you've formatted the card");
return;
}
//打印第一个FAT类型卷的类型和大小uint32 t volumesize;
Serial.print("nVolume type is FAT");
Serial.println(volume.fatType(),DEC);
Serial.println();
volumesize = volume.blocksPerCluster(); //集群是块的集合。
volumesize *= volume.clusterCount(); // 我们有很多集群
volumesize *= 512; // SD卡块总是512字节
Serial.print("Volume size (bytes):");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes):");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print( "Volume size (Mbytes):");
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("nFiles found on the card (name,dateandsizeinbytes):");
root.openRoot(volume);
//列出卡中包含日期和大小的所有文件
root.ls(LS_R | LS_DATEI | LS_SIZE);
}
在 loop 函数中没啥需要干的,因为在 setup 函数中确定了卡类型及其属性:
void loop( )
//setup 后没有任何反应
}
串行控制台的输出将显示卡类型,卡大小(字节,千字节和兆字节),如果卡上有一些文件,它们的名称和大小:
您还可以使用更大的 SDHC 卡或 FAT32 卡: