Forum: Mikrocontroller und Digitale Elektronik Bewegungssensor von einer Maus auslesen


von HP M. (hp2016)


Lesenswert?

Hallo ,

Ich bin grade an einem Projekt involviert, wo ich aus einem 
Bewegungssensor, welches ich von einer Maus rausgeschraucht habe, 
auslesen. Dabei soll der Sensor, die Geschwindigkeit messen und per 
Mikrorechner(Audiono Leonardo) verarbeiten. Ich wollte dies per SPI 
realisieren.
Folgendes Problem:
Ich habe eine USB Maus mit einem S5008 Chip. Zu diesem Chip habe ich 
kein Datenblatt gefunden. Kann ich durch USB die Daten auslesen, ohne 
Linux Kenntnisse zu haben.
Ich besitze lediglich VisualBasic, C/C++ und Matlab kennisse.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

HP M. schrieb:
> Ich wollte dies per SPI realisieren.

Ist in der Maus mehr drin als nur dieser eine "S5008"?

Wenn nein: Dann kommst Du mit SPI zu keinem Ziel, denn der Chip ist ein 
USB-Gerät. Das kannst Du nicht an Deinen Arduino anschließen (außer mit 
einem USB-Host-Shield, und das ist dann einiges an Programmieraufwand).

Einfacher dürfte es sein, eine Maus zu besorgen, die man an einem 
PS/2-Anschluss betreiben kann. Das dafür nötige Protokoll kann man 
recht problemlos mit einem Arduino erzeugen.

von HP M. (hp2016)


Lesenswert?

Neben der Optik und paar Widerständen und Kondensatoren ist nur der Chip 
vorhanden.
Was genau ist ein PS/2??

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

HP M. schrieb:
> Ich habe eine USB Maus mit einem S5008 Chip. Zu diesem Chip habe ich
> kein Datenblatt gefunden.

Ich wette der ist kompatibel mit irgendeinem ADNS-Typ. Wieso nimmst du 
nicht einfach einen ADNS... ? Sind in jeder Billigts-Maus drin und den 
Arduino-Sketch bekommst du quasi per copy/paste auf deinen Leonardo

> Kann ich durch USB die Daten auslesen, ohne
> Linux Kenntnisse zu haben.
> Ich besitze lediglich VisualBasic, C/C++ und Matlab kennisse.

Klar kannst du die Maus-Signale unter Linux auslesen. Unter Ubuntu 16.04 
z.B. mit
1
sudo cat /dev/input/mouse0
Oder ähnlich. Das kannst du dann z.B. in eine fifo pipen oder was auch 
immer.

: Bearbeitet durch User
von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

HP M. schrieb:
> Neben der Optik und paar Widerständen und Kondensatoren ist nur der Chip
> vorhanden.

Zeig mal ein Foto.

> Was genau ist ein PS/2??

Ach komm.

von HP M. (hp2016)


Lesenswert?

In welcher Mais z.B. Habe heute versucht aus Datenblätter den Chip 
rauszusuchen, eher unmöglich. Kannst du eine Maus empfehlen?

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Rufus Τ. F. schrieb:
> Wenn nein: Dann kommst Du mit SPI zu keinem Ziel, denn der Chip ist ein
> USB-Gerät.

Ach sorry, du hast natürlich Recht. Dann wird das wohl kein ADNS-Typ 
sein.

von HP M. (hp2016)


Angehängte Dateien:

Lesenswert?

Das ist das Innere der Maus...

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

HP M. schrieb:
> Kannst du eine Maus empfehlen?

Eine Maus direkt empfehlen kann ich nicht. Ich habe eine Kiste voll 
ausrangierter Mäuse aus einem Großraumbüro gehabt. Das waren alles 
Logitech-Billig-Mäuse. Ich war da scharf auf den ADNS2610. Es gibt aber 
auch andere/bessere ADNS-Typen. Google mal, da findest du bestimmt 
Modelle.

von HP M. (hp2016)


Lesenswert?

Wenn ich ein RS/2 Adapter verwende, würde das zur Signalverlust führen? 
Oder würde das richtig arbeiten?

von HP M. (hp2016)


Lesenswert?

Habe heute mindestens 6h gegooglt. ADNS 6000 wäre eig das Chip, was ich 
bräuchte, aber in welcher Maus es eingebaut ist, kann ich leider nicht 
rausfinden

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

HP M. schrieb:
> Das ist das Innere der Maus...

Und wo siehst du da die Typen-Bezeichnung? Sieht jedenfalls aus wie ein 
ADNS. Allerdings sitzt in ADNS-Mäusen noch ein IC, welches USB macht. 
Was ist denn das für eine Maus? Hersteller/Typ?

von HP M. (hp2016)


Lesenswert?

Das war eine Maus von HP, aber den genauen Type kann ich jetzt nicht 
mehr errinern. Die Maus liegt im Büro, deswegen.

