Forum: PC Hard- und Software (Altes) Smartphone als Human Machine Interface


von Henrik H. (Firma: TU Chemnitz) (heha)


Lesenswert?

Hallo Leser,
beim immerwährenden Basteln an kleinen oder großen Werkzeugmaschinen bin 
ich (beim Projekt Ofensteuerung) zu dem Schluss gekommen, dass die 
Ausgestaltung des Mensch-Maschine-Interfaces (auch Benutzerschnittstelle 
oder HMI = Human Machine Interface im Fachenglisch) die größte Arbeit 
macht.
Das Steuern der Maschinenseite (hier: Keramik-Brennofen, Fräsmaschine, 
Innenloch-Kreissäge, Drahtsäge, Waschmaschine für Wafer, VR-Simulator 
für Hammereinschläge usw.) ist vergleichsweise einfach.

Mein Mikrocontroller-Favorit ist derzeit ATmega32U4 oder, für mehr 
Rechenleistung, STM32F103 oder STM32F407. Dabei implementierte ich stets 
ein USB-Device mit WebUSB-Interface (= treiberloser Zugang für PCs UND 
Smartphones) sowie eine passende Webseite („Äpp“) auf dem Webserver der 
TU Chemnitz. Die Maschine benötigt eine hohe elektrische Leistung, daher 
ist das USB-Device in der Regel „self-powered“ und benötigt VBUS 
allenfalls zur Präsenzerkennung und zur Speisung des chip-internen 
Pullup-Widerstandes an D+.
Die Äpp benutzt ausgiebig JavaScript und stellt Prozessparameter (bspw. 
Temperatur) als große, von Ferne ablesbare Zahlen sowie grafisch in 
einem Zeitdiagramm dar, ermöglicht alle Einstellungen und 
Programmierungen. Keine Webhostkommunikation (= läuft vom Cache) und 
keine Cookies. Maschinen-Einstellungen und Prozessabläufe werden im 
EEPROM oder Flash des Mikrocontrollers gespeichert, nicht im Local 
Storage der Äpp. Nur bei der Fräsmaschine kommt der G-Code von einer 
Datei hereingestreamt. Um das so nervige Problem von GRBL und der 
allfälligen Synchronisation kümmert sich USB von selbst: Der Verzicht 
auf altmodische Schnittstellen macht's möglich.

In vielen Fällen benötigt man ohne diese HMI allenfalls einen 
Startknopf. Dann geht der Ofen, die Waschmaschine oder die Drahtsäge 
einfach das zuletzt abgearbeitete Programm noch einmal durch. Bei 
Maschinen, die einen feinfühligen Jog-Modus benötigen, hängt am 
Mikrocontroller noch ein Inkrementalgeber sowie ggf. weitere analoge, 
quasianaloge oder digitale Eingabegeräte, bspw. ein Fußpedal.

So weit, so gut, das funktioniert alles prima seit Jahren. Ein Renner, 
der Schule machen sollte. Derzeit mit jeweils einem dazu abgestellten 
Windows-PC.

Beim Betrieb mit Smartphone stellt sich — abgesehen von der 
Bildschirmgröße und der notwendigen Umgestaltung der einen oder anderen 
Äpp — das Problem, dass man jenes auch aufladen können muss. Die gängige 
Lösung für Kommunikation UND Laden ist die Verwendung eines PCs. Das 
beißt sich allerdings mit WebUSB und Device-Only-USB-Geräten. Und dafür 
OTG implementieren erscheint mir zu aufwändig, falls das überhaupt 
funktioniert.

Die Rettung naht: USB-C! (Leider nicht für Uralt-Smartphones.)
So wie ich herausgefunden habe, ist bei USB-C die Host-Device-Richtung 
von der Stromversorgungsrichtung entkoppelbar. Dazu muss das Smartphone 
als auch das USB-Device eine USB-C-Buchse haben und ein einigermaßen 
vollbeschaltetes USB-C-C-Kabel verwendet werden. Im Standardfall: 
USB-Device = Strom-Konsument muss CC1 und CC2 je mit einem Widerstand 
5,1 kOhm nach GND beschaltet sein. Im Sonderfall: USB-Device = 
Strom-Lieferant muss CC1 mit einem lieferstromabhängigen Widerstand (im 
Bereich 10 kOhm) gegen VBUS beschaltet sein, um die 
Strom-Lieferfähigkeit mitsamt Stromstärke anzuzeigen. Mir genügen 
hierbei 5 V; Spannungsumschaltung ist nicht vorgesehen. CC2 ist entweder 
frei zu lassen oder — wenn vorhanden — mit Plus eines LiIon-Akkus direkt 
zu verbinden.

