【VS Code + PlatformIO】将文件上传到ESP8266 NodeMCU的闪存文件系统 (LittleFS)

本文指导如何在VSCode和PlatformIO开发环境中,利用LittleFS将文件上传至ESP8266NodeMCU的闪存,包括文件系统简介、上传步骤和测试方法,适用于构建web服务器项目。
摘要由CSDN通过智能技术生成

        一、概述

        本文主要介绍:在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)

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是ESP8266 NodeMCU连接OneNET的基本代码框架: ```c++ #include <ESP8266WiFi.h> #include <PubClient.h> // Replace with your network credentials const* ssid = "your_SSID"; const char password = "your_PASSWORD"; // Replace with your One MQTT server and port const char* server = ".heclouds.com"; const int port = 6002; // Replace with your OneNET device ID and API key const char* deviceId = "your_DEVICE_ID"; const char* apiKey "your_API_KEY"; // Create an instance of the WiFiClient object WiFiClient wifiClient; // Create an instance of the PubSubClient object PubSubClient mqttClient(wifiClient); // Function to connect to OneNET MQTT server void connectToMqttServer() { while (!mqttClient.connected()) { Serial.println("Connecting to OneNET MQTT server..."); // Create a unique client ID using the ESP8266 MAC address String clientId = "ESP8266Client-"; clientId += String(WiFi.macAddress()); // Connect to OneNET MQTT server if (mqttClient.connect(clientId.c_str(), deviceId, apiKey)) { Serial.println("Connected to OneNET MQTT server!"); } else { Serial.print("Failed to connect to OneNET MQTT server with error code "); Serial.println(mqttClient.state()); delay(2000); } } } void setup() { Serial.begin(9600); // Connect to Wi-Fi network WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi network..."); } Serial.println("Connected to WiFi network!"); // Set OneNET MQTT server and port mqttClient.setServer(server, port); // Connect to OneNET MQTT server connectToMqttServer(); } void loop() { // Add your code here to publish or subscribe to MQTT topics } ``` 在上面的代码,你需要将以下变量替换为你自己的值: - `ssid` 和 `password`:你的 Wi-Fi 网络 SSID 和密码 - `server` 和 `port`:OneNET MQTT 服务器地址和端口 - `deviceId` 和 `apiKey`:你的 OneNET 设备 ID 和 API 密钥 接下来,你可以在 `loop()` 函数添加你的代码来发布或订阅 MQTT 主题。例如,下面是一个发布消息到 OneNET 的例子: ```c++ void loop() { // Check if connected to OneNET MQTT server if (!mqttClient.connected()) { connectToMqttServer(); } // Publish a message to OneNET mqttClient.publish("topic", "message"); // Wait for a few seconds delay(5000); } ``` 这将发布一个名为 "topic" 的主题,并将消息 "message" 发送到 OneNET。你可以通过 OneNET 控制台查看接收到的消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值