🛠 Journalisation IoT autonome avec MicroSD

Kit d'assemblage M5Stack PaperDIY (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.

Objectifs

Ce tutoriel vise à concevoir un système de journalisation de données environnementales autonome. L'objectif est d'utiliser le stockage MicroSD pour sauvegarder des lectures périodiques et l'affichage e-paper pour un résumé visuel, tout en gérant l'énergie pour une autonomie maximale. Nous explorerons l'interaction entre le bus SPI (pour la carte SD), le bus parallèle (pour l'écran) et la gestion des interruptions pour un fonctionnement efficace.

Matériel nécessaire

Étapes

Dans votre IDE, sélectionnez la carte "M5Stack-ESP32-S3". Assurez-vous que le mode de partition est défini sur "Huge APP" pour laisser de la place aux bibliothèques graphiques lourdes.

  1. Configuration de l'environnement

Le module ESP32-S3-WROOM-1-N16R8 communique avec la carte SD via le bus SPI. Vous devez définir les broches CS (Chip Select) correctement. Dans le code, initialisez la carte SD en vérifiant son état. ```cpp #include <SD.h> #include <SPI.h>

  1. Initialisation du stockage MicroSD

const int SD_CS = 4; // Vérifiez le schéma officiel PaperDIY pour la broche CS exacte

void setupSD() { if (!SD.begin(SD_CS)) { Serial.println("Échec initialisation SD"); return; } Serial.println("Carte SD initialisée"); } ```

L'écran ED047TC1 (960x540) utilise une interface parallèle 8 bits. N'oubliez pas de libérer la mémoire PSRAM (8 MB) pour les buffers d'image, car la SRAM (512 KB) est insuffisante pour le frame buffer complet. ```cpp #include <M5EPD.h> M5EPD_Canvas canvas(&M5.EPD);

  1. Gestion de l'affichage E-Paper

void drawSummary() { M5.EPD.WriteFullFrameBuffer(); // Rafraîchissement complet canvas.createCanvas(960, 540); canvas.drawCentreString("Données enregistrées", 480, 270, 4); canvas.pushCanvas(0, 0, UPDATE_MODE_GC16); } ```

Dans la boucle loop(), lisez un capteur (simulé ici), formatez la chaîne, et écrivez-la dans un fichier CSV sur la MicroSD. Utilisez flush() pour garantir l'écriture physique sur la carte. ``cpp void loop() { File logFile = SD.open("log.csv", FILE_APPEND); if (logFile) { logFile.print(millis()); logFile.println(",23.5"); // Exemple de valeur logFile.close(); } delay(60000); // 1 minute } ``

  1. Boucle d'acquisition et écriture

La batterie de 140 mAh est limitée. Désactivez le WiFi et le Bluetooth si non utilisés. Utilisez le mode Deep Sleep de l'ESP32-S3 entre les cycles de mesure pour réduire la consommation en veille.

  1. Optimisation énergétique

Vérification

Insérez la carte MicroSD dans un PC après l'exécution. Ouvrez le fichier log.csv avec un éditeur de texte ou un tableur. Vous devriez voir des lignes temporelles alignées. Sur l'écran e-paper, le texte "Données enregistrées" doit apparaître en noir net après le rafraîchissement GC16.

Pour aller plus loin

Implémentez une synchronisation WiFi (802.11b/g/n) pour uploader les logs vers un serveur MQTT lorsque le signal est détecté. Vous pouvez aussi ajouter un bouton physique pour forcer un rafraîchissement manuel de l'écran afin d'économiser la durée de vie de l'e-paper.

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels