MATLAB/Simulink
Utilisation du Pluto+ avec MATLAB et Simulink
MATLAB/Simulink
Analog Devices fournit un support officiel pour MATLAB et Simulink.
Installation du Support Package
- Ouvrir MATLAB
- Add-Ons → Get Add-Ons
- Rechercher : "Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio"
- Installer le package
Prérequis
- MATLAB R2017a ou supérieur
- Communications Toolbox
- DSP System Toolbox (recommandé)
- Signal Processing Toolbox (recommandé)
Réception de base
% Création de l'objet récepteur
rx = sdrrx('Pluto', 'RadioID', 'ip:192.168.2.1');
% Configuration
rx.CenterFrequency = 98e6; % 98 MHz (FM)
rx.BasebandSampleRate = 2e6; % 2 MSPS
rx.GainSource = 'AGC Slow Attack';
rx.OutputDataType = 'double';
% Capture de données
[data, metadata] = rx();
% Affichage du spectre
spectrum = dsp.SpectrumAnalyzer('SampleRate', rx.BasebandSampleRate);
spectrum(data);Émission de base
% Création de l'objet émetteur
tx = sdrtx('Pluto', 'RadioID', 'ip:192.168.2.1');
% Configuration
tx.CenterFrequency = 2.4e9; % 2.4 GHz
tx.BasebandSampleRate = 1e6; % 1 MSPS
tx.Gain = -10; % Atténuation 10 dB
% Génération d'une tonalité
t = (0:9999)' / tx.BasebandSampleRate;
tone = exp(1j * 2 * pi * 100e3 * t); % Tonalité 100 kHz
% Émission
tx(tone);
% Libération
release(tx);Réception FM complète
% Récepteur FM broadcast
rx = sdrrx('Pluto');
rx.RadioID = 'ip:192.168.2.1';
rx.CenterFrequency = 98e6;
rx.BasebandSampleRate = 240e3;
rx.GainSource = 'AGC Slow Attack';
% Démodulateur FM
fmDemod = comm.FMBroadcastDemodulator(...
'SampleRate', 240e3, ...
'FrequencyDeviation', 75e3, ...
'AudioSampleRate', 48e3);
% Sortie audio
audioPlayer = audioDeviceWriter('SampleRate', 48e3);
% Boucle de réception
for k = 1:1000
data = rx();
audioOut = fmDemod(data);
audioPlayer(audioOut);
end
release(rx);
release(fmDemod);
release(audioPlayer);Simulink
Blocs disponibles
| Bloc | Description |
|---|---|
| ADALM-PLUTO Receiver | Source de réception |
| ADALM-PLUTO Transmitter | Sink d'émission |
Exemple Simulink simple
- Ouvrir Simulink
- Library Browser → Communications Toolbox → SDR
- Glisser ADALM-PLUTO Receiver
- Configurer le bloc
- Connecter à un Spectrum Analyzer
Communication QPSK
% Paramètres
M = 4; % QPSK
sps = 8; % Samples per symbol
rolloff = 0.25;
span = 10;
% Filtre de mise en forme
txFilter = comm.RaisedCosineTransmitFilter(...
'RolloffFactor', rolloff, ...
'FilterSpanInSymbols', span, ...
'OutputSamplesPerSymbol', sps);
% Modulateur QPSK
modulator = comm.QPSKModulator('BitInput', true);
% Données à transmettre
data = randi([0 1], 1000, 1);
modData = modulator(data);
txSignal = txFilter(modData);
% Émission
tx = sdrtx('Pluto', 'RadioID', 'ip:192.168.2.1');
tx.CenterFrequency = 915e6;
tx.BasebandSampleRate = 1e6;
tx(txSignal);MIMO avec Pluto+
% Note: Le support MIMO dans MATLAB peut nécessiter
% une configuration avancée avec libiio directement
% Accès direct via libiio
uri = 'ip:192.168.2.1';
ctx = iio_create_context(uri);
% Configuration des 2 canaux RX
% (Nécessite les bindings MATLAB pour libiio)