Les Microcontroleurs
Le microcontroleur est le cerveau de tout systeme embarque ! Un ordinateur complet sur une puce, concu pour des taches specifiques avec peu de ressources.
Objectifs du cours
- Comprendre ce qu'est un microcontroleur et son role
- Connaitre l'architecture interne (CPU, RAM, Flash, GPIO)
- Decouvrir les principales familles (AVR, ESP, STM32, RP2040)
- Comparer les caracteristiques techniques
- Choisir le bon microcontroleur pour un projet
Erreurs courantes a eviter
- Confondre microcontroleur (MCU) et microprocesseur (CPU)
- Sous-estimer les contraintes de memoire RAM
- Ignorer les differences de tension (3.3V vs 5V)
- Ne pas verifier la disponibilite des peripheriques necessaires
**Definition**
Un **microcontroleur** (MCU - Microcontroller Unit) est un circuit integre qui regroupe sur une seule puce : - Un processeur (CPU) - De la memoire (RAM, Flash) - Des peripheriques (GPIO, ADC, UART, I2C, SPI...)
**Microcontroleur vs Microprocesseur**
| Aspect | Microprocesseur | Microcontroleur | |--------|-----------------|-----------------| | Fonction | Calcul pur | Systeme complet | | Memoire | Externe (Go) | Integree (Ko-Mo) | | Peripheriques | Externes | Integres | | Consommation | Elevee (10-200W) | Faible (mW-W) | | Prix | Cher (50-500EUR) | Abordable (1-15EUR) | | Usage | PC, serveurs | Embarque, IoT |
**Analogie**
- **Microprocesseur** : Le moteur d'une voiture (puissant mais necessite carrosserie, roues, reservoir...) - **Microcontroleur** : Une trotinette electrique (moins puissant mais autonome et complet)
**Ou trouve-t-on des microcontroleurs ?**
- Arduino Uno → ATmega328P - ESP32 → Xtensa dual-core - Raspberry Pi Pico → RP2040 - Micro:bit → nRF52833 - Dans les voitures, electromenager, jouets...
# Comparaison microprocesseur vs microcontroleur
class ComposantInformatique:
def __init__(self, nom, type_composant):
self.nom = nom
self.type = type_composant
self.specs = {}
def definir_specs(self, **kwargs):
self.specs = kwargs
def afficher(self):
print(f"\n{'='*50}")
print(f"{self.nom} ({self.type})")
print('='*50)
for cle, valeur in self.specs.items():
print(f" {cle}: {valeur}")
# Microprocesseur typique
intel_i5 = ComposantInformatique("Intel Core i5-12400", "Microprocesseur")
intel_i5.definir_specs(
architecture="x86-64",
coeurs=6,
frequence="4.4 GHz",
cache_L3="18 Mo",
ram_max="128 Go (externe)",
consommation="65-117W",
prix="200 EUR",
usage="PC de bureau, laptop"
)
# Microcontroleur typique
atmega328 = ComposantInformatique("ATmega328P", "Microcontroleur")
atmega328.definir_specs(
architecture="AVR 8-bit",
coeurs=1,
frequence="16 MHz",
flash="32 Ko (integree)",
ram="2 Ko (integree)",
eeprom="1 Ko",
gpio="23 broches",
adc="6 canaux 10-bit",
consommation="15-20 mW",
prix="3 EUR",
usage="Arduino Uno, projets embarques"
)
# ESP32 (microcontroleur moderne)
esp32 = ComposantInformatique("ESP32-WROOM-32", "Microcontroleur")
esp32.definir_specs(
architecture="Xtensa 32-bit dual-core",
coeurs=2,
frequence="240 MHz",
flash="4 Mo (integree)",
ram="520 Ko (integree)",
wifi="802.11 b/g/n",
bluetooth="4.2 + BLE",
gpio="34 broches",
adc="18 canaux 12-bit",
consommation="80-260 mW",
prix="5 EUR",
usage="IoT, domotique, wearables"
)
# Affichage
print("=== COMPARAISON DES COMPOSANTS ===")
for composant in [intel_i5, atmega328, esp32]:
composant.afficher()
# Conclusion
print("\n" + "="*50)
print("CONCLUSION")
print("="*50)
print("""
Le microprocesseur est puissant mais necessite:
- Carte mere, RAM, stockage externes
- Alimentation importante
- Systeme d'exploitation complet
Le microcontroleur est autonome:
- Tout integre sur une puce
- Demarre instantanement
- Ideal pour des taches specifiques
""")Quiz de validation
1. Quelle est la principale difference entre un microcontroleur et un microprocesseur ?
2. Quel microcontroleur possede le WiFi integre ?
3. Quelle memoire stocke le programme de facon permanente ?
4. Quel langage permet de programmer facilement un microcontroleur de facon interactive ?
5. Combien de memoire RAM possede un Arduino Uno (ATmega328P) ?
