Traitement du signal — FFT et spectres
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.
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.