Structure des programmes » Historique » Révision 2
Révision 1 (Alexis ANGLADE, 29/01/2025 10:56) → Révision 2/5 (Alexis ANGLADE, 02/02/2025 16:58)
h1. Structure des programmes
___
> h2. Contenu de la section
Vous trouverez dans cette section la structure des programmes utilisés durant le projet.
> h2. 1. passerelle.ino
|_.Section|_.Fonction|_.Description|
|Bibliothèques|#include <SPI.h>
#include <LoRa.h>|Importation des
bibliothèques nécessaires|
| Définition des broches | #define LORA_SS 18
etc... | Définition des broches
pour le module LoRa |
| Variables globales | int counter = 0;
const int maxPackets = 30; | Compteur de paquets
envoyés et limite |
| Initialisation | setup() | - SPI et LoRa
- Paramètres LoRa
- Vérification du module |
| Transmission | loop() | - Vérification du compteur
- Envoi du message LoRa
- Attente 3s
- Arrêt après 30 paquets |
> h2. 2. point_em.ino
|_.Section|_.Fonction|_.Description|
| Bibliothèques | #include <SPI.h>
#include <LoRa.h> | Importation des bibliothèques nécessaires
pour l’affichage OLED et la communication LoRa |
| Définition des broches | #define LORA_SS 18
#define LORA_RST 14
#define LORA_DIO0 26 | Définition des broches pour le module LoRa|
| Variables globales | int counter = 0;
const int maxcount = 1000; | Compteur de paquets envoyés et limite d’envoi |
| Initialisation | setup() | - SPI et LoRaConfiguration des paramètres LoRa
(Fréquence, Spreading Factor, Preamble)
- Vérification du module LoRa
- Initialisation de l’affichage OLED |
| Transmission | loop() | - Vérification du compteur
- Envoi du message LoRa avec entête et compteur
- Mise à jour de l’affichage OLED
- Pause de 1 seconde entre chaque envoi
- Arrêt de l’émission après 1000 paquets |
> h2. 3. point_rec.ino
|_.Section|_.Fonction|_.Description|
| Bibliothèques | #include <SPI.h>
#include <LoRa.h>
#include "SSD1306Wire.h" | Importation des bibliothèques nécessaires
pour l’affichage OLED et la communication LoRa |
| Définition des broches | #define LORA_SS 18
#define LORA_RST 14
#define LORA_DIO0 26 | Définition des broches pour le module LoRa |
| Variables globales | String receivedData
;int packetSize; | Stockage des données reçues et
vérification de la taille des paquets |
| Initialisation | setup() | - Configuration du port série pour le débogage
- Initialisation de l’affichage OLED
- Configuration et démarrage du module LoRa
(Fréquence, Spreading Factor, Preamble, etc.)
- Vérification de l’initialisation LoRa |
| Réception et affichage des données | loop() | - Vérification de la réception d’un paquet LoRa
- Lecture du message reçu et extraction des informations
- Vérification de l’en-tête du paquet
- Affichage du message et du compteur sur l’écran OLED
- Affichage du RSSI (puissance du signal reçu) pour évaluer
la qualité de la transmission |
> h2. 4. ml_cfo.m
|_.Section|_.Fonction|_.Description|
| Importation des données | data = readtable('base_de_donne_sans_cfonode.xlsx') | Chargement des données à partir d’un fichier Excel |
| Prétraitement des données | rmmissing(data), data.N_D = categorical(data.N_D) | Suppression des valeurs manquantes et conversion
des étiquettes en variables catégorielles |
| Sélection des caractéristiques | features = {'CFO_total', 'SF'} | Définition des variables utilisées pour la classification |
| Normalisation des données | data.CFO_total = (data.CFO_total - mean) / std | Mise à l’échelle des valeurs CFO_total pour
améliorer la performance du modèle |
| Visualisation des données | boxplot(data.CFO_total, data.N_D),
gscatter(data.SF, data.CFO_total, data.N_D) | Tracé de graphiques pour analyser la distribution
des données |
| Séparation des ensembles d’entraînement et de test | train_idx, test_idx = false(height(data),1) | Création d’ensembles d’entraînement et de test
avec échantillonnage stratifié |
| Création du modèle KNN | Mdl_KNN = fitcknn(X_train, y_train, 'NumNeighbors', 5, 'Standardize', true) | Entraînement du modèle KNN avec 5
voisins et normalisation des données |
| Prédiction sur l’ensemble de test | y_pred = predict(Mdl_KNN, X_test) | Prédiction des étiquettes pour les données de test |
| Évaluation de la précision | accuracy = sum(y_pred == y_test) / length(y_test) | Calcul de la précision du modèle |
| Affichage de la matrice de confusion | confusionchart(y_test, y_pred) | Visualisation des erreurs de classification |
| Analyse des prédictions correctes par SF | sf7_correct_blanc, sf8_correct_blanc, sf9_correct_blanc | Comptage des classifications correctes pour chaque
SF (7,8,9) et chaque classe (Blanc, Noir) |