Structure des programmes » Historique » Version 4
Alexis ANGLADE, 02/02/2025 19:04
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 | 3 | Alexis ANGLADE | > > h3. 1. passerelle.ino |
10 | 2 | Alexis ANGLADE | |
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 | 3 | Alexis ANGLADE | > > h3. 2. point_em.ino |
30 | 2 | Alexis ANGLADE | |
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 | 3 | Alexis ANGLADE | > > h3. 3. point_rec.ino |
51 | 2 | Alexis ANGLADE | |
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 | 3 | Alexis ANGLADE | > > h3. 4. ml_cfo.m |
76 | 2 | Alexis ANGLADE | |
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) | |
||
96 | 4 | Alexis ANGLADE | |
97 | > > h3. 5. test.m |
||
98 | |||
99 | |_.Section|_.Fonction|_.Description| |
||
100 | | Bibliothèques | input(), predict() | Utilisation des bibliothèques MATLAB intégrées pour la saisie des valeurs et la prédiction | |
||
101 | | Variables globales | mean_cfo_total, std_cfo_total, Mdl_KNN | Paramètres pré-calculés pour la normalisation et modèle KNN chargé. | |
||
102 | | Boucle de Test | for i = 1:5 | Exécute 5 itérations de test pour la prédiction des nœuds. | |
||
103 | | Entrée Utilisateur | input('Entrez la valeur de CFO : ') |
||
104 | input('Entrez la valeur de SF : ') | Demande à l’utilisateur d’entrer les valeurs de CFO et SF | |
||
105 | | Normalisation | (new_cfo - mean_cfo_total) / std_cfo_total | Transformation des valeurs CFO pour correspondre aux données d’entraînement | |
||
106 | | Prédiction du Modèle | predict(Mdl_KNN, normalized_input) | Classification du nœud correspondant à la valeur de CFO et SF | |
||
107 | | Affichage des Résultats | fprintf() | Affiche le résultat de la prédiction dans la console MATLAB | |
||
108 | | Fin du Programme | end | Termine la boucle après 5 tests | |