Réalisation d'une chambre anéchoïque

De Wiki d'activités IMA
Révision datée du 28 mai 2019 à 13:58 par Skhinach (discussion | contributions) (Projet)


Présentation générale

  • Nom du projet : Réalisation d'une chambre anéchoïque de mesure
  • Stagiaire : Souheib KHINACHE

Projet

Le sujet

L'objectif de ce projet est de concevoir une mini-chambre anéchoïque qui nous permettra la mesure de l'empreinte électromagnétique d'un objet connecté. En effet, l'atout d'une chambre anéchoïque est de proposer une certaine isolation vis à vis des perturbations et du bruit ambiant, que ce soit de l'extérieur (signaux étrangers parasites etc...), comme de l'intérieur (reflexion électromagnétique). Ainsi, les signaux d'un objet connecté peuvent être étudiés et analysés de manière optimale, et ainsi nous pouvons proposer par la suite la mise en place d'une "fiche caractéristique" d'un objet connecté liée à son empreinte électromagnétique.

Il est donc nécessaire d'avoir un recul sur la partie physique (la structure de la chambre anéchoïque, la dimension du matériau absorbant...), mais aussi et surtout sur la partie analyse électromagnétique (réalisation d'une sonde).

Cahier des charges

Contexte :

Le marché des objets connecté est un marché récent et en plein essor. La communication entre les différents objets s'établit de différents moyens, tissant une toile d'informations dans notre environnement. La technologie sans-fil s'impose dans le quotidien et il est difficilement possible de s'imaginer un avenir sans qu'ils y aient une influence. Ils ont le point commun de créer un nuage électromagnétique environnant, support de l'information. Néanmoins, hormis pour la phase de modulation/démodulation du signal, la couche physique n'est pas réellement utilisée comme source d'information. En outre, les objets connectés sont vus par les utilisateurs comme des boîtes noires : le fonctionnement se fait sans en connaître les composants matériels et logiciels. Néanmoins, ces objets, de par leurs propriétés électroniques, influence le schéma électromagnétique, et peuvent influencer l'information certes, mais aussi le support de transmission.

C'est donc cette influence sur ce support de transmission (ici le champ électromagnétique) qui sera étudiée.


Objectif :

L'objectif est de concevoir une chambre anéchoïque qui permette l'analyse et l'étude d'un objet connecté. Il y aura donc un travail d'un point de physique (conception de la structure en fonction du signal, matériau etc...) et un travail de traitement de signal.

Ces études pourront être suivies directement sur un navigateur et les empreintes électromagnétiques enregistrées dans une base de données, afin de pouvoir approximer si possible la possibilité de la reconnaissance matériel par étude du champ électromagnétique.

Besoins fonctionnels :

Afin de pouvoir mener à bien le projet, le matériel nécessaire à l'étude : - une antenne et un module Radio Logicielle (ou SDR) afin de traiter le signal reçu : ce qui sera utilisé est un HackRF. En effet, c'est l'une des SDR les plus disponibles sur le marché, assez documentée et compatible avec de nombreux utilitaires, - de protection ou absorbeur électromagnétique, - de matériau pour la structure de chambre anéchoïque, - d'objets connectés à utiliser pour les tests, - d'un ordinateur.


Une éventualité est d'intégrer un module Raspberry avec une distribution Linux compatible mais tout dépend de l'avancement du projet.


Contraintes :

L'une des contraintes principales à étudier est la limitation matérielle pour la chambre anéchoïque. En effet, la forme et la structure des absorbeurs dépendent des ondes émises par l'objet test. Il est donc nécessaire de trouver et choisir correctement les matériaux et de dimensionner correctement la chambre anéchoïque pour prévenir au mieux des signaux parasites.

