Articles

Publié par

Il y a 3 mois -

Temps de lecture 5 minutes

Les coulisses de la création d’un jeu Android Things pour Android Makers

Xebia était bien présente à Android Makers 2018 avec des speakers et un stand.

Je vous propose de découvrir les différentes étapes de la création d’un jeu avec Android Things, l’impression 3D, Firebase, Vue.js et des composants électroniques.

Photo du stand Xebia à Android Makers 2018

Un jeu de mémoire made in Xebia

Vous connaissez sans doute Simon, le fameux jeu de mémoire si populaire des années 80.

Sur notre stand, nous voulions proposer une expérience aussi simple, faite maison, connectée et compétitive.

Le produit final attendu est donc un jeu. Celui-ci est composé de boutons lumineux, d’un retour sonore ainsi que d’un tableau des scores en temps réel.

Le fonctionnement est simple : la machine génère une séquence aléatoire de boutons à presser que le joueur doit répéter sans se tromper, à la fin de la séquence une nouvelle instruction est ajoutée. La difficulté du jeu se situe donc au niveau de la mémoire, la liste s’allongeant sans cesse au fur et à mesure de la partie.

Photo des boutons de jeu

Une base Android Things

Pour Android Makers, nous voulions créer un projet IoT tournant sous Android, notre choix s’est évidemment tourné vers Android Things, le système d’exploitation officiel qui permet de faire tourner Android sur des petites configurations comme les Raspberry Pi 3 ou Le NXP i.MX7D.

Contrairement à des projets comme Arduino, Android Things propose une plateforme de développement plus fournie car très proche de la plateforme Android sur téléphone, de plus les bibliothèques externes utilisant Java et Kotlin sont de fait compatibles.

La plateforme Android Things propose en plus du framework Android, la possibilité de piloter des composants électroniques. Comme sur les plateformes Arduino, il est très simple de prototyper des circuits à l’aide de plaques de prototypage (ou breadboard).

Circuit électronique raspberry pi 3 et plaque de prototypage

Impression 3D du socle des boutons

Lorsque que nous avons acheté nos boutons d’arcade, ceux ci ne comportaient pas de socle pour faire tenir le bouton debout.

Chaque bouton propose 4 prises de raccordement. La moitié de ces prises concernent la partie bouton poussoir et ne se connectent que lorsque le bouton est pressé. L’autre moitié des prises permet de faire passer du courant dans la LED pour allumer le bouton.

Nous avons décidé d’imprimer en 3D un boîtier par bouton dans le but de le faire tenir debout et de prévoir un trou de sortie où un câble contenant 4 fils passera pour raccorder le bouton au reste du circuit.

Bouton poussoir sans socle Bouton poussoir avec socle imprimé en 3d

Alimentation 12V et Raspberry Pi 3

Une des problématiques que nous avons rencontré concerne l’alimentation des boutons de notre circuit : ceux-ci sont prévus pour fonctionner en 12V alors que le Raspberry Pi 3 que nous utilisons produit au maximum une alimentation de 5V.

Nous avons donc créé un circuit électrique composé de deux alimentations, la première étant celle du Pi (5V) et une alimentation externe achetée en boutique délivrant du 12V ainsi que de deux masses. Pour choisir quand laisser passer le courant 12V, nous avons utilisé des transistors TIP120.

Composant TIP120

Le principe est simple, l’envoi de courant dans la première patte de ce composant permet de connecter les deuxième et troisième pattes de celui-ci.

Lorsque nous voulons déclencher l’allumage d’un bouton, notre Raspberry Pi envoie du courant dans la première patte du TIP120, celle-ci donne l’instruction de connecter les deux autres qui font partie du circuit 12V.

 

Tableau d’affichage en temps réel

Pendant les deux journées d’Android Makers, nous avons invité les gens à jouer sur notre stand. Un tableau de scores en temps réel était affiché avec les prénoms des participants ayant obtenus les meilleurs scores.

Ce tableau de bord est une application Vue.js utilisant Firebase pour la gestion de la base de données et le temps réel.

Au fur et à mesure des parties, le Raspberry Pi envoie les informations de partie à Firebase. Vue.js étant abonné à Firebase, les modifications arrivent instantanément sur le tableau d’affichage tout au long des parties.

Capture d'écran du tableau des scores

Nous avions quelques craintes, au départ, sur la capacité de Firebase à propager les informations aussi rapidement que le joueur joue, finalement, Firebase a grandement rempli son rôle puisque nous avons même pu jouer un son juste après que le joueur ait appuyé sur un bouton.

De la plaque de prototypage au boîtier

Rapidement, une autre des contraintes que nous avons rencontrée est le nombre de fils à connecter et la fragilité de ceux-ci.

Comme énoncé précédemment, chaque bouton dispose de 4 ports. Il y a 4 boutons, ce qui fait un minimum de 16 fils à connecter sur la plaque de prototypage.

Nous avons rapidement vu les limites de notre montage : casse des fils, faux contacts…

Photo des premiers prototypes complexes

 

Nous avons donc pris deux actions pour rendre ce montage transportable et solide.

  • L’utilisation de câbles USB pour limiter le nombre de fils entre la plaque et les boutons.
  • Impression d’un boîtier en 3D pour y fixer le Raspberry Pi 3 ainsi que la breadboard.

Câbles USB

Photo rallonge usb

Nous avons eu l’idée d’utiliser des rallonges USB pour pouvoir facilement brancher et débrancher nos boutons.

En coupant un câble male – femelle en deux, nous obtenons deux extrémités simples à brancher.

Comme les câbles USB sont composés de 4 fils, nous pouvons reproduire le même schéma que précédemment mais en limitant le nombre de câbles à l’air libre. Le câble USB devient alors une gaine assez pratique.

 

 

Un boîtier fait maison

Sachant que notre circuit allait être déplacé, nous avons fait le choix de créer et imprimer un boîtier pour y fixer notre circuit et limiter au maximum les mouvements des fils.

Sur les côtés nous avons prévu des ouvertures pour les branchements d’alimentation, HDMI, ethernet, USB…

 

Boitier 3d Boitier 3d vue interne

 

Take Away

L’arrivée des technologies comme Android Things rend possible la création artisanale mais aussi industrielle de produits complets comportant des parties matérielles et logicielles.

En combinant ces différentes technologies modernes, il devient alors possible de prototyper un jeu connecté, en temps réel basé sur des technologies fiables et avec une expérience de développement proche des pratiques habituelles dans le monde Android.

Vidéo illustration du jeu

Retrouvez les sources de Simon (dashboard + Android Things) sur le dépôt Android Makers Stand de Xebia.

 

Publié par

Publié par Michaël Ohayon

Développeur Android et grand curieux, Michaël est polyvalent et passionné du développement. Retrouvez le sur Twitter @MikkL autour de sujets variés, des circuits électroniques Android Things à l'entrainement de modèles de reconnaissance sur Docker.

Commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nous recrutons

Être un Xebian, c'est faire partie d'un groupe de passionnés ; C'est l'opportunité de travailler et de partager avec des pairs parmi les plus talentueux.