Mise en oeuvre du protocole LORA par radio logicielle

De Wiki de Projets IMA
Révision datée du 2 juin 2017 à 12:32 par Mmcharfi (discussion | contributions) (Descriptif)

Description du stage

Dans le cadre de ma quatrième année de ma formation d'ingénieur spécialités IMA, j'effectue un stage qui a pour but d'étudier la mise en place du protocole LoRa par radio logicielle. Pour réaliser cette étude j'utilise le hackRF One un émetteur-récepteur SDR (par radio logicielle). Dans un premier temps il est nécessaire d'étudier les différentes documentations liées a l'utilisation du HackRF One afin d'établir un descriptif technique facilitant son implémentation. Pour ensuite implémenter l'application qui devras gérer le protocole LoRa.


Avancement du Stage

Semaine 1

HackRF One

Descriptif

HackRF One est un périphérique de radio logiciel (Software Defined Radio), capable de de gérer la réception et l'émission de signal Radio allant de 1MHz à 6GHz. Crée pour permettre le test et le développement de technologie radio. HackRF One peut être utilisé en tant que périphérique USB ou peut être programmé pour un fonctionnement autonome.

Figure 1: HackRF One
  • Réception half-duplex.
  • 20 millions d'échantillons par seconde.
  • 8 bit d'échantillons en quadrature (8-bit I et 8-bit Q).
  • Compatible avec de nombreux radio logiciel.
  • Gain RX, TX et filtre passe bande paramétrable par logicielle.
  • Puissance de l'antenne contrôlée par logicielle (50 mA a 3.3V).
  • Connecteur SMA femelle pour antenne.
  • Connecteur SMA femelle pour synchronisation du signal d'horloge.
  • Hi-Speed USB 2.0.
  • Alimentation USB.
  • Partie matériel open source.

Vous trouverez plus de détails sur les caractéristiques techniques sur le wiki du Projet hackrf.

Le HackRF One ce présente comme une alternative innovante et à bas prix aux projets d'étude de technologie Radio, en effet une grande partie du traitement de signal est effectué par logiciel ce qui réduit les coûts matérielles comparer aux autres alternatives du marché. De plus pour son prix le HackRF One propose une gamme de fréquence très large qui lui permet d'étudier tout signal radioélectrique, et utilisant tout type de modulation.

GNU Radio et SDR

GNU Radio

Installation

L'utilisation du HackRF One ce fait par la radio Logicielle GNU Radio et de librairie hackrf. Pour installer les différents packages il est préconiser d'utiliser le package manager Pybombs, d'autres alternatives sont possibles ici. Nous ne détaillerons que l’installation via Pybombs.

Installation via Pybombs

Le logiciel Pybombs étant un projet opensource nous pouvons récupérer la dernières version du logiciel d’installation sur Git.

  • 1. Récupérer le dépôt GIT:
$ git clone https://github.com/pybombs/pybombs.git
  • 2. On ce place dans le répertoire pybombs, Nous utilisons l'installateur Python pour installer PyBOMBS.
$ cd pybombs
$ sudo python setup.py install
  • 3.On initialise un chemin de prefix c'est ici que seras installés les paquets.
$ pybombs prefix init ~/prefix 
  • 4.Nous installons le paquet gnu radio.
$ pybombs install gnuradio
  • 5.On fait la meme chose pour la recette hackrf
$ pybombs install hackrf
  • 5.Une fois les paquets installés, pour pouvoir utiliser les commande associés on exécute la commande suivante.
$ source /home/<user>/prefix/setup_env.sh
  • 6.Ajouter cette même ligne a la fin du fichier /home/<user>/.bashrc.

Prise en main du Hackrf One

Test du Hackrf One

Après avoir connecter l'HackRF, on exécute la commande suivante:

$ hackrf_info

Si le HackRF One fonctionne correctement on a la réponse suivante:

hackrf_info version: git-9bbbbbf
libhackrf version: git-9bbbbbf (0.5)
Found HackRF
Index: 0
Serial number: ######################
Board ID Number: 2 (HackRF One)
Firmware Version: 2017.02.1 (API:1.02)
Part ID Number: 0x######## 0x#########

Dans mon cas j'ai tout d'abord eu l'erreur suivante:

hackrf_open() failed: HACKRF_ERROR_LIBUSB (-1000)

Cela est dû aux droits accordés aux utilisateurs concernant l'accès arbitraire des périphériques USB. Une option pour contourner ce problème est d'écrire un règles udev afin d'autoriser à un utilisateur appartenant à un groupe de pouvoir gérer un périphérique. Pour cela il faut crée un nouveau fichier dans le répertoire /etc/udev/rules.d:

$ vim /etc/udev/rules.d/52-hackrf.rules 

et ajouter les lignes suivantes:

ATTR{idVendor}=="1d50", ATTR{idProduct}=="604b", SYMLINK+="hackrf-jawbreaker-%k", MODE="660", GROUP="plugdev"
ATTR{idVendor}=="1d50", ATTR{idProduct}=="6089", SYMLINK+="hackrf-one-%k", MODE="660", GROUP="plugdev"
ATTR{idVendor}=="1fc9", ATTR{idProduct}=="000c", SYMLINK+="hackrf-dfu-%k", MODE="660", GROUP="plugdev"

Ensuite il suffit de redémarrer ou d’exécuter la commande suivante udevadm control --reload-rules en root. Ensuite rebrancher le hackRF One. Si vous n'avez toujours pas accès au hackrf one vérifier que vous appartenais bien au groupe "plugdev".

Mise à jour du hackrf one

Avant d'utiliser notre Hackrf il faut s'assurer qu'il soit bien mise a jour. Tout d'abord avec la commande hackrf_info on vérifie la version du firmware.

hackrf_info version: git-9bbbbbf
libhackrf version: git-9bbbbbf (0.5)
Found HackRF
Index: 0
Serial number: 0000000000000000a06063c82316395f
Board ID Number: 2 (HackRF One)
Firmware Version: 2017.02.1 (API:1.02)
Part ID Number: 0xa000cb3c 0x00544f59

Vous pouvez trouver la dernière version du firmware ici ou sur le dépôt git. Une fois télécharger, on extrait le paquet:

tar -xvf hackrf-2017.02.1.tar.xz

On ce place dans le répertoire où à été extrait les fichiers, on accède au dossier firmware-bin.

cd firmware-bin/

La mise à jours ce fait via la commande hackrf_spiflash.

hackrf_spiflash -w hackrf_one_usb.bin

Une fois la mise à jour effectué, il faut redémarrer votre hackrf en pressant le bouton reset. Parfois il est aussi nécessaire de mettre a jours le fichier de configuration du cpld embarqué sur l'hackrf one, le cpld permet d'interfacer le microcontrôleur et les CAN et CNA.

hackrf_cpldjtag -x firmware/cpld/sgpio_if/default.xsvf

De la même façons redémarrés l'hackrf one. Vérifier avec hackrf_info si le firmware à bien été mise à jour.

Gqrx SDR

Semaine 2