TP05 : Mini Projet
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
- Tic-Tac-Toe
- Taquin
- Casse-Briques
- PacMan
- Démineur
- Snake
- Pong
- Bataille navale
- Puissance 4
- Space Invaders
- Flappy Bird
- Dames
- Othello
- Et bien d’autres…
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 :
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
:
# 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 :
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 :
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
)