如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )

这篇具有很好参考价值的文章主要介绍了如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

esp32从传感器记录的数据或者日志,并将这些数据保存到SD卡中

1.我们将使用图书馆SD卡进行通信。您可以在此处下载:

https://github.com/nhatuan84/esp32-micro-sdcard

如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )

下载后,解压缩并将其解压缩到Arduino文件夹下的库文件夹中:

如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )

2.格式化 microSD 卡:

将 microSD 卡与 ESP32 配合使用时,应先对其进行格式化。

如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )
如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )

3.接线方式:

[ESP32 IO26 – CS(D3) MICROSD]

[ESP32 IO14 – MOSI(CMD) MICROSD]

[ESP32 IO13 – MISO(D0) MICROSD]

[ESP32 IO27 – SCK(SCLK) MICROSD]

[ESP32 GND – GND MICROSD]

[3.3V – VCC MICROSD]

如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )

4.代码以及说明:

- SD.begin(uint8_t cs , int8_t mosi , int8_t miso , int8_t sck): initialize library with SPI pins

- SD.open(filename, FILE_WRITE): open file for writing

- SD.open(filename): open file for reading

- SD.open("/"): open sdcard at root “/”

以下是代码部分:

#include <mySD.h>

ext::File root;
int a = 0;
int b = 0,c=0;

void setup()
{
  Serial.begin(115200);

  Serial.print("Initializing SD card...");
  /* 使用软 SPI 引脚初始化 SD 库,如果使用硬 SPI 替换为这个 SD.begin()*/
  if (!SD.begin(26, 14, 13, 27)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");
  /* Begin at the root "/" */
  root = SD.open("/");
  if (root) {    
    printDirectory(root, 0);
//    读取sd卡中的文件
    root.close();
  } else {
    Serial.println("error opening test.csv");
  }
  /* open "test.csv" for writing */
  root = SD.open("test.csv", FILE_WRITE);
  /* 如果成功打开 -> root != NULL
    然后写字符串“Hello world!”对它
  */

  if (root) {
    root.println("1,2,3,4,5");

//    root.println("250,255,255,200,100,250,255,255,200,100,250,255,255,200,100");
    root.flush();
   /* 关闭文件 */
    root.close();
  } else {
    /*  如果文件打开错误,打印错误 */
    Serial.println("error opening test.csv");
  }
  delay(1000);
  /* 写入后重新打开文件并读取 */
  root = SD.open("test.csv");
  if (root) {    
    /* 从文件中读取直到其中没有其他内容 */
    while (root.available()) {
      /* 读取文件并打印到终端 */
      Serial.write(root.read());
    }
    root.close();
  } else {
    Serial.println("error opening test.csv");
  }
  
  Serial.println("done!");
}

void loop()
{
  root = SD.open("/");
  if (root) {    
    printDirectory(root, 0);
//    读取sd卡中的文件
    root.close();
  } else {
    Serial.println("error opening test.csv");
  }
  /* open "test.csv" for writing */
  root = SD.open("test.csv", FILE_WRITE);
  /* 如果成功打开 -> root != NULL
    然后写字符串“Hello world!”对它
  */

  if (root) {
//    root.println("1,2,3,4,5");

    root.println("250,255,255,200,100,250,255,255,200,100,250,255,255,200,100,255,255,200,100,250,255,255,200,100,250");
    root.flush();
   /* 关闭文件 */
    root.close();
  } else {
    /*  如果文件打开错误,打印错误 */
    Serial.println("error opening test.csv");
  }
  delay(1000);
  /* 写入后重新打开文件并读取 */
  root = SD.open("test.csv");
  if (root) {    
    /* 从文件中读取直到其中没有其他内容 */
    while (root.available()) {
      /* 读取文件并打印到终端 */
      c=1;
      if (c == 1){
        a = micros();
        }
      Serial.write(root.read());
    }
    b = micros();
    Serial.print(b - a );
    root.close();
  } else {
    Serial.println("error opening test.csv");
  }
  
  Serial.println("done!");
}
void printDirectory(ext::File dir, int numTabs) {
  
  while(true) {
     ext::File entry =  dir.openNextFile();
     if (! entry) {
       break;
     }
     for (uint8_t i=0; i<numTabs; i++) {
       Serial.print('\t');   // we'll have a nice indentation
     }
     // Print the name
     Serial.print(entry.name());
     /*   递归目录,否则打印文件大小 */
     if (entry.isDirectory()) {
       Serial.println("/");
       printDirectory(entry, numTabs+1);
     } else {
       /*   files have sizes, directories do not */
       Serial.print("\t\t");
       Serial.println(entry.size());
     }
     entry.close();
   }
}

5.打开串口监视器,查看文件已经成功输入:

如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )

6.打开csv文件,内容已经写入:

如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )

文章参考来源:Demo 7: How to use Arduino ESP32 to store data to microsdcard (Soft SPI and Hard SPI) (iotsharing.com)文章来源地址https://www.toymoban.com/news/detail-475740.html

到了这里,关于如何使用 Arduino ESP32 将数据存储到 microsdcard(软 SPI )的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【雕爷学编程】Arduino智能家居之ESP32-CAM远程监控和图像存储

    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来

    2024年04月27日
    浏览(42)
  • 【雕爷学编程】Arduino智慧校园之使用ESP32连接WiFi并上传温度数据到服务器

    Arduino是一个开放源码的电子原型平台,它可以让你用简单的硬件和软件来创建各种互动的项目。Arduino的核心是一个微控制器板,它可以通过一系列的引脚来连接各种传感器、执行器、显示器等外部设备。Arduino的编程是基于C/C++语言的,你可以使用Arduino IDE(集成开发环境)来

    2024年03月18日
    浏览(53)
  • Arduino下如何快速安装esp32库,一分钟搞定!!

            对于很多要使用esp32的新手来说,都需要在自己的编辑器的环境下安装esp32库,网上对于在Arduino下的安装esp32库主要有三种:        第一种:添加库地址下载,这种最简单,但需要科学上网,对于大多数人来说是很不方便的。        第二种:离线式下载,将安装包

    2024年02月11日
    浏览(43)
  • 【ESP32之旅】ESP32C3 Arduino库使用方法

    目前官方已经支持了ESP32C3 的部分功能,可以在其官方wiki中看到: 官方提供了两个版本的安装连接,release和Dev。其中Release为稳定发布版本,Dev版本则支持更多的新特性。 Stable release link: Development release link: 安装方法也非常简单,打开Arduino IDE 然后在 文件 - 首选项 : 在附加

    2024年02月02日
    浏览(49)
  • 【ESP32】arduino中的ESP32实时系统FreeRTOS使用教程(一)

    简单的本节略过,详细的可以看视频:单片机ESP32上的FREERTOS这个作者讲的挺好的,通俗易懂 FreeRTOS中的任务有运行态、就绪态、阻塞态、挂起态四种状态,在任何时候都只处于其中一种状态。任务状态之间的转换如下图所示: 每一个任务都会有一个任务优先级,其范围为

    2023年04月15日
    浏览(40)
  • ESP32 Arduino(十二)lvgl移植使用

    LVGL全程LittleVGL,是一个轻量化的,开源的,用于嵌入式GUI设计的图形库。并且配合LVGL模拟器,可以在电脑对界面进行编辑显示,测试通过后再移植进嵌入式设备中,实现高效的项目开发。 SquareLine Studio 是LVGL官方推荐的UI设计平台,可以便捷地设计界面并一键生成代码导出。

    2024年02月12日
    浏览(51)
  • 【Arduino框架】ESP32中蓝牙快速上手使用~

    💥💥💞💞欢迎来到本博客❤️❤️💥💥 本人持续分享更多关于电子通信专业内容以及嵌入式和单片机的知识,如果大家喜欢,别忘点个赞加个关注哦,让我们一起共同进步~ BluetoothSerial.h 是ESP32 Arduino中的蓝牙串口库,可以通过蓝牙串口与其他设备进行通信。常用的函数如

    2024年02月05日
    浏览(51)
  • ESP32使用Arduino驱动180 360度舵机

    180度舵机 360度舵机

    2024年02月16日
    浏览(39)
  • 4、Arduino_esp32 ADC使用

    3、基于Arduino框架esp32的GPIO使用介绍:基于Arduino框架esp32的GPIO使用介绍 注: 本文章内容是基于arduino框架进行esp32的开发。 开发环境搭建可以参考上一篇文章:2、搭建ESP32开发环境 ADC(模数转换器)是非常常见的外围设备之一,用于将模拟电压信号转换为数字形式。在监控大

    2024年02月14日
    浏览(45)
  • ESP32+Arduino 第二串口使用(串口通信)

    使用原因:使用GPS的时候需要ESP32从串口接收GPS模块的串口数据 第二串口位置:(标记为TX2与RX2的地方) 代码: 同理,如果想给其他模块输出数据可以用: 最后附上Arduino的在线模拟平台 https://wokwi.com/

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包