Ce qui nous mène à une seconde contrainte : les perturbations électromagnétiques. Bien que l'objectif est de prévenir ces perturbations, la partie analyse et traitement de signal se fera avant l'élaboration de la chambre, et donc dans un environnement portentiellement sujet au bruit (reflexion électromagnétique de l'objet, perturbations parasites...).


Résultats attendus :

L'objectif final serait d'obtenir une structure fonctionnelle, que ce soit d'un point de physique comme analyse, le plus autonome possible et intuitif quant à son utilisation.


Etudes

Aspect matériel : caractéristiques physiques de la chambre anéchoique

La chambre anéchoique doit pouvoir mesurer l’empreinte électromagnétique d’un objet connecté et ainsi l’inscrire dans une base de données.

Mesure dans la bande ISM: 868 MHz et 2.4 - 2.5GHz

La réalisation d’une chambre anéchoïque nécessite l’utilisation d’un matériau absorbant de forme pyramidale. La forme de la structure pyramidale dépend de la longueur d’onde de l’onde à absorber afin de minimiser le bruit de reflexion.

La hauteur de la structure pyramidale doit être plus élevée que la moitié de la longueur d’onde du signal à recevoir, soit :

H ≥ λ/2</center>

D’un point de vue matériau, la conductivité est équivalent à :

<center>σ = L/RS</center>

tel que L est la longueur du recouvrement, R la résistivité du matériau et S l’épaisseur du recouvrement.


La performance d’absorption est ainsi définie par :

<center> A (dB) = P_TX(dBm) – P_RX(dBm)

A désigne le taux d'absorption de la chambre anéchoïque Le matériau utilisé pour la chambre anéchoique a aussi un impact sur la performance d’absorption. En effet, l’expérience effectuée à la figure 4 du document [1] montre qu’un absorbeur sans carbon est moins performant qu’un absorbeur avec carbone. Néanmoins, l’absorbeur chargé d’un complexe à base de carbone a un coût plus élevé.

L’épaisseur de l’absorbeur a un rôle déterminant quant à la performance d’absorption.


Dans notre cas, il s’agit de l’absorption dans les bandes ISM 868MHz et 2.4-2.5GHz. Soit des longueurs d’ondes respectives de 34.5cm et 12.5cm

Les pyramides doivent donc avoir une hauteur de 18cm minimum pour prendre en compte les deux bandes de frequences.


Les différents critères d’identifications électromagnétiques


Les objets connectés peuvent être caractérisés par :

- la fréquence de la porteuse, permettant de savoir quel type d’antenne transmet l’information - la bande passante autour de la porteuse qui caractérise l’information à transmettre et le type de modulation par exemple - la taille du message (aspect temporel), qui caractérise le type de paquet à transmettre - le rapport signal-bruit, qui défini la puissance de transmission de l’antenne, et permet ainsi d’avoir un aperçu sur l’antenne

Ces caractéristiques permettent d’avoir une idée de quelle est l’antenne qui transmet l’information. Néanmoins, comment peut on avoir une idée l’aspect matériel antérieur à l’antenne ? Plusieurs possibilités, cependant à l’état expérimentales peuvent apporter une idée potentielle du matériel qu’il y a derrière l’antenne : - l’aspect CEM : les fuites électromagnétiques du matériel peuvent être un réel indice sur l’aspect informatique et electronique du module à étudier - le temps de calcul du FCS : à la suite du projet IMA4, il a été vu que le temps entre les fragments de paquets peuvent apporter des informations sur le matériel.


La démodulation est elle une piste intéressante à exploiter ?

Dans notre cas, la démodulation n'est pas une nécéssité quand à l'étude à faire mais peut être une piste. En effet, la démodulation se rapporte à l'information, et si l'objet n'est pas connu (on ne le suppose pas connu), le démoduler serait compliqué. Néanmoins la piste n'est pas à écarter.


Les utilitaires à utiliser

L’utilisation du langage Python ne permet d’avoir un système de capture optimal d’un point de vue performance.

Néanmoins GNURadio embarque directement un block module permettant d’étudier et d’interpréter les signaux.

D’autre part, il peut être intéressant d’utiliser la librairie SoapySDR qui permet d’interfacer les modules SDR (HackRF One dans notre cas).

Il s’agirait au cours de ce projet de constituer une chambre anéchoique qui puisse étudier l’empreinte d’un materiel connecté, de pouvoir le comparer à un ensemble d’empreintes installé dans une base de données, et obtenir un taux de similitude et ainsi permettre une possible reconnaissance matérielle.

Cette comparaison permettra de définir si l’objet fait partie de la base de données, le cas non-écheant, la chambre anéchoique enregistrera ses caractéristiques dans la base de données.



Elaboration du projet

Le premier objectif que je vais me fixer est de balayer à l’aide du hackrf une large bande de fréquence afin de détecter les potentiels signaux.

Il est nécessaire d’imposer un treshhold qui n’est pas choisi aléatoire, qui plus est dans le cas d’une chambre anechoique.

Pour celà, je vais utiliser GNURadio, langage de blocs, auquel je combinerai mon analyse via python.

En effet, GNURadio propose un bloc utilitaire permettant d’implémenter un code python afin d’interpréter en quasi temps réel les signaux, le temps réel étant fondamental pour ce projet sachant que la chambre anéchoique doit analyser assez rapidement les signaux.



"""
Fonction bloc permettant de translater la fréquence de capture
"""

import numpy as np
from gnuradio import gr


class blk(gr.sync_block):  # other base classes are basic_block, decim_block, interp_block"

    def __init__(self, frequency_start=0.800e9, frequency_end=2.6e9, frequency_step=0.01e9):  # only default arguments here
        """arguments to this function show up as parameters in GRC"""
        gr.sync_block.__init__(
            self,
            name='Variable Frequency',   # will show up in GRC
            in_sig=None,
            out_sig=[np.float32]
        )

        assert (frequency_end > frequency_start), "Frequency End must be greater than Frequency Start"

        # if an attribute with the same name as a parameter is found,
        # a callback is registered (properties work, too).
        self.frequency_start = frequency_start
        self.frequency_end = frequency_end
        self.frequency_step = frequency_step
        self.current_frequency = 0

    def get_current_frequency(self):
        return self.current_frequency

    def work(self, input_items, output_items):
        self.current_frequency = (self.current_frequency + self.frequency_step)%(self.frequency_end - self.frequency_start)
        output_items[0][:] = self.frequency_start + self.current_frequency
        return len(output_items[0])