Actions
Structure des programmes¶
Contenu de la section¶
Vous trouverez dans cette section la structure des programmes utilisés durant le projet.
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 |
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 |
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 |
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,RF,Tree,SVM,NB | Mdl_KNN = fitcknn(X_train, y_train, 'NumNeighbors', 5, 'Standardize', true) Mdl_RF = fitcensemble(X_train, y_train, 'Method', 'Bag', 'NumLearningCycles', 100, 'Learners', 'tree'); Mdl_Tree = fitctree(X_train, y_train); Mdl_SVM = fitcsvm(X_train, y_train, 'KernelFunction', 'linear', 'Standardize', true); Mdl_NB = fitcnb(X_train, y_train); |
Entraînement des modèles KNN (k=5), Random Forest (RF), Naïve Bayes (NB), Decision Tree (Tree) et Support Vector Machine (SVM). |
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) |
5. test.m¶
Section | Fonction | Description |
---|---|---|
Bibliothèques | input(), predict() | Utilisation des bibliothèques MATLAB intégrées pour la saisie des valeurs et la prédiction |
Variables globales | mean_cfo_total, std_cfo_total, Mdl_KNN | Paramètres pré-calculés pour la normalisation et modèle KNN chargé. |
Boucle de Test | for i = 1:5 | Exécute 5 itérations de test pour la prédiction des nœuds. |
Entrée Utilisateur | input('Entrez la valeur de CFO : ') input('Entrez la valeur de SF : ') |
Demande à l’utilisateur d’entrer les valeurs de CFO et SF |
Normalisation | (new_cfo - mean_cfo_total) / std_cfo_total | Transformation des valeurs CFO pour correspondre aux données d’entraînement |
Prédiction du Modèle | predict(Mdl_KNN, normalized_input) | Classification du nœud correspondant à la valeur de CFO et SF |
Affichage des Résultats | fprintf() | Affiche le résultat de la prédiction dans la console MATLAB |
Fin du Programme | end | Termine la boucle après 5 tests |
Mis à jour par Yan ZHAO il y a 3 mois · 5 révisions