【VS Code PlatformIO】ESP8266 NodeMCU使用LittleFS上传文件到闪存文件系统
一、概述
本文主要介绍:在VS Code + PlatformIO开发环境下,如何把文件上传到ESP8266 NodeMCU开发板的闪存文件系统(LittleFS)(快速又简便)。使用ESP8266的文件系统,可以用来保存HTML、CSS和JavaScript文件,以构建一个web服务器,而不是把web服务器所需要的内容,都编写在Arduino的项目代码里。
二、SPIFFS/LittleFS简介
ESP8266开发板的闪存可以使用两个文件系统,即SPIFFS和LittleFS。
SPIFFS/LittleFS文件 系统,可以让你像在计算机上的标准文件系统中那样访问开发板上的闪存空间,但是它的功能简单且有限。您可以读取、写入、关闭和删除文件。
SPIFFS:是最初使用的文件系统,非常适合使用许多文件的空间和RAM受限的应用程序;它不支持目录,所有文件都保存在平面结构上,闪存上的文件系统开销是最小的。SPIFFS目前已弃用,可能会在将来的核心版本中删除。
LittleFS:是目前最新使用的文件系统,注重更高的性能,支持目录结构,是更高级的文件系统,每文件开销大。
有关于SPIFFS和LittleFS的更多信息,请参阅ESP8266 Arduino Core文档。
SPIFFS目前已不推荐使用,将来可能会在ESP8266核心版本中删除。建议改用LittleFS。
LittleFS正在积极开发中,支持目录结构,并且对于大多数操作来说,速度要快很多倍。用于SPIFFS的方法与LittleFS是兼容的。因此,在将代码从SPIFFS转换为LittleFS时,我们可以简单地使用LittleFS替代SPIFFS。
例如,将大多数应用程序从SPIFFS转换为LittleFS时,只需将SPIFFS.begin()变更为LittleFS.begin(),将SPIFFS.open()变更为LittleFS.open()。
在ESP8266开发板上使用LittleFS文件系统,可以实现以下功能:创建带有设置信息的配置文件;存放需要长期保存的数据;创建文件以保存少量数据,而不是使用microSD卡;保存HTML、CSS和JavaScript文件以构建web服务器;保存图像、图形和图标,以及其他用途。
三、上传文件到 ESP8266 NodeMCU开发板的LittleFS文件系统
将要上传到ESP8266文件系统的文件,放置在项目文件夹下一个名为data的文件夹中。作为示例,我们将上传一个带有一些随机文本的.txt文件。其实,我们可以上传任何其他文件类型。
使用LittleFS作为默认文件系统
SPIFFS目前已不再推荐使用,将来可能会在ESP8266核心版本中删除,因此建议改用LittleFS文件系统。LittleFS正在积极开发中,支持目录,并且对于大多数操作来说速度要快很多倍。因此,我们将在本教程中使用LittleFS。
在VS Code+PlatformIO中上传文件时,我们必须指定要使用LittleFS文件系统,而不是默认的SPIFFS。为此,需要在ESP826 PlatformIO.ini配置文件中添加以下行。
board_build.filesystem = littlefs
创建一个data文件夹
在项目文件夹中,创建一个名为data的文件夹。这可以在VS代码上完成:用鼠标选择您正在处理的项目文件夹,在右键菜单上选择 “New Folder…" 创建一个新文件夹。这个新文件夹必须被称为 data ,否则它将无法工作。
然后,选择新创建的 data 文件夹,并单击“New File”图标创建要上传的文件。在本例中,我们将创建一个名为text.txt的文件。例如,您可以创建和上传任何其他文件类型,比如 .html、.css或.js文件等。
在.txt文件中随机写入一些文本。
data 文件夹应位于项目文件夹下,要上载的文件应位于 data 文件夹内。否则它将不起作用。
上传文件系统映像
在 data 文件夹下创建并保存要上传的一个或多个文件后,请执行以下步骤:
1. 单击左侧栏上的 PlatformIO 图标,打开项目任务。
2. 选择 env:nodemcuv2(它可能会因您使用的板而异)。
3. 展开 Platform 菜单。
4. 选择 Build Filesystem Image 。
5. 最后,单击 Upload Filesystem Image。
重要提示:要成功上传文件系统映像,必须要关闭与开板板相连的的所有串行连接(串行监视器)。
四、测试
现在,我们来测试一下,data 文件夹下的文件是否真的保存到了ESP8266文件系统中。将以下代码复制到main.cpp文件并上传到您的开发板上。
/*********
Rui Santos
Complete project details at https://RandomNerdTutorials.com/esp8266-nodemcu-vs-code-platformio-littlefs/
*********/
#include <Arduino.h>
#include "LittleFS.h"
void setup() {
Serial.begin(9600);
if(!LittleFS.begin()){
Serial.println("An Error has occurred while mounting LittleFS");
return;
}
File file = LittleFS.open("/text.txt", "r");
if(!file){
Serial.println("Failed to open file for reading");
return;
}
Serial.println("File Content:");
while(file.available()){
Serial.write(file.read());
}
file.close();
}
void loop() {
}
根据您自己建议的 .txt 文件名,可能需要修改以下代码。
File file = LittleFS.open("/text.txt");
打开串行监视器,它应该会打印文件的内容。
至此,在【VS Code + PlatformIO】开发环境下,您已经将文件成功上传到ESP8266的LittleFS文件系统中。
五、总结
本文详细介绍了如何使用VS Code+PlatformIO功能,将文件上传到ESP8266文件系统(LittleFS),它既快捷又简单。在使用ESP8266 NodeMCU开发板构建web服务器项目时,对于上传HTML、CSS和JavaScript文件非常有用。
六、 参考文档
1、ESP8266 NodeMCU with VS Code and PlatformIO: Upload Files to Filesystem (LittleFS)
作者:ESP8266应用