Ist das so richtig? Muss das USB-Device als Strom-Lieferant einen 
Schalter implementieren, der VBUS speist? Und wenn ja, wann ist dieser 
einzuschalten? Müssen Spannungspegel an CC1 und CC2 bspw. per 
A/D-Wandler gemessen werden? Wie geht ein Smartphone vor, um das Laden 
zu aktivieren?

Wäre das alles gelöst kann ein altes Smartphone an der Maschine 
verbleiben und seine Nutzungsperiode vor dem fälligen Recycling 
verlängern. Und es ist im Fehlerfall kinderleicht tauschbar, im 
Vergleich zu HMIs wie man sie von sonstigen Werkzeugmaschinen kennt.

Interessanterweise gibt es von der USB-C-Buchse eine 12-polige Version 
zu kaufen, die alle notwendigen Kontakte dafür herausführt und mit 
Lötkolben lötbar ist: Einreihige, nach Bestückung sichtbare und damit 
revisionierbare SMD-Kontakte. Diese reicht für alles außer USB jenseits 
480 MBit/s. Also für alle Bastelprojekte dieser Art. Jaja, 0,5 mm Pitch 
ist schon arg eng, da kann man vom ATmega32U4 auch die QFN-Version 
nehmen: Hat den gleichen Pitch – aber ist nicht revisionierbar: Keine 
Stummelbeinchen und das olle PowerPad.

Jaja, viel Text. Bitte vor dem Kommentieren genau durchlesen.

: Verschoben durch Moderator
von Michael B. (laberkopp)


Lesenswert?

Also dein Smartphone kann an einen PC und wird gleichzeitig geladen und 
darf über USB reden.

Nur ist der PC der Host/Master.

Wenn nun deine eigene Elektronik das Smartphone als Bedienfeld inkl. 
Dauerladung nutzen will muss es doch nichts anderes als der PC machen.

Geht es dir darum, dass eine USB Host Implementation dir zu komplex ist 
?

von Harald K. (kirnbichler)


Lesenswert?

Michael B. schrieb:
> Geht es dir darum, dass eine USB Host Implementation dir zu komplex ist

Unwahrscheinlich, die bringt das Smartphone schon ab Werk mit.

Henrik geht es, so wie ich seinen Text verstanden habe, nur darum, als 
Host zu arbeiten, aber von außen mit Spannung versorgt zu werden.

Das ist mit einem "USB-Dock" lösbar. So etwas ist ein USB-Hub, meist 
angereichert mit zusätzlichen Dingen (Kartenleser, HDMI-Ausgang, Audio, 
Netzwerk), und --und das ist das entscheidende-- einem 
Stromversorgungsanschluss. Nicht jedes "USB-Dock" hat sowas, darauf muss 
man bei der Auswahl also achten.

So ein Ding zwischen das Smartphone und die eigenen USB-Geräte gesetzt, 
ein (USB-) Netzteil dran angeschlossen, und der Drops sollte fein 
säuberlich ausgewickelt, gelutscht und genossen sein.

Ein ziemlich willkürlich ausgesuchtes Beispiel:
https://www.amazon.de/dp/B0BLNDNBG1

Das löst immerhin auch das Problem, das Henrik mit dem Verarbeiten der 
USB-C-Buchse beschreibt - das kann man sich dann sparen und weiterhin 
lötfreundlichere USB-A-Steckverbinder nutzen.

Funktional ist dieses "Dock" natürlich leichter Overkill, aber wirklich 
teuer ist es auch nicht, und mit etwas Suche sollten sich auch andere, 
günstigere Varianten auftreiben lassen.

Wenn man zum Selbstbau schreiten will, ist der Dreh- und Angelpunkt 
vermutlich ein USB-PD-fähiger USB-Hub.

Eventuell aber ist auch ein komplett anderer Ansatz möglich, wenn ein µC 
verwendet wird, der selbst mit USB-PD umgehen kann. Ich hab' das 
allerdings (noch) nicht im Detail betrachtet, was damit tatsächlich 
alles möglich ist.

Es gibt aber solche µCs inklusive Testplatinen für recht wenig Geld, und 
auch ein paar Projekte, die damit etwas anstellen:

https://www.wch-ic.com/products/CH32X035.html
https://github.com/WeActStudio/WeActStudio.CH32X035CoreBoard
https://www.aliexpress.com/item/1005006909948695.html

https://github.com/wagiminator/CH32X035-USB-PD-Tester
https://github.com/wagiminator/CH32X035-USB-PD-Adapter
(Ja, diese beiden Projekte machen natürlich was anderes, aber daraus 
lässt sich möglicherweise interessantes ableiten)

