Forum: Mikrocontroller und Digitale Elektronik USB Signale von kapazitivem Touch auswerten und als Maus Eingabe simulieren


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 Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich brauche bei einem aktuellen Projekt Hilfe.

Wir haben Produktionsmaschinen im Einsatz die über einen resistiven 
Touch bedient werden.
Die Steuerung übernimmt eine SPS mit einem abgespeckten Windows CE 4.2.
Bei der rauen Umgebung in der Produktion wird der Touch ziemlich 
beansprucht, wodurch sich die obere Schicht mit der Zeit so stark 
abnutzt, dass keine Eingaben mehr möglich sind.
Bisher mussten wir das Touch overlay alle 2 Jahre austauschen.
Der Hersteller hat das Problem seit längerem erkannt und auf kapazitive 
Touchscreens umgestellt. Leider sind diese nicht kompatibel.
Bis vor einiger Zeit gab es die Touch overlays als Ersatzteil, nun kann 
nur noch die Komplette Einheit (Touch, LCD und SPS) erworben werden.
Da wir nicht alle 2 Jahre bei mehreren Maschinen die komplette Steuerung 
ersetzen können/wollen muss eine alternative Lösung her.

Auf dem Windows ist nur ein Standard Maus und Standard Tastatur Treiber 
installiert, über die im Notfall die Maschine mit Maus und Tastatur 
bedient werden kann.

Meine Idee war das resistive Touch Overlay einfach durch einen 
kapazitives Touch Overlay zu ersetzen und per USB anzuschließen.
Leider ist es nicht möglich auf dem abgespeckten Windows CE 4.2 
zusätzliche Software/Treiber zu installieren.
Der Hersteller verweist nur auf die neue Steuerung da die alte nicht 
mehr Supported wird.
Eine Umrüstung auf die aktuelle Steuerung würde allerdings enorme 
Kosten, Aufwand und Produktionsstillstand verursachen.

Ohne Treiber läuft der Touch nicht. Einen Prototyp zu Testzwecken habe 
ich bereits vor Ort.

Gibt es die Möglichkeit mit einem Zusätzlichen Hardwaremodule (Arduino, 
Raspberry...) eine Standard USB Maus zu simulieren und die Eingaben des 
Touches umzuwandeln und weiterzureichen?
Eine Arduino Micro beispielsweise kann ja ein Standard USB Eingabegerät 
simulieren und Maus oder Tastatursignale senden, allerdings müsste ich 
zuvor ja den Touch am Arduino anschließen und die Eingaben des Touch 
irgendwie auswerten.
Oder hat jemand einen alternativen Lösungsvorschlag?

