Forum: Mikrocontroller und Digitale Elektronik Bedieneinheit für PC Software - Taster, Encoder, Schalter wie einlesen?


von Techmex (Gast)


Lesenswert?

Hallo,

nach vielen kleinen µC Projekten würde ich mich nun gern mal ein an 
etwas umfangreicheres Projektvorhaben wagen.

Ich habe eine PC Software geschrieben, die ich gern über ein Bedienpanel 
(Tischgerät) steuern möchte.

Dafür gibt es dann einige Taster, Drehencoder, Schalter und Potis.
Andersrum sollen auf der Bedieneinheit aber drei kleine OLEDs, LED Ringe 
und Status-LEDs angesteuert werden.

Nun frage ich mich, wie die Kommunikation zwischen Hard- und Software 
sinnvollerweise vonstatten geht.
Mein erster Ansatz war, das alles mittels einer seriellen Schnittstelle 
zu machen.

Ein µC würde dann permanent sämtliche Zustände aller Bedienelemente 
einlesen und an die PC Software übermitteln.
Für die Ansteuerung der Displays würde ich die relevanten Daten dann 
ebenfalls seriell vom PC an den µC übermitteln, der dann die eigentliche 
Ansteuerung der OLED Displays übernimmt.

Allerdings frage ich mich, ob das überhaupt der richtige Weg ist.

Wie macht man das denn z.B. in modernen Steuerungen (wie bspw. 
Lichtsteuerpulten oder Videoschnitt-Bedieneinheiten)?

Irgendwelche Tips?

Dankeschön :D

von Alexander K. (Gast)


Lesenswert?

Funktioniert. ;)

Deine Software muss halt die Schnittstelle abfragen. Habe ich mal Spaß 
halber mit den Arduino unter VB gemacht.

 Dim S_Port As New IO.Ports.SerialPort

  If S_Port.IsOpen Then
      S_Port.Close()
    End If
    S_Port.PortName = "COM10"
    S_Port.BaudRate = 9600
    S_Port.Open()
    tx$ = hp_e_text_senden.Text + Chr(13)
    S_Port.Write(tx$)
    S_Port.Close()

Das ist der ganze Code um an den Arduino an Com-10 zu senden.

Eine modifizierte Variante und du empfängst auch Daten.

Was ich damit sagen will, das ist nicht wirklich ein Hexenwerk und 
eigentlich sehr einfach.

Dein Problem ist nur der Treiber den dein Gerät (wenn es nicht auf eine 
schon bekannte Technik passiert) in das System einzubinden.

Gruß

   Pucki

von Jim M. (turboj)


Lesenswert?

Techmex schrieb:
> Mein erster Ansatz war, das alles mittels einer seriellen Schnittstelle
> zu machen.

Macht man heutzutage eher über USB HID.
Bei USB-fähigen µC ist i.d.R. ein Herstellerbeispiel dabei, das Maus 
oder Tastatur als USB HID implementiert.

Übrigens geht HID auch über Bluetooth oder Bluetooth Low Energy, falls 
es mal drahtlos gehen soll.

von georg (Gast)


Lesenswert?

Techmex schrieb:
> Dafür gibt es dann einige Taster, Drehencoder

Das heisst, wenige Daten, keine hohe Geschwindigkeit nötig, da ist eine 
serielle UART-Verbindung durchaus angemessen. Ob die mit Logikpegeln, 
RS232C oder diversen Bussen wie RS485 oder CAN hardwaremässig realisiert 
wird hängt dann von Anforderungen wie Leitungslänge und Störpotentialen 
ab, macht aber bei der Software kaum einen Unterschied.

"Moderner" wäre USB, aber dafür brauchst du zumindest auf der 
Client-Seite zusätzliche Hard- und Software ohne dass das wirkliche 
Vorteile bringt. Vermutlich lässt sich das aber besser vermarkten, da 
die Kunden gern einfach eine USB-Stecker einstecken, andere 
Schnittstellen sind heute nicht mehr direkt verfügbar. Wenn man sich 
nicht den ganzen USB-Aufwand aufhalsen will, kann man einen billigen 
Adapter USB-seriell verwenden und den eigentlichen Datenaustausch 
seriell machen, als ob der PC noch eine serielle Schnittstelle hätte 
(hat er dann ja auch, eine virtuelle).

Georg

von MaWin (Gast)


Lesenswert?

Jim M. schrieb:
> Macht man heutzutage eher über USB HID.

Sehe ich auch so. USB 1.1 kann ja auch ein AVR direkt, ohne extra USB 
Controller.
https://www.fischl.de/usbasp/

Es muss also kein WCH552 oder AT90USB1287 sein.

von Techmex (Gast)


Lesenswert?

Guten Morgen und vielen Dank für eure Antworten.

Mit USB HID habe ich bisher noch keine Erfahrung aber das klingt 
interessant ist vermutlich auch einfach mal der nächste Schritt.

Zudem wollte ich eh schon seit 2 Jahren mal eine Minitastatur mit 4 
Tasten (F3, F10, Enter, ESC) bauen, um damit meinen Markierlaser 
komfortabler zu steuern :D
Das wäre ja vielleicht ein schönes Einstiegsprojekt für HID.

Besten Dank!

von Fabian W. (fabian_w105)


Lesenswert?

Morgen,

Ich habe zuletzt ein altes Sony Videoschnitt Pult umgebaut. Welches nur 
noch als PC-Interface dienen sollte. Da hatte ich mir die Frage auch 
gestellt wie ich die Befehle zum PC bekomme. Ich habe mich dann für MIDI 
entschieden.
Bei mir waren es ca. 93 Taster, 10 Encoder, 120 LEDs und ein paar 
anzeige Werte fürs Dispay.

Die MIDI Befehle sende ich über UART zum PC.
µC -> FTDI -> USB -> PC
Klappt sehr zuverlässig und die MIDI Pakete sind ja auch relativ einfach 
gestrickt (3 Byte).


Gruß Fabian

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.