Communication entre deux ESP32 : quel protocole ?

Bonjour,

Je suis en train de me fabriquer un pédalier de contrôle MIDI.
Celui-ci devra se connecter simultanément en MIDI classique (ports Série) et en BLE-Midi sur des contrôleurs et des synthétiseurs et en WiFi sur un ordinateur.
J'ai lu que l'ESP32 ne pouvait pas gérer en même temps WiFi et BLE et mes premiers tests semblent le confirmer. J'en viens donc à réfléchir d'utiliser deux processeurs, l'un pour le WiFi et l'autre pour le Bluetooth.
Je me demandais donc comment les faire communiquer entre eux : une classique connexion série sur un port dédié ou des échanges par I2C ou par SPI ?
Je fais appel à vos connaissances et votre expérience pour me guider dans cette réflexion et me faire gagner des semaines d'essais/erreurs.

Quelle distance entre les 2 ESP?
quelle volume de données et quel débit vous attendez entre les 2?

Merci J-M-L de t'intéresser à ma question.
Les deux ESP seront placés sur la même carte donc au plus à une dizaine de centimètres l'un de l'autre.
Le flux le plus important provient d'un contrôleur à vent et, de ce que j'ai pu voir, ne dépasse pas le débit d'un port MIDI 1.0 soit environ 3900 octets / seconde (@31250 bauds) en continu dans les cas extrêmes.
J'aurai aussi d'autres messages à faire circuler comme l'état d'un bouton, la valeur d'un potentiomètre ou d'un encodeur, les messages à afficher sur mes écrans 204 ou 162.
Ma seconde question serait : quel est le protocole le plus simple à utiliser ?

A mon avis le plus simple serait d’utiliser une des UART hardware des ESP si vous ne les utilisez pas pour du midi

Le SPI ou I2C en communication dans les deux sens c’est moins simple à coder. Les ESP étant proches vous pouvez monter assez haut au niveau du débit (testez 500,000 ou 1000,000 bauds pour ne pas avoir de latence si vous avez besoin de traiter quelque chose qui arriverait en flux continu de 3820 octets par seconde. Avec un bon x15 ça vous laisse le temps de recevoir, décoder et traiter le flux et faire autre chose

1 Like

Merci pour ces conseils.
Je vais partir dans ce sens.

Bonjour al1_24

Intéresses toi aux structures qui permettent "d'encapsuler" les données à transmettre. Ainsi tu envoies plusieurs informations en une seule opération et tu en lis idem.

Si tu veux un exemple ...

Cordialement
jpbbricole

Merci jpb, c'était déjà la solution envisagée.

ESP_now protocole rapide entre ESP32 250bytes à 1MHz. ESP-NOW [Yakafab]

C'est une solution qui pourrait être intéressante dans un autre contexte.
Mais dans mon cas d'une part les deux processeurs seront dans le même boîtier et d'autre part l'un des deux, communiquant en BLE, ne pourra pas utiliser le Wi-Fi.
Merci quand même d'avoir pris le temps de prposer une solution.

C'est possible d'utiliser le bluetooth en même temps que le Wifi. Le problème c'est la place mémoire qu'il faut répartitionner.

https://espacerm.com/webgen/esp32-augmentation-de-lespace-memoire-pour-le-code-programme/
Dans platformio.ini il faut ajouter board_build.partitions = huge_app.csv et mettre le fichier de partition du style
# Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x5000, otadata, data, ota, 0xe000, 0x2000, app0, app, ota_0, 0x10000, 0x300000, spiffs, data, spiffs, 0x310000,0xE0000, coredump, data, coredump,0x3F0000,0x10000,

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.