Ce projet a commencé lorsque j'ai décidé de mettre à jour mon volant afin qu'il convienne à mes exigences de conduite SIM personnelles, quelque chose qui représentait l'expérience de conduite avec le réalisme et sans fioritures .
Mais, après avoir dit, cela devrait fonctionner avec toute base et console de Thrustmaster compatibles , car il imite le volant F1.
J'ai fixé mes objectifs élevés et j'ai fait une liste de choses que je voulais que le volant figure.
La roue Steerig doit comporter tous les boutons disponibles sur le contrôleur PlayStation DualShock 4
Je voulais inclure un affichage pour les paramètres liés au volant (et peut-être les futures mises à jour)
Encodeurs rotatifs pour un accès rapide aux fonctions de conduite nécessaires (équilibre des freins, contrôle des abdos et de la traction)
Je voulais également inclure un bouton d'action combiné personnalisé (CAB) qui me permettrait d'augmenter ou de diminuer - en un seul clic - n'importe lequel ci-dessus fonctionne à des fois x.
Comme je n'ai pas un accès immédiat à une imprimante 3D ou à une machine CNC, j'ai décidé d'aller avec l'un des conceptions 3DRAP.it. Avec l'aide d'Antonio, nous avons conçu une nouvelle version de la roue actuelle qu'ils ont en stock, et une qui correspond à ma conception ci-dessous.
Regardez une démonstration vidéo rapide de la roue en action.
Les autocollants ont été imprimés à l'aide d'un jet d'encre standard sur une feuille d'autocollants A4, puis recouverts de ruban d'emballage transparent.
Téléchargez la feuille d'autocollants ici (PDF).
La chose la plus importante à retenir avec le matériel est que la base Thrustmaster alimente votre volant avec ~ 3,5V. Tout ce que vous utilisez devrait être en mesure de fonctionner sur cette tension.
Dès le début, l'idée était de construire ceci autour d'un tableau Arduino Nano . J'ai eu une expérience antérieure avec cette plate-forme et le fait que j'ai trouvé des points de départ sur Internet ont rendu cette décision facile.
La prochaine étape était l'affichage. Je voulais juste que l'affichage soit un moyen pour moi de visualiser et de modifier les paramètres sur la roue Itslef, de ne pas me connecter ou d'afficher la télémétrie. Ainsi, un simple LCD rétro-éclairé 16x2 suffirait. Pour garder le GPIO's Limited, j'ai également ajouté un sac à dos I 2 C.
Les encodeurs rotatifs ont eu un peu de problème car l'Arduono Nano ne prend pas en charge de nombreux GPIO. À la fin de la journée, je suis allé avec trois planches Duppanet I 2 C Rotary Encoder Mini V2.1. Ils fonctionnent très bien, ne manquent jamais un coup et ne nécessitent que 3 GPIO du total de GPIO.
Enfin, pour les commutateurs rotatifs, j'ai utilisé deux mini commutateurs rotatifs à 8 voies, chacun entraînant un seul GPIO analogique, réduisant encore plus les GPIO requis. L'idée est assez simple, et vous pouvez en savoir plus ici.
J'avais besoin de 22 boutons pour effectuer tous les funcitons que j'avais prévus. Je les ai provenant de plusieurs fournisseurs en ligne sans particulièrement mentionnés. La plupart des boutons sont simples interrupteurs temporaires (ON) à l'exception des bascules (ON) -off- (ON). Pour les palettes de changement de vitesse 3DRAP.Il fournit des micro-interrupteurs lourds qui s'adaptent à la boîtier.
? Voici la liste complète du matériel que j'ai utilisé.
C'est là que j'ai reçu beaucoup d'aide de la communauté (les pls voient les crédits ci-dessous). J'ai fait mes recherches et j'ai découvert que beaucoup de gens faisaient des choses similaires, mais pas comme je voulais que mon volant fonctionne. J'ai donc contacté quelques-uns d'entre eux, j'ai eu quelques informations et j'ai commencé à construire ma propre version.
Mon point de départ était ce post de Taras, où j'ai obtenu les guides de connexion matérielle et logiciels de base vers le T300. Ce fut aussi le premier post que j'ai lu qui m'a conduit dans ce voyage. Taras a été d'une immense aide car il a répondu à toutes mes questions techniques.
Après cela, j'ai trouvé les bits de roue et octets de roue Thrustmaster F1 à l'origine inverse dans un projet de Bram Harmsen, qui comprend les boutons L3 & R3, qui à leur tour ne sont généralement disponibles sur aucun autre volant. Ayant toutes les informations nécessaires pour reproduire toutes les actions, j'ai commencé à tout mettre ensemble.
Je ne mettrai pas trop en détail sur ce code ici, mais vous êtes invités à le voir dans le dépôt. J'ai ajouté autant de commentaires que possible.
? Afficher les fichiers d'esquisse Arduino
La roue se comporte beaucoup comme toute autre roue sur le marché. Il émule tous les boutons du contrôleur DualShock 4 PlayStation. Les principales différences sont la matrice de bouton , le menu d'affichage , les encodeurs rotatifs et les commutateurs rotatifs (fonctions de cabine).
Dans le nom de la sauvegarde des GPIO sur le nano, j'ai créé une matrice de bouton 5x5 pour prendre en charge les 22 boutons dont j'avais besoin pour ma conception (oui, j'ai 3 à épargner!).
? ️ Voici la matrice de bouton .
Il y avait plusieurs raisons pour lesquelles je voulais un affichage. Tout d'abord, j'avais besoin d'un moyen de modifier les paramètres de la roue sans avoir besoin de le connecter à un ordinateur. Deuxièmement, j'ai aussi pensé que c'était bien d'avoir une horloge pour afficher l'heure et la date du monde réel. Troisièmement, l'écran pourrait être utilisé dans les futures mises à jour pour afficher la télémétrie ... (mais rien ne prévoit encore). Et enfin, ça a l'air cool.
L'affichage est contrôlé par les trois boutons d'affichage:
Menu: ouvrez / fermez le menu des roues
Suivant: Faites défiler le menu
Sélectionnez: sélectionnez une option
Options d'affichage du menu:
Mode de la roue: définissez le mode de la roue en fonction de la plate-forme sur laquelle vous jouez:
Mode PS - PlayStation (PS)
PC - mode avancé (PC)
Disp. MODE: Réglez le mode de l'affichage lorsque la pression d'affichage est activée. Chaque fois que vous appuyez sur un bouton, il affiche sa fonction:
PS - Appuyez sur n'importe quel bouton Affiche la fonction du bouton PlayStation (croix, triangle, L2, R2, ... etc.)
GT - Appuyez sur n'importe quel bouton Affiche la cartographie du bouton du simulateur en fonction de mes préférences personnelles (limiteur de fosse, HUD, essuie-glaces, ... etc.)
DES VRIETS: Affichez la pression de la touche du bouton sur l'écran
Date / heure: afficher ou masquer la date et l'heure sur l'écran d'accueil
Buzzer - Allumez le buzzer sur ou désactiver
Hour Chirp - Oui, il pourrait également bip toutes les heures pour garder une trace du temps que vous passez sur le simuator
Affichage hors - éteignez l'écran (tout bouton d'affichage le retire à nouveau)
Exécution - Affichez l'heure depuis le démarrage du volant, donc vous savez depuis combien de temps il fonctionne
Les encodeurs rotatifs permettent un accès rapide à l' équilibre des freins , aux ABS et aux réglages de contrôle de la traction pendant la conduite. Les encodeurs rotatifs sont cool car vous pouvez rapidement modifier les paramètres sans avoir besoin de vous distraire avec les menus à l'écran, etc.
Les encodeurs rotatifs ont été cartographiés comme suit:
Description | Rot gauche. (-) | Rot à la droite. (+) |
---|---|---|
Balance des freins (BB) | D-Pad Down | D-pad up |
Système de freinage antiblocage (ABS) | L3 | R3 |
Contrôle de traction (TC) | D-pad à gauche | D-Pad à droite |
Description | Rot gauche. (-) | Rot à la droite. (+) |
---|---|---|
Balance des freins (BB) | Vers le bas | En haut |
Système de freinage antiblocage (ABS) | 20 | 21 |
Contrôle de traction (TC) | Gauche | Droite |
? Voici la carte des liaisons de contrôle que j'ai appliquées dans Assetto Corsa Competizione pour les deux plates-formes.
C'est quelque chose auquel je pensais en regardant une vidéo où Nico Rosberg expliquait comment vous devez déplacer l'équilibre des freins de l'avant à l'arrière et à l'arrière plusieurs fois sur un seul tour pour optimiser votre conduite. Vous pouvez bien sûr utiliser les encodeurs rotatifs, mais vous ne pouvez pas être précis, en particulier avec la rétroaction de la force qui donne des coups de pied sur votre roue.
L'idée est de créer des boutons définis qui peuvent reproduire les clics Mutliple en fonction de vos préférences. À l'aide des commutateurs rotatifs, vous pouvez rapidement définir les paramètres:
Mode CAB: sélectionne la fonction que vous souhaitez reproduire (BB, ABS, TC)
Étapes de cabine: sélectionnez le nombre de fois où vous souhaitez appuyer sur le bouton (1x-8x)
CAB - / +: Lors de la sélection du bouton Cab - / +, il s'exécutera sur vos préférences sélectionnées
Je voulais garder les choses aussi compactes que possible, donc une carte personnalisée était nécessaire. Je voulais aussi que les choses soient amovibles et interchangeables en cas d'échec à l'avenir. Mon intention était de créer un PCB imprimé personnalisé, mais cela n'avait vraiment pas de sens à ce stade (peut-être dans une mise à jour?). La carte finale est constituée d'un perfboard de 5x7 cm et j'ai utilisé un fil de noyau solide pour établir les connexions.
Bien que ma première tentative (V1) ait parfaitement fonctionné, elle n'était pas aussi compacte que je le souhaite. En fait, il ne s'intègre pas du tout dans l'enceinte de direction. J'ai repensé les pistes et reconstruit une deuxième version (V2) à l'aide de connecteurs masculins DuPont angled, économisant beaucoup d'espace en raison d'une hauteur limitée.
? Jetez un œil à la disposition et au tableau du diagramme final .
Si vous avez tout câblé et connecté comme le montre le diagramme, vous serez probablement prêt à utiliser le volant.
Pour compiler le croquis Arduino, vous devrez installer ces bibliothèques:
Eeprom.h - bibliothèque eeprom pour le stockage des paramètres
LiquidCrystal_I2C.H - Liquide Crystal Display I 2 C Library
i2Cencoderminilib.h - Rochery Encodeur I 2 C Bibliothèque
Timelib.h - bibliothèque temporelle
DS1307RTC.H - Bibliothèque DS1307 RTC
Suivez les instructions de la bibliothèque sur la façon de configurer l'heure actuelle sur le RTC.
Suivez les instructions de la bibliothèque sur la façon de modifier l'adresse de chacun des cartes de l'encodeur rotative. Je les ai définis comme suit:
BB (bilan des freins): 0x20
ABS (système de freinage antiblocage): 0x21
TC (contrôle de traction): 0x22
La seule chose qui peut nécessiter un ajustement est les valeurs du commutateur rotatif, étant donné que les valeurs renvoyées dépendent de la tension fournie. Définissez le DEBUG_ROTARY_SWITCHES
sur true
et l'écran LCD affichera les valeurs actuelles des deux commutateurs. Faites une note de ces numéros et mettez-les à jour dans le fichier de croquis t300_functions
, sous les fonctions getCABMode()
& getCABSteps()
.
J'ai ajouté un moniteur de performance intégré. Vous devrez définir DEBUG_LATENCY
sur true
et ouvrir le moniteur série (115200 bauds). Une fois téléchargé, vous afficherez un rapport en temps réel sur la latence de boucle actuelle.
La première version logicielle a eu pas mal de problèmes, la latence étant la plus importante. De temps en temps, un clic à bouton serait manqué, ce qui, pendant une course, cela signifiait un raté sur un revers ou un rétrogradage. Cela a compensé de mauvaises performances.
Après avoir exécuté des tests, j'ai découvert qu'une seule boucle fonctionnait à environ 2800 ms avec un hoquet éventuel chaque seconde à environ 106000 ms. Il était confortable que quelque chose produisait un certain type de retard. J'ai finalement optimisé le code pour les encodeurs rotatifs et l'horloge (RTC).
Étant donné que l'écran n'ajoute pas grand-chose à l'expérience de conduite, vous pouvez choisir de le désactiver en conduisant en appuyant sur le commutateur rotatif ABS.
La version actuelle fonctionne de manière transparente et je n'ai pas remarqué de ratés pendant la course.
Un petit espace pour reconnaître le travail effectué précédemment par d'autres.
Taras Ivaniukovich https://rr-m.org/blog/ - Pour le travail qu'il a partagé sur son blog et l'aide qu'il a fournis tout au long du chemin
Bram Harmsen https://www.thingiverse.com/thing:2813599 - Pour ingénieur inversé, le volant F1
MRFID72 - Pour la vidéo YouTube impressionnante expliquant les commutateurs rotatifs analogiques
Danny Van Den Brande - Pour le code que j'ai trouvé en ligne, ce qui m'a aidé à configurer la matrice de bouton
Antonio de Stefano https://3drap.it - pour l'enceinte du volant génial
Licence publique générale GNU V3.0 ou version ultérieure