
Cuprins:
2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-23 15:04

Acesta este un ghid aproximativ cu privire la modul de interfață cu protocolul I2C utilizat pe senzorul ThrustmasterWarthog de accelerație. Acest lucru poate fi folosit pentru a trece de la ministrul standard destul de inutil la ceva mai bun, dar totuși folosind controlerul USB standard în unitatea de accelerație. Aceasta se bazează pe o postare originală pe:
forums.eagle.ru/showthread.php?t=200198
O înțelegere de bază dacă protocolul I2C este presupus pentru majoritatea pașilor următori, pentru o explicație excelentă accesați:
learn.sparkfun.com/tutorials/i2c
Orice întrebare specifică, nu ezitați să mă întrebați și voi încerca să adaug la acest lucru insolubil în viitor cu informații mai relevante. Acest lucru nu este deloc complet, dar ar trebui să fie un bun punct de plecare.
Unele coduri Arduino demo sunt furnizate, dar vă rugăm să luați acest lucru doar ca referință, deoarece un Arduino normal de 5V nu poate fi utilizat fără modificări.
Pasul 1: Detalii senzor existente

Senzorul de strângere ministick care vine împreună cu clapeta Thrustmaster Wathog este bine cunoscut ca fiind unul dintre cele mai mari puncte slabe ale unui produs de altfel excelent. Au fost o serie de încercări ale oamenilor de a-l înlocui cu ceva mai bun de-a lungul anilor, dar majoritatea s-au confruntat cu dificultățile de interfață cu protocolul digital I2C folosit de acesta.
Senzorul exact utilizat în accelerația Warthog este N35P112 - EasyPoint, care folosește senzorul de efect hall AS5013 realizat de AMS.
Fișa cu date:
ams.com/eng/Products/Magnetic-Position-Sens…
Interesant este că odată unitatea a fost disponibilă ca modul breakout de către Sparkfun:
www.sparkfun.com/products/retired/10835
Senzorul este destinat aplicațiilor de navigație în lucruri precum telefoanele mobile și este extrem de ieftin. În opinia mea, inacceptabil în ceva care costă aproape 500 de dolari.
Pasul 2: Pinout

Senzorul se conectează la PCB în unitatea de accelerație din dreapta prin conector micro 5 pini.
Pinout este după cum urmează:
-
Vcc + 3.3VDC (
Reglat local de la 5V de un regulator liniar pe cealaltă parte a plăcii, chiar în spatele conectorului, ar trebui să fie bine să se apropie de 20mA, dar nu am testat în niciun caz acest lucru)
- I2C SDA
- I2C SCL
- GND
- Butonul 1 (în mod normal ridicat, intern 5V pullup)
Pasul 3: Descrierea protocolului

Senzorul funcționează pe adresa I2C 0x41 - toate comenzile de scriere sau citire încep cu această adresă.
Când accelerația este conectată la computer, există un preambul de aproximativ 250 ms pe magistrala I2C pentru a adresa 0x40, presupun că aceasta este pentru o versiune diferită a senzorului sau ceva similar, dar nu este relevant pentru noi.
Datele trimise pe magistrala I2C în utilizare normală sunt mai jos, acestea trebuie simulate de microcontrolerul nostru pentru a vorbi cu clapeta de accelerație.
Configurare - Aceste date sunt trimise o dată, la aproximativ 500 ms după conectarea USB-ului, pentru a seta senzorul original pentru utilizare.
Scriere master: 0x0F (Registrul de control 1)
Date: 0x02 0b0000 0010 (inițiază o resetare soft)
Scriere master: 0x0F (Registrul de control 1)
Master Read: 0xF1 0b1111 0001 (se resetează la 11110000, lsb 1 înseamnă că datele valide sunt gata de citire. Trebuie să răspundem corect la această comandă pentru a fi recunoscuți ca un dispozitiv slave valid)
Scriere principală: 0x2E (Registrul de control 2)
Date: 0x 86 (aceasta setează doar orientarea magnetului în senzorul original)
Scriere master: 0x0F (Registrul de control 1)
Date: 0x 80 0b1000 0000 (Setează dispozitivul în modul inactiv (măsurare automată, nu în modul de consum redus))
Buclă: Aceasta se repetă la aproximativ 100Hz pentru a obține date despre senzori.
Scriere master: 0x10 (înregistrare X)
Master Read: (sclavul trimite X date, valoarea de 8 biți a complementului 2)
Master Write: 0x11 (înregistrare Y)
Master Read: (sclavul trimite date Y, valoarea de 8 biți a complementului 2)
Partea relevantă a dump-ului protocolului din analizorul logic:
Configurare Scrieți la [0x82] + ACK
0x0F + ACK
0x02 + ACK
Configurare Scrieți la [0x82] + ACK
0x0F + ACK
Configurare Citiți la [0x83] + ACK
0xF1 + NAK
Configurare Scrieți la [0x82] + ACK
0x2E + ACK
0x86 + ACK
Configurare Scrieți la [0x82] + ACK
0x0F + ACK
0x80 + ACK
Configurare Scrieți la [0x82] + ACK
0x10 + ACK
Configurare Citiți la [0x83] + ACK 0xFC + NAK
Configurare Scrieți la [0x82] + ACK 0x11 + ACK
Configurare Citiți la [0x83] + ACK 0xFF + NAK
Pasul 4: Cod Arduino

