Microcontrôleurs: passage de l'arduino à l'ESP32. Vos expériences, avis?
- 11 réponses
- 5 participants
- 4 747 vues
- 5 followers
Anonyme
1096
Sujet de la discussion Posté le 24/09/2019 à 13:55:46Microcontrôleurs: passage de l'arduino à l'ESP32. Vos expériences, avis?
Salut à tous.
Grand amateur d'Arduino on m'a conseillé plusieurs fois de passer sur ESP32 ces derniers temps.
Je remarque les fréquences de travail qui font passer les arduino pour des nains de jardin, il y a également des fonctionnalités embarquées intéressantes (wifi, bluetooth, accéléromètre, etc..) Néanmoins je n'ai pas encore réussi à bien identifier la gamme, les références semblent nombreuses.
Ce qui est bien pour moi qui suis autodidacte, est que l'ESP32 est compatible avec l'IDE Arduino et ses bibliothèques. Malgré tout il semble y avoir une embrouille pour installer l'esp32 dans l'IDE arduino sur Mac. Hum...
J'ai aussi découvert des produits sympas autour de l'ESP32, en particulier chez M5stack:
https://m5stack.com/collections/m5-core
ESP32 (240Mhz duocore LX6) et base de chargement compatible Lego, j'adore.
ou encore le petit clavier à leds :
https://m5stack.com/collections/m5-application/products/acrylic-piano-board-with-rgb-led
Bref tout ça m'attire de plus en plus et je lance le sujet pour discuter avec vous de ce microcontrôleur.
Des expériences, des avis?
Grand amateur d'Arduino on m'a conseillé plusieurs fois de passer sur ESP32 ces derniers temps.
Je remarque les fréquences de travail qui font passer les arduino pour des nains de jardin, il y a également des fonctionnalités embarquées intéressantes (wifi, bluetooth, accéléromètre, etc..) Néanmoins je n'ai pas encore réussi à bien identifier la gamme, les références semblent nombreuses.
Ce qui est bien pour moi qui suis autodidacte, est que l'ESP32 est compatible avec l'IDE Arduino et ses bibliothèques. Malgré tout il semble y avoir une embrouille pour installer l'esp32 dans l'IDE arduino sur Mac. Hum...
J'ai aussi découvert des produits sympas autour de l'ESP32, en particulier chez M5stack:
https://m5stack.com/collections/m5-core
ESP32 (240Mhz duocore LX6) et base de chargement compatible Lego, j'adore.
ou encore le petit clavier à leds :
https://m5stack.com/collections/m5-application/products/acrylic-piano-board-with-rgb-led
Bref tout ça m'attire de plus en plus et je lance le sujet pour discuter avec vous de ce microcontrôleur.
Des expériences, des avis?
[ Dernière édition du message le 26/09/2019 à 04:53:22 ]
- 1
- 2
Rémy M. (chimimic)
14200
Modérateur·trice thématique
Membre depuis 22 ans
2 Posté le 25/09/2019 à 07:45:12
Bonjour,
j'ai commandé et reçu une platine ESP32 il y a deux mois (principalement pour usage wifi), mais n'ai pas encore eu le temps de la "mettre en route". Je vais suivre ce sujet avec intérêt (sans apporter d'avis pour l'instant).
Sympa le petit clavier qu'on peut utiliser avec n'importe quel uC
j'ai commandé et reçu une platine ESP32 il y a deux mois (principalement pour usage wifi), mais n'ai pas encore eu le temps de la "mettre en route". Je vais suivre ce sujet avec intérêt (sans apporter d'avis pour l'instant).
Sympa le petit clavier qu'on peut utiliser avec n'importe quel uC
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
Anonyme
1096
3 Posté le 26/09/2019 à 04:52:24
Salut Chimimic.
Peux-tu nous dire la référence que tu as choisis?
Mes petites recherches du jour, évidemment je laisse le soin à chacun de me corriger le cas échéant:
Espressif est le développeur et fabricant principal mais on peut aussi trouver la carte en générique. La gamme récemment renouvelée propose 9 références présentant sensiblement les mêmes caractéristiques. Les modèles à souder (ESP32 WROOM-32D et ESP32-WROOM+32U) sont préconisées par Espressif pour les cartes de développement. un récapitulatif ici:
https://projetsdiy.fr/quelle-carte-esp32-choisir-developper-projets-diy-objets-connectes/
Je découvre des choses qui me sortent du monde Arduino: les sorties DACs partagent les mêmes pins que certaines entrées ADC, j'imagine qu'une simple déclaration permet de basculer de l'un vers l'autre.
Peux-tu nous dire la référence que tu as choisis?
Mes petites recherches du jour, évidemment je laisse le soin à chacun de me corriger le cas échéant:
Espressif est le développeur et fabricant principal mais on peut aussi trouver la carte en générique. La gamme récemment renouvelée propose 9 références présentant sensiblement les mêmes caractéristiques. Les modèles à souder (ESP32 WROOM-32D et ESP32-WROOM+32U) sont préconisées par Espressif pour les cartes de développement. un récapitulatif ici:
https://projetsdiy.fr/quelle-carte-esp32-choisir-developper-projets-diy-objets-connectes/
Je découvre des choses qui me sortent du monde Arduino: les sorties DACs partagent les mêmes pins que certaines entrées ADC, j'imagine qu'une simple déclaration permet de basculer de l'un vers l'autre.
Rémy M. (chimimic)
14200
Modérateur·trice thématique
Membre depuis 22 ans
4 Posté le 26/09/2019 à 05:28:19
ESP32 :
https://www.ebay.fr/itm/ESP32-ESP-WROOM-32-WiFi-WLAN-Bluetooth-Module-Controller-Board-ESP32-T-Shield/263382129525
et ESP8266 :
https://www.ebay.fr/itm/263383993562
(module seul, sans platine relais)
En effet, pour les broches "multi-fonctions" (fonctions multiplexées) il te faut choisir et cela se fait par soft.
https://www.ebay.fr/itm/ESP32-ESP-WROOM-32-WiFi-WLAN-Bluetooth-Module-Controller-Board-ESP32-T-Shield/263382129525
et ESP8266 :
https://www.ebay.fr/itm/263383993562
(module seul, sans platine relais)
Citation :
Je découvre des choses qui me sortent du monde Arduino: les sorties DACs partagent les mêmes pins que certaines entrées ADC, j'imagine qu'une simple déclaration permet de basculer de l'un vers l'autre.
En effet, pour les broches "multi-fonctions" (fonctions multiplexées) il te faut choisir et cela se fait par soft.
Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com
[ Dernière édition du message le 26/09/2019 à 05:30:22 ]
Anonyme
1096
5 Posté le 01/10/2019 à 22:10:38
La grande aventure a commencé, je me suis donc procuré chez Hackspark (petite boutique électronique parisienne aux alentours de Nation) la carte suivante:
https://hackspark.fr/fr/outils-de-dev/1433-esp-32-devkitc-nodemcu-like-dev-board-for-esp32-based-on-esp-wroom-32-wifi-and-bluetooth-40.html
L’ESP-32 DevKit C est basée sur le ESP-WROOM-32D, elle intègre le WIFI, le Bluetooth 4.0...
Je suis déçu de découvrir deux DACS 8 bits, j'avais cru comprendre qu'il s'agissait de DACs 24 bits...
Programmer l’ESP32 avec l’IDE Arduino:
--> Mac/El Capitan dans mon cas mais la méthode paraît compatible avec tout les systèmes
Ici un petit tutoriel qui permet d’installer les bibliothèques nécessaires en quelques étapes depuis l’IDE d’arduino, c’est très simple:
https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
Malgré l’installation la carte n’était pas reconnue et n’apparaissait pas sur les ports, il faut alors installer un driver supplémentaire:
Dans mon cas le CP210x: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
ou sinon éventuellement le CH340: https://sparks.gogo.co.nz/ch340.html
L’installation prend 10 minutes en tout. Des détails au passage:
- La carte n’apparait pas clairement dans la liste "Outils/type de carte" de l'IDE, il faut sélectionner “ESP32 Dev Module”.
- Je n'ai pas réussi à identifier de suite le driver nécessaire pour la carte (CP210 ou CH340), j'y suis donc allé au pifomètre.
- j’ai laissé les choix par défauts pour les options flash Mode/Flash Fréquence, CPU Fréquence, etc… qui sont des options nouvelles.
- le programmateur est toujours AVRISP mkll
- évidemment se méfier des câbles USB d’alimentation qui pourraient ne pas comporter les 2 fils nécessaires à la communication.
Hormis le témoin d’alimentation la carte n’intègre pas de Led, il faut donc en connecter une pour faire le “blink” test.
Deux breadboards sont nécessaires pour pouvoir accéder correctement à tout les pins de la carte.
Comme la carte n'intègre pas de "LED_BUILTIN" il faut préciser la pin sur laquelle est connectée la Led.
Ce qui donne évidemment ceci si on est connecté sur la Pin2:
Voilà! j'ai fait clignoter mon premier ESP32.
A l'utilisation j'ai été confronté à plusieurs problèmes de download car la carte n'était plus reconnue sur le port.
La fenêtre série affichant des choses dans cet esprit:
Il semble ici conseillé d'utiliser une résistance pull-up entre la Pin 0 et le +3,3V. J'ai mis une 22K qui semble bien arranger la communication. (EDIT: parfois il m'a fallu débrancher cette résistance pour initialiser le port... )
https://hackspark.fr/fr/outils-de-dev/1433-esp-32-devkitc-nodemcu-like-dev-board-for-esp32-based-on-esp-wroom-32-wifi-and-bluetooth-40.html
L’ESP-32 DevKit C est basée sur le ESP-WROOM-32D, elle intègre le WIFI, le Bluetooth 4.0...
Je suis déçu de découvrir deux DACS 8 bits, j'avais cru comprendre qu'il s'agissait de DACs 24 bits...
Programmer l’ESP32 avec l’IDE Arduino:
--> Mac/El Capitan dans mon cas mais la méthode paraît compatible avec tout les systèmes
Ici un petit tutoriel qui permet d’installer les bibliothèques nécessaires en quelques étapes depuis l’IDE d’arduino, c’est très simple:
https://randomnerdtutorials.com/installing-the-esp32-board-in-arduino-ide-windows-instructions/
Malgré l’installation la carte n’était pas reconnue et n’apparaissait pas sur les ports, il faut alors installer un driver supplémentaire:
Dans mon cas le CP210x: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
ou sinon éventuellement le CH340: https://sparks.gogo.co.nz/ch340.html
L’installation prend 10 minutes en tout. Des détails au passage:
- La carte n’apparait pas clairement dans la liste "Outils/type de carte" de l'IDE, il faut sélectionner “ESP32 Dev Module”.
- Je n'ai pas réussi à identifier de suite le driver nécessaire pour la carte (CP210 ou CH340), j'y suis donc allé au pifomètre.
- j’ai laissé les choix par défauts pour les options flash Mode/Flash Fréquence, CPU Fréquence, etc… qui sont des options nouvelles.
- le programmateur est toujours AVRISP mkll
- évidemment se méfier des câbles USB d’alimentation qui pourraient ne pas comporter les 2 fils nécessaires à la communication.
Hormis le témoin d’alimentation la carte n’intègre pas de Led, il faut donc en connecter une pour faire le “blink” test.
Deux breadboards sont nécessaires pour pouvoir accéder correctement à tout les pins de la carte.
Comme la carte n'intègre pas de "LED_BUILTIN" il faut préciser la pin sur laquelle est connectée la Led.
Ce qui donne évidemment ceci si on est connecté sur la Pin2:
x
Hors sujet :
int LED = 2;
void setup() {
pinMode (LED, OUTPUT);
}
void loop() {
digitalWrite(LED, HIGH);
delay(1000);
digitalWrite(LED, LOW);
delay(1000);
}
Voilà! j'ai fait clignoter mon premier ESP32.
A l'utilisation j'ai été confronté à plusieurs problèmes de download car la carte n'était plus reconnue sur le port.
La fenêtre série affichant des choses dans cet esprit:
x
Hors sujet :
rst:0x1 (POWERON_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download**
Il semble ici conseillé d'utiliser une résistance pull-up entre la Pin 0 et le +3,3V. J'ai mis une 22K qui semble bien arranger la communication. (EDIT: parfois il m'a fallu débrancher cette résistance pour initialiser le port... )
[ Dernière édition du message le 03/10/2019 à 16:11:08 ]
Anonyme
1096
6 Posté le 03/10/2019 à 16:07:46
La suite pour évoquer l'audio:
L'ESP32 intègre 2 DACs dont la fréquence peut monter au delà de 44,1Khz, par contre c'est seulement du 8 bits. C'est une petite déception pour moi, du 10 ou 12bits aurait déjà été super pour imiter les vieilles boites à rythmes numériques/sampleurs.
Côté sorties PWM on peut faire de l'audio mais les caractéristiques sont limitées. Dans ce cas la fréquence du PWM doit être au moins 10 fois supérieure à celle du signal sortant, voici les valeurs que j'ai trouvé, oscilloscope à l'appui:
fréquence PWM maximale:
8bits: 312Khz
9 bits: 156 Khz
10 bits: 78Khz
11 bits: 39Khz
12 bits: 19,5Khz
...
16 bits: 1,219Khz
Le programme test ici:
Bref l'ESP32 de base n'est pas forcément bien équipé pour l'audio. A noter qu'on peut tout de même utiliser une feinte pour travailler en 16bits mono avec les DACs internes: Dans ce cas les bits MSB et LSB sont répartis sur les deux sorties. Il faut ensuite électriquement pondérer ces niveaux (diviseur de tension + ampli op). C'est une méthode que j'ai déjà expérimenté sur d'autre matériel.
L'I2S, le SPI, l'I2C...
L'ESP32 ne comporte pas de DACs de très bonne qualité, par contre il propose toutes les outils nécessaires pour commander des DACs externes.
Outre l'I2C et le SPI que je suis habitué à utiliser, je découvre l'I2S qui est un protocole justement dédié au transfert audio.
l'I2S peut être configuré directement sur le DMA et permet de véhiculer du signal au moins jusqu'à 32 bits.
A noter: apparemment tout les DACs compatibles I2S sur le marché sont des CMS, il n'y a rien en traversant. On peut aussi se tourner vers des cartes toutes faites qui intègrent aussi parfois un préampli, une sortie S/PDIF.. mais ça coûte plus cher, généralement une trentaine d'euros.
L'ESP32 intègre 2 DACs dont la fréquence peut monter au delà de 44,1Khz, par contre c'est seulement du 8 bits. C'est une petite déception pour moi, du 10 ou 12bits aurait déjà été super pour imiter les vieilles boites à rythmes numériques/sampleurs.
Côté sorties PWM on peut faire de l'audio mais les caractéristiques sont limitées. Dans ce cas la fréquence du PWM doit être au moins 10 fois supérieure à celle du signal sortant, voici les valeurs que j'ai trouvé, oscilloscope à l'appui:
fréquence PWM maximale:
8bits: 312Khz
9 bits: 156 Khz
10 bits: 78Khz
11 bits: 39Khz
12 bits: 19,5Khz
...
16 bits: 1,219Khz
Le programme test ici:
Spoiler - Cliquer ici pour lire la suite
/* valeurs max observées:
PWM 312KHz en 8 bits
PWM 156Khz en 9 bits
PWM 78KHz en 10bits
PWM 39Khz en 11 bits
PWM 19,5Khz en 12 bits
...
PWM 1,219 Khz en 16 bits
*/
int PWM_FREQUENCY = 600000;
int PWM_CHANNEL = 0;
int PWM_RESOLUTION = 10;
int GPIOPIN = 15 ;
void setup()
{
ledcSetup(PWM_CHANNEL, PWM_FREQUENCY, PWM_RESOLUTION);
ledcAttachPin(GPIOPIN, PWM_CHANNEL);
}
void loop()
{
for (int dutyCycle = 0; dutyCycle <= 1023; dutyCycle = dutyCycle + 400)
{
ledcWrite(PWM_CHANNEL, dutyCycle);
delay(1);
}
}
Bref l'ESP32 de base n'est pas forcément bien équipé pour l'audio. A noter qu'on peut tout de même utiliser une feinte pour travailler en 16bits mono avec les DACs internes: Dans ce cas les bits MSB et LSB sont répartis sur les deux sorties. Il faut ensuite électriquement pondérer ces niveaux (diviseur de tension + ampli op). C'est une méthode que j'ai déjà expérimenté sur d'autre matériel.
L'I2S, le SPI, l'I2C...
L'ESP32 ne comporte pas de DACs de très bonne qualité, par contre il propose toutes les outils nécessaires pour commander des DACs externes.
Outre l'I2C et le SPI que je suis habitué à utiliser, je découvre l'I2S qui est un protocole justement dédié au transfert audio.
l'I2S peut être configuré directement sur le DMA et permet de véhiculer du signal au moins jusqu'à 32 bits.
A noter: apparemment tout les DACs compatibles I2S sur le marché sont des CMS, il n'y a rien en traversant. On peut aussi se tourner vers des cartes toutes faites qui intègrent aussi parfois un préampli, une sortie S/PDIF.. mais ça coûte plus cher, généralement une trentaine d'euros.
static volatile
1793
AFicionado·a
Membre depuis 7 ans
7 Posté le 03/10/2019 à 16:35:05
Citation de King :
Outre l'I2C et le SPI que je suis habitué à utiliser, je découvre l'I2S qui est un protocole justement dédié au transfert audio.
l'I2S peut être configuré directement sur le DMA et permet de véhiculer du signal au moins jusqu'à 32 bits.
A noter: apparemment tout les DACs compatibles I2S sur le marché sont des CMS, il n'y a rien en traversant. On peut aussi se tourner vers des cartes toutes faites qui intègrent aussi parfois un préampli, une sortie S/PDIF.. mais ça coûte plus cher, généralement une trentaine d'euros.
Il existe plusieurs protocoles, tous plus ou moins cousins dont l'I2S fait partie.
Selon le MCU, tu pourras configurer le periph I2S pour un ou plusieurs de ces protocoles (chez ST, le periphérique SAI est capable de tous les utiliser).
Oui, un DAC ou un ADC 16 ou 24 bits moderne, c'est du SMT.
Autant s'habituer dès aujourd'hui, d'ici quelques années il sera vraisemblablement encore plus difficile de trouver du THT, voire impossible pour certains composants.
x
Hors sujet :
Je vois que tu as avancé sur cette histoire de DMA, bravo!
Resistance is not futile... it's voltage divided by current
Anonyme
1096
8 Posté le 03/10/2019 à 21:52:49
Citation de aaB :
Oui, un DAC ou un ADC 16 ou 24 bits moderne, c'est du SMT.
Je suis découvert! Jusqu'ici je n'ai utilisé que des DACs 12bits/SPI (mcp4921) justement pour cause de traversant.
Citation de aaB :
Je vois que tu as avancé sur cette histoire de DMA, bravo!
Non pas vraiment malheureusement, c'est un sujet sur lequel je me casse encore les dents.
[ Dernière édition du message le 03/10/2019 à 21:53:27 ]
Anonyme
1096
9 Posté le 13/10/2019 à 13:54:51
Aujourd'hui on va voir comment réaliser une Surface MIDI bluetooth avec l'ESP32.
C'est évidemment un exemple basique qu'il faut développer. La mise en oeuvre est simple, ça m'a pris 3 minutes pour envoyer du MIDI vers mon DAW préféré.
Sur l'ordi il faut installer l'appli "Bluetooth MIDI Connect" développée par Korg. C'est disponible sur l'Applestore (Mac) ou ici (Windows): https://www.korg.com/us/support/download/product/1/305/
Le manuel Korg est moyennement nécessaire (il suffit d'appuyer sur le bouton "Connect"). Voici tout de même le lien en français: https://cdn.korg.com/us/support/download/files/c7249d1cdcc50d9ce1840586517537d8.pdf?response-content-disposition=inline%3Bfilename%2A%3DUTF-8%27%27Bluetooth_MIDI_SettingG_F1.pdf&response-content-type=application%2Fpdf%3B
Ensuite on télécharge cet exemple dans l'ESP32 depuis l'IDE Arduino:
Ce code permet d'envoyer des Control Changes avec un potentiomètre relié à l'entrée ADC_0 ( en l'occurence j'ai choisi d'envoyer les valeurs sur le CC-52/canal 1).
Astuce: sur Mac l'appli "MIDI monitor" permet de surveiller les données MIDI échangées.
Ca marche très bien, par contre il faut garder à l'esprit qu'avec le Bluetooth on peut-être confronté à une certaine latence: quelque chose de l'ordre de la milliseconde/dizaine de millisecondes.
* la vidéo et les liens/tutos originaux en anglais. Ici l'ESP32 envoie des "note on/note off":
https://www.youtube.com/watch?v=ccONpgYz_Sw
C'est évidemment un exemple basique qu'il faut développer. La mise en oeuvre est simple, ça m'a pris 3 minutes pour envoyer du MIDI vers mon DAW préféré.
Sur l'ordi il faut installer l'appli "Bluetooth MIDI Connect" développée par Korg. C'est disponible sur l'Applestore (Mac) ou ici (Windows): https://www.korg.com/us/support/download/product/1/305/
Le manuel Korg est moyennement nécessaire (il suffit d'appuyer sur le bouton "Connect"). Voici tout de même le lien en français: https://cdn.korg.com/us/support/download/files/c7249d1cdcc50d9ce1840586517537d8.pdf?response-content-disposition=inline%3Bfilename%2A%3DUTF-8%27%27Bluetooth_MIDI_SettingG_F1.pdf&response-content-type=application%2Fpdf%3B
Ensuite on télécharge cet exemple dans l'ESP32 depuis l'IDE Arduino:
Spoiler - Cliquer ici pour lire la suite
/*
Based on:
BLE_MIDI Example by neilbags
[url]https://github.com/neilbags/arduino-esp32-BLE-MIDI[/url]
Based on BLE_notify example by Evandro Copercini.
Creates a BLE MIDI service and characteristic.
Once a client subscibes, send a MIDI message every 2 seconds
*/
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
int Value;
BLECharacteristic *pCharacteristic;
bool deviceConnected = false;
#define MIDI_SERVICE_UUID "03b80e5a-ede8-4b33-a751-6ce34ec4c700"
#define MIDI_CHARACTERISTIC_UUID "7772e5db-3868-4112-a1a9-f2669d106bf3"
uint8_t midiPacket[] = {
0x80, // header
0x80, // timestamp, not implemented
0x00, // status
0x3c, // 0x3c == 60 == middle c
0x00 // velocity
};
class MyServerCallbacks: public BLEServerCallbacks {
void onConnect(BLEServer* pServer) {
deviceConnected = true;
};
void onDisconnect(BLEServer* pServer) {
deviceConnected = false;
}
};
void setup() {
Serial.begin(115200);
BLEDevice::init("MIDI_ESP32_BLE");
// Create the BLE Server
BLEServer *pServer = BLEDevice::createServer();
pServer->setCallbacks(new MyServerCallbacks());
BLEDevice::setEncryptionLevel((esp_ble_sec_act_t)ESP_LE_AUTH_REQ_SC_BOND);
// Create the BLE Service
BLEService *pService = pServer->createService(BLEUUID(MIDI_SERVICE_UUID));
// Create a BLE Characteristic
pCharacteristic = pService->createCharacteristic(
BLEUUID(MIDI_CHARACTERISTIC_UUID),
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_NOTIFY |
BLECharacteristic::PROPERTY_WRITE_NR
);
pCharacteristic->setAccessPermissions(ESP_GATT_PERM_READ_ENCRYPTED | ESP_GATT_PERM_WRITE_ENCRYPTED);
// [url]https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml[/url]
// Create a BLE Descriptor
pCharacteristic->addDescriptor(new BLE2902());
// Start the service
pService->start();
// Start advertising
BLESecurity *pSecurity = new BLESecurity();
pSecurity->setAuthenticationMode(ESP_LE_AUTH_REQ_SC_BOND);
pSecurity->setCapability(ESP_IO_CAP_NONE);
pSecurity->setInitEncryptionKey(ESP_BLE_ENC_KEY_MASK | ESP_BLE_ID_KEY_MASK);
pServer->getAdvertising()->addServiceUUID(MIDI_SERVICE_UUID);
pServer->getAdvertising()->start();
}
void loop() {
if (deviceConnected) {
Value = analogRead(A0);
Value = Value >> 5;
midiPacket[2] = 176; // Control Change Status // CC_Status = 176 + (MIDI channel-1)
midiPacket[3] = 52; // Control Change Destination
midiPacket[4] = Value;
pCharacteristic->setValue(midiPacket, 5); // packet, length in bytes
pCharacteristic->notify();
delay(3);
}
}
Ce code permet d'envoyer des Control Changes avec un potentiomètre relié à l'entrée ADC_0 ( en l'occurence j'ai choisi d'envoyer les valeurs sur le CC-52/canal 1).
Astuce: sur Mac l'appli "MIDI monitor" permet de surveiller les données MIDI échangées.
Ca marche très bien, par contre il faut garder à l'esprit qu'avec le Bluetooth on peut-être confronté à une certaine latence: quelque chose de l'ordre de la milliseconde/dizaine de millisecondes.
* la vidéo et les liens/tutos originaux en anglais. Ici l'ESP32 envoie des "note on/note off":
https://www.youtube.com/watch?v=ccONpgYz_Sw
[ Dernière édition du message le 13/10/2019 à 14:21:41 ]
romzin
41
Nouvel·le AFfilié·e
Membre depuis 20 ans
10 Posté le 15/04/2020 à 23:33:25
Je me joins à la fête:
je suis en train de convertir un pédalier d'orgue (13 notes) pour du MIDI avec un ESP32.
J'ai une version qui "marche":
Sur ma liste de trucs à développer:
Je vous tiens au courant
je suis en train de convertir un pédalier d'orgue (13 notes) pour du MIDI avec un ESP32.
J'ai une version qui "marche":
- Envoi de message note on/off en MIDI (connecteur DIN)
- Sortie "audio" 8bit/40kHz signal triangulaire (pas très Hifi, mais pour des basses, ca passe), je vais peut être tenter l'astuce citée plus haut d'utiliser les deux DACs ensemble pour obtenir un pseudo-16bit
Sur ma liste de trucs à développer:
- Intégration "propre" du nouveau circuit
- Bluetooth Midi (je vais re-lire attentivement le message au dessus, ca va bien m'aider)
- Page de configuration via une page Web accessible en WiFi (j'ai vaguement fait quelques tests)
Je vous tiens au courant
- < Liste des sujets
- Charte
- 1
- 2