von Sebastian S. (amateur)


Lesenswert?

Wie so üblich: Zu sparsam mit Informationen!

Maus mit Balla-Balla?
Optische Maus?

Ganze Maus oder Teil (Protokoll am Kabel, Lichtschranke)?

USB-Teil oder PS/2? Letzteres erklären Dir Fräulein Bing oder auch Herr 
Google. Falls beide nicht verzogen sind.

Kannst Du aber auch für Dich behalten.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Sebastian S. schrieb:
> Maus mit Balla-Balla?
> Optische Maus?

Das Bild zeigt definitiv einen optischen Sensor. Er sieht sehr nach ADNS 
aus. Auch diese versetzten Pin-Reihen sind da absolut gängig. Ist PS/2 
SPI? Dann wette ich, dass es keine USB-Maus sondern eine PS/2-Maus ist 
und der Sensor ein ADNS.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Md M. schrieb:
> Ist PS/2 SPI?

Nein. Aber was PS/2 ist, kannst Du mit wenigen Sekunden Aufwand selbst 
herausfinden.

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Rufus Τ. F. schrieb:
> Nein. Aber was PS/2 ist, kannst Du mit wenigen Sekunden Aufwand selbst
> herausfinden.

Könnte ich. So sehr interessiert es mich dann aber doch nicht, dass ich 
dafür einen ganzen Wikipedia-Artikel durchlese. War eher als Anregung 
gedacht für den, den es interessieren könnte. Ich bin auch nicht 
wirklich davon ausgegangen, ich wollte eigentlich eher bekräftigen, dass 
ich das aus einem Bauchgefühl heraus für einen dieser Avargo-Chips 
halte, auch wenn da kein weiteres IC in der Maus ist.

: Bearbeitet durch User
von Sigi (Gast)


Lesenswert?

HP M. schrieb:
> Kannst du eine Maus empfehlen?

Such mal bei Ebay nach defekten Mäusen (oft 1Euro+
4-5Euro Versand), schau Dir die Beschreibung an und
such dann nach den Maustypen im Netz. Da findest Du
dann idR, welcher Sensortyp verbaut wurde.

Ich hatte mal vor Jahren eine Liste mit Mäusen/Sensoren,
vlt. findest Du ja eine vergleichbare.

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


Lesenswert?

Sowohl eine Logitech Maus PS/2 Maus als auch eine HP PS/2 Maus, die ich 
gerade offen hatte, enthielten beide den ADNS2620 Sensor mit extra MC 
für die Anbindung an PS/2.

Die Logitech müsste die hier gewesen sein:
http://www.ebay.de/itm/Logitech-original-M-SBF90-einfache-PS-2-optische-Maus-weiss-unbenutzt-/391733940472
ODer auch die hier:
http://www.ebay.de/itm/Logitech-Optical-Mouse-30-Stuck-Optische-Maus-M-SBF96-PS-2-Kabelgebunden-/262921782987

von Bastler (Gast)


Lesenswert?

Dass einfachste wäre wohl noch ein paar Nager zu schlachten und den 
Sensor zu finden den man einfach an den Arduino tüddeln kann und funzt.

Eine Logitech RX250 sollte passen - angeblich ist da ein A5020 drin und 
hier gibts auch ne anleitung dazu:
http://strofoland.com/arduino-projects/reading-a5020-optical-sensor-using-arduino-part2/

von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Bastler schrieb:
> Eine Logitech RX250 sollte passen - angeblich ist da ein A5020 drin

Bestätige. Habe eine offen vor mir liegen.
Aus z.B. der Logitech M-SBF96 habe ich den ADNS2610.

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


Lesenswert?

HP M. schrieb:
> Das ist das Innere der Maus...

Könnte der Avago ADNS-2700 sein:
https://www.broadcom.com/news/press-release/adns-2700

von Bernd B. (behbeh)


Lesenswert?

Hallo,
hatten sowas mal gemacht hier im Institut mit Arduino.
Muss mal sehen wo die Software ist....
Ist ein Wegmesser geworden. Auch mit den ADNS Chips. Ich habe da auch 
noch welche. Muss nur erst suchen wenn interesse besteht.
Bernd

von Motzer (Gast)


Lesenswert?

Hallo

Im Computerclub 2 gabe es mal so ein Projekt, indem mit einem AVR ein 
Maussensor ausgelesen wurde. Geht ziemlich gut weil angeblich in den 
älterne Mäusen meistens der gleiche Sensor verbaut wurde.

Gruss

von Daniel V. (voda) Benutzerseite


Lesenswert?

Ich kann auch die ADNSxxxx empfehlen. Ich habe den ADNS3090 für 
Optical-Flow-Messungen verwendet. Aber es kommt immer auf die Anwendung 
an.
Die Programmierung war ein bisschen tricky. Der Bus wird SPI sein.

