Se connecter
Se connecter

ou
Créer un compte

ou

Microcontrôleurs: passage de l'arduino à l'ESP32. Vos expériences, avis?

  • 11 réponses
  • 5 participants
  • 4 747 vues
  • 5 followers
Sujet de la discussion Microcontrô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.

613Q6IxkivL._SY355_.jpg

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

FIRE_1200x1200.jpg
ESP32 (240Mhz duocore LX6) et base de chargement compatible Lego, j'adore. :aime:

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 ]

2
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 ;)

Formateur en techniques sonores ; électronicien ; auteur @ sonelec-musique.com

3
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/

ESP32-DOIT-DEVKIT-V1-Board-Pinout-36-GPIOs-updated.jpg
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.

4
ESP32 :

s-l1600.jpg

https://www.ebay.fr/itm/ESP32-ESP-WROOM-32-WiFi-WLAN-Bluetooth-Module-Controller-Board-ESP32-T-Shield/263382129525

et ESP8266 :

s-l1600.jpg

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 ]

5
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.

les-mains-dans-le-cambouis-2752465.jpg
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. :bravo:


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 ]

6
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:
Spoiler - Cliquer ici pour lire la suite



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.
7
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

8
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 ]

9
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:
Spoiler - Cliquer ici pour lire la suite


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 ]

10
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.

les-mains-dans-le-cambouis-2944908.jpg

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