Projet

Général

Profil

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