« Microcontrôleur » : différence entre les versions
Aucun résumé des modifications |
Ajout source ESP32 et prog STM32 |
||
Ligne 69 : | Ligne 69 : | ||
=== Pinout d'un ESP32 classique et pins à éviter === | === Pinout d'un ESP32 classique et pins à éviter === | ||
Tous les pins sont capables du PWM. | Tous les pins sont capables du PWM. Voir ici pour plus de détails : https://lastminuteengineers.com/esp32-pinout-reference/ | ||
{| class="wikitable" | {| class="wikitable" | ||
|+Classification des pins d'un ESP32 | |+Classification des pins d'un ESP32 | ||
Ligne 223 : | Ligne 223 : | ||
* STM32CubeProgrammer<ref>https://www.st.com/en/development-tools/stm32cubeprog.html</ref> : Pour flash les MCU avec les fichiers compilés. | * STM32CubeProgrammer<ref>https://www.st.com/en/development-tools/stm32cubeprog.html</ref> : Pour flash les MCU avec les fichiers compilés. | ||
=== Overview du process de programmation classique === | |||
Vous pouvez ouvrir STM32CubeMX, choisir votre mcu et configurer les périphériques. Il faudra sélectionner les pins que vous voulez utiliser, par exemple en tant qu'ADC, les mettre sur le bon périphérique, puis aller dans le menu à gauche et chercher le périphérique que vous voulez pour terminer de le configurer (baud rate sur l'UART, source des clocks, ...). | |||
Votre pin devra passer de orange à vert lorsqu'il est bien configuré. | |||
Une fois tout bien configuré, vous pouvez cliquer sur suivant puis générer le code. | |||
Une fois cela fait, vous pouvez éditer le code situé dans /[dossier]/src/main.c avec votre IDE préféré, puis le compiler à l'aide STM32CubeIDE (il vous faut importer le projet d'abord). | |||
Une fois votre fichier .elf généré, vous pouvez ouvrir STM32CubeProgrammer, sélectionner votre méthode de programmation (UART, STLink, JTAG), puis cliquez sur Connect et attendez que votre board se connecte. Une fois la connection réussie, allez dans l'onglet Upload, choississez votre .elf et cliquez sur Upload. Une fois que c'est terminé, il ne vous reste plus qu'à reset le mcu en mode normal et tout devrait marcher ! | |||
=== Tips & Tricks === | |||
==== État du pin BOOT0 ==== | |||
C'est rarement précisé dans les datasheet, mais si le pin BOOT0 est à l'état haut le MCU sera en mode bootloader, à l'état bas il sera en mode normal | |||
{{Warning}}C'est l'inverse des ESP32 ! | |||
==== GPIO_Analog ==== | |||
Beaucoup de pins sont capables de passer en mode "GPIO_Analog". Mais aucun rapport avec l'ADC ! Cela veut simplement dire qu'ils sont déconnectés du circuit numérique qui est derrière. Une option dans STM32CubeMX passe tous les pins non utilisés en GPIO_Analog afin de réduire la consommation. | |||
==== UART et bootloader ==== | |||
Les pins d'UART1 peuvent être rebind une fois le MCU démarré, mais ces modifications ne s'appliquent pas dans le bootloader ! Il faudra flasher la carte avec les pins par défaut... | |||
== Ressources == | == Ressources == | ||
https://github.com/yellobyte/ESP32-DevBoards-Getting-Started | https://github.com/yellobyte/ESP32-DevBoards-Getting-Started | ||
[[Catégorie:Articles techniques d'électronique]] | [[Catégorie:Articles techniques d'électronique]] |
Dernière version du 17 juin 2025 à 09:47
![]() | Cet article est à améliorer ! |
C'est quoi ?
Un micro-contrôleur va vous permettre de faire plein de belles choses, principalement de faire interagir du code avec le monde réel. Il existe de nombreuses puces différentes (MCU, microcontroller unit), mais elles sont souvent utilisés sur des cartes de développement (devboard) qui permettent de le faire fonctionner sans élément externe et d'avoir quelque chose de pratique. Les devboard ne sont pas recommandées si vous voulez faire un design où la place est comptée, mais il est recommandé de faire les tests sur devboard avant d'envoyer un PCB.
Arduino
Les arduino sont les plus simples des micro-contrôleurs, mais sont très lents et ont peu de fonctionnalités. Ils sont basés sur les atmega qui sont des mcus corrects. Recommandé pour les débutants et les projets très simples
ESP32
Ces MCU sont un peu spéciaux, nous y reviendrons plus tard, mais ils sont plutôt performants, ont le wifi/bluetooth intégré, pas mal de stockage, beaucoup de pins et les modules sont simples à utiliser. Ils consomment sacrément par contre. Recommandé pour les projets complexes sans contrainte de consommation.
STM32
Très bons MCU mais peu pratiques à utiliser. Recommandés car gratuits/vraiment pas chers
Raspberry Pi Pico
Basés sur le RP2040 qui est très performant, et très peu chers. Recommandés car pas chers et performants
Teensy
Extrêmement performants, blindés de pins I/O etc. Coûtent cher. Recommandés sur des projets avec du traitement en temps réel
nRF
MCU spécialisés dans le wireless basse consommation. Recommandé pour du wireless basse consommation
ESP32
Attention : les MCU d'ESP32 sont très galère à utiliser. Nous allons donc nous concentrer sur les modules, qui sont comme des devboard mais en bien plus compact.
Espressif fabrique aussi des MCU nommés ESP8266, qui sont un peu moins chers mais bien moins performants.
Les différents modèles de module ESP32
Il y a trois types de modules : WROOM, WROVER et MINI.
Les MINI sont les plus petits, suivis par les WROOM puis les WROVER. Les WROOM sont souvent le bon compromis entre fonctionnalités et taille, mais les WROVER peuvent être nécessaire s'il faut accès à tous les pins possibles.
Les différentes séries de SoC ESP32
Il existe 5 séries majeures d'ESP32 :
Série | Processeur | Wireless | Notes et fonctionnalités supplémentaires |
---|---|---|---|
ESP32 | Dual/Single core Xtensa (80~240 MHz) | WiFi + Bluetooth Classic | Attention c'est le seul sans USB intégré |
ESP32-S | Dual core Xtensa (240MHz) | WiFi + Bluetooth BLE | Attention pas de bluetooth classique |
ESP32-H | Single core RISC-V (96MHz) | BLE + Zigbee | Très basse puissance, pas de wifi ! |
ESP32-C | Single core RISC-V (160MHz) | WiFi + BLE + Zigbee | |
ESP32-P | Dual core RISC-V (400MHz) + Single core RISC-V (40 MHz) | Dernier arrivé (je connaissais pas son existence avant il y a 5 min)
A l'air très performant (et cher), à coupler avec un ESP32-C pour avoir le wifi ! |
Pinout d'un ESP32 classique et pins à éviter
Tous les pins sont capables du PWM. Voir ici pour plus de détails : https://lastminuteengineers.com/esp32-pinout-reference/
Label | Fonctionnalités | Remarques |
---|---|---|
Pins à utiliser en priorité | ||
D4 | ADC2_0 + Touch0 | |
D13 | ADC2_4 + Touch4 + SPI2 (MOSI) | |
D14 | ADC2_6 + Touch6 + SPI2 (CLK) | |
RX2 | Serial2 (RX) | |
TX2 | Serial2 (TX) | |
D18 | SPI1 (CLK) | |
D19 | SPI1 (MISO) | |
D21 | I2C (SDA) | |
D22 | I2C (SCL) | |
D23 | SPI1 (MOSI) | |
D25 | ADC2_8 + DAC1 | |
D26 | ADC2_9 + DAC2 | |
D27 | ADC2_7 + Touch7 | |
D32 | ADC1_4 + Touch9 | |
D33 | ADC1_5 + Touch8 | |
Pins à utiliser si c'est la dèche | ||
D0 | HIGH au boot et LOW pour flash | |
D2 | ADC2_2 + Touch2 + CS | LOW au boot |
D5 | SPI1 (CS) | HIGH au boot |
D12 | ADC2_5 + Touch5 + SPI2 (MISO) | LOW au boot |
D15 | ADC2_3 + Touch3 + SPI2 (CS) | HIGH au boot |
D34 | ADC1_6 | Input only |
D35 | ADC1_7 | Input only |
VP | ADC1_0 + VP | Input only |
VN | ADC1_3 + VN | Input only |
Pas touche à ces pins | ||
TX0 | Serial0 (TX) | Communication série |
RX0 | Serial0 (RX) | Communication série |
D6 | Mémoire | |
D7 | ||
D8 | ||
D9 | ||
D10 | ||
D11 |
nRF
Il existe des cartes de devs nRF52840 qui coûtent pas cher (3€) et sont très performantes et complètes, dans une footprint identique à celle d'un arduino pro micro, chercher Supermini nRF52840 sur aliexpress.
STM32
Les MCU de chez ST se divisent en deux parties principales : les STM8 qui ont des bus de données 8 bits, et les STM32 qui sont des 32 bits. D'un point de vue programmation, les STM8 sont plus complexes car moins de flash, moins de puissance de calcul etc. Par contre, ils sont encore moins chers !! Vous pouvez en trouver pour 20 centimes pièce sur LCSC. Je vais me concentrer sur les STM32 dans ce guide.
Les STM32Wx sont en wireless, les STM32Lx et Ux sont en basse consommation, les Cx, F1, F3 et F0 sont les plus classiques et les autres Fx et Hx sont en haut de gamme.[1]
Je conseille souvent les F3, ils sont plutôt solides.
Setup de programmation
Pour bien dev chez ST, il vous faudra plusieurs logiciels :
- STM32CubeMX[2] : Très recommandé, il vous génèrera les fichiers de base (pinout, périphériques, clock...)
- STM32CubeIDE[3] : Il permettra de compiler plus facilement votre code.
- STM32CubeProgrammer[4] : Pour flash les MCU avec les fichiers compilés.
Overview du process de programmation classique
Vous pouvez ouvrir STM32CubeMX, choisir votre mcu et configurer les périphériques. Il faudra sélectionner les pins que vous voulez utiliser, par exemple en tant qu'ADC, les mettre sur le bon périphérique, puis aller dans le menu à gauche et chercher le périphérique que vous voulez pour terminer de le configurer (baud rate sur l'UART, source des clocks, ...).
Votre pin devra passer de orange à vert lorsqu'il est bien configuré.
Une fois tout bien configuré, vous pouvez cliquer sur suivant puis générer le code.
Une fois cela fait, vous pouvez éditer le code situé dans /[dossier]/src/main.c avec votre IDE préféré, puis le compiler à l'aide STM32CubeIDE (il vous faut importer le projet d'abord).
Une fois votre fichier .elf généré, vous pouvez ouvrir STM32CubeProgrammer, sélectionner votre méthode de programmation (UART, STLink, JTAG), puis cliquez sur Connect et attendez que votre board se connecte. Une fois la connection réussie, allez dans l'onglet Upload, choississez votre .elf et cliquez sur Upload. Une fois que c'est terminé, il ne vous reste plus qu'à reset le mcu en mode normal et tout devrait marcher !
Tips & Tricks
État du pin BOOT0
C'est rarement précisé dans les datasheet, mais si le pin BOOT0 est à l'état haut le MCU sera en mode bootloader, à l'état bas il sera en mode normal
Attention: C'est l'inverse des ESP32 !
GPIO_Analog
Beaucoup de pins sont capables de passer en mode "GPIO_Analog". Mais aucun rapport avec l'ADC ! Cela veut simplement dire qu'ils sont déconnectés du circuit numérique qui est derrière. Une option dans STM32CubeMX passe tous les pins non utilisés en GPIO_Analog afin de réduire la consommation.
UART et bootloader
Les pins d'UART1 peuvent être rebind une fois le MCU démarré, mais ces modifications ne s'appliquent pas dans le bootloader ! Il faudra flasher la carte avec les pins par défaut...
Ressources
https://github.com/yellobyte/ESP32-DevBoards-Getting-Started
- ↑ www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html
- ↑ https://www.st.com/en/development-tools/stm32cubemx.html
- ↑ https://www.st.com/en/development-tools/stm32cubeide.html
- ↑ https://www.st.com/en/development-tools/stm32cubeprog.html