0i-SIM : Console de jeux retro

Occurrences : 

2021

Nombre d'étudiants minimum: 

3

Nombre d'étudiants maximum: 

6

Nombre d'instances : 

1

Domaines: 

Faisable à distance: 

Non

Dans ce projet, nous allons construire une console de jeux retro, l’unique et fameuse 0i-SIM (« nullisime »). Le système complet consiste de plusieurs parties matérielles :

  • À son cœur se trouve un microcontrôleur de type ARM
  • L’utilisateur interagit avec la 0i-SIM par un joystick ou une manette
  • L’affichage se fait sur un écran LED à (très) basse résolution
  • Un petit haut-parleur émet des bips et des bruits

La programmation va se faire sur la plateforme mbed – basée sur le langage C/C++ – qui inclut un petit système d’exploitation temps réel. L’écran sera fabriqué à base d’un ruban de LED adressable, de bois découpé au laser et de papier sulfurisé. Pour l’interface homme-machine, plusieurs options se présentent : Il y aura un petit stock de manettes historiques qu’il faudra faire parler à la console à travers un processus de reverse engineering. Sinon, vous êtes libre de fabriquer la manette de vos rêves avec des boutons, potentiomètres ou d’autres capteurs. Pour le son, la solution la plus simple est d’utiliser des sorties PWM (pulse width modulation) pour générer un signal carré et de l’envoyer dans un haut-parleur (mais on peut faire plus compliqué si on le souhaite…).

PAF étant un projet de courte duré, il est très important d’avoir une méthode de travail bien structurée et permettant la modularisation et l’avancement en parallèle sur les différentes parties. L’outil qui va nous permettre de découper le développement sont les tests unitaires (unit tests en anglais) et plus particulièrement des test doubles et mock objects. Suivant cette méthode, on commence par écrire des tests qui définissent la façon dont interagissent les différentes parties du système. En partant de ces tests, on va d’abord implémenter des test doubles qui font semblant d’être du vrai matériel et qui vont simuler toute ou une partie de la fonctionnalité, par exemple l’affichage graphique dans une fenêtre de votre ordinateur au lieu d’un écran LED piloté par un protocole sériel. Cela permet de commencer le développement des jeux sans attendre l’achèvement des périphériques matériels.

Après ce projet, vous serez capable de

  • Programmer un microcontrôleur en C/C++
  • Utiliser les primitives de synchronisation d’un système d’exploitation temps réel embarqué
  • Concevoir des interfaces et modules avec des tests unitaires
  • Comprendre et faire marcher des composants électroniques
  • Vous servir des outils de fabrication numérique comme la découpeuse laser et l’imprimante 3D
  • Battre votre record de Tetris