Forum: Mikrocontroller und Digitale Elektronik 2 Beschleunigungssensoren, 3 BT-Transceiver und mehr für nur 6,97 Euro?


von Markus U. (markjus) Benutzerseite



Lesenswert?

Hallo,

beim Suchen nach zusätzlichen Sensoren für meine Wii und das "Spiel" EA 
Active Sports 2 bin ich bei dem Buchhändler der Wahl auf das "EA SPORTS 
Active 2 - Accessory Pack " gestoßen. Da das ganze nur 6,97 Euro kostet, 
habe ich gleich eins zum Ausschlachten mitbestellt.

In den Arm- und Beinsensoren sind vermutlich je ein 
Beschleunigungssensor (vom footprint vermute ich mal einen ADXL346 - 
3*3mm, je 5 und 3 pins) und ein Bluetooth-Transceiver sowie je ein 2 
kByte EEPROM verbaut. Dazu gibt es noch einen USB-Stick mit 
BT-Transceiver und 2kByte EEPROM, der an die Wii angesteckt wird.

Die verbondeten µCs/ ICs geben wahrscheinlich nicht allzuviel her. Beim 
USB Stick könnte man den Controller evtl. trotzdem nutzen.

In den nächsten Tagen werde ich mir mal die Signale anschauen. Das ganze 
könnte ja eine sehr günstige Alternative für die Bauteilbeschaffung sein 
;)

Wer mitsuchen will, kann ja mal auf den Fotos schauen, ob ihm etwas 
bekannt vorkommt.


Sportliche Grüße,

Markus

von R2D2 (Gast)


Lesenswert?

Bist du dir sicher, dass es sich dabei um Bluetooth-Module handelt? Oder 
sind es "nur" normale Funkmodule?

von Jörg H. (idc-dragon)


Lesenswert?

Das ist bestimmt kein Bluetooth. Sieht aus wie die Platinen in den 
Sendern von Baumarkt-Funksteckdosen.

Jörg

von Max D. (max_d)


Lesenswert?

Wenn du ganz neugiereig bist steck halt ma den Stick (zu sicherheit über 
nen hub) an nen PC und kuk was sich da zeigt, wenns USB is dann erkennt 
man vlt. da protokoll oder so (und wenn nich stirbt im worst case der 
hub (2€))....

von Markus U. (markjus) Benutzerseite


Lesenswert?

Ich hatte irgendwo gelesen es sei Bluetooth. Aber das kann man ja 
nachmessen (Frequenz). Funk auf 2.4GHz wäre ja eher ungewöhnlich.

Markus

von Noname (Gast)


Lesenswert?

Kannst du einen Link posten, wo man diese bekommen kann ?

von Tek (Gast)


Lesenswert?

Hier:

http://www.amazon.de/EA-SPORTS-Active-Accessory-Pack/dp/B0048KZ68O

die für die XBOX sind nochmal 1,50 billiger.

von Tek (Gast)


Lesenswert?

Korrektur:
Bei der Xbox Version sind wohl die Beschleunigungssensoren nicht dabei.

von Markus U. (markjus) Benutzerseite


Lesenswert?

Ich habe den USB-Stick mal an den PC angeschlossen. Er meldet sich als 
USB-HID device mit der Vendor ID (VID) 21A4 und der Product ID (PID) 
AC40 an.

Auf den übliche verdächtigen Frequenzen (433/ 868 MHz-Band) konnte ich 
nichts feststellen. Evtl. sind die Bursts aber so kurz, dass ich sie mit 
meinen beschränkten Mitteln nicht erfassen kann.

Meine Annahme mit dem Bluetooth kommt von der Wii Remote, die per 
Bluetooth mit Hilfe eines Broadcom-Chips mit der Wii Konsole 
kommuniziert. Evtl. hat man aber tatsächlich für die Active Sports 
Sensoren billige Funkmodule gewählt. Das wäre natürlich schade.

Markus

