⚡

Maîtrisez l'Invisible. Domptez le Réel.

L'ingénierie embarquée est l'art de donner une intelligence à la matière.
C'est le point de fusion entre la rigidité du Hardware et la flexibilité du Software.

Embedded Ecosystem

Le Cœur du Système : CPU, Périphériques, et le Monde Extérieur.

1. La Boucle de Rétroaction (Feedback Loop)

Contrairement à un PC qui attend passivement une entrée clavier, un système embarqué est vivant. Il scrute le monde physique en permanence via une variété infinie de Capteurs (LiDAR, Accéléromètre, Pression, Bio-signaux, Caméras thermiques...) et réagit immédiatemment via des Actionneurs (Moteurs Brushless, Relais de puissance, Écrans OLED, Retour Haptique, Vannes hydrauliques).

2. Les Contraintes : L'Art du Compromis

C'est ici que se joue la différence entre un développeur logiciel et un ingénieur embarqué. Nous devons faire tenir une intelligence complexe dans des contraintes drastiques :

⚡ Énergie

Fonctionner 5 ans sur une pile bouton (Coin Cell). Chaque micro-ampère (µA) compte.

💰 Coût

Remplacer un chip à 1$ par un chip à 0.80$ économise 200k$ sur une production de 1M d'unités.

⏱️ Réactivité

Temps Réel Dur (Hard Real-Time). L'airbag DOIT se déclencher en 20ms, pas 21ms.

3. Les Outils : Au plus près du silicum

Pour atteindre ce niveau de performance, on oublie souvent Python ou Java. On parle le langage de la machine : C, C++ et Assembleur (ASM). On manipule directement les registres du processeur, on gère les interruptions à la nanoseconde, et l'optimisation n'est pas une option, c'est une nécessité.

🌍 Les 3 piliers du Monde Connecté

Électronique Embarquée

"Faire plus avec moins."

Concevoir des systèmes autonomes, optimisés en taille, coût et énergie. C'est le domaine du FPGA, du Microcontrôleur (STM32, ESP32) et du code C/C++ proche du métal.

  • Cible : Drônes, Dispositifs Médicaux, Objets Grand Public.
  • Enjeu : Autonomie, Temps Réel, Miniaturisation.

Informatique Industrielle

"La fiabilité avant tout."

Automatiser des usines et des processus critiques. On utilise des Automates (PLC), des bus de terrain robustes (Modbus, Profinet) et des interfaces hommes-machines (SCADA).

  • Cible : Lignes de prod, Centrales Nucléaires, Trains.
  • Enjeu : Robustesse (H24/7), Sécurité, Longévité (20 ans).

IoT (Internet of Things)

"Tout est donnée."

Connecter le monde physique au Cloud. C'est la couche qui récupère la data (Capteurs), la transmet (LoRa, 5G, Wi-Fi) et l'analyse (Big Data, AI).

  • Cible : Smart Home, Villes Connectées, Fleet Management.
  • Enjeu : Connectivité, Sécurité des données, Scalabilité.

🏗️ Le Hardware (Physique)

Tensions, Courants, Bruit, Chaleur. Ici, une erreur de code peut faire fondre le processeur.

💻 Le Firmware (Logique)

Temps Réel, Optimisation binaire, Robustesse. C'est l'intelligence qui dompte la puissance brute.

00

Physique & Électronique

Les lois fondamentales de l'univers

⚡ Le Terrain de Jeu

Avant de coder, il faut comprendre le terrain. L'électronique, c'est comme de la plomberie : on déplace des électrons (eau) dans des tuyaux (fils) à travers des composants (valves, réservoirs). Si vous ne respectez pas la pression (tension), les tuyaux explosent.

🎛️ Labo Interactif : La Loi d'Ohm (U = R × I)

Bougez les curseurs pour voir l'impact sur le Courant (I).