von Stefan (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

schau dir mal das USB-Maus-Beispiel von PJRC an.

https://www.pjrc.com/teensy/usb_mouse.html

Dieses Programm läuft auf einem Teensy2.0, aber auch (mit ganz kleinen 
Änderungen) auf einem ProMicro mit Atmega32u4 für weniger als 5,-

Gruss

von georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Gibt es die Möglichkeit mit einem Zusätzlichen Hardwaremodule (Arduino,
> Raspberry...) eine Standard USB Maus zu simulieren

Das ist der einfache Teil der Aufgabe, das geht mit Arduino, Raspbi, 
eigenem Controller und hundert anderen Hardware-Lösungen. Darüber würde 
ich mir vorläufig keine grossen Gedanken machen.

Das Problem sehe ich in Anschluss und Auswertung des (neuen) 
Touchscreens, aber darüber finde ich nichts im Post, oder habe ich das 
übersehen? Gibt es dafür überhaupt Unterlagen über 
Hardware-Schnittstelle und Protokolle?

Georg

von Michael (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Danke euch für den Input.

>Das Problem sehe ich in Anschluss und Auswertung des (neuen)
>Touchscreens, aber darüber finde ich nichts im Post, oder habe ich das
>übersehen? Gibt es dafür überhaupt Unterlagen über
>Hardware-Schnittstelle und Protokolle?

Das war der entscheidende Hinweis!
Meine Gedankengänge haben sich zu sehr auf die übermittlung der 
Mausposition zum Endgerät fixiert.
Über das Abgreifen der Signale vom Touch hab ich mir zu wenig Gedanken 
gemacht. Ich wollte den Touch per USB mit einem System für das es einen 
Treiber gibt verbinden und dann die Mausposition der GUI weiterleiten.

Natürlich geht das viel einfacher und Störunanfälliger mit dem direkten 
Auswerden der Rohdaten vom Controller.
Hab mir jetzt die Dokumentation des Controllers vom Hersteller geholt 
und werd das mal durcharbeiten.

Wenn ich nicht weiter komme melde ich mich erneut, ansonsten stelle ich 
das fertige Projekt hier ein.

von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Ich sehe hier einen Denkfehler:

Es gibt keine "Mausposition", sondern nur Maus-Bewegungen (mit Richtung 
und Geschwindigkeit).

Positionen gibt es bei Eingabe-Tablets. Da kannst du auf einen Punkt 
tippen und der Cursor springt dann dort hin.

von W.S. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Michael schrieb:
> Auf dem Windows ist nur ein Standard Maus und Standard Tastatur Treiber
> installiert, über die im Notfall die Maschine mit Maus und Tastatur
> bedient werden kann.

Dann hast du schon fast gewonnen.

Was du brauchst, ist ein popliger µC-Modul, der USB-device kann. Leg dir 
dazu einfach so ein BluePill-Dingens zu, alternativ das Projekt 
(STM32F103C8T6.ZIP), was ich vor geraumer Zeit hie rmal gepostet habe.

Dann guckst du, was für ein Touch-Controller auf deinem kapazitiven 
Touch drauf ist. Die Dinger haben fast immer nen I2C als Anschluß.

Code für den GOODIX GT911 kannst du von mir kriegen, allerdings ist es 
auch kein Thema, sich den selbst zu schreiben. Ich hab auch Code für den 
Focaltech FT5336.

Der GT911 ist etwas tricky, zum Auslesen muß man das 1. Byte im 
Resultblock ab 0x814E mit ner Null beschreiben und dann den ganzen Block 
auslesen. Obendrein hat der GT911 kein Touch-Up Ereignis, weswegen man 
bei ihm mit nem Timeout arbeiten muß: wenn länger als etwa 100 ms kein 
Interrupt vom Touch gekommen ist, dann sollte man µC-intern daraus das 
Mouse-Up Ereignis generieren.

Der FT5336 ist fast gleich, aber er kennt Touch-Up, weswegen der obige 
Workaround nicht nötig ist.

Was du dann noch machen mußt, ist ein USB-Maus-Device im µC zu 
implementieren und aus den Koordinaten die passenden Mausereignisse zu 
generieren.

That's it.

W.S.

von Philip S. (psiefke)


Bewertung
0 lesenswert
nicht lesenswert
Die Multitouch-Screens von 3M funktionieren mit standard HID Treiber und 
könnten mit Glück auch an so alten Betriebsystemen funktionieren.
Grundsätzlich bringt Windows CE 4.2 HID Treiber und auch Touchscreen 
Unterstützung mit. Es wäre also einen versuch wert.

Abgesehen von 3M pCap Sensoren habe ich bisher mit allen anderen 
Herstellern nur Schwierigkeiten gehabt. Dort braucht man immer 
irgendwelche proprietäre Software zum Kalibrieren. Die Koordinaten der 
3M Screens sind ab Werk schon gut.

https://www.3mdeutschland.de/3M/de_DE/unternehmen-de/3m-touchscreen-loesungen/

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


Bewertung
0 lesenswert
nicht lesenswert
Die Windows HID Treiber unterstützen absolute Pointer ohne weitere 
Treiber. Ich habe einen Adapter von einem alten seriellen Tablet auf USB 
mit einem Tiny85 und V-USB gebaut, der vom Mac, von Linux und von 
Windows (zumindest ab XP) richtig erkannt wird.

Man muss also nicht Bewegungen simulieren, sondern lediglich den USB 
Deskriptor auf absolut anpassen - und natürlich sinnvolle Daten senden.

: 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.