Boule à neige musical

Bonjour,

grande première pour moi sur un projet qui n'existe pas :wink: (habituellement je suis fan du copier coller pour des projet ;).

Je suis actuellement avec un ESP8266, module interface SPI pour carte SD et un module ampli Max98357 I2S (et une mini enceinte 1w.
Et l'ensemble sera alimenté par un shield double 18650.

Mon problème est le suivant impossible de faire la compilation de mon code (vérifié avec Chatgpt) via arduino ide ou meme esphome (avec home assistant).

Voici mon code et ensuite l'erreur qu'il m'annonce.

#include <FS.h>
#include <SD.h>
#include <SPI.h>
#include <ESP8266Audio.h>
#include <I2S.h>

// Pinout pour la carte SD
#define SD_CS  D2  // Pin CS pour la carte SD
#define I2S_BCLK  D3  // Bit Clock pour I2S
#define I2S_LRC   D1  // Left Right Clock pour I2S
#define I2S_DIN   D4  // Data In pour I2S

// Créer un objet pour la lecture MP3
AudioFileSourceSD *file;
AudioGeneratorMP3 *mp3;
AudioOutputI2S *out;

void setup() {
  // Initialisation série
  Serial.begin(115200);

  // Initialisation de la carte SD
  if (!SD.begin(SD_CS)) {
    Serial.println("Échec de l'initialisation de la carte SD !");
    return;
  }
  Serial.println("Carte SD initialisée.");

  // Initialisation de la sortie audio I2S pour le MAX98357
  AudioOutputI2S::Config audioConfig;
  audioConfig.i2s_bclk_pin = I2S_BCLK;
  audioConfig.i2s_lrclk_pin = I2S_LRC;
  audioConfig.i2s_data_pin = I2S_DIN;
  out = new AudioOutputI2S(audioConfig);

  // Initialisation de la lecture du fichier MP3 depuis la carte SD
  file = new AudioFileSourceSD("/test.MP3");  // Assurez-vous que "test.MP3" est sur la carte SD
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);

  Serial.println("Lecture du fichier MP3...");
}

void loop() {
  // Lire le fichier MP3 tant que celui-ci est en cours de lecture
  if (mp3->isRunning()) {
    mp3->loop();
  } else {
    Serial.println("Lecture terminée !");
    delay(1000);  // Attendre un peu avant de commencer à jouer à nouveau
    file->close();
    mp3->stop();
    delay(500);
    // Redémarrer la lecture du fichier MP3
    file->open("/test.MP3");
    mp3->begin(file, out);
  }
}

Et l'erreur

In file included from /Users/elfe/Documents/Arduino/libraries/ESP8266Audio/src/ESP8266Audio.h:51,
                 from /private/var/folders/84/tgk6k48d2hl_zhvhghpzd26c0000gn/T/.arduinoIDE-unsaved20241019-3182-1kgp0jp.m7qm/sketch_nov19a/sketch_nov19a.ino:4:
/Users/elfe/Documents/Arduino/libraries/ESP8266Audio/src/AudioOutputULP.h:65:2: error: #error Only the ESP32 supports ULP audio output
   65 | #error Only the ESP32 supports ULP audio output
      |  ^~~~~
exit status 1

Compilation error: exit status 1

Ce que je ne comprend pas c'est que j'ai bien la librairie audio 8266 ... et normalement l'ensemble est compatible ...

Qu'en pensez vous ?

Oui mais si tu regardes le contenu du fichier AudioOutputULP.h tu verras que ce mode ne fonctionne que pour un ESP32.
Il y a un #ifdef ESP32 qui teste si la cible est bien un ESP32 et qui génère une erreur si ce n'est pas le cas.

Non, l'ensemble n'est pas compatible, puisque l'ESP32 possède de nouvelle fonctionnalité par rapport au ESP32.
A priori l'ULP en fait partie.
L'erreur me semble claire est cette fonctionnalité n'est disponible que sur ESP32.
Après je ne suis pas un expert, peut être que quelqu'un d'autre pourra confirmer.

J'avais peur d'avoir la même réponse ^^
De toute évidence je vais m’orientè sur un esp32 (et pas faire le fond de mes tiroirs ^^) :wink: par contre avec une sortie en 5v ^^ vous avez des idées de module exactement

J'ai ma reponse :wink:
je vais m’orientè sur un ESP32-WROOM-32D et je vais y refaire mon branchement.

Merci pour le retour