La "Pression" (Hauteur du château d'eau).

Le "Frein" (Diamètre du tuyau).

Résultat (Courant I)
22.7 mA
💡 La LED brille normalement.

🛠️ Les Composants (Le Bestiaire)

🛡️

La Résistance (R)

Le composant le plus courant. Il résiste au passage du courant.

  • Unité : Ohm (Ω).
  • Rôle : Limiter le courant, Diviser une tension.
  • Analogie : Un goulot d'étranglement.
🔋

Le Condensateur (C)

Il stocke des charges électriques (V). Il s'oppose aux variations de tension.

  • Unité : Farad (F, µF).
  • Rôle : Lisser l'alim (Découplage), Timing (RC).
  • Analogie : Un réservoir flexible / membrane.
🌀

La Bobine (Inductance L)

Il stocke de l'énergie magnétique (I). Il s'oppose aux variations de courant.

  • Unité : Henry (H, µH).
  • Rôle : Filtrage, Convertisseurs DC-DC (Buck/Boost).
  • Analogie : Une roue à aube (Inertie de l'eau).
⛔

La Diode / LED

Une valve anti-retour. Ne laisse passer que dans un sens.

  • Seuil : ~0.7V (Silicium), ~2V (LED Rouge).
  • Rôle : Redressement, Protection, Lumière.
  • Attention : Elle grille sans résistance de limitation !
🔌

Le Transistor (MOSFET)

Un interrupteur électronique commandé.

  • Rôle : Amplifier un signal ou Commuter (ON/OFF) une charge.
  • Note : C'est la brique de base de tout processeur.
💎

Le Quartz (Crystal)

Le métronome du système.

  • Rôle : Donne la cadence (Clock) au MCU (ex: 16MHz).
  • Sans lui : Pas de notion de temps précise.
🔧

Le Régulateur (LDO)

Convertit une tension sale en tension propre.

  • Exemple : 9V (Pile) -> 3.3V (MCU).
  • Attention : Un régulateur linéaire chauffe (perte en chaleur).

⚖️ Les Lois de Kirchoff

Loi des Nœuds (Courant)

"La somme des courants qui entrent est égale à la somme des courants qui sortent."

I_total = I1 + I2 + I3

Loi des Mailles (Tension)

"Dans une boucle fermée, la somme des tensions est nulle."

V_pile = V_resistor + V_led

📉 Concepts Pratiques

➗ Pont Diviseur de Tension

Comment lire un capteur 5V sur un ESP32 (3.3V) sans le griller ?

Vout = Vin × [ R2 / (R1 + R2) ]

Ex: Vin=5V. R1=2k, R2=3k.
Vout = 5 * (3 / 5) = 3V (Safe !)

⏱️ Constante de Temps (Tau τ)

Rien n'est instantané. Un condensateur met du temps à se charger à travers une résistance.

τ = R × C

Après 1τ, on est à 63%. Après 5τ, on est à 99%.
C'est ce qui crée les temps de montée/descente des signaux.

⚡ Série vs Parallèle

🔗 Circuit SÉRIE
[Pile] -- [R1] -- [R2] -- [GND]
  • Le Courant (I) est le même partout.
  • La Tension (U) se divise entre R1 et R2.
  • Si un composant casse, TOUT s'arrête (Guirlande de Noël).
🎋 Circuit PARALLÈLE
[Pile] --+-- [R1] --+-- [GND] | | +-- [R2] --+
  • La Tension (U) est la même pour tous.
  • Le Courant (I) se divise (Chacun tire ce qu'il veut).
  • C'est comme les prises de votre maison.

📚 Vocabulaire Essentiel

Watt (P)

La Puissance (Travail réel). P = U × I. Si P est trop grand pour le composant, il chauffe et brûle.

AC/DC

Alternating Current (Prise murale 220V) vs Direct Current (Pile 5V). Nos MCUs vivent en DC. Attention à ne pas mélanger !

GND (Masse)

Le sol commun. La référence 0V. Tous les composants d'un système doivent avoir leurs masses reliées pour communiquer.

Court-Circuit

Chemin sans résistance entre le + et le -. Le courant devient infini. C'est la mort instantanée de l'alimentation.

Datasheet

Le manuel technique du composant. La Bible. Tout y est (Pinout, Voltage Max, Exemples).

Impedance (Z)

Comme la Résistance, mais pour les signaux qui bougent (AC). Indispensable pour les antennes et l'audio.

Pull-Up / Pull-Down

Une résistance qui force un état (High ou Low) quand rien n'est connecté. Évite les états "flottants".

Floating (Flottant)

Une broche non connectée. Elle capte le bruit ambiant et change d'état aléatoirement. Danger !

Ripple (Ondulation)

Le bruit résiduel sur une alimentation. Une alim instable fait planter le MCU.

01

Le Cerveau (MCU)

Architecture et Coeur du Système

🏗️ Anatomie d'une Carte Électronique

Avant de coder, il faut que le système vive. Tout système embarqué repose sur une "Sainte Trinité" matérielle. Si l'un de ces éléments manque, le MCU est une brique inerte.

PCB V1.0
⚡ Power
LDO / Buck
⬇️ 3.3V
MCU
[CPU Core][Flash] [SRAM][GPIO]
➡️
⬆️
⬇️
⬅️ Clock
⏱️
XTAL
🔴 RESET (Button/RC)
🐞 DEBUG (SWD/JTAG)
1. Power (Alim)

Le MCU a besoin d'une tension STABLE (ex: 3.3V). Une baisse (Brown-out) provoque un Reset aléatoire. On utilise des condensateurs de découplage partout (100nF).

2. Clock (Horloge)

Le cœur bat à une fréquence précise. L'oscillateur interne (RC) est imprécis. Pour l'USB ou le RF, on utilise un Quartz Externe.

3. Reset

Pour démarrer proprement, le MCU doit être maintenu en "Reset" tant que la tension n'est pas stable. C'est le rôle du circuit RC ou du Brown-Out Detector.

🧠 MCU vs MPU : Le match

MCU (Microcontroller)
"Tout-en-un" (SoC).
  • ✅ Mémoire Intégrée : Flash + RAM dans la puce.
  • ✅ Temps Réel : Contrôle cycle par cycle (Bare-metal/RTOS).
  • ✅ Low Power : Quelques µA en sommeil.
  • ❌ Puissance : Limitée (MHz).
  • ➡️ Ex: STM32, ESP32, Arduino.
MPU (Microprocessor)
"Cerveau pur".
  • ✅ Puissance : GHz. Traitement image/IA.
  • ❌ Complexité : RAM/Flash externes (DDR, PMIC).
  • ❌ OS Obligatoire : Besoin de Linux pour la MMU.
  • ❌ Gourmand : Consomme des Watts.
  • ➡️ Ex: Raspberry Pi (Broadcom), Smartphone.

🚌 Architecture Interne & Bus

🕹️ Le Cœur du Cœur : Registres & ALU
ALU
L'Unité Arithmétique. Elle fait les calculs (ADD, OR, XOR). C'est la calculatrice.
Control Unit
Le chef d'orchestre. Décode les instructions et active les bons circuits.
PC (Program Counter)
Le marque-page. Contient l'adresse de la PROCHAINE instruction à lire en Flash.
SP (Stack Pointer)
Pointe vers la pile en RAM. Crucial pour les appels de fonctions et interruptions.
Von Neumann vs Harvard

Von Neumann utilise un bus unique (Goulot). Harvard (Cortex-M) sépare Code et Données pour lire les deux en même temps.

Memory Map

Tout est une adresse. La Flash, la RAM et même les Périphériques (GPIO) ont une case mémoire dédiée.

System Bus (AHB / APB)

Le CPU parle vite via le AHB (High-speed) et commande les périphériques lents via le APB (Peripheral).

Pipeline (Fetch/Decode/Exec)

Parallélisation : Préparer l'instruction N+1 pendant qu'on exécute l'instruction N.

02

GPIO & Digital Logic

Les Mains du système

🔌 Le Pont entre les Bits et les Atomes

Le GPIO est l'interface la plus basique mais la plus polyvalente. C'est ici que le code devient une tension électrique réelle.

🛡️ Anatomie Électronique d'une Pin

• Schmitt Trigger : Un circuit qui nettoie le signal d'entrée. Il évite que le MCU ne lise "0-1-0-1" très vite si le signal est bruité.

• Push-Pull : Mode standard. La pin "pousse" vers 3.3V ou "tire" vers le GND. Idéal pour piloter une LED.

• Open-Drain : La pin peut seulement "tirer" vers le GND. Pour le 3.3V, il faut une résistance externe. Utilisé pour l'I2C.

OUTPUT Driven by CPU (Write)
INPUT Sensed by CPU (Read)
VIRTUAL LAB
Output Buffer
// Drive the MOSFETs
PORTB |= (1 << 5);

🎈 Pull-Up vs Pull-Down (Le Ballon)

Une entrée connectée à RIEN est "flottante" (bruit électrique). Elle change de valeur aléatoirement.

  • Pull-Up (Résistance au 3.3V) : Comme un ballon à l'hélium. Par défaut il est en haut (HIGH). Si j'appuie, je le force en bas (LOW).
  • Pull-Down (Résistance au GND) : Comme un ballon lourd. Par défaut il est au sol (LOW). Si je le tire, il monte (HIGH).

📏 Seuils Logiques (Vih / Vil)

Le numérique n'est pas "parfait". Pour un MCU 3.3V :

  • VIH (Input High) : > 2.3V est lu comme un '1'.
  • VIL (Input Low) : < 0.8V est lu comme un '0' .
  • ⚠️ Zone Interdite : Entre les deux, l'état est indéterminé.

🛡️ Protection & Dangers

Une pin est fragile. Courant max : souvent 20mA.

  • Clamp Diodes : Protègent contre les légères surtensions.
  • ESD : Une décharge statique peut griller le transistor interne.
  • Short-circuit : Relier une sortie HIGH au GND = Destruction.
03

Bus de Communication

Le Langage des machines

🌐 Le Dialogue au Cœur du Système

Dans un système embarqué, le MCU ne travaille jamais seul. Il doit commander des capteurs, parler à des mémoires ou envoyer des logs à un PC. Pour cela, on utilise des **protocoles de communication série**, chacun ayant ses forces, ses faiblesses et ses contraintes électriques.

1. UART (Point-à-Point)

L'UART est le "vieux sage". Sans horloge commune, il repose sur un timing strict (Baudrate) convenu à l'avance.

Anatomie d'une Trame 8N1
ST
DATA (8-bit)
SP

ST=Start, SP=Stop. Pas de parité.

  • Flow Control : RTS/CTS évite de saturer le récepteur.
  • Logic Levels : TTL (0-3.3V) vs RS232 (-12/+12V). Attention à ne pas griller le MCU !

2. I2C (Bus Multi-Maître)

L'I2C est le "réseau local" de la carte. Il permet de connecter des dizaines de composants sur seulement 2 fils grâce à l'adressage.

Le Signal Open-Drain
Nécessite des Pull-up Resistors.

Sans résistance, le bus reste à 0V !

  • Arbitrage : Si deux maîtres parlent, le "0" l'emporte toujours.
  • Clock Stretching : Un esclave lent peut maintenir SCL au sol pour faire attendre le maître.

3. SPI (Vitesse Maximale)

Le SPI est un "télégramme ultra-rapide". Synchronisé par une horloge, il est idéal pour les écrans et les cartes SD.

Configuration CPOL / CPHA

Il existe 4 modes SPI. S'ils ne correspondent pas, les données seront corrompues.

  • Daisy Chain : On peut chaîner les périphériques pour économiser des pins de sélection (CS).
  • Full Duplex : On lit et on écrit simultanément sur MOSI/MISO.

📚 Vocabulaire Essentiel

Baud Rate

Vitesse de transmission en symboles/seconde (ex: 9600 bauds). Emetteur et Récepteur doivent avoir le même !

Master / Slave

Architecture où un chef (MCU) orchestre les communications et donne la parole aux périphériques (Capteurs).

Full Duplex

Parler et écouter en même temps (Téléphone). Contraire de Half-Duplex (Talkie-Walkie).

04

Analogique & PWM

Le monde réel n'est pas binaire

🌊 Le Monde Réel est Infini, le CPU est Discret

La température, le son ou la lumière sont des valeurs analogiques (infinies). Le processeur, lui, ne comprend que des 0 et des 1. Il faut donc un traducteur : l'**ADC** (Analog to Digital Converter) pour écouter, et le **PWM** (ou DAC) pour parler.

1. ADC (L'Oreille Numérique)

📏 Résolution (La Précision)

Combien de marches a votre escalier ? Pour un ADC 12-bit (ESP32) sur 3.3V :

Step = 3.3V / 4095 ≈ 0.8 mV

Le moindre bruit > 0.8mV faussera la mesure !

⚠️ Théorème de Nyquist

Pour numériser un son à 40kHz, il faut échantillonner à au moins **80kHz** (2x). Sinon, gare à l'**Aliasing** (les roues de voiture qui tournent à l'envers à la télé).

2. PWM (Faux Analogique)

Le MCU ne sait pas sortir 1.5V. Il sort 3.3V, puis 0V, très vite. La moyenne donne l'illusion de 1.5V.

Duty Cycle: 50% Freq: 1kHz
ON (3.3V)
OFF (0V)
  • LED : > 60Hz pour ne pas voir le scintillement.
  • Moteur : 10-20kHz pour éviter qu'il "chante" (bruit audible).

🎹 Et le Vrai Analogique ? (DAC)

Pour de l'audio haute fidélité, le PWM est trop "sale". On utilise un **DAC (Digital to Analog Converter)** (souvent un réseau de résistances R-2R) pour créer une courbe de tension lisse et parfaite.

📚 Vocabulaire Essentiel

Resolution (Bit Depth)

Précision de la mesure. 8-bit = 256 niveaux. 12-bit = 4096 niveaux (plus précis).

Sampling Rate

Fréquence d'échantillonnage. Combien de fois par seconde on mesure la tension.

Duty Cycle

Rapport cyclique (PWM). % du temps où le signal est à l'état HAUT sur une période.

05

IoT & Connectivité

L'Intelligence Connectée (ESP32 & MQTT)

🧠 L'ESP32 : Un Monstre à 2 Têtes

Ce n'est pas juste un Arduino avec du WiFi. C'est un **SoC Dual Core** 240MHz.

  • Core 0 (Pro CPU) : Gère le WiFi, le Bluetooth et la Radio (Tâches de fond).
  • Core 1 (App CPU) : Exécute VOTRE code Arduino/C++.

C'est pourquoi votre `loop()` n'est jamais bloquée par le réseau !

📡 WiFi vs BLE

WiFi (802.11)
Gros débit, Grosse conso (100-200mA). Pour la vidéo ou le Cloud.
BLE (Bluetooth Low Energy)
Micro débit, Micro conso (mA). Pour les capteurs sur pile (Montres).

📨 MQTT : Le Protocole Roi

HTTP est lourd ("Allô ? Tu m'entends ? Tiens la page"). MQTT est ultra-léger, pensé pour des réseaux instables.

🎯 QoS (Quality of Service)

À quel point le message est-il important ?

QoS 0 : "Fire & Forget". On tire, si c'est perdu, tant pis. (Capteur T° rapide).
QoS 1 : "At Least Once". Le serveur doit confirmer (ACK). Sinon on renvoie. (Standard).
QoS 2 : "Exactly Once". Lourd, lent, mais garanti sans doublon. (Banque).
📂 Topics & Architecture

Organisez vos données comme des dossiers.

home/livingroom/temp
home/kitchen/light/set
factory/machine_1/vibration
☁️ Edge vs Cloud
Edge : L'ESP32 décide d'allumer le ventilateur (Rapide).
Cloud : AWS stocke l'historique et fait des stats (Lent, Analytics).

🔒 Sécurité (TLS/SSL)

MQTT clair (Port 1883) = Tout le monde voit vos mots de passe. Utilisez toujours **MQTTS** (Port 8883) avec certificats, même si c'est dur pour un petit CPU !

06

RTOS (Real-Time OS)

FreeRTOS & L'Art du Multitâche

⏳ Pourquoi un RTOS ?

Dans une **Super Loop** (`while(1)`), si une action bloque, tout le système fige. Le RTOS (Real-Time Operating System) découpe le code en **Tâches** indépendantes. Le **Scheduler** (ordonnanceur) décide qui a le droit de "parler" au CPU à chaque milliseconde.

📦 Anatomie d'une Tâche

  • Priorité : Plus le nombre est haut, plus la tâche est urgente.
  • Stack : Sa propre mémoire de travail (variables locales).
  • État : `Running`, `Ready`, `Blocked` (en attente d'un délai ou mutex).
xTaskCreate(TaskBlink, "Blink", 1024, NULL, 1, NULL);
// Nom, Nom debug, Stack, Params, PRIORITE, Handle

⏱️ Timeline du Scheduler

Exemple de 2 tâches alternant (preemption).

t=0 TaskA (Prio 2) TaskB (Prio 1) t=10ms

🔒 Synchronisation : Éviter le Chaos

Mutex

"La clé des toilettes". Une seule tâche peut la prendre à la fois. Protège une ressource partagée.

Semaphore

"Le compteur de places de parking". Peut autoriser N accès simultanés (ex: 3 connexions max).

Queue

"Une file d'attente". Passer des données d'une tâche à l'autre de manière sûre (FIFO).

⚠️ Priority Inversion (Bug Célèbre)

Si une tâche basse prio bloque un Mutex dont une tâche haute prio a besoin, le système peut se retrouver bloqué. FreeRTOS offre des Mutex avec "Priority Inheritance" pour éviter cela.

07

Puissance & Moteurs

Commander le Monde Réel

⚡ Le MCU est un Cerveau, pas un Muscle

Une broche GPIO sort au maximum 20mA à 3.3V. C'est suffisant pour allumer une LED, mais pas pour faire tourner un moteur. Pour commander de la puissance, il faut un **étage de puissance** (MOSFET, Relay, Driver).

🔌 Le MOSFET : L'Interrupteur Magique

C'est un interrupteur commandé par une tension minuscule.

  • Gate : La commande (MCU). Consommation quasi-nulle.
  • Drain / Source : Là où passe le gros courant (10A, 30A...).
  • Alternative : Relais (mécanique, clique, isolation galvanique).

⚠️ La Diode de Roue Libre

Une bobine (moteur, relais) stocke de l'énergie. Quand on la coupe, elle génère une surtension destructrice (**Inductive Kickback**).

Sans Diode → +60V → 💀 MOSFET mort

Solution : Placer une diode en "roue libre" pour court-circuiter la surtension.

🚗 Les Types de Moteurs

Moteur DC

Simple : 2 fils. Tension = Vitesse. PWM pour varier. **H-Bridge** pour le sens.

Servomoteur

Contrôle d'**angle**. Signal PWM (1-2ms). Utilisé pour les bras robotiques, directions.

Stepper (Pas-à-Pas)

Contrôle de **position précise** (200 pas/tour). Imprimantes 3D, CNC. Driver dédié (DRV8825, A4988).

🌉 Le Pont en H (H-Bridge)

4 interrupteurs (MOSFETs) pour inverser le sens du courant. Activer Q1+Q4 = Sens Horaire. Activer Q2+Q3 = Sens Anti. Ne jamais activer Q1+Q2 en même temps (court-circuit !).

08

Low Power & Énergie

L'Art de Dormir Intelligemment

🔋 La Chasse aux Micro-Ampères

En IoT sur batterie, le MCU ne doit travailler que 0.1% du temps. Le reste, il doit dormir profondément. Un code mal optimisé vide une pile en 24h au lieu de 5 ans.

Active Mode

Consommation Max (80-200mA avec WiFi). Faire le calcul au plus vite et s'éteindre !

Light Sleep

CPU en pause, RAM active (~1mA). Réveil rapide via GPIO ou Timer.

Deep Sleep

Tout éteint sauf RTC (~10µA). La seule façon de durer des années. Au réveil, le MCU reboot.

📊 Calcul de l'Autonomie

Formule : Autonomie (heures) = Capacité (mAh) / Consommation moyenne (mA)

Exemple: 2000mAh / 0.05mA (Deep Sleep) = 40 000 heures ≈ **4.5 ans**
Exemple: 2000mAh / 10mA (Always On) = 200 heures ≈ **8 jours**

💡 Bonnes Pratiques

  • Éteignez les périphériques (WiFi, ADC) quand vous ne les utilisez pas.
  • Attention au Quiescent Current (Iq) des régulateurs.
  • Utilisez un RTC externe ultra-low-power si le timer interne consomme trop.
09

Mémoire & Concepts Avancés

Le C Embarqué en Profondeur

🧠 Chaque Octet Compte

Sur un PC, vous avez 16Go de RAM. Sur un Arduino Uno, vous avez **2Ko**. Comprendre la mémoire évite les plantages mystérieux après 72h de fonctionnement (fragmentation, stack overflow).

📦 Heap vs Stack

  • Stack (Pile) : Variables locales, appels de fonctions. Rapide, automatique. Danger: Récursion infinie.
  • Heap (Tas) : `malloc()`. Flexible mais dangereux (Fragmentation, Memory Leaks).
  • Règle d'or : Évitez `malloc` en embarqué critique. Préférez l'**allocation statique**.

⚠️ Mots-Clés Critiques

volatile
"Cette variable peut changer à tout moment (ISR, Hardware)". Empêche le compilateur de l'optimiser en cache.
const
Stocké en Flash (ROM), pas en RAM. Économise la précieuse RAM pour les tableaux de constantes.

🚀 DMA (Direct Memory Access)

Le "Sous-fifre" du CPU. Un circuit dédié qui copie des données (ADC → RAM, RAM → SPI) **tout seul**, pendant que le CPU dort ou calcule.

Sans DMA : CPU copie 1000 octets un par un (bloquant).
Avec DMA : CPU lance le transfert, puis fait autre chose.

Indispensable pour : Audio temps réel, SPI rapide (écrans), UART haute vitesse.

10

PCB Design & Outillage

Du Prototype au Produit Fini

🛠️ L'Atelier du Pro

La Breadboard n'est que le début. Le but final est un **circuit imprimé (PCB)** fiable, fabricable et prêt à l'assemblage en usine.

🔍 Outils de Debug

JTAG / SWD

Interface physique pour flasher et déboguer pas-à-pas. Voir la RAM en temps réel.

Logic Analyzer

"Voir" les 0 et les 1 sur I2C/SPI/UART. Le Saleae est la référence.

Oscilloscope

Voir la forme du signal (tensions, glitchs, bruit). Indispensable pour l'analogique.

Multimètre

L'ami fidèle : Tension (V), Continuité (Bip), Courant (A).

📐 Flux de Conception PCB

  1. Schéma : Dessiner le circuit logique (KiCad, Altium).
  2. Routage : Placer les composants, tracer les pistes cuivre.
  3. Gerber : Exporter les fichiers machine (PDF de l'usine).
  4. Fabrication : Envoyer à JLCPCB, PCBWay (10 PCB pour ~5$).
  5. Assemblage : Souder (soi-même ou Pick & Place).
SMD vs THT : SMD (Surface Mount) = minuscule, pro. THT (Through-Hole) = gros, facile à souder à la main.
11

Traitement du Signal (DSP)

Extraire l'Info du Chaos

📉 Nettoyer le Bruit

Le monde réel est bruité. Un capteur ne donne jamais une ligne parfaite. Le **DSP** (Digital Signal Processing) permet de filtrer ces parasites pour extraire l'information utile (rythme cardiaque, voix, vibrations).

🔊 Filtres Numériques

  • Low-Pass (Passe-Bas) : Garde les variations lentes (T°), supprime le bruit rapide. EMA (Exponential Moving Average) est le plus simple.
  • High-Pass (Passe-Haut) : Garde les changements brusques (Chocs), supprime la composante continue (Gravité).
  • Band-Pass : Isole une fréquence spécifique (ex: 50Hz du secteur à rejeter).

🌈 FFT (Fast Fourier Transform)

Algorithme "magique" qui transforme un **signal temporel** (amplitude vs temps) en un **spectre fréquentiel** (amplitude vs fréquence).

Entrée : 1024 échantillons du micro.
Sortie : 512 bins de fréquence (0 → Nyquist).

Applications : Égaliseur audio, Reconnaissance vocale, Détection de vibrations.

// Filtre Passe-Bas Simple (Exponential Moving Average)
float filtered = 0;
void loop() {
  float raw = readSensor();
  filtered = (0.1 * raw) + (0.9 * filtered); // Alpha = 0.1
}
12

Sécurité Embarquée

L'Attaquant a Accès au Hardware

🛡️ Ce n'est pas que du Web

Si un attaquant a un accès **physique** à votre carte, il peut souvent tout lire (JTAG, dump Flash). La sécurité embarquée vise à protéger votre **Propriété Intellectuelle** (Firmware) et les **données utilisateur** (Clés WiFi), même contre un vol physique.

🔐 Readout Protection (RDP)

Un **fusible matériel** qui empêche le débugger (JTAG/SWD) de relire la mémoire Flash. Si verrouillé, le seul moyen de débloquer est d'**effacer toute la puce**.

✅ Secure Boot

Le MCU ne démarre QUE si le Firmware est **signé cryptographiquement** par votre clé privée. Empêche l'installation de malwares ou de firmwares pirates.

⚡ Hardware Crypto

Accélérateurs matériels (AES-256, SHA, RNG) pour chiffrer les données **sans ralentir le CPU** et sans exposer les clés en RAM.

⚔️ Vecteurs d'Attaque

Glitching

Perturber l'alimentation ou l'horloge pour faire "sauter" une instruction de sécurité. Le CPU exécute `if(password_ok)` mais le glitch fait qu'il saute le `if`.

Side-Channel (DPA/SPA)

Analyser la **consommation de courant** (Power Analysis) pendant que le CPU chiffre. La différence de conso révèle les bits de la clé secrète.

✅ Bonnes Pratiques

  • Activez RDP sur tout produit en production.
  • Stockez les clés dans un Secure Element (ATECC608) ou l'eFuse, jamais en Flash claire.
  • Vérifiez les signatures des OTA avant de les flasher.
  • Effacez la RAM sensible après utilisation (Zeroize).
13

Firmware Avancé & Robustesse

Construire un Produit qui Dure

🚀 Le Firmware n'est Jamais Fini

Un produit IoT doit se mettre à jour à distance (**OTA**). Cela demande une architecture avec un **Bootloader** immuable et une Application mise à jour. Le tout doit être **incassable** (anti-brick, rollback).

📦 Architecture OTA (Dual-Bank)

  1. L'app active tourne sur **Bank A**.
  2. Téléchargement de la MAJ sur **Bank B** (en tâche de fond).
  3. Vérification (**Signature**, **Checksum**).
  4. Reboot → Bootloader swap A ↔ B.
  5. Si boot échoue → **Rollback** sur Bank A (Auto-recovery).

🐕 Le Watchdog Timer (Chien de Garde)

Un compteur **matériel indépendant** qui décrémente. Votre code doit le "nourrir" régulièrement.

  • Si le code plante → Oublie de nourrir → Reset forcé.
  • IWDG (Independent) : Simple, robuste.
  • WWDG (Window) : Doit être nourri dans une fenêtre de temps précise (détecte les feedbacks trop rapides = bugs).

🛡️ Programmation Défensive

assert()

Vérifier les préconditions de chaque fonction. Si ça échoue = Bug détecté tôt.

Default Case

Toujours gérer le `default:` dans un `switch`. Un état inconnu est un bug.

CRC / Checksum

Vérifier l'intégrité des données critiques (Config en Flash, Trames reçues).

14

Électronique Rapide

Quand Chaque Millimètre Compte

🏎️ Signal Integrity

À basse vitesse (I2C), un fil est un fil. À haute vitesse (USB 3.0, DDR4, PCIe), un fil est une **ligne de transmission**. Si mal conçue → réflexions, données corrompues.

⚡ Adaptation d'Impédance

Si Source = 50Ω, Câble = 50Ω, Charge = 50Ω → **OK**.
Sinon → **Réflexion** (le signal rebondit comme un écho et corrompt les données).

Solution : Résistance de **terminaison** (série ou parallèle) au bout de la piste.

🔀 Paires Différentielles

On n'utilise plus 1 fil + GND, mais **2 fils (D+ et D-)** avec des signaux opposés. Le bruit externe s'annule (Mode Commun), seule la différence compte.

  • USB : D+ / D-
  • Ethernet : TX+/TX-, RX+/RX-
  • CAN : CANH / CANL

🔬 Diagnostics

Eye Diagram

Superposition de milliers de bits sur l'oscillo. "L'œil" doit être ouvert = signal propre.

Jitter

Tremblement de l'horloge. Une PLL instable provoque des erreurs de synchronisation.

Skew

Décalage entre Clock et Data. Les pistes doivent avoir la même longueur ("length matching").

15

Télécoms & RF

La Magie Noire du Sans-Fil

📡 L'Art de la Radio

Envoyer des données dans l'air demande de **moduler** une onde porteuse. C'est le domaine de la "magie noire" où la géométrie du cuivre définit la performance. 1mm de piste = dB perdus = portée réduite.

📻 Fondamentaux RF

  • λ (Lambda) : Longueur d'onde = c / f. À 2.4GHz → λ ≈ 12.5cm.
  • Antenne λ/4 : La plus simple. Ex: 2.4GHz → 3.1cm de long.
  • dBm : Puissance absolue. 0dBm = 1mW. +3dBm = 2x, +10dBm = 10x.
  • dBi : Gain d'antenne vs isotrope. Plus = plus directionnel.
  • RSSI : Puissance reçue (les "barres" de réseau). -30dBm = Fort, -90dBm = Faible.

🔊 Types de Modulation

ASK / OOK : On/Off. Simple mais sensible au bruit. Télécommandes basiques.
FSK : Fréquence varie. Robuste. 433MHz, Bluetooth Classic.
LoRa (CSS) : Chirp Spread Spectrum. Ultra longue portée, immunité au bruit.
OFDM : Multi-porteuses. WiFi, LTE. Haut débit.

📊 Link Budget (Bilan de Liaison)

Le "calcul comptable" pour savoir si la liaison passera :

PRX = PTX + GTX - Lpath + GRX - Lcables
PTX : Puissance émise (ex: +14dBm)
GTX : Gain antenne TX (ex: +2dBi)
Lpath : Pertes espace libre (FSPL) = 20×log(d) + 20×log(f) - 27.55
Sensibilité RX : Seuil de réception (ex: -120dBm pour LoRa)

Marge : PRX - Sensibilité = Marge de sécurité (15dB recommandé).

📶 Comparatif Protocoles

Proto Fréquence Portée Débit Conso
WiFi 2.4/5GHz ~50m Mbit/s Haute
BLE 2.4GHz ~30m 1Mbit/s Basse
LoRa 868/915MHz ~15km 0.3-50kbit/s Très Basse
Zigbee 2.4GHz ~100m 250kbit/s Basse
NFC 13.56MHz ~4cm 424kbit/s Très Basse
LTE-M Cellulaire ~10km 1Mbit/s Moyenne

🌍 Bandes de Fréquences ISM (Europe)

433 MHz

Télécommandes, capteurs simples. Bonne pénétration murs. Puissance limitée (10mW).

868 MHz

LoRaWAN, Sigfox. Excellente portée. Duty Cycle réglementé (1%).

2.4 GHz

WiFi, BLE, Zigbee. Encombré ! Atténuation par l'eau (corps humain).

⚠️ Les 5 Erreurs Fatales en RF

  1. Router une piste sous/près de l'antenne.
  2. Plan de masse incomplet ou découpé.
  3. Impédance de piste ≠ 50Ω (utiliser un calculateur PCB).
  4. Antenne trop proche du boîtier métallique.
  5. Condensateurs de découplage trop loin du module RF.
16

Optronique

Quand la Lumière Devient Signal

👁️ Photons vs Électrons

La lumière est **immunisée** aux parasites électromagnétiques. On l'utilise pour transporter de l'info (Fibre Optique) ou pour **isoler galvaniquement** deux circuits dangereux. Un photon ne conduit pas l'électricité → isolation parfaite jusqu'à plusieurs kV !

🔌 Optocoupleur (Isolation Galvanique)

Une **LED** en face d'un **phototransistor** dans un boîtier opaque. La lumière traverse, pas l'électricité.

MCU 3.3V → LED → (photons) → Phototransistor → Relais 220V
  • CTR (Current Transfer Ratio) : Ratio sortie/entrée (~50-200%).
  • Isolation : Typiquement 3.75kV - 5kV.
  • Vitesse : µs (lent). Pour signaux rapides → optoisolateur numérique.

📏 LiDAR & ToF (Time of Flight)

On envoie une impulsion **laser IR** et on mesure le temps qu'elle met à revenir.

Distance = (Temps × c) / 2
c = 3×10⁸ m/s → 1ns ≈ 15cm
  • VL53L0X : ToF compact, 2m, I2C (drones, robots).
  • LiDAR rotatif : 360°, cartographie 3D (voitures autonomes).

🌈 Longueurs d'Onde Courantes

λ (nm) Couleur Usage
630-660 Rouge LED indicatrices, laser pointeur
520-530 Vert Rétroéclairage, laser visible puissant
450-470 Bleu LED blanches (avec phosphore), gravure laser
850 IR proche Télécommandes TV, barrières IR
940 IR invisible Détection présence (capteurs PIR améliorés)
1550 IR télécom Fibre optique longue distance, sécurité oculaire

🔗 Fibre Optique

Multimode (MMF)

Cœur large (50-62.5µm). LED comme source. Courtes distances (<2km). Data centers.

Monomode (SMF)

Cœur ultra-fin (9µm). Laser comme source. Longues distances (100+ km). Télécom.

💡 Composants Optiques

Photodiode (PIN)

Lumière → courant. Ultra rapide (ns). Fibre optique, récepteurs IR. Linéaire.

Phototransistor

Photodiode + Gain intégré. Plus sensible mais plus lent (µs). Optocoupleurs.

APD (Avalanche)

Gain interne ×100. Détection faible lumière. LiDAR longue portée. Coûteux.

⚠️ Classes de Sécurité Laser (IEC 60825)

Classe 1 : Sûr (CD/DVD players, souris laser).
Classe 2 : <1mW visible. Réflexe palpébral protège.
Classe 3R : 1-5mW. Pointeurs laser. Risque modéré.
Classe 3B / 4 : Dangereux ! Lunettes obligatoires. Brûlures.
17

Mécatronique

L'Art du Mouvement Précis

🤖 Faire Tourner un Moteur est Facile...

...le faire tourner à **exactement 300.5 RPM** malgré une charge variable demande des maths : l'**asservissement** (PID). C'est le cœur de la robotique, des drones aux bras industriels.

⚡ Comparatif Types de Moteurs

Type Contrôle Précision Vitesse Usage
DC Brushed PWM simple Faible Haute Jouets, ventilateurs
Brushless (BLDC) ESC/FOC Moyenne Très haute Drones, véhicules
Stepper Séquence pas Très haute Faible CNC, imprimantes 3D
Servo RC PWM 1-2ms Haute (angle) Moyenne Bras robot, direction
Servo Industriel Boucle fermée Extrême Variable Robots industriels

⚙️ PID (Proportionnel Intégral Dérivé)

Kp : Réponse immédiate. ↑ = Plus rapide mais oscillations.
Ki : Élimine erreur résiduelle. ↑ = Précis mais lent.
Kd : Amortit oscillations. ↑ = Stabilise mais sensible au bruit.
Sortie = Kp×e + Ki×∫e·dt + Kd×de/dt

🎛️ Méthodes de Réglage PID

  • Ziegler-Nichols : Augmenter Kp jusqu'à oscillation → Lire Ku et Tu → Appliquer formules.
  • Essai/Erreur : Commencer Kp seul, ajouter Ki puis Kd progressivement.
  • Auto-tuning : Certains contrôleurs calculent automatiquement (ex: Arduino PID_AutoTune).

Ordre : Toujours régler Kp → Ki → Kd.

⚙️ Réducteurs & Rapport de Réduction

Sacrifier de la vitesse pour gagner du **couple** (et inversement).

Ratio = Zsortie / Zentrée
Ex: 50T / 10T = 5:1 → Vitesse ÷5, Couple ×5
Planétaire : Compact, efficace, coûteux. Robotique précise.
Vis sans fin : Très haut ratio, irréversible (auto-bloquant).

🔄 Encodeurs (Feedback)

Incrémental (A/B)

Impulsions relatives. Besoin de Homing au démarrage. Économique. 100-10000 PPR.

Absolu (Gray Code)

Position exacte à chaque instant. Pas de Homing. Plus cher. Robots industriels.

🎯 Capteurs de Mouvement

IMU (MPU6050)

Accéléromètre + Gyroscope. Fusion Kalman/Madgwick. Drones, stabilisation.

Fin de Course

Micro-switch NC. Homing + Sécurité. Debounce obligatoire.

Cellule de Charge

Jauge de contrainte + HX711 (24-bit ADC). Balances, pinces force.

🔧 Drivers Moteur Populaires

L298N : Pont-H double, jusqu'à 2A. DC/Stepper. Classique.
DRV8825 : Stepper microstep (1/32). Silencieux. CNC.
TMC2209 : StealthChop (ultra silencieux). UART. Premium.
ESC (BLHeli) : BLDC haute vitesse. Drones. Signal PWM/OneShot.
18

Contraintes Électromagnétiques (CEM)

La Guerre Invisible du Bruit

📡 EMI & EMC : Le Cauchemar de l'Ingénieur

Votre circuit fonctionne sur table. Il plante dès qu'on allume le néon ou le moteur à côté. Bienvenue en **CEM** ! Un produit doit **ne pas polluer** (Émission) et **résister à la pollution** (Immunité). Sans cela = pas de certification CE = pas de vente.

⚡ EMI (Electromagnetic Interference)

Le **bruit** que votre circuit génère ou subit.

  • Conduit : Par les câbles d'alimentation (filtres secteur).
  • Rayonné : Par les pistes/câbles qui agissent comme antennes.
  • Sources : Moteurs, variateurs, switching power supplies, ESD.

🛡️ EMC (Electromagnetic Compatibility)

La capacité d'un système à fonctionner sans perturber ni être perturbé.

EMC = Faible Émission + Haute Immunité

Normes : EN 55032 (Émission), EN 55035 (Immunité).

🔧 Techniques de Protection

Blindage (Shielding)

Cage de Faraday : Boîtier métallique relié à la masse. Bloque les ondes rayonnées.

Filtrage

Ferrites sur les câbles, filtres LC sur l'alimentation. Bloque le bruit conduit.

Découplage

Condensateurs 100nF + 10µF au plus près de chaque puce. Absorbe les spikes localement.

🌍 Masse & Layout PCB

⚠️ Ground Loops

Plusieurs chemins de masse = antenne captant le bruit magnétique. Solution : topologie en étoile unique.

Plan de Masse

Couche entière de cuivre GND. Chemin de retour à très basse impédance. Ne jamais découper !

⚡ ESD (Electrostatic Discharge)

L'étincelle quand on touche une poignée de porte = **2000-15000V** en quelques nanosecondes. Un MCU meurt à 100V.

Protection :
  • TVS Diodes (clamp) sur chaque entrée exposée.
  • Séries resistors (22-100Ω) limitent le courant.
  • ESD Guards sur USB, Ethernet, boutons.
Norme IEC 61000-4-2 :
  • Contact : ±8kV (niveau 4).
  • Air : ±15kV (niveau 4).
  • Test en laboratoire accrédité.

🏷️ Certification CE

Obligatoire pour vendre en Europe. Tests en chambre anéchoïque (≈2000-5000€).

Émission Rayonnée : Mesure ce que votre produit émet (dBµV/m @ 3m/10m).
Émission Conduite : Mesure le bruit injecté sur le secteur (LISN).
Immunité ESD/EFT/Surge : Résiste aux décharges et surtensions.
Immunité RF : Résiste aux champs RF (3V/m, 80-1000MHz).

✅ Bonnes Pratiques CEM

  1. Plan de masse continu sur toute la carte (Layer 2 ou Bottom).
  2. Condensateurs de découplage 100nF à <5mm de chaque VCC.
  3. Pistes courtes et larges pour les signaux haute fréquence.
  4. Ferrites sur les câbles d'entrée/sortie (USB, alimentation).
  5. TVS sur toutes les lignes exposées à l'utilisateur.
  6. Séparer les alimentations numériques et analogiques.

Validation des acquis