Persönliche Anmerkung an Henrik:
Ich verfolge Deine Basteleien schon seit etlichen Jahren und betrachte 
die als sehr erfreuliche Bereicherung. Weiter so!

von .● Des|ntegrator ●. (Firma: FULL PALATINSK) (desinfector) Benutzerseite


Lesenswert?

Wenn da also doch immer ein PC dabei sein muss:
Kann der dann nicht gleich die Steuerung übernehmen
und das Handy wird hinfällig?

von Michael B. (laberkopp)


Lesenswert?

.● Des|ntegrator ●. schrieb:
> Wenn da also doch immer ein PC dabei sein muss:
> Kann der dann nicht gleich die Steuerung übernehmen
> und das Handy wird hinfällig?

Mit welcher Presse willst du den PC auf den Formfaktor eines Smartphones 
bringen so dass gleichzeitig das draufgelegte Display heile bleibt ?

von Rüdiger B. (rbruns)


Lesenswert?

Die neueren ESP32 sind auch USB Host, die älteren können das per SW.

von Alexander (alecxs)


Lesenswert?

Hardwareseitig ist das nicht so das Problem, aber der Ladevorgang muss 
vom Kernel auch unterstützt werden. Das läuft dann evtl. auf einen 
Custom Kernel hinaus, sprich jegliche Integrität geht verloren.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Henrik H. schrieb:
> beim immerwährenden Basteln an kleinen oder großen Werkzeugmaschinen bin
> ich (beim Projekt Ofensteuerung) zu dem Schluss gekommen, dass die
> Ausgestaltung des Mensch-Maschine-Interfaces (auch Benutzerschnittstelle
> oder HMI = Human Machine Interface im Fachenglisch) die größte Arbeit
> macht.

Gratulation, du hast eine mindestens 40 Jahre alte Erkenntnis wieder 
entdeckt. Als man noch von Benutzerschnittstelle oder User-Interface und 
nicht in Hipster-Sprech von User-Experience (UX) sprach.

> Mein Mikrocontroller-Favorit ist derzeit ATmega32U4 oder, für mehr
> Rechenleistung, STM32F103 oder STM32F407.

Ok. Aber dann:

> Dabei implementierte ich stets
> ein USB-Device mit WebUSB-Interface (= treiberloser Zugang für PCs UND
> Smartphones)
...
> Derzeit mit jeweils einem dazu abgestellten
> Windows-PC.

Soll also heißen deine Lösung verlangt das du neben dem Mikrocontroller 
immer einen PC mit laufen hast. Eine Folge dessen dass du dich in eine 
Technologie (WebUSB) verliebt hast, die eher ein Nischenprodukt ist. Nun 
ja ...

Man könnte auf die Idee kommen einfach einen Embedded PC zu nehmen um 
die Maschine zu steuern, statt zusätzlich Mikrocontroller mit rein zu 
werfen.

> Die Rettung naht: USB-C!

Sagen wir so, die "Rettung" für ein selbstgemachtes Problem.

> Ist das so richtig?

Also ich habe jetzt keine Lust mich durch die Feinheiten der 
USB-Spezifikationen zu arbeiten. Denn da musst du im Detail rein sehe. 
Grob überfliegen und aus dem Web was zusammen zu googlen wird nicht 
reichen. Da du an der UNI aber unendlich viel Zeit hast würde ich 
vorschlagen du machst folgendes:

Schritt 1: Mit einem feinen Kamm durch die USB-Spezifikationen gehen

Schritt 2: Eine "Theorie" formulieren und dokumentieren (Schaltplan, 
nicht wilde Prosa) wie das funktionieren soll

Schritt 3: Hoffen dass beliebige Handy-Hersteller und die Hersteller von 
in Handys verwendeten Lade-ICs die USB-Spezifikationen ebenfalls genau 
durchgegangen sind und sich daran halten.

Schritt 4: Probeaufbau im Labor und Evaluation der Theorie

von Harald K. (kirnbichler)


Lesenswert?

Hannes J. schrieb:
> Soll also heißen deine Lösung verlangt das du neben dem Mikrocontroller
> immer einen PC mit laufen hast.

Ich habe Henrik so verstanden, daß webusb auch mit Smartphones 
funktioniert, und sein Problem nur aus dem Betrieb des Smartphones mit 
angeschlossenem USB-Device und gleichzeitiger Stromversorgung besteht.

Den Rest hat er vielleicht einfach etwas zu wortreich formuliert.

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.