UE1.5 · 5 ECTS

Mathématiques pour l'IoT

40h CM + 30h TP — 8 séances. FFT, filtres numériques, stats, calibration, PID, probabilités, séries temporelles, algèbre linéaire.

8 Séances 40h CM 30h TP 5 ECTS
💡 Conseil pédagogique
Les mathématiques s'apprennent par la pratique. Implémentez chaque algorithme en Python ou Arduino avant de passer à la théorie abstraite.
1

Traitement du signal — FFT et spectres

Semaine 1CM · 2h
Comprendre la transformée de Fourier et l'analyse fréquentielle
Savoir expliquer
Implémenter la FFT en Python avec NumPy
Savoir faire
Interpréter un spectre de fréquences de signal capteur
Savoir analyser
Identifier les fréquences dominantes d'un signal bruité
Savoir produire

1. Transformée de Fourier et FFT

La transformée de Fourier décompose un signal temporel en ses composantes fréquentielles. Tout signal périodique peut s'écrire comme une somme de sinusoïdes de fréquences, amplitudes et phases différentes. La FFT (Fast Fourier Transform) est l'algorithme rapide qui calcule cette transformée en O(n log n) au lieu de O(n²).

Pour un signal échantillonné à fréquence fe, la FFT produit n/2 valeurs fréquentielles de 0 Hz à fe/2 (fréquence de Nyquist). Les pics dans le spectre révèlent les fréquences dominantes du signal.

2. Application aux capteurs IoT

Analyse vibratoire d'un moteur : un capteur accéléromètre enregistre les vibrations. La FFT révèle les fréquences de rotation et permet de détecter des défauts mécaniques (déséquilibre, roulement usé).

Exemple : un moteur tournant à 1500 tr/min produit une fréquence fondamentale de 25 Hz. Un pic à 25 Hz indique un fonctionnement normal, tandis que des harmoniques impairs suggèrent un problème.

Exercice 1 — Analyse spectrale d'un signal capteur

a) Appliquer sur données réelles : Générez un signal sinusoïdal bruité (10 Hz + 50 Hz + bruit gaussien) et calculez sa FFT avec numpy.fft.fft().

b) Comparer théorie/pratique : Comparez le spectre obtenu pour différentes fréquences d'échantillonnage (100 Hz, 200 Hz, 1000 Hz). Que constatez-vous sur le repliement spectral ?

c) Visualisation matplotlib : Affichez le signal temporel et son spectre amplitude-fréquence côte à côte (subplot).

d) BONUS — Implémenter sur Arduino : Programmez un analyseur de spectre temps réel avec un micro électret et affichez les bandes sur un LCD ou une matrice de LEDs.

2

Filtres numériques — passe-bas, passe-haut, Kalman

Semaine 2CM · 2h
Comprendre le rôle des filtres numériques dans l'élimination du bruit
Savoir expliquer
Implémenter un filtre moyenneur et un filtre passe-bas RC
Savoir faire
Comparer filtre de Kalman et filtre complémentaire
Savoir analyser
Nettoyer un signal de capteur ultrasonique bruité
Savoir produire

1. Filtres linéaires simples

Le filtre moyenneur (moving average) remplace chaque point par la moyenne des N derniers échantillons. Simple mais il introduit un décalage temporel. Le filtre exponentiel (passe-bas du 1er ordre) pondère la nouvelle mesure par un coefficient α : y[k] = α·x[k] + (1-α)·y[k-1]. Plus α est petit, plus le filtrage est fort.

2. Filtre de Kalman

Le filtre de Kalman est un estimateur optimal récursif qui combine prédiction et mesure pour estimer l'état d'un système. Il est idéal pour fusionner des capteurs bruités. Étapes : ① Prédiction de l'état et de la covariance ② Calcul du gain de Kalman ③ Mise à jour de l'estimation à partir de la mesure.

Exercice 2 — Filtrage d'un signal bruité

a) Appliquer sur données réelles : Générez un signal avec bruit et appliquez un filtre moyenneur (N=5, N=20, N=50). Comparez l'atténuation du bruit et le décalage.

