🛠 Autonomous IoT Logging with MicroSD

M5Stack PaperDIY Assembly Kit (ESP32-S3) · avance · Créez un système de journalisation autonome sur l'e-paper et la MicroSD pour surveiller des capteurs sans connexion constante.

Objectives

This tutorial aims to design an autonomous environmental data logging system. The goal is to use MicroSD storage to save periodic readings and the e-paper display for a visual summary, while managing power for maximum autonomy. We will explore the interaction between the SPI bus (for the SD card), the parallel bus (for the screen), and interrupt management for efficient operation.

Required Hardware

Steps

In your IDE, select the "M5Stack-ESP32-S3" board. Ensure the partition scheme is set to "Huge APP" to accommodate heavy graphics libraries.

  1. Environment Configuration

The ESP32-S3-WROOM-1-N16R8 module communicates with the SD card via the SPI bus. You must define the CS (Chip Select) pins correctly. In the code, initialize the SD card by checking its status. ```cpp #include <SD.h> #include <SPI.h>

  1. MicroSD Storage Initialization

const int SD_CS = 4; // Check official PaperDIY schematic for exact CS pin

void setupSD() { if (!SD.begin(SD_CS)) { Serial.println("SD init failed"); return; } Serial.println("SD card initialized"); } ```

The ED047TC1 screen (960x540) uses an 8-bit parallel interface. Remember to allocate memory from the PSRAM (8 MB) for image buffers, as the SRAM (512 KB) is insufficient for the full frame buffer. ```cpp #include <M5EPD.h> M5EPD_Canvas canvas(&M5.EPD);

  1. E-Paper Display Management

void drawSummary() { M5.EPD.WriteFullFrameBuffer(); // Full refresh canvas.createCanvas(960, 540); canvas.drawCentreString("Data Logged", 480, 270, 4); canvas.pushCanvas(0, 0, UPDATE_MODE_GC16); } ```

In the loop(), read a sensor (simulated here), format the string, and write it to a CSV file on the MicroSD. Use flush() to ensure physical writing to the card. ``cpp void loop() { File logFile = SD.open("log.csv", FILE_APPEND); if (logFile) { logFile.print(millis()); logFile.println(",23.5"); // Example value logFile.close(); } delay(60000); // 1 minute } ``

  1. Acquisition and Writing Loop

The 140 mAh battery is limited. Disable WiFi and Bluetooth if not used. Use the ESP32-S3 Deep Sleep mode between measurement cycles to reduce standby power consumption.

  1. Power Optimization

Verification

Insert the MicroSD card into a PC after execution. Open the log.csv file with a text editor or spreadsheet. You should see aligned time-series lines. On the e-paper screen, the text "Data Logged" should appear in sharp black after the GC16 refresh.

Further Reading

Implement WiFi synchronization (802.11b/g/n) to upload logs to an MQTT server when signal is detected. You can also add a physical button to force a manual screen refresh to save e-paper lifespan.

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials