« SE5 ECEAI/eceai 2024/2025/duhr-becquet » : différence entre les versions
Ligne 100 : | Ligne 100 : | ||
Nous pouvons tester ce serveur MQTT en installant le bon utilitaire et en utilisant les commandes suivantes. | Nous pouvons tester ce serveur MQTT en installant le bon utilitaire et en utilisant les commandes suivantes. | ||
Terminal 1 : | Terminal 1 : | ||
mosquitto_sub -h 172.26.145.105 -p 1883 -t test | mosquitto_sub -h 172.26.145.105 -p 1883 -t test | ||
Terminal 2 : | Terminal 2 : | ||
mosquitto_pub -h 172.26.145.105 -p 1883 -t test -m "J'adore le réseau" | mosquitto_pub -h 172.26.145.105 -p 1883 -t test -m "J'adore le réseau" |
Version du 11 septembre 2024 à 08:39
Séance 1 :
Idée : voir si une main est ouverte ou fermée en étudiant le mouvement des doigts qui se ferment ou s'ouvrent.
Séance 2:
Installation de RaspberryPi OS basé sur Debian bookworm sur notre raspberry PI avec une première connection par UART
On a configuré l'access point afin de pouvoir accéder à nos raspberryPi dans le réseau 172.26.0.0.
Après avoir correctement configuré la raspberry on peut y accéder via ssh
Sur notre VM nous avons configuré un serveur mosquitto afin de gérer les communications entre la raspberry et la VM par MQTT.
Introduction
Dans ce module ECEAI, il nous est demandé de résilier un petit montage IoT permettant la communication entre un capteur, une gateway et un serveur cloud. De plus et c'est tout l'intérêt du module nous allons implémenter de l'intelligence artificielle à différents niveaux de la chaîne et récolter les consommations électriques pour les différentes configurations. Nous pourrons ainsi appréhender la notion de Edge Computing.
Configuration de la partie capteur Nucleo
Pour notre projet nous souhaitons récupérer les données du capteur X-NUCLEO-53L5A1. Pour cela nous utilisons l'utilitaire de stMicroelectronics nommé NanoEdge-AI-Studio. Grâce à la séction Data Logger du logiciel nous créons un fichier binaire permettant la transmission des données de la manière suivante:
- Data Rate(HZ) = 15
- Frame resolution = 64
- Frames = 32
Il suiffit ensuite de téléverser ce fichier binaire sur la Board NUCLEO-F401RE
Configuration de la RaspberryPi
Premier accès et connexion au réseau
Après avoir téléchargé un OS pour la RaspberryPI basé sur un debian bookworm, Nous montons sur notre station de travail la carte SD contenant cet OS. Il faut maintenant effectuer quelques modifications dans les fichiers de configuration afin d'avoir accès à la Raspberry par liaison série. Il suffit ensuite d'utiliser l'utilitaire minicom et de connecter la raspberry à l'AP (access point) pour pouvoir accèder à cette dernière en ssh.
ssh root@172.26.145.205
Réception des données serial
La partie capteur "bombarde" de données sur la liaison série. Nous développons alors dans un premier temps un petit programme python qui récupère ces données sur la liaison série et les affiche dans le terminal. Par la suite ces données seront transmise aux différents niveaux de l'infrastructure en charge du traitement de ces dernières.
import serial
import time
# Paramètres de la connexion série
port = "/dev/ttyACM0"
baudrate = 115200
try:
# Initialiser la connexion série
ser = serial.Serial(port, baudrate, timeout=1)
# Délai pour s'assurer que la connexion est bien établie
time.sleep(2)
print(f"Connexion établie sur {port} à {baudrate} bauds")
# Boucle pour lire les données entrantes
while True:
if ser.in_waiting > 0:
data = ser.readline().decode('utf-8').rstrip()
print(f"Reçu: {data}")
except serial.serialutil.SerialException as e:
print(f"Erreur: Impossible d'établir la connexion sur {port}. Détails: {e}")
finally:
if 'ser' in locals() and ser.is_open:
ser.close() # Fermer la connexion série
print("Connexion fermée.")
Communication Gateway -> Cloud
Dans cette section nous cherchons à faire communiquer la RaspberryPI 4 (gateway) et la VM SE5-duhrbecquet (cloud).
Pour cela nous choisissons d'utiliser un protocole de communication nommé MQTT:
Plus connu sous l’acronyme MQTT, le protocole Message Queuing Telemetry Transport est un protocole de messagerie léger adapté aux situations où les clients doivent utiliser peu de code et sont connectés à des réseaux peu fiables ou limités en bande passante. Il est principalement utilisé dans la communication entre machines (M2M) ou sur les types de connexions propres à l’Internet des Objets.
https://www.paessler.com/fr/it-explained/mqtt
Configuration de la VM
Nous utiliserons xen pour la création et la gestion de notre VM. Une fois correctement configuré et lancé nous pouvons installer nos premiers services.
Nous souhaitons mettre en place le service mosquitto qui permet d'héberger un serveur mqtt. Nous le configurons pour fonctionner sur le port 1883.
Nous avons donc:
- Host : 172.26.145.105
- Port : 1883
Nous pouvons tester ce serveur MQTT en installant le bon utilitaire et en utilisant les commandes suivantes.
Terminal 1 :
mosquitto_sub -h 172.26.145.105 -p 1883 -t test
Terminal 2 :
mosquitto_pub -h 172.26.145.105 -p 1883 -t test -m "J'adore le réseau"