问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

ESP32学习笔记:让SD卡发光发热

创作时间:
作者:
@小白创作中心

ESP32学习笔记:让SD卡发光发热

引用
1
来源
1.
https://www.cnblogs.com/FBsharl/p/18242748

本文将介绍如何在ESP32开发板上使用SD卡进行数据存储。通过硬件连接、软件库的使用以及示例代码的讲解,帮助读者掌握这一实用技能。

原理图


图 SD卡部分
图 MCU中与SD卡相关的接口

连接关系如下:

  • ESP32 IO26 – CS MICROSD
  • ESP32 IO23 – MOSI(DI) MICROSD
  • ESP32 IO19 – MISO(DO) MICROSD
  • ESP32 IO18 – SCK MICROSD
  • ESP32 GND – GND MICROSD
  • 3.3V – VCC MICROSD

软件

我们将使用SD卡库用于沟通。您可以在此处下载:
https://github.com/nhatuan84/esp32-micro-sdcard

下载后,将其解压缩并将解压缩的文件夹复制到Arduino文件夹下的libraries文件夹。

这个库提供了一些类和接口:

初始化:

  • SD.begin(uint8_t cs, int8_t mosi, int8_t miso, int8_t sck)
    使用SPI引脚初始化库

打开文件:

  • SD.open(filename, FILE_WRITE)
    打开文件进行写入

  • SD.open(filename)
    打开文件进行读取

  • SD.open("/")
    打开sdcard at root "/"

打开遍历目录:

  • openNextFile()
    遍历目录

  • name()
    获取文件名或目录

  • isDirectory()
    检查条目是否为目录

读写文件&获取文件属性:

  • size()
    获取文件大小

  • close()
    关闭打开的条目

  • println(文本)
    将文本写入打开的文件

  • available()
    检查可用的数据reading

  • read()
    如果数据可用则读取数据

  • close()
    关闭打开的文件

以下是相应的代码:

/*******************************************************
   ESP32 测试SD卡
   功能:对SD卡进行文件的写&读操作
   引脚:
  [ESP32 IO26 – CS MICROSD]
  [ESP32 IO23 – MOSI(DI) MICROSD]
  [ESP32 IO19 – MISO(DO) MICROSD]
  [ESP32 IO18 – SCK MICROSD]
 *******************************************************/
#include  <SPI.h>
#include  <mySD.h>
#define CS_PIN      26
#define MOSI_PIN    23
#define MISO_PIN    19
#define SCK_PIN     18
File root;
void setup()
{
  Serial.begin(115200);
 
  Serial.print("Initializing SD card...");
/*初始化SD库SPI引脚*/ 
  if (!SD.begin(CS_PIN, MOSI_PIN, MISO_PIN, SCK_PIN)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
/*从根目录root“/”*/ 
  root = SD.open("/");
  if (root) {    
    printDirectory(root, 0);
    root.close();
  } else {
    Serial.println("error opening test.txt");
  }
 /*打开“test.txt”写入*/ 
  root = SD.open("test.txt", FILE_WRITE);
 /*如果成功打开 - > root!= NULL 然后写字符串“Hello world!”*/ 
  if (root) {
    //root.println("testing 1, 2, 3.");
    root.println("Hello world!");
    root.flush();
   /*关闭文件 */
    root.close();
  } else {
    /* 如果文件打开错误,则打印错误 */
    Serial.println("error opening test.txt");
  }
  delay(1000);
  /*写完后再重新打开文件并读取它 */
  root = SD.open("test.txt");
  if (root) {    
    /* 从文件中读取,直到其中没有其他内容 */
      while (root.available()) {
      /* 读取文件并打印到串口监视器*/
      Serial.write(root.read());
    }
    root.close();
  } else {
    Serial.println("error opening test.txt");
  }
  
  Serial.println("done!");
}
 
void loop()
{
}  

最终将SD卡插入电脑,可以看出成功写入了数据:

思维扩展

使用SD卡来存储数据。因为SD卡容量大,所以与EEPROM相比可以存储更多数据。为什么SD卡对ESP32很有用?如您所知,ESP8266和ESP32在物联网应用中更受欢迎。他们可以保留以下角色:

  • 客户端从传感器收集数据,如温度或湿度或事件日志,并将这些数据保存到SD卡中。
  • 使用SD卡存储网页,图像,javascript等的Web服务器,它将返回给客户端请求。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号