Aller au contenu

Flipper


Un flipper est un jeu physique utilisant à la fois mécanique dans le jeu de propulsion des billes et cibles à viser mais également électronique dans le comptage des points et le traitement des actions qu’engendre la propulsion de la bille contre tel ou tel élément du plateau de jeu. Le but du jeu est bien évidemment d’obtenir le plus de point en faisant en outre durer la partie le plus longtemps possible, ce qui peut parfois conduire à l’obtention de billes supplémentaires ou un jeu gratuit.
Ce projet a pour objectif un rendu simplifié d’un flipper dit classique. Afin d’obtenir une caisse élaguée de tous les fils usuellement présents, il a été choisi de passer par le traitement des données par des bus I2C et l’utilisation de carte Arduino Nano pour pouvoir référencer un module à la fois. La modélisation des éléments de plateau tels que les bumpers et du support retranscrit l’environnement de travail qui était le désir à satisfaire physiquement.

Existants


Mission Pinball Framework (MPF) est un framework open-source codé en Python. Le projet a été créé en 2014 par Brian Madden et Gabe Knuth dans le but de permet aux différents utilisateurs de programmer et contrôler leurs propres flippers. Les utilisateurs peuvent alors customiser leurs propres codes à partir des codes existants. Le framework contient alors du code destiné aux différents modules de flippers ainsi qu’une interface permettant de tester virtuellement l’exécution du flipper.
Une liste de projets aboutis ayant utilisé les ressources disponibles sur ce site est présente et rendent compte de la diversité des rendus que cette utilisation peut permettre. En outre, il existe des pages permettant de réfléchir à la logique du jeu qu’on veut mettre en place. La partie transcrivant le déroulement mécanique, comme pour les batteurs présents en bas de la caisse par exemple, est également documentée et aide à l’obtention d’un pinball réaliste à travers l’interface du framework.

Projet sur la fabrication d’un flipper customisé. Celui-ci est composé de plusieurs étapes allant de la découpe du support à la connexion des différents modules du flipper. Il y a en tout 15 étapes dans lesquels sont décrits les différents assemblages, les différents circuits réalisés sous formes d’images ainsi que le matériel nécessaire. Ce projet fournit aussi un dépôt Git dans lequel est répertorié le code que le constructeur a utilisé pour la réalisation des règles de son flipper. Les parties intéressantes dans ce projet sont notamment un plan du support du flipper qu’il a créé comportant notamment l’agencement des différents modules tels que les bumpers, l’explication de la fabrication d’une rampe ainsi que les différents circuits électriques qu’il a réalisé pour ses modules même s’ils ne correspondent pas forcément à notre volonté de créer un bus de donnée. Le tout est accompagné par des constatations et des remarques sur ce qui a marché ou non et quelle partie faut-il faire attention lors de la réalisation.

Projet sur la fabrication d’un flipper customisé fait en grande partie en bois. Celui est aussi composé de plusieurs étapes. Il y est notamment décrit le mécanisme sur les flips de manière purement mécanique ainsi que la fabrication du lanceurs de billes qu’il a réalisé. Il ajoute aussi une partie sur les rampes en plastique qu’il a fabriqué. Toutefois, ce projet ne comporte pas de partie électronique puisqu’il est entièrement mécanique et ne donne pas de réalisation de bumpers, de lumières et d’affichage de score pour le flipper mais reste très intéressant si l’on veut faire des flips à moindre coût.

Ce site est un wiki collaboratif afin de donner les informations aux personnes souhaitant réalisé leur propre flipper. Il contient notamment des informations sur les différents éléments électroniques qui font parties d’un flipper, mais également une partie programmation, construction ou encore sur l’aspect visuel du flipper. C’est une bonne base pour démarrer ses recherches. Il présente aussi d’autres projets open source comme par exemple Open Pinball Project.

Problématiques et solutions

  • conception du châssis