b) Comparer théorie/pratique : Implémentez un filtre de Kalman 1D sur une mesure de température. Comparez avec le filtre exponentiel.

c) Visualisation matplotlib : Affichez signal brut + signal filtré (moyenneur et Kalman) sur le même graphique.

d) BONUS — Implémenter sur Arduino : Programmez un filtre complémentaire pour fusionner accéléromètre et gyroscope (angle = 0.98·(angle + gyro·dt) + 0.02·accel).

3

Statistiques pour capteurs — erreur, précision, biais

Semaine 3CM · 2h
Distinguer exactitude, précision, biais et résolution
Savoir expliquer
Calculer écart-type, variance et intervalle de confiance
Savoir faire
Quantifier l'erreur de mesure d'un capteur
Savoir analyser
Produire un rapport de caractérisation de capteur
Savoir produire

1. Métrologie des capteurs

Un capteur IoT n'est jamais parfait. Quatre grandeurs caractérisent sa qualité : l'exactitude (proximité de la vraie valeur), la précision (reproductibilité des mesures), le biais (erreur systématique) et la résolution (plus petite variation détectable).

L'écart-type σ mesure la dispersion des mesures autour de la moyenne. L'intervalle de confiance à 95% (moyenne ± 1.96·σ/√n) donne la plage où se trouve la vraie valeur avec 95% de certitude.

2. Caractérisation d'un capteur

Protocole : ① Prendre N mesures dans des conditions stables ② Calculer moyenne et écart-type ③ Tracer l'histogramme ④ Vérifier la normalité (test de Shapiro-Wilk) ⑤ Déterminer l'incertitude-type.

Exercice 3 — Caractérisation statistique d'un capteur

a) Appliquer sur données réelles : Relevez 100 mesures d'un capteur DHT22 en conditions stables. Calculez moyenne, écart-type, variance, min, max.

b) Comparer théorie/pratique : Comparez l'écart-type empirique avec celui annoncé dans la datasheet (±0.5°C pour DHT22).

c) Visualisation matplotlib : Tracez l'histogramme des mesures (30 bins) et superposez la courbe de Gauss correspondante.

d) BONUS — Implémenter sur Arduino : Programmez un affichage LCD qui montre température, écart-type glissant et nombre d'échantillons.

4

Régression et calibration des capteurs

Semaine 4CM · 2h
Comprendre la calibration par régression linéaire
Savoir expliquer
Calculer la droite de calibration avec la méthode des moindres carrés
Savoir faire
Évaluer la qualité de la calibration avec R²
Savoir analyser
Corriger la non-linéarité d'un capteur par interpolation polynomiale
Savoir produire

1. Principe de calibration

Un capteur produit une tension (sortie brute) qu'il faut convertir en grandeur physique (température, pression, etc.). La calibration établit la relation mathématique entre la sortie du capteur et la valeur réelle mesurée par un instrument de référence.

La régression linéaire par moindres carrés trouve la droite y = ax + b qui minimise la somme des carrés des résidus. Le coefficient de détermination R² (0 ≤ R² ≤ 1) indique la qualité de l'ajustement : plus proche de 1, meilleure est la calibration.

2. Calibration non linéaire

Certains capteurs (thermistance NTC, photodiode) ont une réponse non linéaire. On utilise alors une régression polynomiale d'ordre 2 ou 3 : y = a₀ + a₁x + a₂x² + a₃x³. Il faut éviter le surapprentissage (overfitting) en limitant le degré du polynôme.

Exercice 4 — Calibration d'une thermistance NTC

a) Appliquer sur données réelles : Mesurez la résistance d'une NTC à 5 températures connues (glace fondante, ambiante, main, eau chaude). Construisez le tableau température-résistance.

b) Comparer théorie/pratique : Calibrez par régression linéaire puis polynomiale degré 2 et 3. Comparez les R² et les résidus.

c) Visualisation matplotlib : Tracez les points expérimentaux, la droite de calibration et la courbe polynomiale sur le même graphique.

