Forum: Mikrocontroller und Digitale Elektronik Bewegungssensor von einer Maus auslesen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von HP M. (hp2016)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
-1 lesenswert
nicht 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)


Bewertung
1 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:

Bewertung
0 lesenswert
nicht lesenswert
Das ist das Innere der Maus...

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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht 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)


Bewertung
-2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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:
Ebay-Artikel Nr. 391733940472
ODer auch die hier:
Ebay-Artikel Nr. 262921782987

von Bastler (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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


Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.