Le flipper est divisé en deux parties : le support et le flipper a plus proprement parlé. Ce dernier se fixe sur le support. Le but du support est bien entendu de maintenir le flipper dans une bonne position pour jouer, mais aussi de pouvoir le retourner, pour pouvoir travailler sur son envers.
Ces deux parties ont été modélisées sur Autodesk Fusion 360. Elles ont été conçues dans le but d’être réalisables à la découpe laser. Il faut donc utiliser des plaques de matériaux rigides d’épaisseur 5mm.
Avant de monter ces deux parties, il convient de prévoir la « charge utile » à mettre dans le flipper et à apporter des modifications en réponse. Par exemple, le fond de caisse du flipper n’est pas encore troué pour accueillir des bumpers ou des taquets.
Un axe cylindrique est nécessaire pour pouvoir assembler les deux parties. Un cylindre métallique suffit. Il n’y a pas besoin de roulement à billes ou de solutions similaires car la rotation sur cette axe n’est que rarement utile.

Des plans sont disponibles sur ce drive ainsi que les modélisations en fichier STL :
Lien vers le drive

  • bus de communication

L’un des buts de ce projet est de simplifier l’électronique du flipper notamment l’entremêlement de fils que l’on peut voir habituellement sous le caisson d’un flipper ainsi que de simplifier la réparation lors de problèmes techniques. Pour ce faire nous avons opté pour l’utilisation de cartes Arduino et de bus I2C. L’idée étant que chaque module soit relié à une carte Arduino Nano (ce type de carte étant suffisant pour gérer un module et est plutôt petite) et qu’elles soient reliées à une carte principale qui sera chargée de communiquer avec les autres via des bus I2C.
Notre choix s’est porté sur les bus I2C car les cartes Arduino sont toutes dotés de ce protocole.
Le protocole I2C fut créé en 1982 afin de standardiser l’échange de données entre différents circuits intégrés d’un même système. Ce bus de communication est sériel avec seulement un fil pour le transfert des données. Les bus I2C ont donc deux câbles, l’un pour les données (SDA), l’autre pour l’horloge (SCL).

Afin que ce système fonctionne et qu’il n’y ait pas de saturation le protocole défini qu’il n’y a qu’un seul maître (ici la carte principale) avec plusieurs esclaves (ici les cartes Arduino Nano reliées aux modules). Le maître étant le seul en droit d’initier une communication.
De plus, en théorie, 127 périphériques I2C sont adressables sur un même bus (même si en pratique ce chiffre est bien moindre cela reste suffisant pour notre projet) et la distance maximale maître-esclave est d’environ un mètre et dépend de plusieurs facteurs comme la capacité électrique du bus ou le débit de transmission.
Afin d’utiliser le protocole I2C avec les Arduino nos devons inclure la librairie Wire.h dans nos codes.
Pour plus d’informations sur le concept des bus I2C et obtenir une ébauche de son fonctionnement, vous pouvez vous rendre à l’adresse suivante pour de plus amples informations : Arduino et bus I2C.

  • conception et réalisation des « flip »

Concernant la réalisation des flips, nous nous étions orientés vers l’achat ou l’impression 3D des 2 flips sans les mécanismes traditionnels étant donné que nous avons plusieurs exemples de projets où les flips seraient actionnés par une translation d’un solénoïde moyen ou encore vers la réalisation de flips entièrement mécaniques si la version avec des solénoïdes n’aboutissait pas (cf Tabletop Pinball).

L’option achat présentait l’avantage de fournir un solénoïde déjà rattaché à un ensemble pouvant faire fonctionner l’ensemble d’un des flips chacun. En agissant ainsi, il est alors possible d’enregistrer le comportement du solénoïde pour traiter les données du module à travers le code d’une carte Arduino Nano qu’elle peut ensuite transmettre à l’aide du bus de données que nous avons choisi.

Parmi les exemples d’impressions de batteurs, nous retrouvons celui-ci qui permet l’impression des différents parties d’un flip en prévision d’un assemblage pour notre flipper. Un autre exemple réside à cette adresse et nous a semblé utile une fois rattaché à une tige en fer dont le diamètre devait convenir et restait à déterminer selon le résultat de l’impression 3D.

  • conception et réalisation du « lanceur »

Pour la réalisation du lanceur de billes, nous avons décidé de commander séparément nous-mêmes les différents composants du lanceur tels que que le ressort ou le fourreau puis de les assembler étant donné que la majorité de ces lanceurs fonctionnent avec les mêmes composants et le même mécanisme de lancer.

Un de ces composants est tout simplement la tige lance-bille permettant d’éjecter sous action mécanique la bille de la rampe de lancement.

Concernant le bouton de lancement présent à l’extérieur de la caisse et permettant le déclenchement du début de partie par envoi d’une bille, nous avons trouvé la possibilité également d’effectuer son impression.

  • conception et réalisation des « fiches »

Pour notre flipper simple, nous avions prévu un ensemble de trois fiches à mettre dans le jeu pour obtenir un début de jeu et avoir des cibles à faire tomber ce qui nous permet de compter le score par traitement dans le bus de données précédemment évoqué.

Les fiches doivent être créées de manière à être simplement posées sur le plateau du flipper. Nous avons pris en exemple des modèles existants. Du fait de sa capacité a se mouvoir, nous avons un modèle qu’il est possible de créer via une impression et un autre disponible à l’achat à faible coût.

  • conception et réalisation des « bumper »

Les bumpers, un des éléments principaux pour tout fonctionnement correct d’un flipper n’était prévus qu’une fois la mise en œuvre d’un flipper fonctionnant avec des fiches simples et des taquets fonctionnels, qu’ils soient mécaniques ou bien une fois encore une fois mouvant sous l’influence de solénoïdes.

Cet élément pouvait être imprimé à l’aide des imprimantes 3D avec pour modèle celui-ci par exemple. Cette impression ayant pour objectif de réduire les coûts que pourrait entraîner l’achat d’un bumper usuel.

  • suivi du jeu : calcul de score…

Nous avons mis en place une ébauche de code permettant à notre afficheur LCD de mettre a jour notre score au cours de la partie lancée. Ce code a été inspiré des trois projets suivants qu’il est possible de retrouver sur le site des projets Arduino :
– Homemade Arduino Pinball Machine
– Arduino Ping Pong Pinball
– Arduino Conversion of an EM Pinball Machine
Le code a été séparé en deux fichiers afin de rendre compte de l’utilisation du bus de communication que nous voulions utilisé. Bien que le fichier gamescore semble contenir les informations pour tous les modules, il devrait être ultérieurement séparé en plusieurs fichiers pour que chaque module envoie ses propres données au deuxième code rendant compte de l’affichage du score sur l’écran LCD.
 Gamescore
 Arduino Code
De plus, nous avons réfléchi à l’éventualité d’un affichage de score non seulement sur le flipper mais également via notre propre téléphone ce qui aurait été possible à l’aide de la bibliothèque BLEPeripheral permettant l’ajout de périphérique.

  • achats nécessaires

Certains éléments du flipper ne peuvent pas être obtenus à l’aide d’impression 3D ou de découpe laser. Nous avons donc dresser une liste non exhaustive des éléments que nous avons besoin d’acheter.
Élément central de notre amélioration d’un flipper classique, les cartes Arduino que nous prévoyions d’acheter sont disponibles à cette adresse. L’achat de packs nous permet d’amortir le coût global de la réalisation. Dans un premier temps, il était prévu de n’en acheter que 3 packs puisque nous n’estimions pas à plus de 18 le nombre de modules que nous pourrions traiter pour un flipper simple.

Jouer au flipper sans bille ? Voilà un autre élément dont nous avions besoin. Il aurait été possible de les imprimer elles-aussi, mais nous avons pensé que la friction avec le caisson en bois pourrait faire dévier la bille de manière étrange si elle était trop légère ou d’une matière non adaptée à un glissement satisfaisant à travers les divers modules du plateau. Nous avons pensé à acheter 2-3 billles pour pouvoir peut-être par la suite introduire plusieurs billes si nous atteignions un score assez élevé.

Un autre élément qu’il nous paraissait compliqué à réaliser manuellement par nous-mêmes était l’écran afficheur LCD. Nous avons trouvé des produits pouvant convenir à notre besoin, utilisant dans notre code de décompte des points ce type d’écran. Des échantillons sont présents à cette adresse ainsi qu’à cette autre.

 

Membres du projet:

Zhu Jean
Coutolleau Eléonore
Aubin Claire
Rousseau Alexandre

Ressources en ligne:

Mission Pinball Framework (Dépot Git)
Open Pinball Project
Exemple de pinball
Exemple de pinball