d) BONUS — Implémenter sur Arduino : Intégrez la calibration polynomiale dans le firmware pour afficher la température corrigée en temps réel.

5

Systèmes de contrôle — PID

Semaine 5CM · 2h
Comprendre la boucle de rétroaction (feedback control)
Savoir expliquer
Décomposer les trois termes P, I, D
Savoir faire
Régler les gains Kp, Ki, Kd par la méthode de Ziegler-Nichols
Savoir analyser
Réguler la température d'un four avec Arduino PID
Savoir produire

1. Principe du PID

Le correcteur PID (Proportionnel-Intégral-Dérivé) est l'algorithme de contrôle le plus utilisé dans l'industrie (90% des boucles de régulation). Il calcule la commande u(t) à partir de l'erreur e(t) = consigne - mesure :

u(t) = Kp·e(t) + Ki·∫e(τ)dτ + Kd·de(t)/dt

  • Proportionnel (Kp) : réaction immédiate à l'erreur. Un Kp trop fort provoque des oscillations.
  • Intégral (Ki) : élimine l'erreur statique en accumulant l'erreur passée. Risque de dépassement (windup).
  • Dérivé (Kd) : anticipe les variations futures. Stabilise le système mais amplifie le bruit.

2. Méthode de Ziegler-Nichols

① Mettre Ki et Kd à 0 ② Augmenter Kp jusqu'à obtenir des oscillations soutenues → noter Ku (gain ultime) et Tu (période ultime) ③ Appliquer : Kp = 0.6·Ku, Ki = 2·Kp/Tu, Kd = Kp·Tu/8.

Exercice 5 — Régulation PID de température

a) Appliquer sur données réelles : Simulez numériquement un système du 1er ordre avec retard (four) et implémentez un PID en Python.

b) Comparer théorie/pratique : Testez l'effet de Kp seul (sans I ni D). À partir de quel Kp le système oscille-t-il ? Comparez avec Ziegler-Nichols.

c) Visualisation matplotlib : Tracez consigne, mesure et commande sur un même graphique. Ajoutez des bandes pour l'erreur statique.

d) BONUS — Implémenter sur Arduino : Réalisez un régulateur de température avec MOSFET + résistance chauffante, thermistance et affichage LCD de la consigne et de la mesure.

6

Probabilités et fiabilité des systèmes IoT

Semaine 6CM · 2h
Comprendre les concepts de fiabilité, MTBF et disponibilité
Savoir expliquer
Calculer la probabilité de défaillance d'un système
Savoir faire
Modéliser la fiabilité avec la loi exponentielle
Savoir analyser
Dimensionner la redondance d'un réseau de capteurs
Savoir produire

1. Fiabilité d'un système IoT

La fiabilité R(t) est la probabilité qu'un système fonctionne sans défaillance pendant une durée t. Le MTBF (Mean Time Between Failures) est la durée moyenne entre deux défaillances. Pour un système dont le taux de défaillance λ est constant : R(t) = e-λt et MTBF = 1/λ.

La disponibilité A = MTBF / (MTBF + MTTR) où MTTR est le temps moyen de réparation. Un système IoT critique doit viser A > 99.9% (3-nines).

2. Redondance

La redondance parallèle augmente la fiabilité : Rtotale = 1 - (1-R)n. Exemple : 3 capteurs identiques avec R=0.9 en parallèle donnent R=0.999.

Exercice 6 — Fiabilité d'un réseau IoT

a) Appliquer sur données réelles : Un capteur a un MTBF de 10 000 h et un MTTR de 2 h. Calculez sa disponibilité. Combien de 9 après la virgule ?

b) Comparer théorie/pratique : Comparez la fiabilité d'un système en série (3 capteurs) vs. en parallèle (3 capteurs). Quel est l'impact sur la probabilité de défaillance à 1 an ?

c) Visualisation matplotlib : Tracez R(t) pour λ = 0.0001, 0.0005, 0.001 sur 10 000 h. Montrez la zone MTBF.

