Salut les Pincabeurs,
Toujours dans un souci d'aller plus loin et de sortir des sentiers battus,
[Vous devez être inscrit et connecté pour voir ce lien] et moi-même avons décidé de chercher une alternative au Teensy qui n'est pas forcément bon marché (~40€).
Après une batterie de tests avec différentes cartes présentes sur le marché, il s'est avéré que la plus intéressante pour établir un clone de Teensy est la WEMOS D1 mini PRO (environ 4~10€).
Pour commencer, je tiens à remercier
[Vous devez être inscrit et connecté pour voir ce lien] et Swisslizard qui ont écrit le code source du teensy et ont permis au DOF d'interagir avec nos ledstrips, sans eux et sans leur code source, il n'y aurait pas eu cette réflexion de notre part.
Ensuite je remercie bien évidemment
[Vous devez être inscrit et connecté pour voir ce lien] qui, grâce à ses talents de codeur
, a réussi à trouver l'astuce pour convertir le code du Teensy et l’adapter à la WEMOS.
Ceci étant fait, passons aux pré-requis et au tuto en lui-même
------------------------------------------------------------
OBJECTIF DE LA SOLUTION
------------------------------------------------------------La solution présentée dans ce tuto est d'obtenir les effets proposée dans VPX avec le Teensy Controller et son shield OctoWS2811. Voici une petite vidéo des effets attendus (merci à
[Vous devez être inscrit et connecté pour voir ce lien] pour la mise en ligne des vidéos
)
Le but est donc de contrôler deux "sideboard" sur chaque coté du playfield et un "backboard" composés de plusieurs rangées de ledstrips placés au-dessus du playfield, à la place des 5 "led flashers" habituels , et même des ledrings maintenant .
Changelog : V0.1 Auteur
[Vous devez être inscrit et connecté pour voir ce lien]Il s'agit du tout premier code qui a pour objectif de tester le bon fonctionnement, les effets peuvent sembler un peu limité et ça manque de peps (de mon propre aveu) mais mon objectif est de rendre tout ça plus vivant à terme.
- effet type "chenillard" qui s'active lors de l'appui sur le bouton launch ball
- un effet stroboscope pour le stroboscope, le shaker et la cloche
- un effet simple permettant d'allumer des leds sur des zones prédéfinis (1/5e de chaque ledstrip) lorsqu'un contacteur s'active
- pour ce dernier, le code implémente une fonction permettant de choisir une couleur au hasard (random).
Changelog : V1.00 Auteur
[Vous devez être inscrit et connecté pour voir ce lien]Il s'agit de la première version du code étant 100% compatible avec les effets Teensy du DOF. Elle passera en version 1.0 lorsqu'une batterie de tests plus approfondis aura été effectuée, mais nous sommes déjà deux à tester cette version et pour l'instant, c'est 100% fonctionnel !
Changelog : V1.01 Auteur
[Vous devez être inscrit et connecté pour voir ce lien]Ajout du port D8, possibilité de connecter 4 ledstrips au lieu de 3 précédemment !
Changelog : V1.02 Auteur
[Vous devez être inscrit et connecté pour voir ce lien]Ajout du port D4 et D1 , possibilité de connecter 6 ledstrips au lieu de 4 précédemment !
Changelog : V1.03 Auteur
[Vous devez être inscrit et connecté pour voir ce lien] - Correction mineure du code .
- Ajout du port D2 et D3 , possibilité de connecter 8 ledstrips .
------------------------------------------------------------
PREREQUIS
------------------------------------------------------------Au niveau Hardware :
- Un WEMOS D1 mini PRO : Ebay 9.39€ depuis Espagne ou Ebay 4.79 € depuis la Chine .
- Un cable Micro- USB to USB pour raccorder votre WEMOS à votre PC , vérifier qu'il transmette bien le DATA .
- Du ledstrip adressable compatible WS2811 ou WS2812, trouvable sur des sites comme Aliexpress ou Ebay. A noter que les ledstrips existent en 30 Leds/M , 60 Leds/m , 144 Leds/m et bien d'autres formats obscures .
ATTENTION : les 144Leds/m sont difficilement sécables donc plus difficile à raccourcir, cela réclame de la minutie et pas mal de sang froid lorsqu'il s'agit de les "bidouiller" (cf. WIP de kakou). Par contre les 144 leds/m permettent d'avoir des effets plus fluides.
- des résistances : de 220 ohm à 470 ohm de préférence ( En cours d'analyse )
- des condensateurs : 6.3v 1000uf de préférence .
- un support pour la fixer ( sur demande en MP
[Vous devez être inscrit et connecté pour voir ce lien] )
[Vous devez être inscrit et connecté pour voir cette image]- l'outillage habituel : fer à souder étain, pince etc...
A noter : pour l'instant le code a été testé avec un peu plus de 720 LEDs.Au niveau Software :- l'application Arduino IDE (version au 27/06/2017 1.8.3) pour uploader le code sur le WEMOS .
- le code Arduino à injecter sur le WEMOS dispo sur notre Git Hub .
- le DOF Modifié (dans l'attente d'une intégration officielle) .
- Net framework 3.5 via AIO Runtime suivre le tuto .
------------------------------------------------------------
TUTORIEL
------------------------------------------------------------1ère étape : Connexion des ledstrips au WEMOS (Phase rédigée par
[Vous devez être inscrit et connecté pour voir ce lien], Merci pour sa contribution
)
Il y a 3 pins sur les ledstrips :
rouge : +5V
VERT : data
blanc : GND
Pour la connexion a la wemos, pour la backboard par exemple :
L <---- Rouge ----> +5V de l'alimentation
E <---- DATA ----> résistance <---------------> D5 Wemos
D <---- Blanc ----> Gnd de l'alimentation + Gnd Wemos
[Vous devez être inscrit et connecté pour voir cette image]En plus de la résistance qui protège le ledstrip , il est fortement conseillé de mettre un condensateur entre les rouges/blancs qui sont connectés à l'alimentation, pour lisser la tension .
Ce qui nous donne :
[Vous devez être inscrit et connecté pour voir cette image]Le fil arrive sur le ledstrip :
[Vous devez être inscrit et connecté pour voir cette image]Connexion de 2 ledstrips , on relie les fils ensemble (le fil rouge sur le fil rouge, le fil vert sur le vert ...)
Il est fortement conseiller de ré-injecter du jus tous les 100 leds (je le fait tous les 144, soit 2 strips de 50cm)
Pour cela, brancher le fil rouge sur le 5V de l'alim, et le blanc sur le GND de l'alim (cable en Y, et mettre un condensateur)
[Vous devez être inscrit et connecté pour voir cette image]Montage expérimental avec 3 ledstrips de 5O cm :
[Vous devez être inscrit et connecté pour voir cette image]Montage final avec 8 ledstrips de 50cm (8x72 leds) montés en série :
[Vous devez être inscrit et connecté pour voir cette image]Vous pouvez connecter 7 autres ledstrips sur les ports suivants D6 , D7 , D8 , D1 , D2 , D3 & D4 , Exemple :
[Vous devez être inscrit et connecté pour voir cette image]ATTENTION : bien penser à regarder le sens de connexion des leds sur les ledstrips. Il y a soit un logo "<" pour indiquer le sens ou "DIN" "DOUT". Si vous ne respecter pas ce sens le ledstrip ne fonctionnera pas tout simplement 2ème étape : Flashage du WEMOSIl faut commencer par installer l'Arduino IDE. C'est assez simple, vous cliquer sur l'exécutable et vous installer le logiciel en cliquant sur suivant etc... Après avoir installé l'Arduino IDE, il reste quelques manipulations à opérer pour rendre le logiciel 100% compatible avec le code à injecter. Pour celà on va ajouter des "librairies" et notamment :
- la librairie "FastLed" qui permet de gérer les leds
- la librairie "ElapsedMillis" qui sert à ... j'en sais rien du tout
- la librairie WEMOS qui permet de gérer la WEMOS
On commence par la librairie Fastled.
- On clique sur "Croquis" --> "Inclure une bibliothèque" --> "Gérer les bibliothèques"
- Une fois sur le Gestionnaire de bibliothèque, faites une recherche en tapant "Fastled"
- Cliquer sur le lien de la bibliothèque et installer là ( Version 3.1.6 )
Puis la librairie ElapsedMillis, même principe :
- Une fois sur le Gestionnaire de bibliothèque, faites une recherche en tapant "ElapsedMillis"
- Cliquer sur le lien de la bibliothèque et installer là ( Version 1.0.4 )
Ensuite on passe à l'ajout de bibliothèque WEMOS
- On clique sur "Fichier" --> "Préférences"
- On ajoute la ligne de texte "http://arduino.esp8266.com/stable/package_esp8266com_index.json" comme indiquer sur la capture d'écran
[Vous devez être inscrit et connecté pour voir cette image]- On clique sur OK
- On clique sur "Outils" --> "Type de Carte" --> "Gestionnaire de Carte"
- Et on installe la librairie pour la ESP8266 ( Version 2.4.2 )
[Vous devez être inscrit et connecté pour voir cette image]C'est assez long si vous avez une connexion internet en carton comme moi
Maintenant il faut télécharger le code depuis le Git Hub.
- On clique sur "Clone or Download" --> "Download Zip"
- On dézippe le fichier et on renomme le dossier en PincabLedStrip
- On double clique sur le fichier PincabLedStrip.ino
Normalement le code s'ouvre dans Arduino IDE.
Il faut modifier le code suivant dans le fichier "Ledstrip.h"
- Code:
-
/************* VALUE TO CHANGE *******************/
//Defines the max number of ledstrip which is allowed per ledstriptrip.
#define MaxLedsPerStrip 432
//Defines the number of ledstrip
#define NUMBER_LEDSTRIP 3
//Defines Brightness
#define BRIGHTNESS 255
/************* END VALUE TO CHANGE *******************/
- En face de MaxLedsPerStrip, indiquez le nombre Max de leds par ledstrip (normalement c'est le nombre de leds sur votre backboard , pour être tranquille mettez 1000
)
- En face de NUMBER_LEDSTRIP , vous mettez le nombre de ledstrips sachant que le maximum est 6 .
- En face de Brigthness, vous pouvez régler la luminosité des leds. La valeur doit être comprise entre 0 et 255, le maximum de luminosité étant 255.
Une fois celà fait, vous êtes prêt à injecter le code. On connecte donc la carte WEMOS via le câble USB au PC.
- On clique sur "Outils" --> "Type de Carte"
- On choisit la carte "LOLIN/WEMOS D1 Mini Pro" et uniquement celle ci
- On choisit le port, normalement c'est tout sauf port COM1 et on note le port dans sa tête ou sur un bout de papier (pour mon exemple je vais prendre port COM4)
- Ensuite on clique sur "Croquis" --> "Téléverser"
Et si tout se passe bien, le code devrait être injecter dans la WEMOS et vous avez un clone de Teensy
Reste à faire comprendre au DOF qu'il a bien à faire à une teensy pour que la magie opère...
3ème étape : Configuration et installation du DOF- Tuto DOF
[Vous devez être inscrit et connecté pour voir ce lien]- Télécharger le DOF Modifié .
- Copier et remplacer les fichiers dans votre dossier DirectOutput.
Ensuite il faut établir les fichiers nécessaires dans votre Dossier config du DOF
Cette partie est extraite du tuto de [Vous devez être inscrit et connecté pour voir ce lien], merci à lui dans le config tool
[Vous devez être inscrit et connecté pour voir ce lien]|-> cliquer sur l'onglet "My Account"
|-> ajouter un WS2811
[Vous devez être inscrit et connecté pour voir cette image]|-> cliquer sur l'onglet "Combine Toys"
|-> créer les combos suivants (à adapter en fonction de ce que vous souhaitez)
[Vous devez être inscrit et connecté pour voir cette image]|-> cliquer sur l'onglet "Port Assignements"
|-> Sélectionner votre carte WS2811 nouvellement créée
|-> assigner les combos nouvellement créés comme ceci
[Vous devez être inscrit et connecté pour voir cette image]|-> sauver et générer vos fichiers
|-> copier le contenu du fichier zip dans votre dossier config
Voici la liste des effets disponibles pour leds adressables
[Vous devez être inscrit et connecté pour voir cette image]Passons maintenant aux derniers fichiers requis : le fichier cabinet.xml et les fichiers GlobalConfig.xml
Ces deux fichiers seront à placer dans le dossier config avec vos fichiers ini.Pour le
cabinet.xml, un simple éditeur de texte suffit (moi je préfère Notepad++, mais chacun ses goûts)
Pour vous aider, voici les fichiers établis par
[Vous devez être inscrit et connecté pour voir ce lien] :
- Code:
-
<?xml version="1.0"?>
<Cabinet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>Pincab 3 ports</Name> <!--Nom de votre pincab par exemple-->
<OutputControllers>
<TeensyStripController>
<Name>LedStripController</Name>
<NumberOfLedsStrip1>216</NumberOfLedsStrip1> <!--backboard , port 1 du dof , d5-->
<NumberOfLedsStrip2>73</NumberOfLedsStrip2> <!--sideboard right , port 4 du dof , d6-->
<NumberOfLedsStrip3>73</NumberOfLedsStrip3> <!--sideboard left , port 7 du dof , d7-->
<NumberOfLedsStrip4>0</NumberOfLedsStrip4> <!--Inutilisé-->
<NumberOfLedsStrip5>0</NumberOfLedsStrip5> <!--Inutilisé-->
<NumberOfLedsStrip6>0</NumberOfLedsStrip6> <!--Inutilisé-->
<NumberOfLedsStrip7>0</NumberOfLedsStrip7> <!--Inutilisé-->
<NumberOfLedsStrip8>0</NumberOfLedsStrip8> <!--Inutilisé-->
<ComPortName>COM3</ComPortName> <!--Port com pour la wemos/teensy-->
</TeensyStripController>
</OutputControllers>
<Toys>
<LedStrip>
<Name>BackBoard</Name> <!--Nom du toys-->
<Width>54</Width> <!--Largeur-->
<Height>4</Height> <!--hauteur-->
<LedStripArrangement>LeftRightAlternateBottomUp</LedStripArrangement> <!--Sens des effets-->
<ColorOrder>GRB</ColorOrder> <!--Ordre des couleurs-->
<FirstLedNumber>1</FirstLedNumber> <!--Démarrage de votre premier bandeau à la led 1-->
<FadingCurveName>SwissLizardsLedCurve</FadingCurveName>
<OutputControllerName>LedStripController</OutputControllerName>
</LedStrip>
<LedStrip>
<Name>Sideboard Right</Name>
<Width>1</Width>
<Height>73</Height>
<LedStripArrangement>TopDownLeftRight</LedStripArrangement> <!--Sens des effets-->
<ColorOrder>GRB</ColorOrder>
<FirstLedNumber>217</FirstLedNumber> <!--Démarrage du deuxième bandeau à la led 216+1=217-->
<FadingCurveName>SwissLizardsLedCurve</FadingCurveName>
<OutputControllerName>LedStripController</OutputControllerName>
</LedStrip>
<LedStrip>
<Name>Sideboard Left</Name>
<Width>1</Width>
<Height>73</Height>
<LedStripArrangement>TopDownLeftRight</LedStripArrangement>
<ColorOrder>GRB</ColorOrder>
<FirstLedNumber>290</FirstLedNumber> <!--Démarrage du troisième bandeau à la led (216+73=289)+1=290-->
<FadingCurveName>SwissLizardsLedCurve</FadingCurveName>
<OutputControllerName>LedStripController</OutputControllerName>
</LedStrip>
<LedWizEquivalent>
<Name>LedWizEquivalent 30</Name> <!--Doit correspondre à votre directoutput.ini-->
<Outputs>
<LedWizEquivalentOutput>
<OutputName>BackBoard</OutputName>
<LedWizEquivalentOutputNumber>1</LedWizEquivalentOutputNumber> <!--Port 1 sur le dof config tool-->
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>Sideboard Right</OutputName>
<LedWizEquivalentOutputNumber>4</LedWizEquivalentOutputNumber> <!--Port 4 sur le dof config tool-->
</LedWizEquivalentOutput>
<LedWizEquivalentOutput>
<OutputName>Sideboard Left</OutputName>
<LedWizEquivalentOutputNumber>7</LedWizEquivalentOutputNumber> <!--Port 7 sur le dof config tool-->
</LedWizEquivalentOutput>
</Outputs>
<LedWizNumber>30</LedWizNumber>
</LedWizEquivalent>
</Toys>
</Cabinet>
Concrètement, on voit ici que :
|-> la carte WEMOS est sur le port COM3.
|-> Qu'il y a une Backboard de 54 pixels de large sur 4 pixels de haut.
|-> le sens de raccordement des ledstrip du backboard est "LeftRightAlternateBottomUp".
|-> et que l'on a un ledstrip de 73 leds sur chaque coté du playfield.
Pour la backboard, voici la nomenclature à utiliser pour le sens de montage
[Vous devez être inscrit et connecté pour voir cette image]Ensuite, via global configuration editor, on crée un fichier GlobalConfig dans le dossier config (on clic sur file en haut a gauche puis save as)
Et on copie colle ce fichier pour avoir les trois suivants :
- GlobalConfig.xml
- GlobalConfig_B2SServer.xml,
- GlobalConfig_PinballX.xml
Concrètement ça devrait ressembler à celà :
- Code:
-
<?xml version="1.0" encoding="utf-8"?>
<!--Global configuration for the DirectOutput framework.-->
<!--Saved by DirectOutput Version 0.9.5818.37242: 2017-04-10 11-31-16-->
<GlobalConfig>
<LedWizDefaultMinCommandIntervalMs>1</LedWizDefaultMinCommandIntervalMs>
<LedControlMinimumEffectDurationMs>60</LedControlMinimumEffectDurationMs>
<LedControlMinimumRGBEffectDurationMs>120</LedControlMinimumRGBEffectDurationMs>
<IniFilesPath>C:\DirectOutput\config</IniFilesPath>
<ShapeDefintionFilePattern>C:\DirectOutput\config\DirectOutputShapes.xml</ShapeDefintionFilePattern>
<CabinetConfigFilePattern>C:\DirectOutput\config\cabinet.xml</CabinetConfigFilePattern>
<TableConfigFilePatterns />
<EnableLogging>true</EnableLogging>
<ClearLogOnSessionStart>true</ClearLogOnSessionStart>
<LogFilePattern>C:\DirectOutput\DirectOutput.log</LogFilePattern>
</GlobalConfig>
Ou vous pouvez téléchargez mon pack contenant les 3 fichiers , à condition d'avoir le DOF installé à la racine du C:/
Pour activer les effets dans PinballX il faut copier le DirectOutputPinballXPlugin.dll du dossier Directoutput dans le dossier Plugins de PinballX, et passer par le Plugin manager de celui-ci et activer le plugin direct output ) , le
[Vous devez être inscrit et connecté pour voir ce lien] sinon ..
[Vous devez être inscrit et connecté pour voir cette image]Have Fun !
MERCI DE NE PAS COPIER NI DIFFUSER CE TUTO SANS L’AUTORISATION EXPLICITE DE L’AUTEUR