Arduino ESP32当作FTP服务器 访问SD卡文件

ESP32当作FTP服务器 访问SD卡文件


  • 通过 MobaXterm软件FTP访问ESP32,查看SD卡,并下载和上传文件演示。
    在这里插入图片描述

该项目原创来源于一位日本的开发者,今天来学习一下,但是也有国内开发者,在此基础上做了一版改进,我将会在下文当中,介绍如何搭建和使用。

访问方式:

  • 程序烧录完成后,串口打印信息
    在这里插入图片描述
  • 访问方式一:双击我的电脑,打开,在地址栏输入:ftp://esp32:esp32@192.168.0.110,按回车键,进入。具体的IP地址根据开发板串口打印信息来定的,不是我这个示例中的IP地址。
    在这里插入图片描述
  • 按回车键进入后的页面,可以看到挂载在ESP32 上的SD卡里面的额内容。
    在这里插入图片描述
  • 访问方式二:MobaXterm软件,
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

SD卡接线说明

在这里插入图片描述
在这里插入图片描述

  • 使用的是上面的VSPI这组。(如果接在了HSPI上,会导致开发板无限循环的重启)
ESP32 -----tf卡
VIN-----VCC
GND----GND
D5----CS
D19-----MISO
D23----MOSI
D18----SCK


下载和上传速度

下载和下载速度基本就是250KB/s

程序源码

#include <WiFi.h>
#include <WiFiClient.h>
#include "ESP32FtpServer.h"

const char* ssid = "blablabla..."; //WiFi SSID
const char* password = "blablabla..."; //WiFi Password

FtpServer ftpSrv;   //set #define FTP_DEBUG in ESP32FtpServer.h to see ftp verbose on serial

void setup(void){
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  Serial.println("");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  /FTP Setup, ensure SD is started before ftp;  /
  
  if (SD.begin()) {
      Serial.println("SD opened!");
      ftpSrv.begin("esp32","esp32");    //username, password for ftp.  set ports in ESP32FtpServer.h  (default 21, 50009 for PASV)
  }    
}

void loop(void){
  ftpSrv.handleFTP();        //make sure in loop you call handleFTP()!!   
}
  • ESP32FtpServer.cppESP32FtpServer.h代码过长,不在这里贴出,一起和程序源码,以网盘链接分享出来。

资源链接

链接:https://pan.baidu.com/s/1wDq3EM-2tdH2jdbvj8fK7A 
提取码:7kkj
  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
首先,您需要在ESP32上安装ESPAsyncWebServer库,该库允许您创建异步Web服务器。然后,您需要将SD卡插入ESP32,并通过SPI接口将其连接到ESP32。 以下是一个基本的示例代码,可以从SD卡读取文件并在Web浏览器中显示该文件的内容: ```c++ #include <SPI.h> #include <SD.h> #include <WiFi.h> #include <ESPAsyncWebServer.h> // Replace with your network credentials const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // Initialize the server AsyncWebServer server(80); // Initialize the SD card #define SD_CS_PIN 5 File file; void setup(){ // Start Serial Monitor Serial.begin(115200); // Connect to Wi-Fi network with SSID and password Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } // Print local IP address and start web server Serial.println(WiFi.localIP()); server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ // Open file from SD card file = SD.open("/test.txt"); if(file){ // Read file content and send to client request->send(200, "text/plain", file.readString()); file.close(); } else{ request->send(404, "text/plain", "File not found"); } }); // Serve web requests server.begin(); } void loop(){ // Nothing to do here } ``` 在此示例中,我们将ESPAsyncWebServer库用于创建异步Web服务器。在设置过程中,我们连接到Wi-Fi网络并启动Web服务器。我们还通过SPI接口初始化SD卡,并在处理请求时从SD卡读取文件。 在此示例中,我们将文件名硬编码为“/test.txt”。您可以根据需要更改文件名。此外,如果尝试访问不存在的文件,则服务器将返回404错误。 请注意,此示例不是最安全的示例。在生产环境中,您需要使用SSL / TLS来保护Web服务器和客户端之间的通信,并对来自客户端的请求进行身份验证和授权。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值