Aller au contenu

TP05 : Mini Projet

Photo de Startup Stock Photos

Ce dernier TP est un mini projet qui met en œuvre les différents concepts étudiés dans le cours et dans les TPs précédents.

Le but de ce TP c’est de vous laisser réaliser un jeu qui fonctionne sur la cible. Vous pouvez choisir le jeu et les fonctionnalités que vous souhaitez implémenter. L’enseignant validera votre choix lors de la première séance en veillant à ce que le projet ne soit ni trop simple, ni trop compliqué.

Évaluation

Ce TP sera évalué comme les autres TPs, mais avec un poids de 4.

La note sera calculée selon les critères suivants :

  • Difficulté du projet
  • Gestion du projet
  • Maîtrise des aspects techniques
  • Qualité du rapport
  • Qualité de la présentation

Des séances de projets et de code reviews seront organisées lors de chaque session pour vous aider à gérer le travail et à améliorer la qualité de votre code.

Calendrier

Semaine Jour TP
P10 28.04.2025 Définition du projet, première ébauche du cahier des charges
P12 12.05.2025 Développement, travail en groupe
P15 02.06.2025 Développement, travail en groupe
P17 16.06.2025 Présentation en classe

Contraintes

Votre projet devra au minimum mettre en œuvre les concepts suivants :

  • Plusieurs threads FreeRTOS
  • Un canal de communication entre les threads (queues, streams, …)
  • Une gestion d’interruption (bouton, codeur rotatif, timer, module WiFi, …)
  • L’écran LCD
  • Le codeur rotatif ou le joystick
  • Un timer (hardware, ou soft timer)

Quelques suggestions

Serveur MQTT

Si vous avez besoin d’un serveur MQTT pour faire tourner votre projet, vous pouvez en installer un sur votre PC avec Docker :

Crées un dossier docker dans votre répertoire de travail et placez-y le fichier compose.yml suivant :

docker/compose.yml
services:
  mosquitto:
    image: eclipse-mosquitto
    ports:
      - "1883:1883/tcp"
      - "8090:8090"
    volumes:
      - ./mosquitto/config:/mosquitto/config
    environment:
      - TZ=Europe/Zurich

Ajoutez un fichier de configuration mosquitto.conf dans le dossier docker/mosquitto/config :

docker/mosquitto/config/mosquitto.conf
# Config file for mosquitto
#
# See mosquitto.conf(5) for more information.
#

# =================================================================
# Listeners
# =================================================================

listener 1883
protocol mqtt

listener 8090
protocol websockets

# =================================================================
# Security
# =================================================================

allow_anonymous true

Vous pouvez ensuite lancer le serveur avec la commande suivante :

docker-compose -f docker/compose.yml up

Si vous modifiez le fichier de configuration, vous pouvez relancer le conteneur avec la commande suivante :

docker compose --file docker/compose.yaml up --build --force-recreate

Votre serveur MQTT sera accessible à l’adresse suivante : mqtt://<VOTRE-ADRESSE-IP>:1883 ou ws://<VOTRE-ADDRESSE-IP>:8090.

Serveur Node-RED

Si vous avez besoin d’un serveur pour implémenter une partie de votre jeu, ou si vous avez besoin d’un dashboard, vous pouvez utiliser Node-RED.

Vous pouvez compléter votre configuration Docker comme suit :

Modifiez le fichier docker/compose.yml pour ajouter le service Node-RED :

docker/compose.yml
services:
  mosquitto:
    image: eclipse-mosquitto
    ports:
      - "1883:1883/tcp"
      - "8090:8090"
    volumes:
      - ./mosquitto/config:/mosquitto/config
    environment:
      - TZ=Europe/Zurich

  node-red:
    build:
      context: node-red
    image: nodered/node-red
    ports:
      - "1880:1880"
    volumes:
      - ./node-red/data:/data
    environment:
      - TZ=Europe/Zurich
    links:
      - "mosquitto:mqtt-broker"
      - "mosquitto:mqtt"
      - "mosquitto:broker"

Créez un dossier node-red dans votre répertoire de travail et placez-y le fichier Dockerfile suivant :

docker/node-red/Dockerfile
FROM nodered/node-red

RUN npm install @flowfuse/node-red-dashboard
RUN npm install @flowfuse/node-red-dashboard-2-ui-led

Créez encore un dossier docker/node-red/data.

Vous pouvez ensuite lancer le serveur avec la commande suivante :

docker compose --file docker/compose.yaml up --build --force-recreate

Vous pouvez accéder à l’interface de Node-RED à l’adresse suivante : http://localhost:1880.

Dans Node-RED, votre serveur MQTT sera accessible simplement sous le nom mqtt-broker.

À ne pas oublier

Gardez toujours en têtes les bonnes pratiques ainsi que les dix commandements du bon programmeur.

  • Choisissez de bons noms pour les classes, les méthodes et les variables.
  • Implémentez les bibliothèques avec un haut niveau d’abstraction pour pouvoir réutiliser les méthodes dans d’autres projets.
  • Faites des “git commit” régulièrement avec de bons commentaires.
  • Configurez le CI/CD de gitlab et testez automatiquement le plus de choses possibles.
  • Implémentez des tests unitaires.
  • Utilisez des assertions dans votre code pour le documenter et le rendre plus robuste.

Rapport de projet

  • Rédigez un rapport avec les indications suivantes :
  • Une page de titre avec au minimum :
    • le nom et le logo officiel de l’école
    • le nom du cours : Systèmes Embarqués 1
    • le titre de votre document : Le titre de votre projet
    • le numéro et le nom de votre groupe
    • les noms des auteurs (vous) avec la classe dans laquelle vous êtes
    • la date à laquelle vous avez terminé le rapport
    • la version du rapport
  • Une page avec l’historique des versions
  • Une table des matières
  • Une introduction pour poser le contexte
  • Le corps de votre rapport (dépend de la forme de gestion de projet, waterfall ou agile)
  • Une conclusion personnelle (un à deux paragraphes par étudiant)

Appliquez les conseils donnés dans l’article Guide de rédaction de rapports pour les étudiants.

Important

Déposez votre rapport dans un dossier /docs de votre dépôt git (tp05) avec le nom report05.pdf (le chemin complet vers votre rapport est donc /docs/report05.pdf)