Programmation embarquée

Arduino, ESP32, Raspberry Pi, MicroPython.

Rédigé par l'équipe éditoriale de RévisionBac d'après le programme officiel · Mis à jour le · Méthodologie

Se connecter pour contribuerPublié le · Dernière mise à jour le

En clair. Arduino, ESP32, Raspberry Pi, MicroPython.

Ce qu'on te demande au bac STI2D : maîtriser le vocabulaire de « Programmation embarquée », savoir refaire les calculs ou raisonnements du cours et les appliquer à un cas concret.

Conseil de révision. Relis d'abord l'encadré, puis fais le quiz : si tu bloques, reprends la partie correspondante du cours.

Introduction

La programmation embarquée contrôle un microcontrôleur intégré à un objet technique. Elle gère l'acquisition, le calcul, la communication et la commande d'actionneurs sous contraintes de mémoire, d'énergie et de temps.

Architectures et outils

  • AVR (Arduino UNO, Nano) : 8 bits, 20 MHz, 2 kB SRAM.
  • STM32 (Cortex-M0 à M7) : 32 bits, jusqu'à 550 MHz.
  • ESP32 (Xtensa dual-core, Wi-Fi/Bluetooth) : très populaire IoT.
  • RP2040 (Raspberry Pi Pico) : dual Cortex-M0+, PIO.

IDE et frameworks

  • Arduino IDE, PlatformIO (VS Code), STM32CubeIDE.
  • MicroPython, CircuitPython : Python simplifié pour µC (rapide à prototyper).
  • Zephyr, FreeRTOS : systèmes d'exploitation temps réel embarqués.

Notions clés

  • GPIO : entrées/sorties numériques.
  • PWM : signal carré de rapport cyclique variable (variation vitesse, luminosité).
  • ADC / DAC : conversion analogique.
  • Interruptions : réponse événementielle prioritaire.
  • Timers : mesure de durée, base de temps.

Structure d'un programme Arduino

void setup() {
  pinMode(2, INPUT_PULLUP);
  pinMode(13, OUTPUT);
  Serial.begin(115200);
}

void loop() {
  int etat = digitalRead(2);
  digitalWrite(13, !etat);
  delay(100);
}

Communication série

  • UART (Serial) : 9600, 115200 bauds.
  • I2C : bus 2 fils (SDA, SCL), multi-esclaves.
  • SPI : rapide (Mo/s), 4 fils (MOSI, MISO, SCK, CS).

Machine à états

Modélisation avec GRAFCET ou StateMachine : étapes + transitions + actions. Utile pour arrosage automatique, distributeur, portail.

Contraintes temps réel

  • Hard real-time : dépassement fatal (airbag, ABS).
  • Soft real-time : dépassement acceptable (streaming).
  • Ordonnancement : Round-Robin, Preemptive (FreeRTOS).

Optimisation

  • Sleep modes pour économiser l'énergie (ESP32 deep sleep 5 µA).
  • DMA pour transferts sans CPU.
  • Boucle non bloquante : éviter delay(), préférer millis().

Cas d'application

Serrure intelligente :

  • Capteur biométrique (empreinte digital, I2C).
  • Traitement STM32 avec liste d'utilisateurs (EEPROM).
  • Notification via ESP32 (MQTT) au propriétaire.
  • Servomoteur PWM pour déverrouiller.
  • Historique horodaté sur SD Card.

Cadre réglementaire

  • Marquage CE + norme radio ETSI EN 300 328 (2,4 GHz).
  • Directive RED, ROHS.
  • RGPD (art. 32) pour données biométriques.

Exemple chiffré 1 — cadencement d'une tâche périodique

Un régulateur PID doit tourner à 200 Hz, soit une période de 5 ms. Mesure au chronomètre logiciel : lecture capteur I2C 400 kHz (6 octets → 6×9/400 000≈1356\times9/400\,000 \approx 135 µs), calcul PID en virgule flottante 40 µs, écriture PWM 5 µs → 180 µs de charge utile.

Taux d’occupation=1805 000=3,6 %\text{Taux d'occupation} = \frac{180}{5\,000} = 3{,}6\ \%

Il reste 96 % du temps CPU pour la communication et l'IHM : la conception est viable. Au-delà de 70 % d'occupation, on perd le déterminisme.

Exemple chiffré 2 — PWM et résolution

Timer 16 bits sur horloge 72 MHz, PWM à 20 kHz :

ARR=72×10620×103−1=3 599\text{ARR} = \frac{72 \times 10^6}{20 \times 10^3} - 1 = 3\,599

Résolution : log⁡2(3 600)=11,8\log_2(3\,600) = 11{,}8 bits, soit un pas de rapport cyclique de 0,028 %. En passant à 100 kHz, ARR = 719 → 9,5 bits seulement : fréquence élevée et résolution fine s'opposent.

Exemple chiffré 3 — machine à états d'un portail automatisé

ÉtatCondition de sortieÉtat suivant
REPOSappui télécommandeOUVERTURE
OUVERTUREfin de course haut OU t > 20 sATTENTE
ATTENTEt > 8 s ET aucun obstacleFERMETURE
FERMETUREcellule coupéeOUVERTURE
FERMETUREfin de course basREPOS

Le temporisateur logiciel utilise millis() ; la détection d'obstacle est câblée sur une interruption externe pour garantir un temps de réaction < 1 ms (contre jusqu'à 5 ms en scrutation).

Exemple chiffré 4 — empreinte mémoire

Firmware STM32F103 : 34 ko de Flash sur 64 ko (53 %), 9,2 ko de RAM sur 20 ko (46 %) dont 2 ko de pile. Règle de conception : garder ≥ 25 % de marge RAM pour absorber la pile en cas d'imbrication d'interruptions.

Points-clés à retenir

  • Toute tâche temps réel se valide par un calcul de budget temps (WCET / période).
  • Interruption pour l'urgent et le bref, boucle principale pour le reste : jamais de code long dans une ISR.
  • Documenter le programme par une machine à états rend le comportement vérifiable et testable.

Quiz de révision

0/6 répondues · 0 bonne réponse
Progression0/6 · 0%
  1. Question 1.

    Un ESP32 dispose de :

  2. Question 2.

    La PWM permet :

  3. Question 3.

    Le protocole I2C utilise :

  4. Question 4.

    Une interruption externe permet :

  5. Question 5.

    FreeRTOS est :

  6. Question 6.

    delay(100) est problématique parce que :

Sources et références

Ce cours est rédigé par l'équipe RévisionBac à partir du programme officiel et des sources institutionnelles ci-dessous. Elles permettent de vérifier les définitions, les chiffres et les normes citées.

  1. 1.Programmes et ressources du lycée général et technologique — Éduscol — Ministère de l'Éducation nationale
  2. 2.Bulletin officiel de l'Éducation nationale (programmes du baccalauréat) — education.gouv.fr
  3. 3.Bilan et statistiques de l'énergie en France — SDES — Ministère de la Transition écologique
  4. 4.Textes de loi et jurisprudence — Légifrance
  5. 5.Guides sur la protection des données — CNIL
  6. 6.Guides et recommandations de sécurité numérique — ANSSI

Contenu vérifié et mis à jour le 10/09/2026. Les liens renvoient vers les sites officiels des éditeurs cités.

Historique éditorial

Ce chapitre est rédigé et relu par l'équipe RévisionBac, puis enrichi par les contributions validées.

  1. — Dernière mise à jour du cours (relecture et enrichissement)
  2. — Première publication de la fiche de cours