Projet

Général

Profil

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) |