Projet Rubiks Cube 2021 Antoine Nolan Nicolas

Présentation du projet:

Bonjour, nous sommes Antoine Nicolas et Nolan, étudiants en deuxième année préparatoire intégrée de Polytech Angers. Dans l’objectif de réaliser une armoire à énigmes pour le futur escape Polytech nous étions chargés de concevoir une de ces énigmes qui n’était autre que la résolution d’un Rubik’s Cube. Il ne fallait pas simplement résoudre le Rubik’s Cube à la main (ce serait trop simple) mais il fallait le résoudre à l’aide d’un robot qui ferait tourner ces faces grâce à des boutons.

rubik's cube

Phase de conception:

Nous avons aussi pensé à la manière dont nous allions faire tourner le Rubik’s cube. Nous avons opté pour 6 servomoteurs à rotation continue qui seront contrôlés par un Arduino. Ils ont l’avantage de pouvoir tourner comme son nom l’indique en continu et dans les deux sens de rotation contrairement à d’autres moteurs qui ne peuvent tourner qu’à 270°. Pour connaître la force qu’il faudrait exercer pour faire tourner les faces du Rubik’s cube, nous avons effectué des tests simples à Polytech, ce qui nous a permis d’avoir des servomoteurs suffisamment puissants et ainsi ne pas commander des servomoteurs inadaptés. Afin de créer une interface homme-machine affordante, nous avons pensé à des boutons qui auraient la même couleur que la face que l’utilisateur souhaite faire tourner. De plus, nous avons réfléchi à un switch qui permet de faire tourner les faces dans les deux sens. Nous avons également réfléchi à un boitier de contrôle qui permettrait de ranger l’Arduino et la breadboard afin d’avoir un rendu plus agréable à utiliser et à regarder. Enfin, nous avons pensé à mettre un miroir à l’arrière de la structure afin de voir le Rubik’s cube dans son ensemble.

servomoteur

Conception Assistée par ordinateur:

Nous avons ensuite réfléchi sur la forme de la structure qui pourrait accueillir le Rubik’s cube. Nous avons opté pour trois formes différentes, chacune avec ses avantages et ses inconvénients. La première est simple à construire mais présente des problèmes pour accueillir les servomoteurs, il faut réaliser un porte-à-faux assez important afin d’aligner les moteurs avec le centre du Rubik’s cube. La seconde est simple à construire avec une installation facile des servomoteurs, mais les pièces pour la construire ne sont pas disponibles chez notre fournisseur ; il nous fallait des cubes qui puissent relier 4 barres pour former une croix. Enfin, la dernière structure est réalisable avec les pièces disponibles et permet de monter les servomoteurs. Cependant elle est relativement compliquée à monter car il est compliqué de centrer parfaitement les servomoteurs.
Pour mieux visualiser nos idées, un travail de modélisation 3D a été effectué. Nous avons modélisé les pièces présentes sur le site du fournisseur à l’échelle quand les dimensions étaient disponibles. Cela nous a permis d’éviter des problèmes futurs, comme des erreurs de mesures, des problèmes liés à des dimensions inconnues…
Voici les images de nos trois structures :

tableau structure

Code:

Simultanément avec la modélisation 3D, nous avons créé le code Arduino qui nous permettra de faire pivoter nos faces suite à un appui sur un bouton. Le code est relativement simple, il fait tourner le moteur quand l’utilisateur appuie sur le bouton. Il y a en plus un délai entre chaque appui de bouton afin de ne pas faire tourner deux faces en même temps et de risquer de casser le Rubik’s cube.

code

Assemblage:

Une fois la forme de la structure choisie et le code réalisé, nous avons commandé nos pièces et nous les avons assemblées pour commencer à faire des tests grâce à l’Arduino.
Nous avons vissé les barres ensemble grâce à des cubes prévus à cet effet. Une fois cela fait, nous avons mis les servomoteurs dans leur support que nous avons fixés aux équerres. Ensuite, nous avons placé les équerres afin que l’axe de rotation des servomoteurs soit parfaitement aligné avec le centre des faces du Rubik’s cube. Pour tenir le Rubik’s cube, nous avons vissé des entretoises sur les servomoteurs. Ces entretoises sont ensuite mises en contraintes dans des bouchons en liège qui sont collés au centre des différentes faces du Rubik’s cube. En parallèle, nous avons ajusté le temps que mettaient les servomoteurs pour faire tourner les faces de 90°.
Enfin, nous avons eu quelques idées afin de rendre le système plus ergonomique. Par exemple, nous avons pensé à créer une boîte dans le style des contrôleurs de borne d’arcade permettant d’accueillir l’Arduino et les boutons afin que les câbles soient rangés de façon optimale.

structure et boitier

