Montages ESP32 S3 WROOM

Répondre
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 413
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 25 21:21

Re: Montages ESP32 S3 WROOM

Message par France Clem68

:merciiii: à vous!
De quel chapeau sort la valeur 6E400001-B5A3-F393-E0A9-E50E24DCCA9E ?
Le chapeau ! C'est le tuto à lire.... :siffle:

Exercice: N°27.2

Contrôle d'une LED via Bluetooth
ex27.5.jpg
Le sketch:

Code : Tout sélectionner

/**********************************************************************
  Filename    : BLE_USART
  Description : Esp32 communicates with the phone by BLE and sends incoming data via a serial port
  Auther      : www.freenove.com
  Modification: 2024/07/01
**********************************************************************/
#include "BLEDevice.h"
#include "BLEServer.h"
#include "BLEUtils.h"
#include "BLE2902.h"
#include "String.h"

BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
uint8_t txValue = 0;
long lastMsg = 0;
char rxload[20];

#define SERVICE_UUID "6E400001-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_RX "6E400002-B5A3-F393-E0A9-E50E24DCCA9E"
#define CHARACTERISTIC_UUID_TX "6E400003-B5A3-F393-E0A9-E50E24DCCA9E"
#define LED 2

class MyServerCallbacks : public BLEServerCallbacks {
  void onConnect(BLEServer *pServer) {
    deviceConnected = true;
  };
  void onDisconnect(BLEServer *pServer) {
    deviceConnected = false;
    //pServer->getAdvertising()->start(); //Reopen the pServer and wait for the connection.
  }
};

class MyCallbacks : public BLECharacteristicCallbacks {
  void onWrite(BLECharacteristic *pCharacteristic) {
    String rxValue = pCharacteristic->getValue();
    if (rxValue.length() > 0) {
      for (int i = 0; i < 20; i++) {
        rxload[i] = 0;
      }
      for (int i = 0; i < rxValue.length(); i++) {
        rxload[i] = (char)rxValue[i];
      }
    }
  }
};

void setupBLE(String BLEName) {
  const char *ble_name = BLEName.c_str();
  BLEDevice::init(ble_name);
  BLEServer *pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());
  BLEService *pService = pServer->createService(SERVICE_UUID);
  pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_TX, BLECharacteristic::PROPERTY_NOTIFY);
  pCharacteristic->addDescriptor(new BLE2902());
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(CHARACTERISTIC_UUID_RX, BLECharacteristic::PROPERTY_WRITE);
  pCharacteristic->setCallbacks(new MyCallbacks());
  pService->start();
  pServer->getAdvertising()->start();
  Serial.println("Waiting a client connection to notify...");
}

void setup() {
  pinMode(LED, OUTPUT);
  setupBLE("ESP32S3_Bluetooth");
  Serial.begin(115200);
  Serial.println("\nThe device started, now you can pair it with Bluetooth!");
}

void loop() {
  long now = millis();
  if (now - lastMsg > 100) {
    if (deviceConnected && strlen(rxload) > 0) {
      if (strncmp(rxload, "led_on", 6) == 0) {
        digitalWrite(LED, HIGH);
      }
      if (strncmp(rxload, "led_off", 7) == 0) {
        digitalWrite(LED, LOW);
      }
      Serial.println(rxload);
      memset(rxload,0,sizeof(rxload));
    }
    lastMsg = now;
  }
}
Allumage de la LED: led_on
Extinction : led_off



@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 413
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 26 17:07

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Exercice: N°28

Lecture écriture sur carte sd

Le sketch:

