Mise en garde:
1) Je n'autorise pas la copie de ce tuto sans mon autorisation pour d'autres forums que celui la. Merci de respecter mon travail de rédaction. Toutes les images (sauf celles présentant les objets) et les textes sont de moi.
2) Si vous vous lancez dans la réalisation de ce tuto, sachez que je ne serais pas responsable si vous grillez un truc; je décris ici ce que j'ai fait, et c'est ce qui fonctionne sans problème.
Bonjour!
Introduction:
Donc voilà, je vous présente mon Arduino dash board!
Je n'ai rien inventé, je ne fais que traduire en français le sujet en anglais qui se trouve sur le forum officiel de AC.
Par contre, je vais le rendre plus accessible, car celui du forum officiel n'est pas super super...
Le sujet du forum officiel se trouve ici:
http://www.assettocorsa.net/forum/index.php?threads/achub-arduino-dash-modular-customisable-multigame-rgb-leds-lcd-v1-10-4-2015-11-04.23329/
L'arduino qu'est ce que c'est?
C'est un petit contrôleur USB pour faire de la programmation. D'après ce que j'ai pu voir, on peut faire ce que l'on veut avec.
On peut faire ça:
ça:
Bref, voilà pour le tour de l'arduino.
Pour nous l’intérêt c'est de faire ça:
L'arduino c'est donc la base de ce dash board sur lequel on va rajouter ce que l'on désire ( des LEDs, des écrans digitaux, un écran LCD, etc); que l'on va appeler des modules.
I) Les composants:
Liste des courses obligatoires à faire:
Un arduino Nano V3:
www.dx.com/p/nano-v3-0-controller-module...o-boards-blue-383407
www.aliexpress.com/item/USB-Nano-V3-0-AT...5,searchweb201560_10
On peut en trouver un peu partout sur les sites chinois, et le prix varie entre 4€ et 7€ suivant s'il y a un câble USB (15cm) avec ou pas.
Des câbles dupont:
https://www.fasttech.com/product/1011800-40-pin-splittable-ribbon-cable-20cm
www.aliexpress.com/item/15cm-40P-1P-1P-F...ping/1490740858.html
www.aliexpress.com/item/Dupont-Line-Rasp...ale/32497961313.html
www.dx.com/p/dupont-line-1p-1p-40-pack-20cm-length-121338
Liste des courses des modules:[/u]
Là c'est à vous de faire votre choix, je propose ici ce qui est compatible avec l'arduino.
On peut brancher 6 modules sur un seul arduino, ce qui est plus que suffisant.
Module TM1638:
www.dx.com/p/jy-mcu-8x-green-light-digit...or-led-module-104329
www.aliexpress.com/item/F71A-8-Digital-T..._5,searchweb201560_9
www.fasttech.com/products/0/10001789/112...ric-display-red-8-pu
OU
www.fasttech.com/products/0/10006503/149...-tube-red-led-module
Module TM1637:
www.dx.com/p/0-36-led-4-digit-display-mo...rduino-boards-254978
www.aliexpress.com/item/Free-shipping-4-..._5,searchweb201560_9
OU
www.dx.com/p/4-digit-display-d4056a-0-56...-317103#.Vbkh3_ntlBc
Module MAX7219 / MAX7221 (7 Segment modules):
www.dx.com/p/max7219-led-dot-matrix-digi...odule-cascade-391256
www.aliexpress.com/item/Red-MAX7219-8-Di..._5,searchweb201560_9
OU
www.dx.com/p/max7219-led-dot-matrix-digi...igital-module-408593
www.aliexpress.com/item/MAX7219-8-Digit-..._5,searchweb201560_9
www.aliexpress.com/item/MAX7219-Digital-..._5,searchweb201560_9
Module MAX7219 / MAX7221 (Led Matrix module):
www.dx.com/p/max7219-dot-matrix-module-w-5-dupont-lines-184854
www.aliexpress.com/item/MAX7219-dot-matr...5,searchweb201560_10
Module WS2812b RGBLEDS:
A l'unité:
www.dx.com/p/8-bit-ws2812-5050-rgb-led-d...l-color-drive-387667
Vendu par 2:
www.aliexpress.com/item/Free-Shipping-2p...lor/32479935020.html
NOTE: il existe des versions avec câbles déjà soudé dessus, mais c'est vendu au mètre que l'on coupe à la longueur désirée; à titre d'exemple:
www.aliexpress.com/item/Hello-Fish-1m-WS..._5,searchweb201560_9
Module I2C LiquidCristal (WIP no finished):
www.dx.com/p/arduino-iic-i2c-serial-3-2-...-138611#.VbkiIfntlBc
www.aliexpress.com/item/IIC-I2C-TWI-Seri..._5,searchweb201560_9
II) Livraison:
Pour ceux qui ne sont pas habitués à commander ce genre de petits trucs de Chine, sachez qu'il faut en gros 2 à 3 semaines pour recevoir votre colis.
Pour suivre votre colis une fois que vous avez le numéro de suivi c'est ici:
suivichineposter.com/start_francepost.php
Un autre moyen de voir le suivi:
track-chinapost.com/starteub.php?code=
Ces deux liens sont sur le même site mais ça ne donne pas exactement les mêmes informations et des fois l'un fonctionne mieux que l'autre, donc faut tester les deux.
III) Assemblage/Programmation:
L'assemblage et la programmation vont de pair car faudra programmer suivant les pins que vous avez utilisés lors du montage.
La programmation dépendra aussi des modules que vous avez achetés.
Pour simplifier encore plus le truc, la liste des modules ci dessus est dans le même ordre d'apparition que dans le fichier de programmation.
Tous ça reste très accessible même pour les néophyte! (quand c'est bien expliqué

)
Assemblage:
Je vais décrire ce que j'ai fait, pour information j'utilise un module MAX7219 / MAX7221 (7 Segment modules) et deux modules WS2812b RGBLEDS.
Si vous regardez bien votre arduino, il y a des trucs d'écrit à côté de chaque pin sur la face opposée du circuit imprimé.
Voila ce que ça donne:
On va seulement se préoccuper des deux colonnes arduino et des deux AVR pin: c'est la même chose, juste le nom qui change.
Je mets cette image "lourde" car il se peut que vous trouviez, sur le net, des photos qui font référence à ce que l'on fait mais certains utilisent appellation AVR pin pour le câblage.
J'utiliserais les colonnes arduino, puisque c'est le cas pour la programmation.
Même chose sur la face arrière du module (ici le MAX7219 / MAX7221 7 Segment modules):
On prend 5 dupont, l'aduino et le MAX7219 / MAX7221 7 Segment modules:
1) reliez le 5V de l'arduino (4ème pin de la colonne de droite) au VCC du module du côté où se trouve le DIN, ici, à droite (cf photo).
2) reliez le GND (terre/-) de l'arduino (2ème pin de la colonne de droite) au GND du module toujours du côté où se trouve le DIN, ici, à droite (cf photo).
3) reliez le DIN du module à un des pins de la colonne de gauche de l'arduino qui porte une appellation entre D2 et D12. J'ai choisi D3 de façon arbitraire.
4) reliez le CLK du module (toujours celui de droite) à un des pins de la colonne de gauche de l'arduino qui porte une appellation entre D2 et D12. J'ai choisi D4 de façon arbitraire.
5) reliez le LOAD du module (toujours celui de droite) à un des pins de la colonne de gauche de l'arduino qui porte une appellation entre D2 et D12. J'ai choisi D5 de façon arbitraire.
6) câblage fini.
Praparation du module WS2812b RGBLEDS:
Le problème de ce module c'est qu'il n'a pas de pin sur la face arrière (c'est le seul module avec cette particularité):
On va donc devoir souder un côté des 3 dupont et relier les deux WS2812b RGBLEDS en série comme ça:
J'en ai pris 2, et je recommande d'en avoir 2, car 1 seul module ne représente que 8 LED, ça fait vraiment court (5,5cm).
Prenez 3 dupont, coupez leur l'extrémité puis dénudez les d'une longueur égale à la longueur à souder.
Mettez de l'étain sur la partie dénudé, puis soudez la à une des trois surfaces; faire ça 3 fois donc.
Prenez un dupont neuf, dénudez le sur 10cm et couvrez le d'étain.
Coupez en 3 morceaux de longueur suffisante pour relier les 2 modules (comme sur l'image ci dessus en rouge).
Il n'y a plus cas souder ces 3 morceaux.
Ça c'est le truc chiant à faire, l'astuce est de mettre assez d'étain sur le câble pour que le soudage sur le module soit facile mais pas de trop pour pas que ça touche une autre borne et que ça fasse un faux contact.
On prend les 3 dupont préparé juste à l'instant, l'arduino et le WS2812b RGBLEDS.
1) reliez le GND du module au GND de gauche de l'aduino.
2) reliez le DIN du module à un des pins de la colonne de gauche de l'arduino qui porte une appellation entre D2 et D12. J'ai choisi D6 de façon arbitraire.
3) reliez le 4-7VDC du module au 5V de l'arduino. C'est déjà pris? ah bon?

