Modules 00 à 12 et synthèse matériel convertis avec le même outil que le pilote. Aucun mot perdu (comparaison automatique avec chaque .odt). Tableaux : largeurs de colonnes proportionnelles au contenu, texte non justifié. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
103 lines
5.6 KiB
Plaintext
103 lines
5.6 KiB
Plaintext
---
|
|
title: "Module 1 — Découverte du microcontrôleur ESP32-S3"
|
|
---
|
|
|
|
## Objectifs du module
|
|
|
|
- Comprendre ce qu'est un microcontrôleur et en quoi il diffère d'un ordinateur classique.
|
|
- Connaître l'architecture interne de l'ESP32-S3 (cœurs, mémoire, périphériques).
|
|
- Identifier les différences clés avec un Arduino Uno/Nano classique.
|
|
- Repérer les broches spéciales à éviter (strapping pins) et lire un brochage (pinout).
|
|
|
|
## 1. Qu'est-ce qu'un microcontrôleur ?
|
|
|
|
Un microcontrôleur est un circuit intégré unique regroupant un processeur, de la mémoire vive (RAM), de la mémoire de programme (Flash) et des périphériques d'entrée/sortie (GPIO, ADC, timers, bus de communication). Contrairement à un ordinateur, il n'exécute généralement qu'un seul programme en boucle, sans système d'exploitation complexe, ce qui garantit un comportement déterministe et une consommation réduite.
|
|
|
|
L'ESP32-S3 va plus loin qu'un microcontrôleur classique (type ATmega328 de l'Arduino Uno) en intégrant nativement du Wi-Fi et du Bluetooth Low Energy, ce qui en fait un choix privilégié pour les projets connectés (IoT).
|
|
|
|
## 2. Architecture interne de l'ESP32-S3
|
|
|
|
### 2.1 Cœurs de calcul
|
|
|
|
- Double cœur Xtensa LX7 cadencé jusqu'à 240 MHz.
|
|
- Un cœur peut être dédié à des tâches critiques (ex : communication réseau) pendant que l'autre exécute la logique applicative — via FreeRTOS, présent nativement sous le framework Arduino.
|
|
|
|
### 2.2 Mémoire
|
|
|
|
- SRAM interne : environ 512 Ko, partagée entre données et instructions.
|
|
- Mémoire Flash externe (souvent 8 ou 16 Mo selon la carte) : stocke le programme (sketch) et éventuellement un système de fichiers (SPIFFS/LittleFS).
|
|
- PSRAM (RAM externe, optionnelle selon le modèle de carte) : utile pour le traitement d'images ou de gros buffers.
|
|
|
|
### 2.3 Connectivité intégrée
|
|
|
|
- Wi-Fi 802.11 b/g/n (2,4 GHz).
|
|
- Bluetooth 5 LE (Low Energy uniquement — pas de Bluetooth Classic/SPP sur le S3, contrairement à l'ESP32 original).
|
|
|
|
### 2.4 Interface USB native
|
|
|
|
L'ESP32-S3 dispose d'un contrôleur USB OTG natif, permettant la programmation et la communication série directement via USB, sans puce USB-série intermédiaire (selon la carte). Il peut aussi émuler un périphérique USB (clavier, souris, disque) — nous y reviendrons dans un module avancé.
|
|
|
|
## 3. ESP32-S3 vs Arduino Uno : les différences essentielles
|
|
|
|
| Caractéristique | Arduino Uno (ATmega328) | ESP32-S3 |
|
|
|-------------------|---------------------------|-------------------------------------|
|
|
| Cœurs / fréquence | 1 cœur, 16 MHz | 2 cœurs, jusqu'à 240 MHz |
|
|
| Tension logique | 5 V | 3,3 V |
|
|
| RAM | 2 Ko | \~512 Ko |
|
|
| Flash programme | 32 Ko | 8-16 Mo (typique) |
|
|
| Wi-Fi / Bluetooth | Non (externe requis) | Intégrés (Wi-Fi + BLE) |
|
|
| Broches ADC | 10 bits, 5 entrées | 12 bits, jusqu'à 20 entrées |
|
|
| PWM | Limité (Timer matériel) | LEDC — jusqu'à 8 canaux configurables |
|
|
|
|
::: {.callout-warning title="Point de vigilance : tension 3,3 V"}
|
|
Toutes les broches GPIO de l'ESP32-S3 fonctionnent en logique 3,3 V et ne tolèrent pas 5 V en entrée. Un signal 5 V (capteur, module tiers) doit être abaissé via un diviseur de tension ou un convertisseur de niveau logique avant d'être connecté à une broche.
|
|
:::
|
|
|
|
## 4. Lire le brochage (pinout) de la carte
|
|
|
|
Avant de câbler quoi que ce soit, il est indispensable de repérer sur votre carte :
|
|
|
|
- Les broches d'alimentation : 5V (VIN/USB), 3V3, GND.
|
|
- Les broches GPIO numérotées (GPIO0 à GPIO21 selon les cartes, tous ne sont pas exposés).
|
|
- Les broches ADC (généralement GPIO1 à GPIO10 sur l'unité ADC1).
|
|
- La broche pilotant la LED NeoPixel intégrée (souvent GPIO48, à vérifier sur la sérigraphie ou le schéma de votre carte spécifique).
|
|
|
|
### Broches à éviter (strapping pins)
|
|
|
|
Certaines broches ont un rôle spécial au démarrage (sélection du mode de boot) et peuvent perturber le fonctionnement de la carte si elles sont utilisées comme sorties classiques ou reliées à des composants qui tirent le niveau logique au démarrage :
|
|
|
|
- GPIO0 : bouton BOOT — à éviter comme sortie générale.
|
|
- GPIO3, GPIO45, GPIO46 : broches de strapping — à utiliser avec prudence, éviter en sortie forte au démarrage.
|
|
- GPIO19/GPIO20 : utilisées par l'USB natif sur de nombreuses cartes S3 — à éviter si vous utilisez la connexion USB.
|
|
|
|
::: {.callout-tip title="Bonne pratique"}
|
|
Gardez toujours sous la main le schéma (pinout diagram) exact de votre référence de carte. Deux cartes vendues comme « ESP32-S3 DevKit » par des fabricants différents peuvent avoir un brochage légèrement différent.
|
|
:::
|
|
|
|
## 5. Exercice pratique : inventaire de votre carte
|
|
|
|
Sans câblage, à l'aide de la documentation de votre carte :
|
|
|
|
- Dessinez ou annotez un schéma de votre carte en identifiant : alimentation, GND, GPIO utilisables, broches à éviter, broche de la LED NeoPixel.
|
|
- Écrivez un programme qui affiche dans le moniteur série, au démarrage, la fréquence CPU (`getCpuFrequencyMhz()`), la taille de la mémoire Flash (`ESP.getFlashChipSize()`) et la mémoire heap libre (`ESP.getFreeHeap()`).
|
|
|
|
```cpp
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
delay(1000);
|
|
Serial.printf("Frequence CPU : %d MHz\n", getCpuFrequencyMhz());
|
|
Serial.printf("Taille Flash : %d octets\n", ESP.getFlashChipSize());
|
|
Serial.printf("Heap libre : %d octets\n", ESP.getFreeHeap());
|
|
}
|
|
|
|
void loop() {
|
|
}
|
|
```
|
|
|
|
## Checklist de fin de module
|
|
|
|
- [ ] Je sais expliquer la différence entre RAM et Flash sur ce microcontrôleur.
|
|
- [ ] Je connais les broches à éviter (strapping pins) sur ma carte.
|
|
- [ ] J'ai identifié la broche pilotant la LED NeoPixel intégrée.
|
|
- [ ] J'ai exécuté le programme d'inventaire et compris les valeurs affichées.
|