Projet

Général

Profil

Structure des programmes » Historique » Version 2

Alexis ANGLADE, 02/02/2025 16:58

1 1 Alexis ANGLADE
h1. Structure des programmes
2 2 Alexis ANGLADE
3
___
4
5
> h2. Contenu de la section
6
7
Vous trouverez dans cette section la structure des programmes utilisés durant le projet.
8
9
> h2. 1. passerelle.ino
10
11
|_.Section|_.Fonction|_.Description|
12
|Bibliothèques|#include <SPI.h>
13
#include <LoRa.h>|Importation des
14
bibliothèques nécessaires|
15
| Définition des broches | #define LORA_SS 18 
16
etc... | Définition des broches
17
pour le module LoRa |
18
| Variables globales | int counter = 0; 
19
const int maxPackets = 30; | Compteur de paquets
20
envoyés et limite |
21
| Initialisation | setup() | - SPI et LoRa
22
- Paramètres LoRa
23
- Vérification du module |
24
| Transmission | loop() | - Vérification du compteur
25
- Envoi du message LoRa
26
- Attente 3s
27
- Arrêt après 30 paquets |
28
29
> h2. 2. point_em.ino
30
31
|_.Section|_.Fonction|_.Description|
32
| Bibliothèques | #include <SPI.h>
33
#include <LoRa.h> | Importation des bibliothèques nécessaires
34
pour l’affichage OLED et la communication LoRa |
35
| Définition des broches | #define LORA_SS 18
36
#define LORA_RST 14
37
#define LORA_DIO0 26 |  Définition des broches pour le module LoRa|
38
| Variables globales | int counter = 0;
39
const int maxcount = 1000; | Compteur de paquets envoyés et limite d’envoi |
40
| Initialisation | setup() | - SPI et LoRaConfiguration des paramètres LoRa 
41
(Fréquence, Spreading Factor, Preamble)
42
- Vérification du module LoRa
43
- Initialisation de l’affichage OLED |
44
| Transmission | loop() | - Vérification du compteur
45
- Envoi du message LoRa avec entête et compteur
46
- Mise à jour de l’affichage OLED
47
- Pause de 1 seconde entre chaque envoi
48
- Arrêt de l’émission après 1000 paquets |
49
50
> h2. 3. point_rec.ino
51
52
|_.Section|_.Fonction|_.Description|
53
| Bibliothèques | #include <SPI.h>
54
#include <LoRa.h>
55
#include "SSD1306Wire.h" | Importation des bibliothèques nécessaires
56
pour l’affichage OLED et la communication LoRa |
57
| Définition des broches | #define LORA_SS 18
58
#define LORA_RST 14
59
#define LORA_DIO0 26 | Définition des broches pour le module LoRa |
60
| Variables globales | String receivedData
61
;int packetSize; | Stockage des données reçues et 
62
vérification de la taille des paquets |
63
| Initialisation | setup() | - Configuration du port série pour le débogage
64
- Initialisation de l’affichage OLED
65
- Configuration et démarrage du module LoRa 
66
(Fréquence, Spreading Factor, Preamble, etc.)
67
- Vérification de l’initialisation LoRa |
68
| Réception et affichage des données | loop() | - Vérification de la réception d’un paquet LoRa
69
- Lecture du message reçu et extraction des informations
70
- Vérification de l’en-tête du paquet
71
- Affichage du message et du compteur sur l’écran OLED
72
- Affichage du RSSI (puissance du signal reçu) pour évaluer 
73
la qualité de la transmission |
74
75
> h2. 4. ml_cfo.m
76
77
|_.Section|_.Fonction|_.Description|
78
| Importation des données | data = readtable('base_de_donne_sans_cfonode.xlsx') | Chargement des données à partir d’un fichier Excel |
79
| Prétraitement des données | rmmissing(data), data.N_D = categorical(data.N_D) | Suppression des valeurs manquantes et conversion 
80
des étiquettes en variables catégorielles |
81
| Sélection des caractéristiques | features = {'CFO_total', 'SF'} | Définition des variables utilisées pour la classification |
82
| Normalisation des données | data.CFO_total = (data.CFO_total - mean) / std | Mise à l’échelle des valeurs CFO_total pour
83
améliorer la performance du modèle |
84
| Visualisation des données | boxplot(data.CFO_total, data.N_D),
85
gscatter(data.SF, data.CFO_total, data.N_D) | Tracé de graphiques pour analyser la distribution 
86
des données |
87
| 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 
88
avec échantillonnage stratifié |
89
| 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
90
voisins et normalisation des données |
91
| Prédiction sur l’ensemble de test | y_pred = predict(Mdl_KNN, X_test) | Prédiction des étiquettes pour les données de test |
92
| Évaluation de la précision | accuracy = sum(y_pred == y_test) / length(y_test) | Calcul de la précision du modèle |
93
| Affichage de la matrice de confusion | confusionchart(y_test, y_pred) | Visualisation des erreurs de classification |
94
| Analyse des prédictions correctes par SF | sf7_correct_blanc, sf8_correct_blanc, sf9_correct_blanc | Comptage des classifications correctes pour chaque 
95
SF (7,8,9) et chaque classe (Blanc, Noir) |