. Là enfaite il y a 3 solutions, soit vous n'avez qu'un seul module MAX7219 / MAX7221 7 Segment modules et dans ce cas il suffit de relier ce 4-7VDC au VCC de la colonne de gauche du module MAX7219 / MAX7221, soit vous avez plusieurs modules MAX7219 / MAX7221 branché en série et dans ce cas il va falloir utiliser un connecteur de bornier droit pour dédoubler le dupont qui occupe le pins 5V; ou bien connectez le au VCC du dernier module MAX7219 / MAX7221, si vous en avez plusieurs, et s'ils sont tous assez proches (nous sommes limité par la longueur des câbles dupont).
4) câblage fini.
Note: vous pouvez très bien relier le GND du module WS2812b RGBLEDS au GND (colonne de gauche) du MAX7219 / MAX7221 comme pour le 5V vu à l'étape 3).
Programmation:
Déjà, il va falloir télécharger le soft pour programmer l'arduino:
www.arduino.cc/en/Main/Software
On l’installe.
Puis on va prendre le programme de Wotever (pour rappel, c'est celui qui a fait ce tuto sur le forum officiel) sur le forum de AC en bas de son premier post :
www.assettocorsa.net/forum/index.php?thr...-4-2015-11-04.23329/
et qui se nome: "LATEST VERSION V1.10.4"; cette version date donc du 4nomvembre 2015.
Je ne met pas le lien direct volontairement car c'est sa création, son travail, et que normalement vous avez tous un compte sur le forum officiel ::d.
Vous allez donc vous retrouver avec un fichier HubPackage.rar, qui une fois dézippé vous donnera ça:
On ouvre le fichier arduino et on a 2 fichiers: "DisplayClientV2" et "Libraries".
Il faut copier le contenu du fichier "Libraries" dans "C:\Program Files (x86)\Arduino\libraries".
Copiez le reste du fichier HubPackage dans vos documents.
Branchez votre arduino.
Ouvrez l'exécutable du programme de l'arduino.
Cliquez sur l'onglet "Outils", "Type de carte", puis sélectionnez "Arduino Nano":
Puis de nouveau "Outils", "Processeur", puis sélectionnez "ATmega328":
Puis de nouveau "Outils", "Port", puis sélectionnez le port où est branchez l'arduino, chez moi le COM8:
Puis fichier => ouvrir.
Et ouvrez le fichier "DisplayClientV2" qui se trouve donc dans "C:\Users\X_vos_documents_X\Documents\HubPackage\Arduino".
Là, au centre, vous voyez "HW SETTINGS, PLEASE REVIEW ALL" suivi d'une liste.
Cette liste est organisé suivant le(s) module(s) que vous avez (c'est pour ça que je vous fait chier avec leurs noms depuis le début

); le premier module étant le TM1638 suivi de l'hyperlien cliquable où vous l'avez acheté, donc si vous vous trompez de module, c'est que vous le faites exprès ::d.
Cherchez donc le premier module que vous possédez, pour moi c'est le "MAX7219 / MAX7221 7 Segment modules" et dessous il y a ça:
// 0 disabled, > 0 enabled
int MAX7221_ENABLEDMODULES = 0;
// DATA IN - pin of the first MAX7221
#define MAX7221_DATA 3
// CLK - pin of the first MAX7221
#define MAX7221_CLK 4
// LOAD(/ CS) - pin of the first MAX7221
#define MAX7221_LOAD 5
LedControl MAX7221 = LedControl(MAX7221_DATA, MAX7221_CLK, MAX7221_LOAD, MAX7221_ENABLEDMODULES);
Il va falloir changer 4 trucs:
// 0 disabled, > 0 enabled
int MAX7221_ENABLEDMODULES = 1; 1 car on veut activer 1 module, 0 signifiant désactivé, 1 = 1 module, 2 = 2modules, etc
// DATA IN - D3 D3 car c'est là que l'on a branché le pin DIN
#define MAX7221_DATA 3
// CLK - D4 D4 car c'est là que l'on a branché le pin CLK
#define MAX7221_CLK 4
// LOAD(/ CS) - D5 D5 car c'est là que l'on a branché le pin LOAD
#define MAX7221_LOAD 5
LedControl MAX7221 = LedControl(MAX7221_DATA, MAX7221_CLK, MAX7221_LOAD, MAX7221_ENABLEDMODULES);
Continuez de descendre pour trouver les modules suivants, pour moi les "WS2812b RGBLEDS" et dessous il y a ça:
// WS2812b chained RGBLEDS count
// 0 disabled, > 0 enabled
int WS2812B_RGBLEDCOUNT = 0;
// 0 leds will be used from left to right, 1 leds will be used from right to left
int WS2812B_RIGHTTOLEFT = 0;
// WS2812b chained RGBLEDS pins
#define WS2812B_DATAPIN 6
Adafruit_NeoPixel WS2812B_strip = Adafruit_NeoPixel(WS2812B_RGBLEDCOUNT, WS2812B_DATAPIN, NEO_GRB + NEO_KHZ800);
Que j'ai changé comme suit:
// WS2812b chained RGBLEDS count
// 0 disabled, > 0 enabled
int WS2812B_RGBLEDCOUNT = 16; car j'ai 2 modules de 8 LED, soit 16 LED au total
// 1 leds will be used from left to right, 0 leds will be used from right to left car mon module est à l'envers (trous de perçage vers le haut) et que je veux que les LED s'allument de gauche à droite
int WS2812B_RIGHTTOLEFT = 1; même raison que précédemment
// WS2812b chained RGBLEDS pins D6 car c'est là que l'on a branché le pin DIN
#define WS2812B_DATAPIN 6
Adafruit_NeoPixel WS2812B_strip = Adafruit_NeoPixel(WS2812B_RGBLEDCOUNT, WS2812B_DATAPIN, NEO_GRB + NEO_KHZ800);
La manipulation est globalement la même pour les autres modules, à savoir:
_ s'il y a une ligne int XXXXXXX_ENABLEDMODULES = 0 , faut changer le 0 en 1 pour l'activer.
_ configurer les pins ou est branché les modules "DATE IN" (DIN); "CLK"; et "LOAD".
_ etc...
Il faut maintenant vérifier et téléverser le programme:
Une fois fini, vous verrez, et s'il n'y a pas eu de problème, dans la barre verte en bas "téléversement terminé".
Si c'est le cas, c'est fini, il ne reste plus qu'à lancer le programme qui gère l'arduino qui se trouve dans C:\Users\Mick\Documents\HubPackage\AC et qui se nome "ACHub" et de préférence en mode administrateur. (Il est évident que pour les autres simu, il faudra lancer le Hub adéquat: "IRacingHub" pour Iracing, "PCarsHub" pour PCars, "ETS2Hub" pour EuroTruckSimulator2, et "CodemastersHub" pour les jeux Codemasters. Chacun de ses "Hub" se trouvant dans leurs fichier respectif.)
Si tout se passe bien vous verrez l'heure s'afficher sur le module 5 secondes après avoir lancé le programme:
Si l'heure s'affiche de façon inversé (c'est à dire que vous avez mis les points de l'afficheur vers le bas, ce qui est la logique) il suffit d'aller dans "Plugins", de cliquer sur "TM1638Plugin", puis de cliquer sur l'onglet "settings", puis de décocher la case "Reverse module 1" dans "7 segments orientation".
Il n'y a plus rien d'autre à faire, mise à part lancer Assetto Corsa.
Évidemment, il faudra lancer le ACHub à chaque fois.
IV) Fonction:
Dans l'onglet "Général":
Voici les fonctions pour le "INPUT MAPPING":
Pour créer une nouvelle action, il suffit de cliquer sur "NEW", puis de sélectionner le "INPUT" puis l'action à assimiler puis "ADD".
On peut choisir 3 types d'action: "Short press", "Long press" et "Do while pressing": ce qui correspond aux 3 types d'action que l'on peut faire avec un bouton simple.
On peut également créer un "EVENTS MAPPING":
Ici, à un évènement en jeu, on assimile une action.
Par exemple, je vais lui dire qu'à chaque sortie de stand qu'il m'affiche pendant 3 secondes le nombre de tours restant pour la quantité donnée d’essence dans le réservoir. Puis, je fais "ADD".
Dans l'onglet "Plugins" puis le sous menu "Core Data Plugin":
Ici on peut créer une expression en C#.
Je ne m'y connais pas du tout, donc j'en dirais pas plus.
Dans l'onglet "Plugins", sous menu "TM1638 Plugin", puis onglet "Screens":
Si on clique sur "New" une fenêtre pour un "Screen editor" apparait.
Je n'ai pas encore trouvé comment ça marche