Schau mal bei Alibaba, da bekommste solche ICs hinterhergeschmissen. 
Achte aber auch auf die richtige LED-Wellenlänge, da i.d.R. der CMOS 
hier am emfindlichsten reagiert. Auch die Linse sollte nicht 
unterschätzt werden.

Gruß
Daniel

: Bearbeitet durch User
von Md M. (Firma: Potilatormanufaktur) (mdma)


Lesenswert?

Daniel V. schrieb:
> Die Programmierung war ein bisschen tricky.

Lässt sich (für Arduino) auf das hier runterbechen:
1
byte opticalRead(byte address)
2
{
3
  pinMode (SDIO, OUTPUT);
4
  for (byte i = 128; i > 0 ; i >>= 1)
5
  {
6
    digitalWrite (SCLK, LOW);
7
    delayMicroseconds(10);
8
    digitalWrite (SDIO, (address & i) != 0 ? HIGH : LOW);
9
    delayMicroseconds(10);
10
    digitalWrite (SCLK, HIGH);
11
    delayMicroseconds(10);
12
  }
13
  delayMicroseconds(120);
14
  pinMode (SDIO, INPUT);
15
  byte res = 0;
16
  for (byte i = 128; i > 0 ; i >>= 1)
17
  {
18
    digitalWrite (SCLK, LOW);
19
    delayMicroseconds(10);
20
    digitalWrite (SCLK, HIGH);
21
    delayMicroseconds(10);
22
    if ( digitalRead (SDIO) == HIGH )
23
    {
24
      res |= i;
25
    }
26
  }
27
  delayMicroseconds(100);
28
  return res;
29
}
30
31
void opticalWrite(byte address, byte data)
32
{
33
  address |= 0x80;
34
  pinMode (SDIO, OUTPUT);
35
  for (byte i = 128; i > 0 ; i >>= 1)
36
  {
37
    digitalWrite (SCLK, LOW);
38
    delayMicroseconds(10);
39
    digitalWrite (SDIO, (address & i) != 0 ? HIGH : LOW);
40
    delayMicroseconds(10);
41
    digitalWrite (SCLK, HIGH);
42
    delayMicroseconds(10);
43
  }
44
  delayMicroseconds(120);
45
  for (byte i = 128; i > 0 ; i >>= 1)
46
  {
47
    digitalWrite (SCLK, LOW);
48
    delayMicroseconds(10);
49
    digitalWrite (SDIO, (data & i) != 0 ? HIGH : LOW);
50
    delayMicroseconds(10);
51
    digitalWrite (SCLK, HIGH);
52
    delayMicroseconds(10);
53
  }
54
  delayMicroseconds(100);
55
}
56
57
void opticalInit()
58
{
59
  pinMode(SCLK, OUTPUT);
60
  pinMode(SDIO, OUTPUT);
61
  digitalWrite(SCLK, HIGH);
62
  delayMicroseconds(5);
63
  digitalWrite(SCLK, LOW);
64
  delayMicroseconds(1);
65
  digitalWrite(SCLK, HIGH);
66
  delay(1025);
67
  opticalWrite(0x00, 0x01);
68
  //  delay(3000);
69
}

Pins für SDIO und SCLK definieren und fertig. Die entsprechenden 
Adressen steehn ja im Datenblatt. Beim ADNS2610 für den optischen Flow 
z.B.
1
opticalRead(0x3); // X
2
opticalRead(0x2); // Y

Einen kompletten Frame zu holen ist etwas aufwändiger, weil man da 
synchronisieren muss.

> Auch die Linse sollte nicht
> unterschätzt werden.

Es gibt die Teile auch als fix und fertige Moduel mit brauchbarer Optik 
antstat diese HDNS-Linse, die in den Mäusen verwendet wird. Ich 
persönlich habe da einfach ein 12mm-Objektiv vorgesetzt, um den Fokus 
auf einen Abstand von einigen cm zu erhöhen.

von Daniel V. (voda) Benutzerseite


Lesenswert?

Md M. schrieb:
> Lässt sich (für Arduino) auf das hier runterbechen:

Naja ich habe es auf einem STM32 gemacht, mit der SPL

Md M. schrieb:
> Einen kompletten Frame zu holen ist etwas aufwändiger, weil man da
> synchronisieren muss.

Ja, da habe ich doch ein paar Tage dran gesessen. Hier im Forum wurde 
mir aber gut geholfen ;)

Md M. schrieb:
> Es gibt die Teile auch als fix und fertige Moduel mit brauchbarer Optik
> antstat diese HDNS-Linse, die in den Mäusen verwendet wird. Ich
> persönlich habe da einfach ein 12mm-Objektiv vorgesetzt, um den Fokus
> auf einen Abstand von einigen cm zu erhöhen.

Ja, gerade für Drohnen gibt es die ADNS3090  mit veränderter Optik. Mir 
war aber der Nahbereich sehr wichtig und vor allem die Frames.

Gruß
Daniel

: Bearbeitet durch User
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.