strcuture assemblée (2)

Problèmes rencontrés:

Nous avons rencontré quelques problèmes lors de la conception et de la réalisation de notre projet. Pour commencer, évoquons les problèmes ayant attrait à l’aspect fonctionnel de notre projet. Notre première structure n’était pas adaptée pour faire tourner les faces avec les servomoteurs car il fallait les déporter sur une trop longue distance, ce qui aurait apporté des forces et des moments sur la structure et les servomoteurs supplémentaires, ce que nous voulions absolument éviter afin de faire tourner au mieux le Rubik’s cube. Pour la seconde structure, nous avons eu des problèmes concernant les pièces proposées par le fournisseur avec lequel nous devions travailler. Nous avons donc créé une nouvelle forme pour notre structure, ce qui nous a permis de monter les servomoteurs avec les pièces disponibles. Cependant, cette dernière a été très compliquée à construire car il faut être très précis dans l’installation de nos servomoteurs. Enfin, le problème reste que deux servomoteurs sont un peu déportés de l’axe du Rubik’s cube. Ce problème se corrige un minimum avec les supports de servomoteurs mais cela ne reste pas parfaitement centré.

Nous avons également rencontré des difficultés liées à la logistique. Le temps de livraison de nos pièces a été très long. En effet, nous avons attendu un mois pour que les pièces nécessaires à la construction de la structure et les servomoteurs arrivent. Nous ne pouvions donc rien entreprendre de nouveau car nous ne pouvions pas savoir si de nouvelles difficultés allaient se présenter. Ce problème s’est réitéré avec un nouveau mois d’attente pour les dernières pièces qui nous manquaient.

Nous avons aussi rencontré un problème concernant les servomoteurs car rien n’indiquait sur le site du fournisseur leur manière de fonctionner, c’est-à-dire que nous ne savions pas qu’ils ne se contrôlaient que par la vitesse et non grâce à sa position angulaire. Nous avons donc testé tous les servomoteurs afin de régler les vitesses dans le but de faire un angle de 90° suite à un appui sur un bouton.
Cependant, la friction ne nous permettait pas de réaliser des angles de 90° à chaque fois donc nous avons utilisé des servomoteurs à contrôle angulaire qui ne peuvent tourner que de 270° mais qui permettent quand même d’avoir toutes les configurations pour résoudre le Rubik’s cube. Cependant, nous avons rencontré un problème avec les entretoises qui tiennent le Rubik’s cube. Elles se dévissent lorsque l’on les tourne dans un certain sens, il a donc fallu coller les entretoises au moteur.

Nous avons donc commandé et monté les nouveaux servomoteurs à contrôle angulaire, nous nous sommes malheureusement rendu compte que ces servomoteurs ne tournent pas parfaitement à 270°, nous avons 2 à 3° de décalage ce qui nous empêche de parfaitement utiliser notre solveur de Rubik’s cube.
De plus, nous avons dû changer de « type » de Rubik’s cube car nous avions commencé avec un cube « blanc ». En effet, quand nous faisions tourner les faces, le cube central tournait dans le vide donc nous n’arrivions pas à faire tourner la face. Nous avons donc opté pour le modèle « noir », qui lui est plus rigide mais qui peut être plus compliqué à faire tourner.

Nous avons eu aussi un servomoteur qui était défectueux; dès que nous le branchions, il créait un court-circuit ce qui éteignait l’Arduino instantanément.
Nous avons donc rencontré des difficultés de montages assez importantes. En effet, nous devions fixer le Rubik’s cube à tous les servomoteurs tout en nous assurant que les servomoteurs tiennent à la structure, ce qui n’était pas une mince affaire.

Vidéo du solveur de Rubiks Cube en action:

Conclusion :

Le résultat final est conforme au cahier des charges car il permet à une personne de résoudre le Rubik’s cube par l’intermédiaire de servomoteurs. Cependant, il serait possible d’améliorer de nombreux points afin de rendre l’utilisation de notre système plus facile et plus rapide. Pour commencer, le système frotte donc nous perdons en rapidité. Il nous faudrait donc un moyen afin de rendre la rotation du Rubik’s cube plus fluide ou de mieux centrer nos servomoteurs. Nous pourrions aussi surement améliorer la visibilité en ayant un moyen de voir le Rubik’s cube sans l’intermédiaire d’un miroir, pourquoi pas une caméra qui nous permettrait de voir toutes les faces du Rubik’s cube en même temps grâce à un moniteur externe. Enfin, nous pourrions avoir un tableau de jeu plus agréable pour l’utilisateur, c’est-à-dire un tableau de jeu qui pourrait plus ressembler à ceux des bornes d’arcade avec des boutons plus gros donc plus faciles à manipuler.