« SE5 ECEAI 2024/2025/elhasnaoui-chaouni » : différence entre les versions
Aucun résumé des modifications |
|||
(5 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
=<div class="mcwiki-header" style="padding: 10px; font-family: 'Times New Roman' ; font-weight: bold; color: #0000FF; text-align: center; font-size: 100%; background: #808080; vertical-align: top; height:70%; width: 98%;"> Introduction </div>= | |||
==Objectifs du projet== | |||
Séance 1 (03/09) : Lors de la première séance, nous avons entamé une réflexion sur les différentes idées de projets que nous pourrions développer en utilisant notre carte STM32, pour explorer les possibilités offertes par la carte, en considérant des applications potentielles dans divers domaines, tels que l'automatisation, la reconnaissance de formes ou le contrôle intelligent de systèmes. Ces premières discussions nous ont permis de poser les bases de projets innovants, alignés sur nos objectifs d'apprentissage et les capacités techniques de la STM32. | Séance 1 (03/09) : Lors de la première séance, nous avons entamé une réflexion sur les différentes idées de projets que nous pourrions développer en utilisant notre carte STM32, pour explorer les possibilités offertes par la carte, en considérant des applications potentielles dans divers domaines, tels que l'automatisation, la reconnaissance de formes ou le contrôle intelligent de systèmes. Ces premières discussions nous ont permis de poser les bases de projets innovants, alignés sur nos objectifs d'apprentissage et les capacités techniques de la STM32. | ||
Par ailleurs, nous avons également configuré notre environnement de travail en installant les logiciels nécessaires, à savoir NanoEdge AI et STM32, afin de pouvoir commencer le développement de nos projets de manière efficace. | Par ailleurs, nous avons également configuré notre environnement de travail en installant les logiciels nécessaires, à savoir NanoEdge AI et STM32, afin de pouvoir commencer le développement de nos projets de manière efficace. | ||
=<div class="mcwiki-header" style="padding: 10px; font-family: 'Times New Roman' ; font-weight: bold; color: #0000FF; text-align: center; font-size: 100%; background: #808080; vertical-align: top; height:70%; width: 98%;"> | |||
== | =<div class="mcwiki-header" style="padding: 10px; font-family: 'Times New Roman' ; font-weight: bold; color: #0000FF; text-align: center; font-size: 100%; background: #808080; vertical-align: top; height:70%; width: 98%;"> Configuration Réseau </div>= | ||
==Configuration serveur Cloud== | |||
Nous allons créer une machine virtuelle sur Capbreton avec un accès internet IPv6. <br> | |||
Cette machine virtuelle sera déployée grâce à Xen (Hyperviseur) et portera le nom "SE5-elhaschaouni".<br> | |||
La commande lancée pour créer cette machine est la suivante : | |||
<syntaxhighlight lang="bash"> | |||
xen-create-image --hostname SE5-elhaschaouni --force --dist bookworm --size 10G --memory 1G --dir /usr/local/xen --dhcp --bridge bridgeStudents | |||
</syntaxhighlight> | |||
===Configuration Réseau=== | |||
Nous devrons ensuite configurer son réseau, sa résolution DNS, et ses sources de paquets Debian.<br> | |||
Pour configurer le réseau de notre machine, nous allons modifier le fichier ''/etc/network/interfaces'' qui est un fichier de configuration réseau où sont spécifiés les paramètres de l'interface. | |||
<syntaxhighlight lang="bash"> | |||
auto eth0 | |||
iface eth0 inet6 auto | |||
</syntaxhighlight> | |||
===Configuration DNS=== | |||
Pour configurer la résolution DNS de notre machine, nous allons modifier le fichier ''/etc/resolv.conf''. Ce fichier permet de spécifier la configuration des serveurs de nom (DNS) afin de résoudre les noms de domaine en adresses IP. Voici la configuration DNS à appliquer : | |||
<syntaxhighlight lang="bash"> | |||
domain plil.info | |||
search plil.info | |||
nameserver 2a01:c916:2047:c800:216:3eff:fe82:8a5c | |||
</syntaxhighlight> | |||
==Configuration Gateway Raspberry Pi== | |||
==Configuration Microcontrôleur SMT32== | |||
=<div class="mcwiki-header" style="padding: 10px; font-family: 'Times New Roman' ; font-weight: bold; color: #0000FF; text-align: center; font-size: 100%; background: #808080; vertical-align: top; height:70%; width: 98%;"> Communication des objets </div>= | |||
==Communication RaspberryPi & Serveur Cloud == | |||
La communication entre la Raspberry Pi et le serveur Cloud se fait en utilisant le protocole MQTT. Le serveur Cloud est une machine virtuelle (VM) dans le même sous-réseau que la Raspberry Pi. Nous avons configuré le serveur MQTT Mosquitto en utilisant un Dockerfile pour créer et déployer le conteneur Docker sur le serveur Cloud. Nous avons également développé deux scripts Python pour gérer la communication : '''subscriber.py''' pour le serveur Cloud et '''publisher.py''' pour la Raspberry Pi. | |||
===Déploiement du Serveur MQTT Mosquitto :=== | |||
Nous avons créé un Dockerfile pour configurer Mosquitto.<syntaxhighlight lang="bash"> | |||
# Utiliser l'image de base de Mosquitto | |||
FROM eclipse-mosquitto:latest | |||
# Fichier de configuration | |||
COPY mosquitto.conf /mosquitto/config/mosquitto.conf | |||
# Exposer le port 1883 pour MQTT | |||
EXPOSE 1883 | |||
EXPOSE 9001 | |||
</syntaxhighlight> | |||
Nous avons construit l'image Docker à partir du Dockerfile avec la commande suivante :<syntaxhighlight lang="bash"> | |||
docker build -t mosquitto-mqtt . | |||
</syntaxhighlight>Puis, nous avons lancé le conteneur Mosquitto avec la commande :<syntaxhighlight lang="bash"> | |||
docker run -d --name mosquitto -p 1883:1883 -p 9001:9001 mosquitto-mqtt | |||
</syntaxhighlight>Cette commande démarre Mosquitto en arrière-plan (-d) et mappe le port '''1883''' du conteneur au port '''1883''' de l'hôte (RasberryPI), qui est le port par défaut utilisé par '''MQTT'''. | |||
==Communication STM32 & RaspberryPi== | |||
=<div class="mcwiki-header" style="padding: 10px; font-family: 'Times New Roman' ; font-weight: bold; color: #0000FF; text-align: center; font-size: 100%; background: #808080; vertical-align: top; height:70%; width: 98%;"> Entraînement du modèle d’apprentissage </div>= | |||
==Entraînement sur serveur Cloud== |
Version actuelle datée du 7 septembre 2024 à 14:07
Introduction
Objectifs du projet
Séance 1 (03/09) : Lors de la première séance, nous avons entamé une réflexion sur les différentes idées de projets que nous pourrions développer en utilisant notre carte STM32, pour explorer les possibilités offertes par la carte, en considérant des applications potentielles dans divers domaines, tels que l'automatisation, la reconnaissance de formes ou le contrôle intelligent de systèmes. Ces premières discussions nous ont permis de poser les bases de projets innovants, alignés sur nos objectifs d'apprentissage et les capacités techniques de la STM32.
Par ailleurs, nous avons également configuré notre environnement de travail en installant les logiciels nécessaires, à savoir NanoEdge AI et STM32, afin de pouvoir commencer le développement de nos projets de manière efficace.
Configuration Réseau
Configuration serveur Cloud
Nous allons créer une machine virtuelle sur Capbreton avec un accès internet IPv6.
Cette machine virtuelle sera déployée grâce à Xen (Hyperviseur) et portera le nom "SE5-elhaschaouni".
La commande lancée pour créer cette machine est la suivante :
xen-create-image --hostname SE5-elhaschaouni --force --dist bookworm --size 10G --memory 1G --dir /usr/local/xen --dhcp --bridge bridgeStudents
Configuration Réseau
Nous devrons ensuite configurer son réseau, sa résolution DNS, et ses sources de paquets Debian.
Pour configurer le réseau de notre machine, nous allons modifier le fichier /etc/network/interfaces qui est un fichier de configuration réseau où sont spécifiés les paramètres de l'interface.
auto eth0
iface eth0 inet6 auto
Configuration DNS
Pour configurer la résolution DNS de notre machine, nous allons modifier le fichier /etc/resolv.conf. Ce fichier permet de spécifier la configuration des serveurs de nom (DNS) afin de résoudre les noms de domaine en adresses IP. Voici la configuration DNS à appliquer :
domain plil.info
search plil.info
nameserver 2a01:c916:2047:c800:216:3eff:fe82:8a5c
Configuration Gateway Raspberry Pi
Configuration Microcontrôleur SMT32
Communication des objets
Communication RaspberryPi & Serveur Cloud
La communication entre la Raspberry Pi et le serveur Cloud se fait en utilisant le protocole MQTT. Le serveur Cloud est une machine virtuelle (VM) dans le même sous-réseau que la Raspberry Pi. Nous avons configuré le serveur MQTT Mosquitto en utilisant un Dockerfile pour créer et déployer le conteneur Docker sur le serveur Cloud. Nous avons également développé deux scripts Python pour gérer la communication : subscriber.py pour le serveur Cloud et publisher.py pour la Raspberry Pi.
Déploiement du Serveur MQTT Mosquitto :
Nous avons créé un Dockerfile pour configurer Mosquitto.
# Utiliser l'image de base de Mosquitto
FROM eclipse-mosquitto:latest
# Fichier de configuration
COPY mosquitto.conf /mosquitto/config/mosquitto.conf
# Exposer le port 1883 pour MQTT
EXPOSE 1883
EXPOSE 9001
Nous avons construit l'image Docker à partir du Dockerfile avec la commande suivante :
docker build -t mosquitto-mqtt .
Puis, nous avons lancé le conteneur Mosquitto avec la commande :
docker run -d --name mosquitto -p 1883:1883 -p 9001:9001 mosquitto-mqtt
Cette commande démarre Mosquitto en arrière-plan (-d) et mappe le port 1883 du conteneur au port 1883 de l'hôte (RasberryPI), qui est le port par défaut utilisé par MQTT.