Code : Tout sélectionner

    /**********************************************************************
      Filename    : SDMMC Test
      Description : The SD card is accessed using the SDMMC one-bit bus
      Auther      : www.freenove.com
      Modification: 2022/10/28
    **********************************************************************/
    #include "sd_read_write.h"
    #include "SD_MMC.h"

    #define SD_MMC_CMD 38 //Please do not modify it.
    #define SD_MMC_CLK 39 //Please do not modify it.
    #define SD_MMC_D0  40 //Please do not modify it.

    void setup(){
        Serial.begin(115200);
        SD_MMC.setPins(SD_MMC_CLK, SD_MMC_CMD, SD_MMC_D0);
        if (!SD_MMC.begin("/sdcard", true, true, SDMMC_FREQ_DEFAULT, 5)) {
          Serial.println("Card Mount Failed");
          return;
        }
        uint8_t cardType = SD_MMC.cardType();
        if(cardType == CARD_NONE){
            Serial.println("No SD_MMC card attached");
            return;
        }

        Serial.print("SD_MMC 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_MMC.cardSize() / (1024 * 1024);
        Serial.printf("SD_MMC Card Size: %lluMB\n", cardSize);

        listDir(SD_MMC, "/", 0);

        createDir(SD_MMC, "/mydir");
        listDir(SD_MMC, "/", 0);

        removeDir(SD_MMC, "/mydir");
        listDir(SD_MMC, "/", 2);

        writeFile(SD_MMC, "/hello.txt", "Hello ");
        appendFile(SD_MMC, "/hello.txt", "World!\n");
        readFile(SD_MMC, "/hello.txt");

        deleteFile(SD_MMC, "/foo.txt");
        renameFile(SD_MMC, "/hello.txt", "/foo.txt");
        readFile(SD_MMC, "/foo.txt");

        testFileIO(SD_MMC, "/test.txt");
       
        Serial.printf("Total space: %lluMB\r\n", SD_MMC.totalBytes() / (1024 * 1024));
        Serial.printf("Used space: %lluMB\r\n", SD_MMC.usedBytes() / (1024 * 1024));
    }

    void loop(){
      delay(10000);
    }




@+
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 17480
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
oct. 2026 26 17:13

Re: Montages ESP32 S3 WROOM

Message par France likiki

:PetitPoucejpg: :PetitPoucejpg: :PetitPoucejpg:
Quand vous passerez a la maison,
Sonnez et courez,
le chien a besoin d'exercice.

Proverbe de là bas.

ImageImageImage

:tirechap:

.
Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France patrice_b
2000 posts et +
2000 posts et +
Messages : 4138
Enregistré le : 31 janv. 2025, 14:45
Prénom : Patrice
LOCALISATION : Beziers Herault
Centres d'intérêts : Modelisme HO et HOM ou HOe
Echelle pratiquée : H0
Âge : 65
Pays :
France
France
oct. 2026 26 19:17

Re: Montages ESP32 S3 WROOM

Message par France patrice_b

Clem68 a écrit : 25 oct. 2026, 21:21 :merciiii: à vous!
De quel chapeau sort la valeur 6E400001-B5A3-F393-E0A9-E50E24DCCA9E ?
Le chapeau ! C'est le tuto à lire.... :siffle:
Quel tuto stp ??
Merci.

C'est bon je l'ai, j'avais loupé le petit lien, vers le tuto, sorry !!
Cordialement,

Patrice
Avatar du membre
France Amigorl
Posteur d'honneur
Posteur d'honneur
Messages : 1093
Enregistré le : 02 févr. 2025, 20:15
Prénom : Rémy
LOCALISATION : Pau
Centres d'intérêts : Digitalisation matériel ancien, construction d'un réseau HO. Arduino, Dccex-Conmmand-Station, Rocrail, Digitalisation pont tournant Jouef, Decodeur accessoires DIY. 3D PLA et débutant SLA.
Echelle pratiquée : H0
Âge : 64
Pays :
France
France
oct. 2026 26 20:14

Re: Montages ESP32 S3 WROOM

Message par France Amigorl

Ha ok... Désolé, Clem, pas vu le lien vers le tuto.

Je comprends mieux, il faut installer Lightblue et 6E400001-B5A3-F393-E0A9-E50E24DCCA9E est son uuid DentBleue...

Faut synthétiser....

Je découvre, toujours un peu plus chaque jour et je n'aurai pas assez d'une vie pour faire le tour de toutes ces technologies même si je focalise sur mes utilisations ou projets.

Merci Patrice pour m'avoir mis sur la voie, j'aime bien comprendre en détail comment ça fonctionne ces trucs là, sinon aucun intérêt....

Je dois aller voir l'OPH maintenant...
Avatar du membre
France patrice_b
2000 posts et +
2000 posts et +
Messages : 4138
Enregistré le : 31 janv. 2025, 14:45
Prénom : Patrice
LOCALISATION : Beziers Herault
Centres d'intérêts : Modelisme HO et HOM ou HOe
Echelle pratiquée : H0
Âge : 65
Pays :
France
France
oct. 2026 26 22:22

Re: Montages ESP32 S3 WROOM

Message par France patrice_b

Pour un modéliste, mettre sur la voie c'est sa passion...

:siffle:

:PetitPoucejpg:
Cordialement,

Patrice
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 413
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 26 23:54

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Profitez-en, je publierai encore 2 exercices et j’arrête les essais. Par contre je publierai les derniers mais je ne les ferai pas. Ils concerneront Wi-Fi et serveurs. Et ça ne m’intéresse pas d’aller bidouiller dans ces systèmes. J’ai fait le Bluetooth, c’est déjà pas mal. L’autre raison cela prend du temps et j’ai d’autres tâches qui m’attendent… les maquettes en impression 3d dont j’ai du mal à avancer…
@+
Avatar du membre
France C2Vues-BricoTrain
2000 posts et +
2000 posts et +
Messages : 10062
Enregistré le : 08 mars 2024, 11:45
Prénom : Fernando
LOCALISATION : Clamart
Centres d'intérêts : Modélisme Ferroviaire - Échelles N et HO
Images IA
Echelle pratiquée : N
Âge : 74
Pays :
France
France
oct. 2026 27 09:25

Re: Montages ESP32 S3 WROOM

Message par France C2Vues-BricoTrain

patrice_b a écrit : 26 oct. 2026, 22:22 Pour un modéliste, mettre sur la voie c'est sa passion...

:siffle:

:PetitPoucejpg:
Le tout, c'est de bien "aiguiller" les gens !

:hhhaaaa: :hhhaaaa: :hhhaaaa:
Pour me retrouver sur ma chaîne :
https://youtube.com/@c2vues-bricotrain? ... VpM6qhmP2u

Quand trop gentil, tu seras,
Dans le côté sombre, tu l'auras !

Yoda
Maître Jedi dans Star Wars
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 413
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 28 15:51

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Les 2 derniers... :siffle:

Exercice: N°29

Musique sur carte sd v1
ex29.jpg
Le sketch:

Code : Tout sélectionner

    #include <Arduino.h>
    #include <WiFi.h>
    #include "FS.h"
    #include "SD_MMC.h"
    #include "AudioFileSourceSD_MMC.h"
    #include "AudioFileSourceID3.h"
    #include "AudioGeneratorMP3.h"
    #include "AudioOutputI2SNoDAC.h"

    #define SD_MMC_CMD 38 //Please do not modify it.
    #define SD_MMC_CLK 39 //Please do not modify it.
    #define SD_MMC_D0  40 //Please do not modify it.

    AudioGeneratorMP3 *mp3;
    AudioFileSourceID3 *id3;
    AudioOutputI2SNoDAC *out;

    AudioFileSourceSD_MMC *file = NULL;

    // Called when a metadata event occurs (i.e. an ID3 tag, an ICY block, etc.
    void MDCallback(void *cbData, const char *type, bool isUnicode, const char *string)
    {
      (void)cbData;
      Serial.printf("ID3 callback for: %s = '", type);

      if (isUnicode) {
        string += 2;
      }
     
      while (*string) {
        char a = *(string++);
        if (isUnicode) {
          string++;
        }
        Serial.printf("%c", a);
      }
      Serial.printf("'\n");
      Serial.flush();
    }

    void setup()
    {
      WiFi.mode(WIFI_OFF);
      Serial.begin(115200);
      delay(1000);
      SD_MMC.setPins(SD_MMC_CLK, SD_MMC_CMD, SD_MMC_D0);
      if (!SD_MMC.begin("/sdcard", true, true, SDMMC_FREQ_DEFAULT, 5)) {
          Serial.println("Card Mount Failed");
          return;
      }
      Serial.printf("Sample MP3 playback begins...\n");

      audioLogger = &Serial;
      file = new AudioFileSourceSD_MMC("/music/01.mp3");
      id3 = new AudioFileSourceID3(file);
      id3->RegisterMetadataCB(MDCallback, (void*)"ID3TAG");
      //out = new AudioOutputI2S();
      out = new AudioOutputI2SNoDAC();
      out->SetPinout(12,13,14);//Set the audio output pin, Only 14 were used
      out->SetGain(0.9);//Setting the Volume
      mp3 = new AudioGeneratorMP3();
      mp3->begin(id3, out);
    }

    void loop()
    {
      if (mp3->isRunning()) {
        if (!mp3->loop()) mp3->stop();
      } else {
        Serial.printf("MP3 done\n");
        delay(1000);
      }
    }
Le son est à peine audible.




Exercice: N°29.2

Musique sur carte sd v2

ex29.2.jpg
Le sketch:

Code : Tout sélectionner

    /**********************************************************************
      Filename    : SDMMC Music
      Description : Play music from the sd card.
      Auther      : www.freenove.com
      Modification: 2022/10/29
    **********************************************************************/
    #include "Arduino.h"
    #include "Audio.h"
    #include "FS.h"
    #include "SD_MMC.h"

    #define SD_MMC_CMD 38
    #define SD_MMC_CLK 39
    #define SD_MMC_D0  40
    #define I2S_BCLK  14
    #define I2S_DOUT  13
    #define I2S_LRC    12

    Audio audio;

    void setup() {
      Serial.begin(115200);
     
      SD_MMC.setPins(SD_MMC_CLK, SD_MMC_CMD, SD_MMC_D0);
      if (!SD_MMC.begin("/sdcard", true, true, SDMMC_FREQ_DEFAULT, 5)) {
        Serial.println("Card Mount Failed");
        return;
      }
      uint8_t cardType = SD_MMC.cardType();
      if (cardType == CARD_NONE) {
        Serial.println("No SD_MMC card attached");
        return;
      }
      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_MMC.cardSize() / (1024 * 1024);
      Serial.printf("SD_MMC Card Size: %lluMB\n", cardSize);

      audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
      audio.setVolume(12);  // 0...21

      audio.connecttoFS(SD_MMC, "/music/Jingle Bells.mp3");
    }

    void loop() {
      audio.loop();
      if (Serial.available()) {  // put streamURL in serial monitor
        audio.stopSong();
        String r = Serial.readString();
        r.trim();
        if (r.length() > 5) audio.connecttoFS(SD_MMC, r.c_str());
        log_i("free heap=%i", ESP.getFreeHeap());
      }
    }

    // optional
    void audio_info(const char *info) {
      Serial.print("info        ");
      Serial.println(info);
    }
    void audio_id3data(const char *info) {  //id3 metadata
      Serial.print("id3data    ");
      Serial.println(info);
    }
    void audio_eof_mp3(const char *info) {  //end of file
      Serial.print("eof_mp3    ");
      Serial.println(info);
    }
    void audio_showstation(const char *info) {
      Serial.print("station    ");
      Serial.println(info);
    }
    void audio_showstreamtitle(const char *info) {
      Serial.print("streamtitle ");
      Serial.println(info);
    }
    void audio_bitrate(const char *info) {
      Serial.print("bitrate    ");
      Serial.println(info);
    }
    void audio_commercial(const char *info) {  //duration in sec
      Serial.print("commercial  ");
      Serial.println(info);
    }
    void audio_icyurl(const char *info) {  //homepage
      Serial.print("icyurl      ");
      Serial.println(info);
    }
    void audio_lasthost(const char *info) {  //stream URL played
      Serial.print("lasthost    ");
      Serial.println(info);
    }


@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Répondre

Retourner vers « Montages divers »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités