Le Microcontroleur

Le microcontroleur est le cerveau des systemes embarques ! Decouvre comment ce minuscule circuit integre peut gerer des capteurs, actionneurs et communications.

Difficulte:
35 min
+40 XP
CPU
Memoire
GPIO
Bus

Objectifs du cours

  • Comprendre l'architecture d'un microcontroleur
  • Distinguer microcontroleur et microprocesseur
  • Connaitre les composants internes (CPU, RAM, Flash, GPIO)
  • Comprendre le role des bus de communication (I2C, SPI, UART)
  • Decouvrir les principales familles de microcontroleurs

Erreurs courantes a eviter

  • Confondre microcontroleur et microprocesseur
  • Oublier que le microcontroleur integre memoire et peripheriques
  • Ignorer les contraintes de ressources (memoire limitee)
  • Ne pas respecter les niveaux de tension (3.3V vs 5V)

**Deux composants differents**

**Microprocesseur (CPU)** : * C'est le "cerveau" qui execute les instructions * Necessite des composants externes : RAM, ROM, peripheriques * Presente dans les ordinateurs, smartphones * Exemples : Intel Core, AMD Ryzen, Apple M1

**Microcontroleur (MCU)** : * C'est un "ordinateur sur une puce" * Integre CPU + memoire + peripheriques * Autonome, pret a l'emploi * Exemples : ATmega328 (Arduino), ESP32, STM32

**Comparaison**

| Critere | Microprocesseur | Microcontroleur | |---------|-----------------|-----------------| | Memoire | Externe (Go) | Interne (Ko-Mo) | | Puissance | Tres elevee | Moderate | | Consommation | Elevee (10-100W) | Faible (mW) | | Prix | Eleve (50-500EUR) | Bas (1-20EUR) | | Complexite | Necessite PCB | Autonome | | Usage | PC, serveurs | Embarque, IoT |

**Analogie**

* Le **microprocesseur** est comme un moteur de voiture : puissant mais necessite transmission, reservoir, roues... * Le **microcontroleur** est comme un moteur de tondeuse : moins puissant mais complet et autonome.

Python / MicroPython
# Comparaison des ressources

microprocesseur = {
    "nom": "Intel Core i7-12700K",
    "coeurs": 12,
    "frequence_ghz": 5.0,
    "cache_mo": 25,
    "ram_externe": "128 Go max",
    "consommation_w": 125,
    "prix_eur": 350
}

microcontroleur = {
    "nom": "ATmega328P (Arduino Uno)",
    "coeurs": 1,
    "frequence_mhz": 16,
    "flash_ko": 32,
    "ram_ko": 2,
    "eeprom_ko": 1,
    "consommation_mw": 15,
    "prix_eur": 3
}

def afficher_specs(composant, titre):
    print(f"\n=== {titre} ===")
    for key, value in composant.items():
        print(f"  {key}: {value}")

afficher_specs(microprocesseur, "MICROPROCESSEUR")
afficher_specs(microcontroleur, "MICROCONTROLEUR")

# Calcul des rapports
print("\n=== COMPARAISON ===")
rapport_freq = microprocesseur["frequence_ghz"] * 1000 / microcontroleur["frequence_mhz"]
rapport_prix = microprocesseur["prix_eur"] / microcontroleur["prix_eur"]

print(f"Frequence: Le microprocesseur est {rapport_freq:.0f}x plus rapide")
print(f"Prix: Le microprocesseur coute {rapport_prix:.0f}x plus cher")
print(f"Mais le microcontroleur suffit pour 90% des applications embarquees !")

Quiz de validation

1. Quelle est la principale difference entre un microcontroleur et un microprocesseur ?

2. Quelle memoire stocke le programme de facon permanente dans un microcontroleur ?

3. Quel protocole de communication utilise seulement 2 fils et peut connecter plusieurs peripheriques ?

4. Quel microcontroleur possede le WiFi integre ?

5. Quelle est la tension de fonctionnement typique d'un ESP32 ?

Pixel