IMA5 2021/2022 P15

De Wiki de Projets IMA
Révision datée du 10 décembre 2021 à 18:49 par Sbensale (discussion | contributions) (Développement du firmware)

Présentation générale

  • Nom du projet : Mise en place d'un réseau de capteurs environnementaux
  • Réalisé par : Selim Bensalem
  • Superviseur du projet : Alexandre Boé & Thomas Vantroys
  • Durée : 06 SEP 2021 - 24 JAN 2022

Objectif

L'objectif du projet est de mettre en place un réseau de capteurs environnementaux qui utilisera le réseau LoRa déjà déployé au sein de l’école. Également, il a pour but de fournir, pour les années suivantes, des travaux pratiques pour les enseignants et/ou une idée de poursuite d’étude sur le sujet pour les chercheurs.

Description

La qualité de l’air intérieur est une donnée environnementale très importante puisque nous passons de nombreuses heures en intérieurs et que les polluants ont tendance à s’accumuler (manque d’aération, dégazage du mobilier, ...). La crise de Covid-19 a encore mis l’accent sur la nécessité de surveiller l’état de l’air intérieur.

Nous proposons dans ce projet de réaliser un réseau de capteurs environnementaux pour l’intérieur. Le réseau de capteurs comportera :

• Des capteurs autonomes portables limités en nombre de paramètres mesurés ;

• Des stations plus complexes embarquant de nombreux capteurs environnementaux ;

• Une passerelle LoRaWAN (déjà installée sur le toit de Polytech Lille).

Il conviendra de :

• Réutiliser le réseau LoRaWAN déjà mis en place ;

• Réaliser des capteurs ;

• Développer une interface de visualisation et de gestion.

Travail effectué

Cahier des charges

Cahier des spécifications

Prise en main et test du réseau LoRa

Le groupe précédent a mis en place un réseau LoRa en configurant deux machines virtuelles, l'une qui héberge le Network Server (VM Lorawan) et l'autre qui héberge le serveur applicatif constitué de l'application web (VM Lorap), les configurations du réseau LoRa se sont faites grâce à une implémentation open-source Lorawan Network Server appelé Chirpstack.

Elle est composé de différentes entités :

  • Gateway-bridge : Collecte les données issues des passerelles Kerlink qui les convertit en format JSON.

  • Network Server : Fait le lien entre le serveur applicatif et les end-devices (station de capteurs).

  • Application Server : Gère le chiffrement de données, demande d'adhésion au réseau et dispose d'une interface graphique de configuration du réseau.

Pour savoir si le Network Server qui a été mis en place est toujours fonctionnel, un module GPS LoRa est utilisé. Pour le tester, on se connecte au Network Server (172.26.189.22:8000), on crée une nouvelle application et ajoute l'équipement qui est notre module GPS. On génère deux clefs, une "application key" et une "network key", qui ne faudra pas oublier de mettre manuellement dans le module GPS en le connectant à notre ordinateur via son logiciel. L'appareil dispose d'un EUI qu'il faudra renseigner, grâce à celui-ci, il sera directement reconnu par le Network Server.

Résultat du test : Le module GPS est bien reconnu par le Network Server donc il est toujours fonctionnel, par contre, le problème rencontré est que la trame n'est pas visible dû à un problème affichant "Not connected to Websocket API".

Pour régler le problème du "Not connected to Websocket API", il ne faut pas oublier de désactiver le proxy pour l'adresse 172.26.189.22:8080

Développement du firmware

Ne pouvant pas récupérer les codes sources de la station de capteurs du groupe précédent, il est nécessaire de recréer une station et donc de développer le firmware de la carte Nucléo 64.

Communication entre la carte Nucléo et Réseau LoRa

Le développement du firmware se fera sur STM32CubeIDE, pour qu'il y ai une communication entre la carte Nucléo 64 et le réseau LoRa de l'école, un module LoRa (Shield SX1276MB1MAS) est rattaché à la carte. Il est nécessaire d'utiliser une bibliothèque nommée I-CUBE-LRAWAN (https://www.st.com/en/embedded-software/i-cube-lrwan.html), pour établir la connexion avec le réseau LoRa, un tutoriel explique une façon de faire sur comment établir cette connexion, il a été nécessaire de faire quelques modifications sur ce tuto (https://www.youtube.com/watch?v=np6oYopJyFI). Une fois les réglages terminés, j'ai réussi à connecter la carte Nucléo au réseau LoRa et on voit bien les paquets envoyés/reçus sur l'application du LNS.

STM32CubeIDE

Maintenant, le développement du firware peut être réalisé, ce logiciel est nouveau pour moi donc pour savoir l'utiliser, j’apprends au travers de tuto trouvé sur internet. Via la bibliothèque I-Cube-lrwan, j'ai su connecter ma station de capteurs à mon réseau LoRa mais comme cette bibliothèque ne possède pas de fichier .ioc, je reste limité dans l'implémentation des capteurs. Pour le moment, j'ai mis de côté cette bibliothèque et je me suis concentré sur l'implémentation des capteurs sur la station via le logiciel STM32CubeIDE. J'ai réussi à connecter le capteur de température en connexion I2C, à connecter le capteur H2S en connexion ADC mais je rencontre, en ce moment, un problème concernant le capteur de CO2 en connexion USART.

Une fois que les capteurs fonctionnent et me retourne leurs valeurs, j'ai repris la bibliothèque I-Cube-lrwan et introduit, dans les fichiers dédiées à chaque type de communication, le code fait indépendamment de cette bibliothèque. Malgré de nombreuses tentatives de fonctionnement de ses capteurs, ils ne s'activent pas. Les communications sont toutes occupées malgré que la bibliothèque n'utilise pas ses connexions.

Format de trame

Malgré les nombreux aléas rencontrés, rien n'empêche la mise en forme de la trame de données à envoyer sur notre réseau LoRa car on pourra toujours adapter notre station de capteurs en fonction de la trame de données que l'on veut mettre en place. Un format de trame a été proposés par le groupe de l'année dernière, je me suis permis de le reprendre car il correspond parfaitement à ce dont j'ai besoin pour pouvoir développer mon interface graphique.

Interface graphique

Pour éviter d'être en retard sur le projet et de pouvoir avancer, j'ai décidé de mettre de coté le développement du firmware de la station.

Création de la base de données

Une base de données est nécessaire pour pouvoir stocker les valeurs de capteurs de la station, plusieurs étapes ont été nécessaire pour la mettre en place. J'utiliserai PostegreSQL pour le développement de cette base de données, il est gratuit et très facile à prendre en main.

Récupération des données du LNS pour la base de données

Une machine virtuelle a été développée l'année dernière nommée "Lorap". Pour pouvoir obtenir les données du "Network Server", il faut mettre en place un bus MQTT pour pouvoir récupérer les données et les mettre dans la base.