C’est quand qu’on arrive ?

Communication

Peu d’articles dans ce blog, mais du progrès coté programmation ! Le raspberry et l’arduino communiquent enfin !

L’arduino renvoie en temps réel l’état des capteurs (matrice de switch), mais aussi boutons cablés en direct (flips et bouton start). Le raspberry traduit ça en score via mpf.

De son coté, le raspberry/mpf envoie les macros matérieles pour que l’arduino réagisse plus rapidement et en autonomie au bumpers, slingshots et flips.

 

Une courte démo:

 

De nouveaux problèmes…

Raspberry instable

Depuis peu, et sans raison apparente, je subis des plantages réguliers du raspberry, complètement freeze. J’exclus un problème d’alimentation car le raspberry est directement relié à une alim ATX de PC, que j’imagine plutôt stable et pas en manque de puissance. Pourtant j’ai souvent le logo de pb d’alim en surbrillance sur l’écran. Les processus python mpf sont à 98% d’occupation du processeur.

J’ai pensé à de la surchauffe car je n’ai pas installé les dissipateurs sur le raspberry, mais je ne trouve pas celui ci trop chaud. Dans le doute j’ai ajouté un ventilateur, mais sans résultat.

Dialogue de sourd

Je perds des morceaux de trames du raspberry vers l’arduino. Dans l’autre sens la communication est stable et complète. Bizarrement, c’est plus stable à 115200 qu’à 9600 bauds.

 

Prochaines étapes

Debug, debug, debug, logiciel et matériel…

En parallèle, sans avoir besoin d’être devant le flipper, je continue le développement des règles du Supersonic dans les fichiers de configuration du mission pinball !

MPF – Mission Pinball Framework

Contrairement aux apparences, ceci est un flipper:

2016-11-19-17-41-29

Je concède qu’il faut encore beaucoup d’imagination, mais les briques [de lego] se mettent progressivement en place:

J’ai attaqué ma plateforme (mpf/platforms/rasppinball) pour intégrer la futur électronique maison dans le framework MPF : Mission Pinball Framework. Ce n’est pas trivial car cette partie n’est pas encore beaucoup documentée, mais grâce aux exemples des autres plateformes (opp, roc, …) je commence à m’en sortir.

Merci aussi au support de mpf sur les forums : mpf-users

Coté configuration, j’apprends le fonctionnement du mission pinball framework. Donc je vais intégrer le flipper « supersonic » d’origine pour le moment:

2016-11-13-18-14-29

L’émulateur clavier de switch est fonctionnel dans mpf. Le bouton « rouge » simule  la bille en position de départ, qui est aussi le drain dans ce flipper. Le bouton jaune est le bouton crédit/start.

Dans la vidéo, je dois appuyer sur les deux boutons afin que mpf accepte de préparer une partie avec une bille présente. Les autres boutons simulent les bumpers, cibles, etc. Les scores sont configurés sur quelques switchs seulement.

Sur l’écran, on peut voir incrustée la vidéo en sortie du raspberry (cadre noir), et au dessus la session ssh qui lance le framework (ssh bleu).

 

 

Suite des expériences à venir: implémentation des LEDS dans le framework, puis aussi jouer avec le « mpf monitor », qui affiche sur l’image du flipper l’état des capteurs et des actionneurs.

 

 

 

 

switch matrix

C’est le moment de rentrer dans la matrice !

 

Maintenant que j’ai la lumière, je vais tester les intéractions avec le raspberry.

Le moyen simple e était de jouer avec quelques contacts qui traînaient dans mes tas de récup, mais histoire de bosser comme dans le futur flipper, je me suis orienté vers une matrice de contacts.

Evidemment j’aurais pu simplement commander ceci:
sku_156679_1

Ma patience a préféré se laisser guider vers le « do it yourself »:

2016-11-06-14-40-242016-11-06-13-42-50

Une chute de plinthe Ikea, quelques vis, une canette de soda découpée en tranche. Les fils sont un peu longs mais ce sont des fils pré-découpés et pré-étamés. A quelques centimes le fil sur internet, faut arrêter de s’emm…

Et j’imagine que la qualité des contacts simulera parfaitement ceux du flipper !

Encore quelques lignes de code python, récupérée ici histoire de lancer rapidement quelques tests, et voici le résultat:

 

Le code, Modifié à la hache pour gérer du 4 x 4 :https://www.raspberrypi.org/forums/viewtopic.php?f=37&t=34235

 

Coté électronique et Raspberry, les résistances de rappels sont interne et configurable via la librairie GPIO, ce qui simplifie la mise en place.

 

Fiat lux

 

Premier pb, les leds ws2812 se pilotent en 5V, mais la logique du Raspberry fonctionne en 3.3V, du coup pas possible de faire une simple connexion. J’avais la chance d’avoir déjà commandé quelques 74HCT125 qui permettent, entre autre, de faire la conversion.

Comme je dois être la millionième personne qui cherche à piloter ces leds depuis un Raspberry, c’est parti pour creuser les pages google et trouver le bon tuto, la bonne lib, et après pas mal d’essais infructueux, voici une qui fonctionne bien, superbement bien expliquée:

http://popoklopsi.github.io/RaspberryPi-LedStrip/#!/ws2812

 

J’ai juste découpé un morceau du ruban à leds pour mes essais, voici ce que ça donne:

 

Prochaine étape, préparer un « banc de test » pour simuler un matrice de switch. Ca me donnera une base pour faire du dev sur le framework sans devoir rester dans le garage au coté du flipper 🙂

 

 

 

 

 

 

L’heure de la reprise

Après la sacro-sainte pause estivale où rien ne bouge, il est temps de me pencher à nouveau sur mon jouet.

Les idées sont bien définies dans ma tête, voici le début du plan:

  • L’intelligence sera portée par un raspberry, histoire que je joue un peu avec
  • Je vais utiliser le framework mph, et  du coup devoir développer et intégrer ma propre plateforme dans celui ci. Du coup ca va me faire bosser mon python !
  • Je prévoie d’utiliser les rubans de leds RGB pour remplacer les lampes sous le plateau, les effets multicolores sont souvent saisissants.
  • Je sais que je vais rapidement me retrouver à court d’entrées/sorties, j’ai donc prévu l’aide d’un arduino pour épauler le raspberry. Comme ça j’aurai un nouveau jouet à découvrir !

20161102_143140