esp32-p4-hydra-sd-card-logging.ino
Utilise le lecteur microSD intégré pour sauvegarder des données périodiques, exploitant la vitesse SDIO 4 bits.
Insérez une carte microSD formatée en FAT32. Le code utilise la bibliothèque SD standard. Sur l'ESP32-P4, le contrôleur SDIO est natif. Si la carte n'est pas détectée, il peut être nécessaire d'utiliser des API spécifiques ESP-IDF pour le mode SDIO haute vitesse ou de vérifier les pins de brochage exacts pour le CS (Chip Select) si le mode SPI est utilisé en fallback.
esp32-p4-hydra-sd-card-logging.ino
#include <Arduino.h>
#include <SD.h>
#include <SPI.h>
// La Hydra utilise un slot microSD SDIO 4 bits.
// Sur l'ESP32-P4, l'accès SDIO via la bibliothèque Arduino standard peut nécessiter
// des configurations spécifiques ou l'utilisation de l'interface SPI si SDIO n'est pas mappé par défaut.
// Cependant, le P4 possède un contrôleur SDIO natif.
// Pour cet exemple, nous utilisons l'interface SD standard qui devrait mapper vers le contrôleur approprié.
// Note : Vérifiez les pins SDIO dans le schéma Hydra (souvent GPIO 39-44 pour SDIO).
#define SD_CS_PIN 10 // À adapter : Sur certaines cartes P4, le CS est géré par le contrôleur SDIO ou un pin spécifique.
// Si SD.begin() échoue, essayez SD.begin(SD_CS_PIN, SPI) ou vérifiez la doc ESP-IDF pour SDIO.
// Pour l'instant, testons l'approche générique.
void setup() {
Serial.begin(115200);
Serial.println("Metro ESP32-P4 Hydra: SD Card Logging");
if (!SD.begin()) {
Serial.println("Card Mount Failed");
return;
}
uint8_t cardType = SD.cardType();
if (cardType == CARD_NONE) {
Serial.println("No SD card attached");
return;
}
Serial.print("SD Card Type: ");
if (cardType == CARD_MMC) Serial.println("MMC");
else if (cardType == CARD_SD) Serial.println("SDSC");
else if (cardType == CARD_SDHC) Serial.println("SDHC");
else Serial.println("UNKNOWN");
uint64_t cardSize = SD.cardSize() / (1024 * 1024);
Serial.printf("SD Card Size: %lluMB\n", cardSize);
}
void loop() {
File dataFile = SD.open("datalog.txt", FILE_APPEND);
if (dataFile) {
dataFile.printf("Time: %lu, Value: %d\n", millis(), random(100));
dataFile.close();
Serial.println("Data logged");
} else {
Serial.println("Error opening datalog.txt");
}
delay(5000);
}