Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Créer une image de superposition de carte thermique

Cet exemple montre comment créer une carte thermique à l'aide des mesures de puissance du signal du réseau sans fil à partir d'une carte de développement ESP32.

ThingSpeak™ vous aide à visualiser vos données en projetant des mesures sur une image ou une carte. Vous n'avez pas besoin de hardware spécial, mais vous avez besoin d'une image des mesures de la zone et de la position. Pour plus d'informations, voir Wireless Network Signal Strength with ESP32 in Arduino.

Créer une visualisation MATLAB®

Sélectionnez Applications > Visualisations MATLAB. Sélectionnez ensuite Nouveau et sélectionnez Personnalisé (pas de code de démarrage) et cliquez sur Créer .

Collecter des données

Enregistrez les coordonnées X et Y et la force du signal dans des vecteurs séparés. Vous pouvez lire les données de puissance du signal à partir d'un canal ThingSpeak . Remplacez CHANNEL_ID, READ_API_KEY et FIELD_NUMBER par les valeurs appropriées de votre canal. Vous pouvez trouver votre identifiant de canal en haut de la page principale de votre canal. Vous pouvez trouver la clé d'API dans l'onglet  Clés API  de la vue des canaux.

% Enter data by hand if data from a ThingSpeak channel is not available.
strength = [-90 -90 -90 -90 -40 -20 -22.4 -45 -35 -41 -44 -55 -40 -75 -26]';
% Read data from a ThingSpeak channel.
% Uncomment the next line to read from ThingSpeak.
% strength = thingSpeakRead(CHANNEL_ID, ReadKey',READ_API_KEY,'numPoints',15,'fields',FIELD_NUMBER');
X = [10 550 550 10 50 234 393 129 237 328 448 225 344 457 477]';
Y = [10 10 410 410 293 210 202 132 130 142 141 272 268 274 200]';

Convertissez les mesures du signal sans fil en pourcentages.

strengthPercent = 2*(strength+100)/100;

Lire dans l'image

Enregistrez les dimensions de l'image. Votre image doit être hébergée sur le Web.

[I,m] = imread('https://www.mathworks.com/help/examples/thingspeak/win64/CreateHeatmapOverlayImageTSExample_02.png','png');
picture=ind2rgb(I,m); 
[height,width,depth] = size(picture); 

Créer un modèle

Interpolez les points existants et remplissez l'image de superposition avec les résultats interpolés. Définissez ensuite la transparence de la superposition.

OverlayImage=[];
F = scatteredInterpolant(Y, X, strengthPercent,'linear');
for i = 1:height-1
   for j = 1:width-1
          OverlayImage(i,j) = F(i,j);
   end
end
alpha = (~isnan(OverlayImage))*0.4;

Afficher l'image et la barre de couleurs

Enfin, affichez l'image avec la barre de couleur. Définissez les limites de couleur en fonction des valeurs de données. Définissez AlphaData comme étant la matrice de transparence créée précédemment.

imshow(picture,m);
hold on

h = imshow(OverlayImage);

colormap(h.Parent, jet);
colorbar(h.Parent);
set(h,'AlphaData',alpha); 

Le résultat final indique les zones où la force du signal est la plus élevée et la plus faible en rouge et en bleu, respectivement.

Voir aussi

| | | |