Table des matières:
Vidéo: Mise à niveau I2C du capteur d'orientation Thrustmaster Warthog : 5 étapes
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
Ceci est un guide approximatif sur la façon de s'interfacer avec le protocole I2C utilisé sur le capteur d'orientation des gaz ThrustmasterWarthog. Cela peut être utilisé pour passer du ministick standard assez inutile à quelque chose de mieux, mais toujours en utilisant le contrôleur USB standard dans l'unité d'accélérateur. Ceci est basé sur un article original sur:
forums.eagle.ru/showthread.php?t=200198
Une compréhension de base si le protocole I2C est supposé pour la plupart des étapes suivantes, pour une excellente explication, allez à:
learn.sparkfun.com/tutorials/i2c
Pour toute question spécifique, n'hésitez pas à me la poser, et j'essaierai d'ajouter à cet insoluble à l'avenir avec des informations plus pertinentes. Ceci n'est en aucun cas complet, mais devrait être un bon point de départ.
Un code de démonstration Arduino est fourni, mais veuillez le prendre uniquement comme référence car un Arduino 5V normal ne peut pas être utilisé sans modification.
Étape 1: Détails du capteur existant
Le capteur d'orientation du ministick fourni avec l'accélérateur Thrustmaster Wathog est bien connu pour être l'une des plus grandes faiblesses d'un produit par ailleurs excellent. Il y a eu un certain nombre de tentatives de la part des gens pour le remplacer par quelque chose de mieux au fil des ans, mais la plupart se sont heurtés aux difficultés d'interface avec le protocole numérique I2C utilisé par celui-ci.
Le capteur exact utilisé dans l'accélérateur Warthog est le N35P112 - EasyPoint, qui utilise le circuit intégré de capteur à effet Hall AS5013 fabriqué par AMS.
Fiche technique:
ams.com/eng/Products/Magnetic-Position-Sens…
Fait intéressant, l'unité était autrefois disponible en tant que module de développement par Sparkfun:
www.sparkfun.com/products/retired/10835
Le capteur est destiné aux applications de navigation dans des choses comme les téléphones portables et est extrêmement bon marché. À mon avis inacceptable dans quelque chose qui coûte près de 500 $.
Étape 2: brochage
Le capteur se connecte au PCB dans l'unité d'accélérateur droite via un connecteur micro 5 broches.
Le brochage est le suivant:
-
Vcc +3,3 Vcc (
Régulé localement à partir de 5V par un régulateur linéaire de l'autre côté de la carte, juste derrière le connecteur, devrait être bon aux alentours de 20mA, mais je n'ai en aucun cas testé cela)
- I2C SDA
- I2C SCL
- GND
- Bouton 1 (normalement élevé, pullup 5V interne)
Étape 3: Description du protocole
Le capteur a fonctionné sur l'adresse I2C 0x41 - toutes les commandes d'écriture ou de lecture commencent par cette adresse.
Lorsque la manette des gaz est connectée à l'ordinateur, il y a un préambule d'environ 250 ms sur le bus I2C pour adresser 0x40, je suppose que c'est pour une version de capteur différente ou quelque chose de similaire, mais cela ne nous concerne pas.
Les données envoyées sur le bus I2C en utilisation normale sont ci-dessous, cela doit être simulé par notre microcontrôleur pour parler à la manette des gaz.
Configuration - Ces données sont envoyées une fois, environ 500 ms après la connexion de l'USB, pour configurer le capteur d'origine en vue de son utilisation.
Écriture principale: 0x0F (registre de contrôle 1)
Données: 0x02 0b0000 0010 (lance une réinitialisation logicielle)
Écriture principale: 0x0F (registre de contrôle 1)
Master Read: 0xF1 0b1111 0001 (réinitialise à 11110000, lsb 1 signifie que des données valides sont prêtes à être lues. Nous devons répondre correctement à cette commande pour être reconnu comme un périphérique esclave valide)
Écriture principale: 0x2E (registre de contrôle 2)
Données: 0x 86 (cela définit simplement l'orientation de l'aimant dans le capteur d'origine)
Écriture principale: 0x0F (registre de contrôle 1)
Données: 0x 80 0b1000 0000 (définit l'appareil en mode veille (mesure automatique, pas en mode faible consommation))
Boucle: Ceci est répété à environ 100 Hz pour obtenir les données du capteur.
Écriture principale: 0x10 (registre X)
Master Read: (l'esclave envoie des données X, la valeur 8 bits du complément à 2)
Écriture principale: 0x11 (registre Y)
Master Read: (l'esclave envoie des données Y, complément à 2 valeur 8 bits)
Partie pertinente du vidage de protocole de l'analyseur logique:
Configuration Écriture vers [0x82] + ACK
0x0F + ACK
0x02 + ACK
Configurer l'écriture sur [0x82] + ACK
0x0F + ACK
Configuration de la lecture vers [0x83] + ACK
0xF1 + NAK
Configuration Écriture vers [0x82] + ACK
0x2E + ACK
0x86 + ACK
Configuration Écriture vers [0x82] + ACK
0x0F + ACK
0x80 + ACK
Configuration Écriture vers [0x82] + ACK
0x10 + ACK
Configuration Lecture à [0x83] + ACK 0xFC + NAK
Configuration Écriture vers [0x82] + ACK 0x11 + ACK
Configuration Lecture à [0x83] + ACK 0xFF + NAK
Étape 4: Code Arduino
Le code Arduino joint peut être utilisé pour simuler le capteur.
Veuillez noter: la plupart des cartes Arduino fonctionnent en 5 V, cela nécessite une carte compatible 3,3 V ou modifiée pour fonctionner afin d'éviter d'endommager votre joystick.
Étape 5: Étalonnage
Une fois votre nouveau capteur installé, l'accélérateur devra être étalonné.
Pour calibrer votre accélérateur, vous utiliserez l'outil d'étalonnage de l'accélérateur. Celui-ci peut être téléchargé à partir de plusieurs sources telles que:
forums.eagle.ru/showthread.php?t=65901
N'utilisez pas l'étalonnage Windows.
Afin de tirer le meilleur parti d'un mod, vous devez modifier quelques valeurs dans votre fichier de configuration de calibrage.
Changer la:
Norme_DZ_SX = 0x10;
Norme_DZ_SY = 0x10;
Lignes dans A10_calibration.txt vers:
Standard_DZ_SX = 0x01;
Standard_DZ_SY = 0x01;
Cela changera en zone morte sur la commande d'orientation de 10 à 1, et donnera un bien meilleur contrôle. Vous pouvez jouer avec ce paramètre, puis recalibrer et voir ce que vous aimez le plus.