.
Dans l'onglet "Plugins", sous menu "TM1638 Plugin", puis onglet "Leds mapping":
Ici, on va pouvoir gérer les LED, créer un nouvel évènement (rotation, nombre de tour d'essence, pourcentage d'essence, meilleur temps, meilleur delta de la session, meilleure progression du delta, meilleure progression du delta lors de la session, turbo, pourcentage du turbo).
Dans l'onglet "Plugins", sous menu "TM1638 Plugin", puis onglet "Settings":
Ici on va gérer les réglages globaux tells que Reverse module" (pivoter l'affichage de 180°), l'ordre des écrans, l'intensité lumineuse, taux de rafraichissement, les alertes (% de rotations où les LED s'allument, % de rotation ou le LED clignotent, quantité de carburant minimum pour activer l'alerte, temps avant prochaine répétition avant nouvelle alerte pour avertir du niveau d'essence et temps d'affichage de l'alerte).
V) Simu/jeux compatible:
Comme je l'ai évoqué plus haute, ce Hub est compatible avec diverses simu et jeux:
_ Assetto Corsa
_ Iracing
_ Pcars
_ EuroTruckSimulator2
_ Les jeux Codemasters (Dirt Rally, Grid Autosportles, la série des F1, etc...)
VI) Documentation/Bug:
Documentation en anglais:
github.com/zegreatclan/AssettoCorsaTools/wiki
Bugs:
github.com/zegreatclan/AssettoCorsaTools/issues
VII) Prix:
Comme vous l'aurez compris, il n'y a pas vraiment de prix pour un montage de ce type, c'est à vous de voir ce que vous voulez.
Mais pour donner un ordre d'idée et un prix de base: un arduino + câbles duponts + 1 module TM1638 + 2 modules WS2812b RGBLEDS ça revient à 13,59€.
Par contre, et dans cet exemple là, il faudra avoir un fer à souder pour souder les modules WS2812b RGBLEDS.
Je ne compte pas le prix de la boite qu'il faut faire pour accueillir les modules qui est une question de finition, de gout et de couleur.
VIII) Discution:
1) Pour le choix de l'afficheur à 8 chiffres TM1638, MAX7219 ou MAX7221 il faut faire attention et avoir une idée précise de ce que vous voulez faire comme finition, si c'est le cas. Car la hauteur des pins de branchement des dupont est supérieur à la hauteur de l'afficheur car oui les pins sont sur la face avant (vive la logique); donc si vous voulez coller l'afficheur au bord d'une boite, ça ne sera pas possible. Une solution possible est de faire comme dans la vidéo de présentation plus haut, c'est à dire fixer vos modules sur une plaque arrière, et mettre une vitre opaque sur tout l'avant: ni vu ni connu.
J'ai trouvé d'autre lien, pour ces mêmes afficheurs mais dont les pins sont soit pas soudé, donc à souder soit même sur la face arrière, soit avec des pins coudé.
Regardez bien les images et la description des produits sur les sites de vente: je prends l'exemple de celui la
www.aliexpress.com/item/Red-MAX7219-8-Di..._5,searchweb201560_9
: il a des pins coudé sur le côté de la face avant dont la hauteur est inférieur à la hauteur de l'afficheur mais il n'a pas de pin du coté OUT. C'est très bien pour quelqu'un qui ne souhaite qu'un seul afficheur mais si vous voulez en brancher d'autre, je vous rappelle qu'il faut les brancher en série, et donc dans ce cas, faudra souder des pins (pas vendu avec) de l'autre côté.
2) J'ai quelques petits problèmes avec mon arduino, je ne sais pas s'il a un défaut ou que si c'est normal. Lorsque je le laisse branchez en continu tout marche sans problème, mais si je le débranche, que j'utilise mon PC pour d'autre activité et que je le rebranche pour refaire des tours, là ça ne marche plus. Et même pire, le connecteur USB ou je le branche cesse de fonctionner, je dois redémarrer le PC.
3) Sur ma rangé de LED pour les rotations, la dernière LED a un peu de mal, elle ne clignote pas en même temps que les 2 autres (cf: les 4 dernières LED sont rouge, et les 3 dernière clignote en rouge donc au rupteur). Je vais voir si c'est moi qui ai fait une connerie (en collant le fer à souder trop longtemps par exemple) ou si c'est un bug, ou si c'est un défaut de la LED.
4) Sur le tutoriel originel, vous pouvez voir qu'il parle du "74HC595 Shift register, DIY one 7seg module for gear indicator" suivi du lien
lucidtronix.com/tutorials/2
. Je n'en parle pas ici car ce module la il faut le créer soit même, à savoir qu'il faut acheter le circuit imprimé, les 8 résistances, la puce, le transistor, les pins, et l'afficheur. Puis souder le tous sur le circuit imprimé: avez vous déjà soudé une puce de 2*8 pattes? Moi non, mais visiblement, d'après ce que j'ai vu, le faire de façon manuelle par un néophyte, bin c'est ultra galère. Pour les courageux, tout est expliqué sur le tutoriel de lucidtronix avec la liste des composants.
5) En ce qui concerne le prix des composants, vous avez pu remarquer que je propose plusieurs sites pour acheter l'objet. Parfois, pour le même objet, le prix varie du simple au double, voir triple.
Je prends l'exemple de celui là:
www.dx.com/p/max7219-dot-matrix-module-w-5-dupont-lines-184854
à 3,37€ et de celui la
www.aliexpress.com/item/MAX7219-dot-matr..._5,searchweb201560_9
à 1,28€: le même modules 3 fois moins chère. Dans le tutoriel original il propose celui à 3.37€, ce matin j'ai trouvé le même à 1.28€ donc. L'éternel question est de savoir s'il vaut mieux payer plus et avoir une sensation de meilleure qualité ou pas?
Mon avis: tout vient de Chine, et est probablement fabriqué par la même boite, ça doit donc se valoir. Je conçois que certains utilisent de meilleures résistances, LEDs, condensateurs, etc et que ça peut justifier une hausse de prix. Mais bon, le module n'est pas allumé H24 7j/7 non plus. Perso je prendrais le moins cher, et s'il vient à vite rendre l'âme, je prendrais l'autre. Ceci reste mon avis personnel, à vous de voir

.
IX) Photos/Vidéo de mon Arduino Dashboard:
J'utilise 4 modules MAX7219 / MAX7221, et 2 modules WS2812b RGBLEDS.
Sur les photos suivantes, il n'y a qu'un seul module MAX7219 / MAX7221 de branché.
La puissance des LED est à 20%, à 100% je ne voyais même plus l'écran rouge dessous.
Je n'ai pas encore branché les 3 autres modules d'affichage car je n'ai pas encore fait la boite pour les accueillir, et que je mettrais sur ma droite.
Je pondère l'idée de me prendre un module I2C LiquidCristal car ce matin j'en ai trouvé un dont l'écran est bleu au lieu du vert "cacadoigt" basic; le lien se trouve dans la liste des modules.
X) Crédit:
Comme je l'ai dit au début, ce programme n'est pas de moi et je ne fais que proposer un tutoriel en français et pas à pas du tutoriel anglais disponible sur le forum officiel de Assetto Corsa écrit par le créateur de la programmation, et du programme faisant fonctionner le tous.
Si vous voulez remercier quelqu'un, faites le sur son post

:
www.assettocorsa.net/forum/index.php?thr...-4-2015-11-04.23329/
.