🔧 STM32 vs Arduino vs ESP32 : Quel Microcontrôleur Choisir pour Vos Projets DIY ?
Pourquoi s'Intéresser aux STM32 en 2026 ?
Alors qu'Arduino reste le roi de la simplicité et que l'ESP32 domine les projets IoT, les STM32 (basés sur l'architecture ARM Cortex-M) offrent un compromis parfait :
- Performance supérieure : CPU 32-bit jusqu'à 480 MHz (vs 16 MHz pour Arduino Uno)
- Prix imbattable : STM32F103 "Blue Pill" à ~3€ (vs 20€ pour Arduino Uno)
- Précision accrue : ADC 12-bit (vs 10-bit pour Arduino)
- Plus de mémoire : Jusqu'à 512KB Flash et 64KB RAM sur les modèles entry-level
- Périphériques avancés : Timers avancés, DMA, USB OTG, CAN, etc.
Tableau Comparatif Complet
| Caractéristique | Arduino Uno | ESP32 DevKit | STM32F103 (Blue Pill) | STM32F407 (Discovery) |
|---|---|---|---|---|
| Prix | ~20€ | ~8€ | ~3€ | ~15€ |
| CPU | ATmega328P (8-bit) | Xtensa LX6 (32-bit) | ARM Cortex-M3 (32-bit) | ARM Cortex-M4 (32-bit) |
| Fréquence | 16 MHz | 240 MHz | 72 MHz | 168 MHz |
| Flash | 32 KB | 4 MB | 64-128 KB | 512 KB - 1 MB |
| RAM | 2 KB | 520 KB | 20 KB | 112-192 KB |
| ADC | 10-bit | 12-bit | 12-bit | 12-bit (3 ADCs) |
| WiFi/Bluetooth | Non | Oui (WiFi + BT) | Non | Non |
| Facilité d'usage | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
Quand Choisir un STM32 ?
Cas d'Usage Idéaux pour STM32 :
- Contrôle moteur précis : Timers avancés avec PWM haute résolution pour drones, robots, CNC
- Acquisition de données rapide : ADC 12-bit avec DMA pour oscilloscopes DIY, analyseurs de spectre
- Temps réel critique : Interruptions ultra-rapides pour systèmes de contrôle industriels
- Budget serré : Le Blue Pill à 3€ offre des perfs proches de l'ESP32 pour 1/3 du prix
- Apprentissage professionnel : Les STM32 sont utilisés dans l'industrie (automobile, aérospatial, médical)
Quand Préférer Arduino ou ESP32 :
- Débutant complet : Arduino reste le plus simple pour apprendre
- Projet IoT : ESP32 avec WiFi/Bluetooth intégré est imbattable
- Prototype rapide : La bibliothèque Arduino massive fait gagner du temps
🔌 Guide de Démarrage Rapide avec STM32 Blue Pill
Matériel Nécessaire :
- STM32F103C8T6 "Blue Pill" (~3€ sur AliExpress/Amazon)
- Programmeur ST-Link V2 (~2€) ou convertisseur USB-TTL (CH340/CP2102)
- Câbles Dupont et breadboard
- LED + résistance 220Ω pour tester
Méthode 1 : Programmer avec Arduino IDE (Le Plus Simple)
Oui, vous pouvez programmer un STM32 avec l'IDE Arduino ! C'est la méthode idéale pour débuter.
// Installation :
// 1. Ouvrez Arduino IDE
// 2. Fichier → Préférences → URLs de gestionnaires additionnelles :
// https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
// 3. Outils → Type de carte → Gestionnaire de cartes
// 4. Recherchez "STM32" et installez "STM32duino by STMicroelectronics"
// 5. Sélectionnez : Outils → Type de carte → STM32F1 Series → STM32F103C8
// 6. Téléversez votre code comme avec un Arduino classique !
// Exemple Blink pour STM32 Blue Pill
void setup() {
pinMode(PC13, OUTPUT); // LED intégrée sur PC13 (notez la différence avec Arduino !)
}
void loop() {
digitalWrite(PC13, HIGH);
delay(500);
digitalWrite(PC13, LOW);
delay(500);
}
Méthode 2 : Programmer avec STM32CubeIDE (Professionnel)
Pour exploiter 100% des capacités du STM32, utilisez l'IDE officiel de ST (gratuit).
/*
* Exemple avancé : Utilisation du DMA avec ADC sur STM32
* STM32CubeIDE permet un contrôle total du matériel
*/
#include "main.h"
ADC_HandleTypeDef hadc1;
DMA_HandleTypeDef hdma_adc1;
uint32_t adc_values[10]; // Buffer pour 10 lectures ADC
void SystemClock_Config(void);
static void MX_ADC1_Init(void);
static void MX_DMA_Init(void);
int main(void) {
HAL_Init();
SystemClock_Config();
MX_ADC1_Init();
MX_DMA_Init();
// Démarrer l'ADC en mode DMA (sans bloquer le CPU)
HAL_ADC_Start_DMA(&hadc1, adc_values, 10);
while (1) {
// Le CPU peut faire autre chose pendant que l'ADC travaille
// Les valeurs sont automatiquement stockées dans adc_values[]
HAL_Delay(100);
}
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
// Callback appelé quand l'ADC a terminé
// Traiter les 10 valeurs ici
}
⚡ Projet Pratique : Oscilloscope DIY avec STM32
Profitez de l'ADC 12-bit rapide (1 Msps) du STM32 pour créer un oscilloscope USB basique.
/*
* Oscilloscope DIY avec STM32F103 et USB CDC
* Envoie les données ADC vers Processing/Python via USB
*/
#include
#define ADC_BUFFER_SIZE 1000
uint16_t adc_buffer[ADC_BUFFER_SIZE];
void SetupHighSpeedADC(void) {
// Configuration ADC pour 1 Msps (1 million d'échantillons/seconde)
// Bien plus rapide que l'Arduino (10 ksps max)
ADC_HandleTypeDef hadc;
hadc.Instance = ADC1;
hadc.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc.Init.ContinuousConvMode = ENABLE;
hadc.Init.DiscontinuousConvMode = DISABLE;
hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc.Init.NbrOfConversion = 1;
HAL_ADC_Init(&hadc);
}
void CaptureAndSend(void) {
// Capture 1000 échantillons à 1 Msps
HAL_ADC_Start(&hadc);
for (int i = 0; i < ADC_BUFFER_SIZE; i++) {
HAL_ADC_PollForConversion(&hadc, HAL_MAX_DELAY);
adc_buffer[i] = HAL_ADC_GetValue(&hadc);
}
// Envoyer via USB CDC (Virtual COM Port)
// Traitement sur PC avec Processing ou Python
CDC_Transmit_FS((uint8_t*)adc_buffer, ADC_BUFFER_SIZE * 2);
}
🛠️ Ressources et Outils Recommandés
- STM32CubeIDE : IDE gratuit de ST avec générateur de code graphique
- STM32CubeMX : Outil de configuration graphique des périphériques
- PlatformIO : Alternative moderne à Arduino IDE (supporte STM32 nativement)
- STM32 Reference Manual : Documentation technique complète (disponible sur st.com)
- Communauté STM32duino : Forum actif pour l'usage avec Arduino IDE
📈 Comparaison des Coûts pour un Projet Complet
| Projet | Arduino Uno | ESP32 | STM32 Blue Pill |
|---|---|---|---|
| Carte de développement | 20€ | 8€ | 3€ |
| Programmeur | Inclus (USB) | Inclus (USB) | ST-Link V2 (2€) |
| ADC externe (si besoin) | MCP3208 (5€) | Inclus (12-bit) | Inclus (12-bit) |
| Timer PWM avancé | Non disponible | Limité | Inclus (gratuit) |
| TOTAL | ~25€ | ~8€ | ~5€ ✅ |
⚠️ Points de Vigilance avec STM32
- Courant 3.3V uniquement : Les STM32 ne sont PAS 5V tolerant (contrairement à Arduino). Utilisez un level shifter si nécessaire !
- Bootloader : Le premier flash nécessite le programmeur ST-Link. Ensuite, vous pouvez utiliser le bootloader UART.
- Documentation : Moins de tutoriels débutants qu'Arduino, mais une documentation technique exceptionnelle.
- Debugging : Le débogage JTAG/SWD est puissant mais nécessite un peu d'apprentissage.
Conclusion
Les STM32 offrent le meilleur rapport performance/prix pour les makers qui veulent aller au-delà d'Arduino sans payer le prix de l'ESP32. Le Blue Pill à 3€ est un excellent point d'entrée pour découvrir l'architecture ARM et les microcontrôleurs professionnels.
Notre recommandation :
- ✅ Débutant : Commencez par Arduino, puis passez à STM32 avec Arduino IDE
- ✅ Projet IoT : ESP32 reste imbattable avec son WiFi/Bluetooth
- ✅ Performance/Budget : STM32 Blue Pill est le champion incontesté
- ✅ Projet pro/industriel : STM32 est le standard de l'industrie
Prochaine étape : Consultez notre guide sur la création d'un oscilloscope USB avec STM32 pour mettre en pratique ces concepts !