Codul Arduino atașat poate fi utilizat pentru a simula senzorul.
Vă rugăm să rețineți: majoritatea plăcilor Arduino rulează de 5 V, aceasta necesită o placă compatibilă sau modificată de 3,3 V pentru a evita deteriorarea joystick-ului.
Pasul 5: Calibrare

Odată ce noul senzor a fost montat, clapeta va trebui calibrată.
Pentru a vă calibra clapeta de accelerație, veți utiliza instrumentul de calibrare a clapetei de accelerație. Aceasta poate fi descărcată dintr-o serie de surse, cum ar fi:
forums.eagle.ru/showthread.php?t=65901
Nu utilizați calibrarea ferestrelor.
Pentru a beneficia la maximum de un mod, trebuie să modificați câteva valori în fișierul de configurare a calibrării.
Schimba:
Standard_DZ_SX = 0x10;
Standard_DZ_SY = 0x10;
Linii din A10_calibration.txt pentru:
Standard_DZ_SX = 0x01;
Standard_DZ_SY = 0x01;
Acest lucru se va schimba în zona moartă de pe controlul rotativ de la 10 la 1 și va oferi un control mult mai bun. Puteți juca cu această setare și apoi recalibrați și vedeți ce vă place cel mai mult.
Recomandat:
DIY Logitech Pure Fi Anywhere 2 Reconstruire și conversie upgrade upgrade mini difuzor Bluetooth: 14 pași (cu imagini)

DIY Logitech Pure Fi Anywhere 2 Reconstruire și conversie upgrade upgrade mini difuzoare Bluetooth: una dintre cele mai preferate lucruri pe care o fac asta este să iau ceva ce găsesc ieftin la Goodwill, Yardsale sau chiar la craigslist și să fac ceva mai bun din asta. Aici am găsit un vechi iPod docking station Logitech Pure-Fi Anywhere 2 și am decis să-i dau un nou
Raspberry Pi - Tutorial Python pentru senzorul de umiditate și temperatură I2C HIH6130 I2C: 4 pași

Raspberry Pi - Senzor de umiditate și temperatură HIH6130 I2C Python Tutorial: HIH6130 este un senzor de umiditate și temperatură cu ieșire digitală. Acești senzori oferă un nivel de precizie de ± 4% HR. Cu stabilitate pe termen lung lider în industrie, I2C digital cu adevărat compensat de temperatură, fiabilitate lider în industrie, eficiență energetică
Afișaj LCD I2C / IIC - Utilizați un LCD SPI pe afișajul LCD I2C Utilizând modulul SPI la IIC cu Arduino: 5 pași

Afișaj LCD I2C / IIC | Utilizați un LCD SPI pe afișajul LCD I2C Utilizarea modulului SPI la IIC cu Arduino: Bună băieți, deoarece un SPI LCD 1602 normal are prea multe fire pentru a se conecta, deci este foarte dificil să îl interfațați cu arduino, dar există un modul disponibil pe piață. convertiți afișajul SPI în afișajul IIC, deci trebuie să conectați doar 4 fire
Afișaj LCD I2C / IIC - Convertiți un LCD SPI în afișajul LCD I2C: 5 pași

Afișaj LCD I2C / IIC | Convertiți un LCD SPI pe afișajul LCD I2C: utilizarea afișajului spi lcd are nevoie de prea multe conexiuni, ceea ce este foarte greu de făcut, așa că am găsit un modul care poate converti lcd i2c în lcd spi, așa că să începem
Thrustmaster Warthog Joystick Addon: 5 pași (cu imagini)

Thrustmaster Warthog Joystick Addon: salut vă rog să fiți blând cu mine .. acesta este primul meu instructable.Am nevoie de încă câteva butoane și axe pe „warthog” meu joystick, pentru a juca elite periculoase. nu este deloc distractiv să comutați între joystick și tastatură cu un „rift” pe el