SE5 ECEAI/eceai 2024/2025/duhr-becquet

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche

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"