d) BONUS — Implémenter sur Arduino : Programmez un compteur de temps de fonctionnement avec watchog et enregistrement des reset sur EEPROM.

7

Séries temporelles IoT — ARIMA et Prophet

Semaine 7CM · 2h
Comprendre la structure d'une série temporelle IoT
Savoir expliquer
Décomposer une série en tendance, saisonnalité et résidu
Savoir faire
Appliquer les modèles ARIMA et Prophet à des données capteurs
Savoir analyser
Prévoir les valeurs futures d'une grandeur IoT
Savoir produire

1. Séries temporelles en IoT

Un capteur IoT produit une série temporelle : une séquence de mesures indexées dans le temps. L'analyse de ces séries permet la maintenance prédictive, la détection d'anomalies et l'optimisation énergétique.

La décomposition classique sépare trois composantes : la tendance (évolution long terme), la saisonnalité (cycles journaliers, hebdomadaires) et le résidu (bruit aléatoire).

2. Modèles de prévision

ARIMA (AutoRegressive Integrated Moving Average) modélise la série par sa propre autocorrélation. Paramètres : p (ordre AR), d (différenciation), q (ordre MA). Pour des données IoT avec forte saisonnalité, on utilise SARIMA.

Prophet (Meta) décompose la série avec une approche additive flexible, gère les points de changement de tendance et les effets de vacances.

Exercice 7 — Prévision de température avec ARIMA

a) Appliquer sur données réelles : Chargez un fichier CSV de températures IoT (30 jours, pas 10 min). Décomposez la série avec statsmodels.

b) Comparer théorie/pratique : Identifiez les paramètres p,d,q par analyse des corrélogrammes ACF et PACF. Ajustez et comparez avec Prophet.

c) Visualisation matplotlib : Tracez les 7 derniers jours réels et la prévision sur 48h avec intervalle de confiance à 95%.

d) BONUS — Implémenter sur Arduino : Programmez une tendance glissante simple (régression linéaire sur les 50 dernières mesures) et affichez la pente sur LCD.

8

Algèbre linéaire pour fusion de capteurs

Semaine 8CM · 2h
Comprendre les matrices de rotation et quaternions
Savoir expliquer
Fusionner accéléromètre et gyroscope (IMU)
Savoir faire
Implémenter un filtre complémentaire et un AHRS
Savoir analyser
Estimer l'orientation d'un objet avec MPU6050
Savoir produire

1. Représentation de l'orientation

L'orientation d'un objet dans l'espace peut être représentée par des angles d'Euler (roulis φ, tangage θ, lacet ψ), des matrices de rotation (3×3 orthogonales) ou des quaternions (q = w + xi + yj + zk). Les quaternions évitent le problème du bloc de cardan (gimbal lock).

2. Filtre complémentaire

Le gyroscope est précis à court terme mais dérive (intégration du biais). L'accéléromètre est stable à long terme mais bruité à court terme. Le filtre complémentaire combine les deux : anglefinal = 0.98·(anglefinal + gyro·dt) + 0.02·angleaccel. Le coefficient 0.98/0.02 est la fréquence de coupure du filrage.

L'AHRS (Attitude and Heading Reference System) utilise un filtre de Madgwick ou Mahony pour estimer l'orientation complète à partir de 9 axes (accéléro + gyro + magnétomètre).

Exercice 8 — Fusion IMU avec MPU6050

a) Appliquer sur données réelles : Lisez les données brutes d'un MPU6050 (accéléro + gyro). Calculez les angles à partir de l'accéléromètre seul et du gyroscope seul.

b) Comparer théorie/pratique : Implémentez le filtre complémentaire. Comparez la dérive du gyroscope pur vs. l'estimation filtrée sur 60 secondes.

c) Visualisation matplotlib : Tracez le roulis et le tangage estimés par les trois méthodes (accélération seule, gyroscope seul, complémentaire) en temps réel.

d) BONUS — Implémenter sur Arduino : Programmez un niveau digital avec le MPU6050 : allumez une LED rouge si l'angle dépasse ±15°, verte sinon. Affichez l'angle sur LCD.