von Markus U. (markjus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe mich zunächst einmal an die Spannungsversorgung gemacht. In die 
Sensoren kommen zwei AAA-Zellen. Da die meisten µCs und Peripherie mit 
min. 3.3 Volt betrieben werden, war also ein Aufwärtsregler (boost 
converter) zu erwarten. Und genau das macht auch der "331G1" - er 
wandelt die Spannung der beiden Zellen zu 3.3 Volt herauf. Die 
Polyswitch schützt vor Verpolung.

Markus

edit: Bei der Spule muss es natürlich 47 µH heißen.

von Bastler (Gast)


Lesenswert?

Den Antennen nach sind das 2,4 Ghz funkmodule. Protokol FSK?
Könnten aber auch RFM70 ähnliche Module sein.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

USB Vendor ID 21a4 scheint Electronic Arts zu sein:
https://usb-ids.gowdy.us/read/UD/21a4
Product ID AC40 habe ich nicht gefunden, EA hat nur AC27 in der Liste 
als 'SPORTS Active 2 Wireless Controller for PS3'

von Michael L. (michaelx)


Lesenswert?

Hi Markus,

ja, das ist noch mehr. Im Arm-Sensor ist ein ARM verbaut (STM32F100C4). 
Ist zwar nur ein kleiner mit 16k Flash und 37 I/O, aber immerhin.

Grüße.

von frickleur (Gast)


Angehängte Dateien:

Lesenswert?

In einem Lowest-Effort-Ansatz wollte ich mal probieren, ob sich die 
Sensoren ohne Modifikation als Eingabegeräte am PC nutzen lassen. Der 
Dongle wird als HID-Device erkannt und gibt auch ohne Polling zyklisch 
ein 62 Byte langes Datagramm aus (unten in hex, vermutlich die Usage 
Page).

Leider warten die Sensoren nach Einschalten auf eine Zuweisung der 
Playernummer aus der EA-Sports-Applikation. Ohne Eingabe verharren sie 
mit blinkenden Playernummer-LEDs in inaktivem Zustand. Im lsusb-Dump im 
Anhang sieht man zur Rückmeldung vom PC an den Dongle einen HID-Output 
definiert.

Meint ihr, es lässt sich aus der vom Dongle propagierten HID Usage 
Information oder aber durch Reverse-Engineering mit der 
EA-Sports-Anwendung herausfinden, wie die Sensoren vom PC aktiviert und 
als analoge HID-Eingabegeräte nutzbar gemacht werden können?

1000 8010 8080 8080 8080 8080 8080 8080
8080 8080 8080 8080 8080 8080 8080 0000
1010 8080 8080 8080 8080 8080 8080 8080
8080 8080 8080 8080 8080 8080 0080

USB HID Specs: http://www.usb.org/developers/hidpage/
Linux HID API: http://libhid.alioth.debian.org/doc/

von Markus U. (markjus) Benutzerseite


Lesenswert?

Mit welchem Programm hast Du denn den Dongle ausgewertet?

Markus

von frickleur (Gast)


Lesenswert?

Ausgewertet habe ich noch nichts, nur dargestellt, wie sich der Dongle 
dem Linux Kernel gegenüber präsentiert.

sudo lsusb -d21a4:ac40 -vvv

sudo cat /dev/hidraw2 | hexdump -e '31/2 "%04x " "\n"'

von M. G. (looking)


Lesenswert?

Markus U. schrieb:

> Die verbondeten µCs/ ICs geben wahrscheinlich nicht allzuviel her. Beim
> USB Stick könnte man den Controller evtl. trotzdem nutzen.

Beim USB-Stick scheint es den gebondeten Chip ja auch als 28-Pin IC zu 
geben. Kannst Du mal durchpiepsen, an welche Pins der Quarz, das EEPROM 
sowie VCC und GND angeschlossen sind? Vielleicht kann man so den 
Controllertyp rausfinden.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Von der lsusb Ausgabe sieht es meinem USB Flightstick schon recht 
ähnlich.Und diese Felder sehen verdammt danach aus, als würden dort 3 
analoge Kanäle übertragen:
1
           Item(Main  ): Input, data= [ 0x02 ] 2
2
                            Data Variable Absolute No_Wrap Linear
3
                            Preferred_State No_Null_Position Non_Volatile Bitfield
4
            Item(Global): Report Count, data= [ 0x02 ] 2
5
            Item(Local ): Usage, data= [ 0x21 0x40 ] 16417
6
                            (null)
7
            Item(Main  ): Feature, data= [ 0x02 ] 2
8
                            Data Variable Absolute No_Wrap Linear
9
                            Preferred_State No_Null_Position Non_Volatile Bitfield
10
            Item(Local ): Usage, data= [ 0x21 0x41 ] 16673
11
                            (null)
12
            Item(Main  ): Output, data= [ 0x02 ] 2
13
                            Data Variable Absolute No_Wrap Linear
14
                            Preferred_State No_Null_Position Non_Volatile Bitfield
15
            Item(Main  ): End Collection, data=none

Ich hab dann in '/proc/bus/input/devices' nachgeschaut und gesehen, das 
sich der 'js0' Handler für meinen Joystick verantwortlich fühlt:
1
I: Bus=0003 Vendor=07b5 Product=0317 Version=0110
2
N: Name="Mega World USB Game Controllers"
3
P: Phys=usb-0000:00:08.0-1/input0
4
S: Sysfs=/devices/pci0000:00/0000:00:08.0/usb2/2-1/2-1:1.0/input/input9
5
U: Uniq=
6
H: Handlers=event8 js0 
7
B: EV=1b
8
B: KEY=ff 0 0 0 0 0 0 0 0 0
9
B: ABS=30027
10
B: MSC=10
Ein 'hd -c /dev/input/js0' erzeugt nun bei jeder Stick Betätigung einen 
Datenstring auf dem Terminal.

von Markus U. (markjus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe mir als nächstes das RF-Modul vorgenommen und versucht das 
Pinout zu bestimmen. Vielleicht kommt ja jemandem das Muster bekannt 
vor.
Die Verbindungen zum µC sind alle mit einem Kondensator gepuffert, 
ebenso die Verbindungen zu GND. Vcc ist über einen 
Tantal-SMD-Kondensator (J476) an GND und über eine Diode an Vout vom 
boost converter 331G1 (also Vcc RF-Modul = 3V3) angeschlossen. Die 
Beschriftung "Vcc Batt." auf dem Foto ist daher falsch. Sorry. Der Quarz 
des RF-Moduls ist mit "S16.000" beschriftet.

@Matthias und @frickleur: Ich kenne mich mit USB leider zu wenig aus, um 
eure Ergebnisse zu deuten.

@M.G.: Ich werde den USB-Stick in den nächsten Tagen mal durchmessen.

@Michael L.: Komisch, dass die den µC auf der Top-Platine nicht 
verbondet haben. Evtl. sind die anderen Controller ja identisch? Ich bin 
gerade dabei das Pinout bzw. die Verbindungen zu den anderen Bauteilen 
vom µC durchzumessen. Ergebnisse demnächst.

Liebe Grüße, Markus

von Cyclon (Gast)


Lesenswert?

Bei den Beschleunigungssensoren könnte es sich auch um LIS331HH handeln.

von frickleur (Gast)


Lesenswert?

Warnung an jene, die den USB-Dongle näher untersuchen wollen:
Beim Versuch in den HID-Output zu schreiben kann man sich die Firmware 
oder Konfiguration zerstören.

Ich habe den HID Report Descriptor so interpretiert, dass ein Feld von 
31 8bit-Inputs, zwei 8bit Features und zwei 8bit Outputs vorliegen. 
Daraufhin habe ich aus dem libhid-Beispielcode ein Programm geschrieben, 
das das Input-Feld auslesen sollte. Dabei habe ich festgestellt, dass 
nur 8 Bytes gelesen werden können, der Report Descriptor Path dabei 
ignoriert wird und nach dem ersten Lesezugriff mit 
hid_get_input_report() nur noch Datenmüll zurückgeliefert wird. In einem 
Gegentest habe ich das selbe Programm an einer Maus ausprobiert, dort 
funktioniert es einwandfrei, ich vermute also, dass nicht libhid das 
Problem ist.

Um nun zu versuchen, den Sensoren eine Playernummer zuzuweisen und damit 
eventuell die Übertragung der Accelerometerwerte zu beginnen, habe ich 
versucht Bytepaare in den Output zu schreiben. Ich nahm an, dass es sich 
hier um zwei Konfigurationsbytes oder allenfalls ein einfaches 
Command-Value-Protokoll handelt. Nachdem mir zuerst (wohl durch Zufall) 
eine Zuweisung der Playernummer 2 gelungen ist, war dann aber nach 
einigen weiteren Schreibversuchen mit verschiedenen Werten plötzlich die 
USB-Seriennummer gelöscht, beim Lesen des Input-Feldes erscheinen nur 
noch Einsen und es ist keine Zuweisung einer Playernummer mehr möglich. 
USB- und HID-Support sind aber noch vorhanden. Ich nehme an, Teile der 
Firmware oder Konfiguration wurden gebügelt. Schade.

von Michael L. (michaelx)


Lesenswert?

Markus U. schrieb:
> Komisch, dass die den µC auf der Top-Platine nicht
> verbondet haben. Evtl. sind die anderen Controller ja identisch?

Glaube ich nicht, denn der ARM hat 48 Pins, die auf der Hauptplatine 
aber nur 44 Pins.

von Markus U. (markjus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ich habe jetzt den uC (28 Pins) auf dem USB-Dongle mal durchgepiepst. 
Vielleicht kommt das Pinout ja jemandem bekannt vor und erkennt einen 
Controller.

Pin 3, 5, 6, 7 und 8 vom RF-Modul sind per Spannungsteiler (2 R zu je 
2k) an die entsprechenden Ports am µC angeschlossen (level shifting?).
Pin 4 und 6 vom RF-Modul sind über einen R 4k7 an der Basis von einem 
SMD-NPN Transistor (J3Y = MMS8050) an den µC-Pins angeschlossen.
Pin 8 vom RF-Modul ist sowohl über einen Spannungsteiler als auch per 
SMD-Transistor wie Pin 4 und 6 angebunden.

Der Quarz vom Controller taktet mit 6 MHz.

Das EEPROM FT24C02A hat alle Adressleitungen auf GND. WP ist ebenfalls 
auf GND. SDA ist auf Pin 12, SCL auf Pin 13 vom µC.

Als nächstes mache ich mich an das Pinout vom RF-Modul. Vielleicht hat 
ja schon jemand aufgrund der Anbindung an den µC (Spannungsteiler/ 
Transistor) Ideen, welche Art von Pins am RF-Modul angesteuert werden 
könnten.

Das EEPROM und die USB-Buchse sind auf dem Bild bereits ausgelötet.

Markus

von Markus U. (markjus) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bei dem vorherigen Bild fehlten noch Pinbelegungen, daher jetzt noch 
einmal das richtige Pinout.

2, 3, 5, 6, 7, 8 RF per Spannungsteiler (2k/ 2k) vom µC
4, 8, 9 per 4k7 an NPN Basis in Richtung µC

Ich hoffe, jetzt ist es richtig.

Markus

von Noname (Gast)


Lesenswert?

Könntest du den USB-Stick nochmal anstecken
(wahrscheinlich musst du die 4 Pins des USB-Steckers nochmal anlöten),
aber ohne das EEPROM ? Mit welcher VID / PID meldet er sich ?

von Markus U. (markjus) Benutzerseite


Lesenswert?

Ohne EEPROM passiert gar nichts (unter WIN XP). Mit EEPROM meldet er 
sich wie vorher an.

Da werde ich wohl morgen mal das EEPROM auslesen müssen ;)

Liebe Grüße,

Markus

von Chris (Gast)


Lesenswert?

Und mit leerem EEprom ?

von Markus U. (markjus) Benutzerseite


Lesenswert?

Wie jetzt "leer"?

Markus

von Markus U. (markjus) Benutzerseite



Lesenswert?

Heute das Pinout vom RF-Modul am USB-Dongle sowie die hoffentlich 
endgültige Fassung des Controller-Pinouts am USB-Dongle (Pin 7 und 8 
waren vertauscht).

Markus

von Markus U. (markjus) Benutzerseite


Lesenswert?

Hat jemand eine Idee, wie man an die Daten vom RF-Modul kommt? Ich komme 
da im Augenblick nicht weiter...

Markus

von Michael L. (michaelx)


Lesenswert?

Dazu habe ich dir leider nicht helfen.

Und bei Preisen um 25€ ist das Ausschlachten der Sensoren wohl nicht 
mehr sooo interessant.

Grüße.

von Markus U. (markjus) Benutzerseite


Lesenswert?

Das ist natürlich bedauerlich, wenn die jetzt mit 28 Euro verkauft 
werden...

Schade.

Markus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.