Forum: Mikrocontroller und Digitale Elektronik Einstieg(scontroller) in Ethernet Kommunikation mit STM32


von Uli A. (schnuppi44)


Lesenswert?

Hallo zusammen !
Ich bin gerade bei der Entwicklung einer Remote Control Einheit für ein 
Mainframe mit diversen Relaiskarten (Pro Audio).
Die Steuerung soll mittels STM32 / C-Programmierung erfolgen. Auf der 
Softwareseite bin ich da schon ganz gut unterwegs. Nun möchte ich aber 
gerne die Anbindung der Remote an den Mainframe mit einem "einfachen" 
Ethernetkabel realisieren. Aufbau wäre:
********
Remoteunit mit STM32MCU (vermutlich F407VG) mit 54 beleuchteten 
LED-Tastern.
Die Taster werden entweder über PISO-Shift Register über SPI abgefragt 
oder per Matrix. Die LEDs in den Tastern werden über SIPO Shift Register 
angesteuert.

-> Ethernetkabel ->

-> Mainframe mit weiterer STM32 MCU, die über (SIPO) 
Power-Shift-Register Relais schaltet, deren "Zustände" denen der LEDs an 
der Remote entsprechen. Könnte natürlich ggfs. auch ein einfacher AVR 
sein, allerdings habe ich mich jetzt in STM32 schon ganz gut 
eingearbeitet...
********
Die Grundaufgabenstellung ist also, aus den Schaltzuständen (Stand jetzt 
über struct Bitfields programmiert) einfache Null/Eins - Bits vom einen 
STM32 zum anderen zu bringen.
Nun habe ich bisher leider noch Null Erfahrung und nur ein bisschen 
angelesenes Internetwissen zu der ganzen Ethernet-Geschichte.
Soweit ich verstanden habe, bräuchte ich aber rein hardwareseitig eine 
Art PHY mit ein paar "Peripherieteilen" wie Übertrager und Ferrite etc. 
auf beiden Seiten.

Gibt es da zum Experimentieren ein empfehlenswertes All-In-One 
Controllerboard, das aus den SPI Bit-Ketten auf der einen Seite ein 
Ethernet-Datenpaket schnürt und auf der anderen Seite das Ganze 
rückwärts ? Und wie aufwendig ist das Ganze auf der Programmierseite ?
Mir ist bewusst, dass gerade der STM32F407 ja schon Ethernet an Bord 
hat....aber es wäre zum Ausprobieren wie schon angedeutet praktisch, 
wenn ich nicht die Schnittstelle aus Einzelteilen aufbauen müsste, 
sondern einfach eine Art integrierten SPI/Ethernet-Konverter hätte...

Wäre das hier z.B. was ?
https://www.amazon.de/USR-ES1-W5500-Ethernet-Converter-Modul/dp/B07J9PQ34B
oder das hier:
https://www.reichelt.de/pmod-nic100-netzwerk-schnittstellen-controller-digil-410-208-p243338.html?&nbc=1

Grundsätzlich wäre für den Transfer auch eine Lösung mit RS232/RS485 
o.ä. denkbar - sind ja nur einfachste Schaltvorgänge....allerdings würde 
die Ethernet-Variante die Flexibilität mit sich bringen, ggfs. statt der 
Hardware-Remote mittelfristig auch andere Steuerungsvarianten (z.B. per 
Tablet GUI über LAN oder andere Steuersoftware auf Mac oder PC) zu 
ermöglichen....

Freue mich über Hilfe und Anregungen !
LG

: Bearbeitet durch User
von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Uli A. schrieb:
> Ich bin gerade bei der Entwicklung einer Remote Control Einheit für ein
> Mainframe mit diversen Relaiskarten

Etwas customising sollte bei den für Mainframe üblichen Preisen von dem 
Hersteller doch wohl drin sein. Dam uss man nicht selbst waas dran 
Rumfrikeln.

https://en.wikipedia.org/wiki/Mainframe_computer

Versuch vielleicht mal mit ein paar weniger Sätzen und den Richtigen 
Begriffen zu erzählen was du nun überhaupt machen willst...

von Net Worker (Gast)


Angehängte Dateien:

Lesenswert?

Uli A. schrieb:
> Freue mich über Hilfe und Anregungen !

Bin mal schnell drauf eingestiegen da ich gerade selbst mit dem
W5500 Modul spiele. Es hat den Charme dass man nur wenig Software
braucht um über Ethernet/TCP zu kommunizieren. Es ist nicht
ultraschnell da die Daten über SPI geschaufelt werden. Dafür kann
man einen fast beliebigen Controller seiner Wahl einsetzen, nur
SPI muss er können.

Die STM32F4xx haben meist schon den Ethernet-Controller
eingebaut, aber einen externen PHY muss man immer noch selbst
dazubauen. Dazu kommt noch ein LWIP Stack den man auch erst mal
einigermassen verstehen muss.

So richtig geschenkt bekommt man in beden Fällen nichts.

Zum NIC100 weiss ich nichts zu sagen. Vielleicht (noch?) nicht
sehr bekannt und verbreitet.

von AlterSack (Gast)


Lesenswert?

Fuer ein bisschen Bitgeklapper einen ARM M4.
Ich bin bei ST bislang regelmaessig mit dem STM32F107 schon
gut zurechtgekommen.

von Net Worker (Gast)


Lesenswert?

AlterSack schrieb:
> Ich bin bei ST bislang regelmaessig mit dem STM32F107 schon
> gut zurechtgekommen.

Klar, ein AVR reicht für's Bitklappern wohl auch.

von Harry L. (mysth)


Lesenswert?


von Uli A. (schnuppi44)


Lesenswert?

Irgend W. schrieb:
> Uli A. schrieb:
>> Ich bin gerade bei der Entwicklung einer Remote Control Einheit für ein
>> Mainframe mit diversen Relaiskarten
>
> Etwas customising sollte bei den für Mainframe üblichen Preisen von dem
> Hersteller doch wohl drin sein. Dam uss man nicht selbst waas dran
> Rumfrikeln.
>
> https://en.wikipedia.org/wiki/Mainframe_computer
>
> Versuch vielleicht mal mit ein paar weniger Sätzen und den Richtigen
> Begriffen zu erzählen was du nun überhaupt machen willst...

Ok. Das war anscheinend nicht ganz eindeutig, wenn man Mainframe auch 
wie die Teile in Deinem Link deuten kann - worauf ich als "nicht 
hauptberuflicher" Computer nicht gekommen wäre....zur Erklärung:

Der "Mainframe" ist nicht von einem Hersteller sondern auch von mir 
gebaut und ist kein riesiger Computerschrank sondern ein 6HE- 
Baugruppenträger im 19 Zoll Format.

Ich dachte davon abgesehen eigentlich, mich recht klar ausgedrückt zu 
haben...

von Uli A. (schnuppi44)


Lesenswert?

Harry L. schrieb:
> Wär das evtl. was um dem STM32 Ethernet beizubiegen?
>
> 
https://www.ebay.de/itm/1PCS-LAN8720-Ethernet-Module-Network-Transceiver-Embedded-Web-Server-RMII-PHY/163847001207?hash=item26260ad477:g:oX8AAOSwM0Rdb23Z

Wenn ich das recht verstehe, wäre das das Richtige für eine Lösung zur 
Nutzung der Onboard Ethernet Peripherie des STMF407 oder ?

Mein Eindruck ist allerdings, dass die W5500-Variante in meinem Fall 
praktischer zu sein scheint - immerhin habe ich ja die zu versendenden 
Daten quasi schon "im SPI Format" vorliegen, weil damit ja auch die 
Ausgabeschieberegister in der Remote für die LEDs gefüttert werden...

von Uli A. (schnuppi44)


Lesenswert?

Net Worker schrieb:
>
> Bin mal schnell drauf eingestiegen da ich gerade selbst mit dem
> W5500 Modul spiele. Es hat den Charme dass man nur wenig Software
> braucht um über Ethernet/TCP zu kommunizieren. Es ist nicht
> ultraschnell da die Daten über SPI geschaufelt werden. Dafür kann
> man einen fast beliebigen Controller seiner Wahl einsetzen, nur
> SPI muss er können.

Das wäre ja natürlich hier der Fall...
Hast Du denn das W5500 Modul auch an beiden Enden verwendet, so wie ich 
das ggfs. vorhabe ? Also mit µC + W5500 an beiden Enden der 
Ethernetstrecke ?

Und wenn ja, wie kann ich mir das bezüglich des eigentlichen 
Datentransfers vorstellen ? Kommt da dann einfach beim SPI am anderen 
Ende "verlustfrei" das raus, was man beim "Sender" reinschickt ? Ohne 
sonstige Konfiguration ?

Oder muss ich da noch in den SPI Datenstrom noch was mit reinschreiben ? 
Oder den Controller des W5500-Boards noch irgendwie programmieren / 
konfigurieren ?

Wo könnte ich darüber gute Infos finden ?
(außer hier natürlich ! ;-))

von Uli A. (schnuppi44)


Lesenswert?

Uli A. schrieb:
> - worauf ich als "nicht
> hauptberuflicher" Computer nicht gekommen wäre....zur Erklärung:

Ich meinte natürlich:

als "nicht hauptberuflicher" Computer-Interessierter...

;-)

von MaWin (Gast)


Lesenswert?

Uli A. schrieb:
> allerdings würde
> die Ethernet-Variante die Flexibilität mit sich bringen, ggfs. statt der
> Hardware-Remote mittelfristig auch andere Steuerungsvarianten (z.B. per
> Tablet GUI über LAN oder andere Steuersoftware auf Mac oder PC) zu
> ermöglichen

Du solltest hier ansetzen und die Äpfel von den Himbeeren trennen.

Für eine Fernanbindung brauchst du kein Ethernet. Unsere Urgroßvorfahren 
haben Kraftwerke per Modem supported. ;-)

Du meinst sicherlich Netzwerkkommunikation. Da geht es um IP und Co. Du 
musst in deinem System einen Server vorsehen. Der Server kümmert sich um 
die Konvertierung und kann auch auf verschiedene Hardware umsetzten, z. 
B. auch CAN, RS485, ..., oder parallele Backplane. ;-)

von Uli A. (schnuppi44)


Lesenswert?

MaWin schrieb:
> Für eine Fernanbindung brauchst du kein Ethernet. Unsere Urgroßvorfahren
> haben Kraftwerke per Modem supported. ;-)
>
> Du meinst sicherlich Netzwerkkommunikation. Da geht es um IP und Co. Du
> musst in deinem System einen Server vorsehen. Der Server kümmert sich um
> die Konvertierung und kann auch auf verschiedene Hardware umsetzten, z.
> B. auch CAN, RS485, ..., oder parallele Backplane. ;-)

Danke für den Beitrag. Genau die Unterscheidung dieser beiden Fälle

a) schlichte Übertragung der Steuerdaten über welches serielle 
Schnittstellen-/Protokollformat auch immer = autarkes System bestehend 
aus Remote und zu steuerndem Gerät (->Kraftwerk per Modem)

b) Erweiterung auf andere, die in a) genannte, autarke Remote ersetzende 
Systeme zur Steuerung der Schaltzustände = per Netzwerk

hatte ich doch schon in den Raum geworfen....

Deine begriffliche Abgrenzung bzgl. Netzwerk und Ethernet verstehe ich 
noch nicht so ganz...Ethernet ist doch ne Teilmenge von 
Netzwerkkommunikation, oder ?
Davon abgesehen....brauche ich tatsächlich für solche simplen 
Übertragungen schon einen Server ???
Also, wenn ich dieselben Pakete an den Mainframe schicken möchte, die 
der dortige W5500 in SPI umwandeln soll (wenn das dann so sein sollte, 
was hier noch nicht zweifelsfrei beantwortet wurde), dies aber von einem 
Computer oder einem Tablet am (Ethernet-)Netzwerk tue statt von der 
Remote....dann kann ich das nicht einfach machen, indem ich diese Pakete 
eben von dort aus losschicke ?
Sorry für die Laienfragen...

: Bearbeitet durch User
von Net Worker (Gast)


Lesenswert?

Uli A. schrieb:
> Kommt da dann einfach beim SPI am anderen
> Ende "verlustfrei" das raus, was man beim "Sender" reinschickt ? Ohne
> sonstige Konfiguration ?
>
> Oder muss ich da noch in den SPI Datenstrom noch was mit reinschreiben ?
> Oder den Controller des W5500-Boards noch irgendwie programmieren /
> konfigurieren ?

Eher das Letztere. Um die Konfiguration eines solch universellen
und vergleichsweise komfortablen Chips kommt man dann doch nicht
herum.

Grob gesprochen setzt man alle Netzwerk-Parameter, baut einen
Socket auf, setzt damit das gewünschte Protokoll (TCP, UDP und
andere) und öffnet eine Verbindung als Client oder Server.
Daneben kann man sich per Software-Erweiterung noch eine IP-
Adresse automatisch von einem anzugebenden Server beziehen
(DHCP). Steht die Verbindung, kann man über "send" und
"receive" (das sind standard Socket Funktionen aus der Library)
nackte Datenpakete zuverlässig senden und emfangen. Insgesamt
eine  Implementierung die bis jetzt für meine Begriffe die am
wenigsten Aufwand für ein Netzwerk bedeuted. Selbst in einem
AVR Mega328p mit 32K Flash und 2K (!) RAM kann man noch eine
Netzwerk-Gerätesteuerung implementieren. Was man ohne Zusatz-
Aufwand geschenkt bekommt ist ARP im Hintergrund und auto-
matisches Antworten auf Ping Anforderungen, damit ist auch
die direkte Kommunikation zwischen zwei W5500 Modulen ohne
Netzwerk-Server möglich.

Der Charme des W5500 ist also dass das vollständige Ethernet-
Protokoll und allermeiste IP-Protokoll im Chip abläuft und
damit dem Controller den Aufwand (der üblicherweise im Hinter-
gund läuft) abnimmt.

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Mainframe mit weiterer STM32 MCU

Was soll das denn bedeuten? Unter Mainframe verstehe ich Server mit der 
Leistung von 100 PC's.

Ich habe massive Problem, aus deinen wirren Texten zu extrahieren, was 
du eigentlich machen willst. Solange du keine Ahnung hast, wie Ethernet 
und das IP Protokoll funktionieren würde ich an deiner Stelle die Finger 
davon lassen. Das ist nämlich alles andere als simpel - insbesondere 
wenn du nicht den simplen Weg über einen Ethernet-zu-UART Adapter gehst.

Muss es unbedingt mit Kabel sein? Es gibt extrem preisgünstige 
WLAN-zu-UART Adapter, zum Beispiel das ESP-01 Modul.

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Mein Eindruck ist allerdings, dass die W5500-Variante in meinem Fall
> praktischer zu sein scheint - immerhin habe ich ja die zu versendenden
> Daten quasi schon "im SPI Format" vorliegen

Der W5500 kann nicht einfach beliebige SPI Datenströme über Ethernet 
weiter leiten. Seine Schnittstelle zum steuernden Mikrocontroller ist 
SPI, aber da laufen Befehle und Daten in einem ganz bestimmten Format 
herüber, dass der Wiznet Chip festlegt.

Das Gleiche hast du prinzipiell auch beim ESP-01 Modul, nur dass dieses 
halt WLAN und UART nutzt.

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Davon abgesehen....brauche ich tatsächlich für solche simplen
> Übertragungen schon einen Server ???

In der Regel schon. Denke an diverse Internet-Dienste die du nutzt. Auf 
deinem PC/Smartphone benutzt du überlicherweise eine Client Anwendung, 
die sich mit einem Server verbindet. Der Server bedient die Anfragen des 
Clients. Der Server muss daher immer ansprechbar sein.

Wenn ein Client etwas zu einem Server sendet, und dieser gerade abwesend 
ist, dann läuft die Anfrage ins leere. In diesem Zusammenhang könnte für 
dich ein MQTT Broker interessant sein. Das ist ein zentraler Speicher 
(Server) für Nachrichten, die deine Mikrocontroller dort ablegen und 
andere von dort abholen. Wie ein Postfach. In diesem Fall sind alle 
beteiligten Mikrocontroller Clients und müssen eben nicht permanent 
ansprechbar sein. Der Broker würde dann auf einem Linux/Windows Rechner 
(vielleicht ein Raspberry Pi) laufen.

von PittyJ (Gast)


Lesenswert?

Ich habe vor ein paar Jahren mal mit dem W5500 in Kombination mit einem 
Arduino herumgespielt.
Einfache UDP Pakete konnte man wunderbar verschicken. So für lokale 
Datentransfers zwischen 2 Rechnern reicht das.
Aber sobald der in ein richtiges Netz kommt, dann fehlt die Hälfte der 
Protokolle, die man z.B. bei einem Linux mit geliefert bekommt.
Man darf sich selbst um Namesauflösung kümmern, DNS ist wohl nicht mit 
dabei.
DHCP lief auch irgendwie nicht.

Sprich solange man vereinzelte Pakete mit fester IP verschickt reicht 
das. Um das in ein Firmennetzwerk zu hängen, da fehlen ein paar 
Protokolle, um die man sich dann selber kümmern muss.

von Johannes S. (Gast)


Lesenswert?

hier gab es vor kurzem eine ähnliche Aufgabe, da habe ich ein Stück Code 
mit mbed-os gepostet: 
Beitrag "Re: 32 GPIO Sender und Empfänger via Bus/Ethernet"
Da ging es um die Übertragung von IO Signalen, im Prinzip das gleiche. 
Das SPI gibt es natürlich auch als API und Komponenten für die 
Portextender findet man auch.

Ist C++, läuft aber auch auf einem F407. Einen W5500 würde ich mir nicht 
antun, weil der EMAC im F407 wunderbar funktioniert. Und man kann mit 
dem Debugger bis in die untersten Schichten von lwIP und Treiber.
Es gibt eine ganze Menge verschiedener Boards mit dem F407, für die 
einfachen (<10€) vom Ali braucht man noch einen Phy und 11 Strippen zum 
anschliessen. Von Waveshare kosten originale ca. 10€, die Clones (ja, 
die Chinesen kopieren sich auch gerne selber) kosten weniger als die 
Hälfte.
Dann gibt es weitere Boards mit dem F407 incl. Ethernet Phy und RJ45 
Buchse, findet man ab ca. 20€. Und bei Olimex gibt es ebenfalls ein 
passendes Board E407 incl. Ethernet für ca. 30€.

Das Code Beispiel arbeitet mit UDP, da kann man auch einen Empfänger 
bauen der von mehreren Sendern gesteuert werden kann.
Das von Stefan genannte MQTT mag ich auch, dafür gibt es viele Clients, 
z.B. auch für das Smartphone. Oder Automatisierungssoftware die dann per 
GUI oder Timer Aktionen ausführen kann. Einen MQTT Client kann man mit 
dem F407 und Mbed auch realisieren, dafür hätte ich auch eine 
Komponente.

von temp (Gast)


Lesenswert?

Ich halte auch den W5500 für diesen Anwendungsfall und die vorhandene 
Erfahrung für den besten Weg. Wie man beim Netzwerk-Protokoll auf MQTT 
kommt in Verbindung mit "pro Audio" erschließt sich mir nicht. Hier ist 
ehr OSC angesagt.

https://de.wikipedia.org/wiki/Open_Sound_Control

Vor allem, weil es im Pro Audio Umfeld von vielen Geräten unterstützt 
wird und es auch für Tablets und co. genügend Lösungen gibt.

https://hexler.net/touchosc

Im Musikerumfeld und zum Schalten von ein paar Relais kämen auch noch 
Midi oder DMX in Frage. Für DMX gibt's auch fertige drahtlose "Kabel":

https://www.thomann.de/de/eurolite_quickdmx_wireless_receiver.htm?sid=0f74ac1d9f3beb61b0a693fa883969ec

Ebenso gibt es fertige Relaisbaugruppen für DMX.
Midi oder DMX sind auch simpel und billig mit dem kleinsten µC möglich. 
DMX erledigt ein STM32 per DMA im Halbschlaf.

von Frank K. (fchk)


Lesenswert?

Uli A. schrieb:

> Gibt es da zum Experimentieren ein empfehlenswertes All-In-One
> Controllerboard, das aus den SPI Bit-Ketten auf der einen Seite ein
> Ethernet-Datenpaket schnürt und auf der anderen Seite das Ganze
> rückwärts ? Und wie aufwendig ist das Ganze auf der Programmierseite ?
> Mir ist bewusst, dass gerade der STM32F407 ja schon Ethernet an Bord
> hat....aber es wäre zum Ausprobieren wie schon angedeutet praktisch,
> wenn ich nicht die Schnittstelle aus Einzelteilen aufbauen müsste,
> sondern einfach eine Art integrierten SPI/Ethernet-Konverter hätte...

Mach es nicht.

1. Die SPI-Ethernet-Controller sind eigentlich nur Notlösungen für die 
Fälle, wo der Prozessor nichts eingebaut hat. Du fügst dem ganzen eher 
noch Komplexität hinzu. Der bessere Weg wäre ein Devboard, was Ethernet 
gleich schon mit drauf hat.

2. Du kannst nicht einfach Bitfolgen per SPI reintakten und hoffen, dass 
die auf der anderen Seite wieder rausfallen. Du brauchst einen 
speziellen Treiber, der Speicher und Register über den Flaschenhals SPI 
gezielt befüllt. Das ist genauso komplex wie die Programmierung des 
internen Controllers.

3. Du brauchst eh den ganzen Netzwerkstack mit IP, TCP, UDP, DNS usw. 
Das willst Du nicht selberschreiben, und deswegen setzt Du auf ein 
Framework auf. Diese Frameworks benutzen aber den internen Controller, 
irgendetwas anderes müsstest Du seinen reinbasteln. Viel Spaß damit.

Es gibt leichtgewichtigere Alternativen: z.B. CAN oder RS422/RS485. 
RS422/RS485 gibts z.B. auch mit 10MBit/s und mehr, wenn man die 
passenden Controller verwendet.

Und für den Anfang gibts auch Umsetzer LAN-RS232/422/485. Sowas z.B.:
https://www.wiznet.io/product-item/wiz105sr/
Da brauchst Du Dich auf Controllerseite um nichts mehr zu kümmern.

Ansonsten ist das hier ganz nett:
https://www.ti.com/tool/EK-TM4C1294XL
Der Chip hat Ethernet MAC UND PHY direkt eingebaut, d.h. Du kannst 
direkt die LAN-Buchse anklemmen. Und Du bekommst von TI eine komplette 
Treiberbibliothek und ein RTOS mit TCP/IP-Stack kostenlos dazu.

fchk

von Dr. MCU (Gast)


Lesenswert?

Ich bin zwar auch ein grosser STM32-Fan, aber in diesem Fall würde ich 
doch den ESP32 vorschlagen, da das "Gesamtpaket" durchaus ein paar 
Vorzüge hat.

1. Für 6-7€ plus Versand bekommst Du ein fertiges Board vom Chinamann 
(https://de.aliexpress.com/item/1005002023028892.html)
2. Der ESP32 kann sowohl Ethernet als auch WLAN
3. Das ESP-IDF ist mittlerweile ziemlich ordentlich und die 
Programmierung damit ist gar nicht schwer
4. Sämtliche benötigten Protokolle sind mit an Bord (TCP/IP über lwIP), 
auch sowas wie MQTT, aber ebenso ist ein Websocket-Server oder 
HTTP()S-Server blitzschnell mit wenig Aufwand programmiert, ohne dass 
man sich in die Protokoll-Details tief einarbeiten muss
5. Der ESP32 kann natürlich auch SPI und I2C, also falls die Tasten 
keine eigenen Schieberegister haben, lassen sich natürlich mehrere 
MCP23017 leicht anschließen.

Ich wage mal zu behaupten, dass Du mit dem ESP32-Board ziemlich schnell 
zumindest die grundlegende Funktionalität am Start hast. Mit dem STM32 
wirst Du erheblich länger brauchen.

von Uli A. (schnuppi44)


Lesenswert?

Hui. Ok. Ich versuche mal, das alles zu sortieren - vielen Dank für Eure 
Beiträge und Anregungen...!

Ganz grob zusammengefasst, heißt das für mich:

a) Frag 4 Ärzte und höre 7 Meinungen     ;-)

b) Wie ja durchaus von mir vorher angenommen, reichen meine Kenntnisse 
zum Thema Netzwerktechnik da noch nicht annähernd aus   ;-(

Das war ja auch der Grund für meine Frage nach einer quasi Plug&Play 
Lösung für die Konvertierung, die eben nicht so viel Netzwerkkenntnisse 
erfordert....die scheint es so aber wohl nicht zu geben, was zu wissen 
ja auch schon ein Gewinn ist. Ebenso wie der Hinweis, dass die 
vermeintliche Erleichterung dann doch wieder andere Komplikationen mit 
sich bringt...
Allerdings scheint der WIZ105 interessant zu sein...

Da muss ich also wohl erstmal einiges an Hausaufgaben machen bzw. doch 
eher den "lokalen" Weg (Modem zu Kraftwerk) über die gängigen seriellen 
Schnittstellen beschreiten.

In der Zwischenzeit: Hat jemand vielleicht einen Tip zu einem guten 
Standardwerk oder zu Internetresscourcen, wenn ich mich grundlegend in 
die Netzwerktechnik einarbeiten will ? Vor allem auch auf der 
Hardwareseite ?
Die meisten Bücher die ich bisher gesehen habe sind scheinbar eher für 
IT-Interessierte in Richtung "Wie richte ich ein Netzwerk ein" 
geschrieben....

von Frank K. (fchk)


Angehängte Dateien:

Lesenswert?

Uli A. schrieb:

> Da muss ich also wohl erstmal einiges an Hausaufgaben machen bzw. doch
> eher den "lokalen" Weg (Modem zu Kraftwerk) über die gängigen seriellen
> Schnittstellen beschreiten.

Das ist ein guter Weg. Fang erstmal mit RS232 oder RS485 an und nimm 
vielleicht MODBUS-RTU als Protokoll. Dann kannst Du damit

https://www.amazon.de/Waveshare-Industrial-Converter-Customized-Resolution/dp/B07S3HRYRR/ref=psdc_1626220031_t1_B00LJEQLR2

Dein Gerät ans Netzwerk anschließen, und auf der anderen Seite fällt 
MODBUS-TCP raus, oder nacktes TCP, je nach Einstellungen und dem, was 
auf der anderen Seite ist.

> In der Zwischenzeit: Hat jemand vielleicht einen Tip zu einem guten
> Standardwerk oder zu Internetresscourcen, wenn ich mich grundlegend in
> die Netzwerktechnik einarbeiten will ? Vor allem auch auf der
> Hardwareseite ?

Auf der Hardwareseite ist es einfach: Nimm einen Controller mit 
eingebautem MAC, der MII oder RMII hat, klemme einen PHY an (der hat 
auch MII oder RMII), und der Rest steht in den Datenblättern der 
beteiligten Controllern.

Wenn Du mit minimaler Hardware anfangen willst, nimmst Du diesen 
Mikrocontroller:

https://www.microchip.com/wwwproducts/en/PIC18F67J60

Das ist dann eine Einchip-Lösung, d.h. da ist alles drin. Du brauchst 
dann noch einen 25 MHz Quarz, ein paar Kondensatoren und Widerstände, 
und den LAN-Port mit eingebautem Übertrager. Weniger und billiger geht 
nicht, und lötbar ist das auch noch. Die Software gibts bei Microchip 
kostenlos.

Siehe Anhang, das kannst Du so abpinseln, das funktioniert.

Wenn Du mehr Ports und Pins brauchst, gibts das ganze als PIC18F97J60 
auch mit 100 Pins.

fchk

von MaWin (Gast)


Lesenswert?

Uli A. schrieb:
> Deine begriffliche Abgrenzung bzgl. Netzwerk und Ethernet verstehe ich
> noch nicht so ganz...Ethernet ist doch ne Teilmenge von
> Netzwerkkommunikation, oder ?

Ein Netzwerk kann Ethernet zur Datenübertragung nutzen, aber auch eine 
andere Art (z. B. W-LAN).

Ein paar Bildchen zur Verdeutlichung:
http://www.tcp-ip-info.de/glossar/tcp-ip-modell-vs-osi-modell.gif
http://www.hbernstaedt.de/OSI.jpg
http://www.hbernstaedt.de/osihis.jpg

von Uli A. (schnuppi44)


Lesenswert?

Frank K. schrieb:
> Auf der Hardwareseite ist es einfach: Nimm einen Controller mit
> eingebautem MAC, der MII oder RMII hat, klemme einen PHY an (der hat
> auch MII oder RMII), und der Rest steht in den Datenblättern der
> beteiligten Controllern.

Da bin ich ja mit dem STM32F407 schon genau richtig - der kann ja MII 
und RMII....

Welchen PHY würdest Du denn dafür nehmen ? Gibt es da was in einem 
lötbaren Format ? Wie wäre es mit dem hier:

https://www.reichelt.de/10base-t-ethernet-kontroller-spi-eee-802-3-dip-28-enc-28j60-i-sp-p89340.html?&nbc=1

(darauf kam ich ebenfalls wieder im Sinne des Gedankens, mir wenn 
möglich den Aufbau von vielen "Kleinstkomponenten" in der Testphase zu 
sparen)

?

Danke für die Tips mit TI und PIC....bin allerdings gerade so schön 
frisch eingearbeitet in die STM32-Welt und kann das alles soweit ganz 
gut bedienen und programmieren, zumindest was die einfache 
Registerprogrammierung angeht....also Configs schreiben und direkte 
Ansteuerung der GPIO, SPI und I2C Register...und das läuft alles prima 
mit dem Coden in der CubeIDE und das Debugging und die Ausführung auf 
dem STM funktioniert auch...daher würde ich nur bei absoluter 
Notwendigkeit direkt wieder einen Systemwechsel machen wollen...;-)

Natürlich ist die Auswahl des F407 dem aktuellen Verwenden des Discovery 
Boards geschuldet, und dementsprechend ist der natürlich vor allem auf 
der "Empfängerseite" meines Projektes ziemlich Überdimensioniert....aber 
es geht eben für mich im Moment immer noch darum, sehr viele neue Sachen 
zu verstehen und anwenden zu lernen....das Ganze dann etwas passender 
dimensionieren kann ich ja später immer noch...

von Net Worker (Gast)


Lesenswert?

Uli A. schrieb:
> Wie wäre es mit dem hier:
>
> 
https://www.reichelt.de/10base-t-ethernet-kontroller-spi-eee-802-3-dip-28-enc-28j60-i-sp-p89340.html?&nbc=1

Nein, das ist ein Ethernet Controller, für deine Betrachtungen
in diesem deinen Beitrag brauchst du einen PHY, also etwa einen
DP83848 oder einen LAN8720. So etwas ist auch auf den Nucleo
Boards verbaut.

von Uli A. (schnuppi44)


Lesenswert?

Net Worker schrieb:
> brauchst du einen PHY, also etwa einen
> DP83848 oder einen LAN8720. So etwas ist auch auf den Nucleo
> Boards verbaut.

Also dann sowas ?

https://www.amazon.de/Waveshare-Performance-LAN8720-Board-Transceiver/dp/B00N4JW3YK

bzw.

https://www.amazon.de/Waveshare-DP83848-Ethernet-Board-Transceiver/dp/B00KM6VNBC

: Bearbeitet durch User
von Net Worker (Gast)


Lesenswert?

Uli A. schrieb:
> Also dann sowas ?

Schrub ich doch!

von Johannes S. (Gast)


Lesenswert?

Ja, passt, schrieb ich auch schon. Nur das Disco hat einige Ports 
belegt, da muss man gucken ob die RMII noch frei ist. Kann man einfach 
mit dem STM32Cube kontrollieren.

von Uli A. (schnuppi44)


Lesenswert?

Net Worker schrieb:
> Uli A. schrieb:
>> Also dann sowas ?
>
> Schrub ich doch!

Wollte nur sicher gehen, dass Du sowas als Board meintest und nicht nur 
den Chip an sich...;-)

Johannes S. schrieb:
> Ja, passt, schrieb ich auch schon. Nur das Disco hat einige Ports
> belegt, da muss man gucken ob die RMII noch frei ist. Kann man einfach
> mit dem STM32Cube kontrollieren.

Ja, aber das krieg ich hin....immerhin....;o)))

von Net Worker (Gast)


Lesenswert?

Uli A. schrieb:
> Wollte nur sicher gehen, dass Du sowas als Board meintest und nicht nur
> den Chip an sich...;-)

Wo ist der prinzipielle Unterschied zwischen nackten Chip und
einem Board/Modul? Ich sehe keinen, soviel Abstraktion muss
man von dir erwarten können.

von J. -. (Gast)


Lesenswert?

Net Worker schrieb:
> Wo ist der prinzipielle Unterschied zwischen nackten Chip und
> einem Board/Modul? Ich sehe keinen, soviel Abstraktion muss
> man von dir erwarten können.
Auf diesen Boards ist für den RMII-Betrieb ein 50MHz-Quarz vorhanden. 
Das ist auch ganz gut so, da hat man beide Entscheidungen 
(RMII-Interface und Taktversorgung über separaten Oszillator und nicht 
vom F407) schon getroffen.
Ansonsten: Der DP83848 bietet MII (der LAN8720 kann nur RMII), aber 
nicht auf diesen Boards.
Bei mir laufen ein paar Server mit LAN8720 und dem DP83848(im MII Mode). 
Die Antwortzeit vom DP ist spürbar schneller, aber bei ein paar popligen 
Webseiten oder nur Daten spielt das kaum eine Rolle.

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Welchen PHY würdest Du denn dafür nehmen ? Gibt es da was in einem
> lötbaren Format ?

Ich würde mich da an den Empfehlungen von ST orientieren, denn du willst 
ja auch, dass deren Software dazu passt. Die haben bestimme eine 
Application Note dazu geschrieben.

von temp (Gast)


Lesenswert?

Frank K. schrieb:
> Das ist ein guter Weg. Fang erstmal mit RS232 oder RS485 an und nimm
> vielleicht MODBUS-RTU als Protokoll. Dann kannst Du damit

Bitte erst mal den Ausgagngspost lesen. Das Umfeld ist Pro Audio und 
damit ist MODBUS-RTU wohl nicht die beste Wahl.

von Johannes S. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Ich würde mich da an den Empfehlungen von ST orientieren,

ST verwendet den LAN8720 (ist auch auf den Waveshare drauf), neuere 
Boards den moderneren LAN8742A.
Für die Basisfunktionalität sind die Register gleich, aber die PHY haben 
auch eine Adresse die per Hardware gesetzt ist. Wenn die nicht passt, 
dann sucht man da erstmal weil nix geht. Im Cube kann man den Phy 
auswählen und der Code wird passend generiert. In Mbed kann man die Bits 
und Bitmasken anpassen und so auch mit DP oder LAN87xx Phy arbeiten.
Die nackten Chips sind nicht Breadboard tauglich, die Module habe ich 
mit 10 cm Dupontkabeln angeschlossen und das hat in mehreren Fällen 
funktioniert. Nur nicht die Kabel mit billigen Eisenkontakten nehmen, da 
kriegt man die Krise wenn die nach 3 Tagen von alleine wackelig werden.

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Bitte erst mal den Ausgagngspost lesen. Das Umfeld ist Pro Audio und
> damit ist MODBUS-RTU wohl nicht die beste Wahl.

Könntest Du das für mich Anfänger erklären ?

von Frank K. (fchk)


Lesenswert?

Uli A. schrieb:
> temp schrieb:
>> Bitte erst mal den Ausgagngspost lesen. Das Umfeld ist Pro Audio und
>> damit ist MODBUS-RTU wohl nicht die beste Wahl.
>
> Könntest Du das für mich Anfänger erklären ?

Er meinte damit, dass MODBUS aus dem industriellen Umfeld kommt und im 
Audio-Umfeld weitgehend unbekannt ist. Wenn Du hingegen eh alles 
selberbauen willst, finde ich das nicht so wichtig. Es gibt da eine 
Lösung, die recht einfach umzusetzen ist, das Protokoll ist hinreichend 
einfach, und Umsetzer MODUBUS RS485-TCP gibts auch fertig zu kaufen.

In Musikbereich ist DMX üblich, aber direkt DMX über IP ist meine ich 
nicht standardisiert. Es gibt mehrere Derivate, die etwas DMX-ähnliches 
über UDP oder IP machen. Außerdem kenne ich jetzt kein Gerät, was DMX 
über RS485 in DMX (oder ähnliches) über IP umsetzt, während das bei 
Modbus recht weit verbreitet ist. Musik ist aber nicht mein Ding, und 
daher kenne ich mich in dem Bereich auch recht wenig aus.

Was es auch gibt, sind Lösungen, die auf dem Rechner eigene COM-Port 
Treiber installieren, die den IP-seriell-Umsetzer steuern. Dann merkt 
die eigene Software nicht, dass das entfernte Gerät übers Netzwerk 
angesteuert wird. Da Du aber mittelfristig eh direkt IP verwenden 
willst, halte ich das speziell für Dich nicht für eine geeignete 
Strategie.

fchk

von Jörg (Gast)


Lesenswert?

Frank K. schrieb:
> Und für den Anfang gibts auch Umsetzer LAN-RS232/422/485. Sowas z.B.:
> https://www.wiznet.io/product-item/wiz105sr/
> Da brauchst Du Dich auf Controllerseite um nichts mehr zu kümmern.

Wie meintest Du das? Die Ethernet-Seite des WIZ105SR mit dem STM32 
verbinden? Wäre es in dem Fall nicht einfacher, im STM32 UART und dann 
einen Pegelwandler auf RS232 zu benutzen?

Falls die Verbindung andersherum gemeint war? Hat man dann nicht 
dieselben Nachteile wie von Dir für den W5500 beschrieben?

von Uli A. (schnuppi44)


Lesenswert?

Frank K. schrieb:
>>> damit ist MODBUS-RTU wohl nicht die beste Wahl.
>>
>> Könntest Du das für mich Anfänger erklären ?
>
> Er meinte damit, dass MODBUS aus dem industriellen Umfeld kommt und im
> Audio-Umfeld weitgehend unbekannt ist.

Wenn das so gemeint war, empfinde ich das auch nicht als wichtiges 
Kriterium.
Für mich ist insgesamt wichtig, eine funktionierende Lösung mit halbwegs 
überschaubarem Lern- und Entwicklungsaufwand zu finden.
Da ich das Ganze zunächst nur als erweitertes Hobbyprojekt betreibe, 
kann und will ich kein IT- und Informatikstudium zwischenschalten, um 
alle Pros und Cons der verschiednen technischen und Protokoll-Varianten 
bewerten zu können.
Und davon abgesehen, dass es sicher nicht nur die eine, richtige Lösung 
gibt - offensichtlich gibt es ja da auch unter den erfahrenen Anwendern 
einigen Diskurs....;o)

Was ich mir mit dem Thread erhofft habe, ist dementsprechend ein 
Ausschluss von SICHER NICHT sinnvollen Ansätzen und Anregungen für eine 
mögliche Richtung...und das eben auf Hardware- wie auf Code-Seite...

So ganz uninteressant ist DMX da auch nicht - allerdings eben auch 
wieder eher als Lösung für die lokalere Idee (ohne spätere Erweiterung 
auf Netzwerk-Remote-Bedienung verschiedenster Art und Übertragungswege).

von Martin S. (strubi)


Lesenswert?

Uli A. schrieb:
> Gibt es da zum Experimentieren ein empfehlenswertes All-In-One
> Controllerboard, das aus den SPI Bit-Ketten auf der einen Seite ein
> Ethernet-Datenpaket schnürt und auf der anderen Seite das Ganze
> rückwärts ? Und wie aufwendig ist das Ganze auf der Programmierseite ?

Grundsaetzlich ist Netzwerk-Kram etwas aufwendiger als das. Mit dem 
Wiznet-W5500-Geraffel kann man schon was zum Rattern kriegen, aber kaum 
skalierbar (und per SPI wegen der Performance nicht wirklich zu 
empfehlen). Die Anbindung per Bus-Interface ist etwas flotter. Aber 
merke: es gehen maximal 4 TCP Verbindungen (sollte ich mich jetzt nicht 
irren).
Fertige Setups was die Hardware und Kommunikationslayer (Ethernet) 
angeht, solltest du bei der Suche nach Stichworten 'ROS' oder 'NuttX' 
einige finden.

Darauf setzt du dann die Kommunikationslib deiner Wahl. Fuer alles, was 
Linux-Socket-kompatibel ist (LWIP, NuttX Stack, ...) kannst du einiges 
wiederverwerten. Vielleicht hilft Dir da auch netpp 
(https://gitlab.com/hackfin/netpp). Damit reduziert sich die 
Fernkontrolle auf Register-Treiber-Schreiben und Ansteuerung per Python 
o.ae., allerdings musst du etwas Schmalz in die Abstraktion der 
Geraetebeschreibung investieren (per grafischen XML-Third-Party-Tool).

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> So ganz uninteressant ist DMX da auch nicht - allerdings eben auch
> wieder eher als Lösung für die lokalere Idee (ohne spätere Erweiterung
> auf Netzwerk-Remote-Bedienung verschiedenster Art und Übertragungswege).

Da liegst du falsch. Der gängige Weg ist heute Artnet. Von der 
Netzwerkschicht (UDP) auf DMX wird es meistens erst relativ local 
gemacht mit solchen Teilen:
https://www.dmx4all.de/produkte/dmx-stage-profi-1-1-rdm/
Github ist mit solchen Artet Nodes aber auch voll. Zu Artnet findest du 
über 600 Repositories.

Der andere Weg ist OSC und das läuft auch über UDP Pakete. Darüber wird 
auch Midi abgewickelt. Die gängige Software im Pro Audio Umfeld wie 
Logic oder Cubase unterstützen dieses Protokoll. Viele andere auch. 
Lichtsteuersoftware spricht häufig Artnet, Midi und DMX. MQTT und Modbus 
wurde in diesem Umfeld noch nicht gesehen.

Eventuell sollte der Threadstarter mal sagen was er unter Pro Audio in 
diesem Zusammenhang versteht.

von Uli A. (schnuppi44)


Lesenswert?

Martin S. schrieb:
> Grundsaetzlich ist Netzwerk-Kram etwas aufwendiger als das. Mit dem
> Wiznet-W5500-Geraffel kann man schon was zum Rattern kriegen, aber kaum
> skalierbar (und per SPI wegen der Performance nicht wirklich zu
> empfehlen).

Die im Gegensatz zu gebräuchlichen Netzwerkübertragungsraten eher 
geringe SPI Performance ist in meinem Fall vermutlich eher nicht das 
Problem, zumindest soweit ich das einschätzen kann...immerhin ist das 
eigentliche Datenpaket extrem winzig - ein paar Schaltbits halt....und 
das wird sich auch in einer "skalierten Variante" nicht ändern...

> Die Anbindung per Bus-Interface ist etwas flotter. Aber
> merke: es gehen maximal 4 TCP Verbindungen (sollte ich mich jetzt nicht
> irren).

Auch das sollte bei mir auch längerfristig ausreichen, wenn ich die Zahl 
der TCP Verbindungen von maximal 4 mit der maximalen Zahl der 
"gleichzeitig Zugriffsbeteiligten" auf das Gerät richtig verstehe...

> Fertige Setups was die Hardware und Kommunikationslayer (Ethernet)
> angeht, solltest du bei der Suche nach Stichworten 'ROS' oder 'NuttX'
> einige finden.
>
> Darauf setzt du dann die Kommunikationslib deiner Wahl. Fuer alles, was
> Linux-Socket-kompatibel ist (LWIP, NuttX Stack, ...) kannst du einiges
> wiederverwerten. Vielleicht hilft Dir da auch netpp
> (https://gitlab.com/hackfin/netpp).
> Damit reduziert sich die
> Fernkontrolle auf Register-Treiber-Schreiben und Ansteuerung per Python
> o.ae., allerdings musst du etwas Schmalz in die Abstraktion der
> Geraetebeschreibung investieren (per grafischen XML-Third-Party-Tool).

Danke für die Hinweise - sind für mich für den Moment noch einige 
spanische Dörfer dabei, aber das werde ich mal mit der Zeit 
durcharbeiten ;-)

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Eventuell sollte der Threadstarter mal sagen was er unter Pro Audio in
> diesem Zusammenhang versteht.

Ich bin der Threadstarter....;-)

Nochmal zur Klärung:

Pro Audio ist die eigentliche Anwendung des Geräts, für das die 
Steuerung implementiert werden soll - genauer gesagt eine Art 
Schaltmatrix für analoge Geräte im Bereich Audio Mastering / Mixing.

Der Mainframe (ja, man kann den Begriff auch im Sinne von "Hauptgerät" 
verwenden und nicht nur mit der spezifischen Bedeutung 
"Megazentralrechnerkomplex", wie immerhin die Wortbedeutung an sich auch 
nahelegt) enthält hier ein modulares Relaiskartensystem, das die 
einzelnen Geräte in den analogen Signalweg schaltet.
Die Remote soll natürlich diese Schaltvorgänge entsprechend ansteuern 
bzw. abspeicherbar verwalten. Aktuell gibt es das Gerät auch schon (habe 
es für mein eigenes Studio entwickelt und gebaut), alerdings in einer 
noch nicht "digitalisierten", einfachen Version, in der die 
Schaltzustände schlicht über rastende Schalter hergestellt werden...

Von der Anwenderseite sind mir natürlich sowohl DMX als auch OSC 
bekannt.

WLAN fällt für mich übrigens weg (da sind Studioleute - besonders im 
Masteringbereich - eher keine Fans von). Die gesuchte Struktur ist also 
wie schon im Anfangspost beschrieben das eigentlich schaltende Gerät, 
das dann im einfachsten Fall durch die besagte Hardware Remote Unit 
bedient wird, im erweiterten Fall aber auch (entweder statt oder sogar 
parallel zur Remote) durch einen Rechner im Ethernet 
LAN....anwendungsseitig dann z.B. durch DAWs bzw. entsprechende Plugins.

Natürlich hätte da die Verwendung eines OSC-kompatiblen Protokolls 
seinen Reiz - eben durch die große Verbreitung im gesamten 
Audio-Kosmos...

Danke auch noch für den Aspekt Artnet (kannte ich noch nicht !)

: Bearbeitet durch User
von Frank K. (fchk)


Lesenswert?

Jörg schrieb:
> Frank K. schrieb:
>> Und für den Anfang gibts auch Umsetzer LAN-RS232/422/485. Sowas z.B.:
>> https://www.wiznet.io/product-item/wiz105sr/
>> Da brauchst Du Dich auf Controllerseite um nichts mehr zu kümmern.
>
> Wie meintest Du das? Die Ethernet-Seite des WIZ105SR mit dem STM32
> verbinden? Wäre es in dem Fall nicht einfacher, im STM32 UART und dann
> einen Pegelwandler auf RS232 zu benutzen?
>
> Falls die Verbindung andersherum gemeint war? Hat man dann nicht
> dieselben Nachteile wie von Dir für den W5500 beschrieben?

Es ist andersrum gemeint. Und dann kommt das, was Du auf der einen Seite 
seriell reinschiebst, auf der anderen Seite 1:1 als TCP-Datenstrom auf 
einem festen TCP-Port raus. Das serielle Gerät weiß davon nichts. Wenn 
es nur darum geht, einen Datenstrom zu übertragen, ist das das 
einfachste.

Solche Geräte gibts entweder zum Einbauen oder als externe Einheit, die 
dann bis zu 16 serielle Ports (RS232 oder RS422/485) haben kann.

fchk

von Uli A. (schnuppi44)


Lesenswert?

Nochmal ne grundsätzliche Verständnisfrage, um das Ganze trotz aller 
weißen Wissens-Flecken bei mir ein bisschen zu konkretisieren:

Wenn ich nun also die Grundhardware für den Moment mit

STM32 (mit Ethernet- bzw. MII oder RMII-Fähigkeit an Bord) + PHY in Form 
von z.B. DP83848 oder LAN8720

für beide Geräte (Remote und Hauptgerät) annehmen würde, dann könnte ich 
doch im Nachhinein immer noch komplett frei entscheiden, welches Level 
von Skalierbarkeit ich erreichen möchte, oder ?

Also damit müsste ich doch immer noch entscheiden können

a) ob ich z.B. UDP oder TCP zur Übertragung nutzen möchte (oder was ganz 
anderes)

b) ob ich eine eher lokale reine Master-Slave-Lösung realisiere oder ob 
ich Remote und Hauptgerät ggfs. über einen Switch ans "Haus"-LAN 
anschließe und über einen dort ebenfalls angeschlossenen Rechner oder 
ein Tablet steuere...?

Das wären dann doch eigentlich "nur noch" programmiertechnische Fragen, 
oder ?

Ich habe ja keine Angst, mich in Dinge einzuarbeiten, ich versuche nur, 
nun mal einen bestimmten Hardwareweg für Tests und Entwicklung 
festzuzurren, dessen Möglichkeiten ich nicht unbedingt voll ausschöpfen 
muss, mit dem ich dann aber vor allem nicht in Sackgassen renne, die 
wieder einen kompletten "Systemwechsel" erfordern und viel unnötige Zeit 
auffressen...

von Johannes S. (Gast)


Lesenswert?

Du kannst im Prinzip alles damit machen, deshalb hat sich diese IP 
Übertragung in diesem Internet so durchgesetzt.

von Uli A. (schnuppi44)


Lesenswert?

Frank K. schrieb:
> Es ist andersrum gemeint. Und dann kommt das, was Du auf der einen Seite
> seriell reinschiebst, auf der anderen Seite 1:1 als TCP-Datenstrom auf
> einem festen TCP-Port raus. Das serielle Gerät weiß davon nichts. Wenn
> es nur darum geht, einen Datenstrom zu übertragen, ist das das
> einfachste.
>
> Solche Geräte gibts entweder zum Einbauen oder als externe Einheit, die
> dann bis zu 16 serielle Ports (RS232 oder RS422/485) haben kann.
>
> fchk

Das würde ja für mich bedeuten:

1) Beschränkung auf die nun schon oft erklärte "lokale 
Master-Slave-Lösung" und
2) genau das zu sein, was ich für diese lokale Lösung von Anfang an hier 
erfragen wollte -> einen reinen Datentransceiver von seriell auf 
Netzwerkhardware und zurück (nur, dass ich dabei SPI und nicht UART im 
Sinn hatte)

Oder ?

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Nochmal zur Klärung:
>
> Pro Audio ist die eigentliche Anwendung des Geräts, für das die
> Steuerung implementiert werden soll - genauer gesagt eine Art
> Schaltmatrix für analoge Geräte im Bereich Audio Mastering / Mixing.
>


Also geht es hier nur um ein bischen Schaltergeplänkel. Dann wäre meine 
Klare Antwort: Nimm Midi. Das kannst du immer noch physikalisch über OSC 
transportieren wenn du willst, aber einfacher als über Midi geht es 
kaum. Und das Protokoll kann jedes Gerät und jede Software die mit Audio 
Production zu tun hat.

von Manfred Scheer (Gast)


Lesenswert?

Meine einfache Lösung: Raspberry Pi und Node-Red

von Johannes S. (Gast)


Lesenswert?

Manfred Scheer schrieb:
> Meine einfache Lösung: Raspberry Pi und Node-Red

Wenn da nur nicht dieses JavaScript wäre :)

von Manfred Scheer (Gast)


Lesenswert?

Da muss man durch !

von Frank K. (fchk)


Lesenswert?

Uli A. schrieb:

>> Solche Geräte gibts entweder zum Einbauen oder als externe Einheit, die
>> dann bis zu 16 serielle Ports (RS232 oder RS422/485) haben kann.
>>
>> fchk
>
> Das würde ja für mich bedeuten:
>
> 1) Beschränkung auf die nun schon oft erklärte "lokale
> Master-Slave-Lösung" und
> 2) genau das zu sein, was ich für diese lokale Lösung von Anfang an hier
> erfragen wollte -> einen reinen Datentransceiver von seriell auf
> Netzwerkhardware und zurück (nur, dass ich dabei SPI und nicht UART im
> Sinn hatte)
>
> Oder ?

Im Prinzip ja. Der Haken dabei ist, dass bei einer 1:1 Umsetzung das 
Netzwerkprotokoll dann nichts standardmäßiges wäre, was Du mit fertigen 
Applikationen ansprechen kannst. Wenn DU damit leben kannst: 
hervorragend.

Wenn nicht, dann brauchst Du spezialisierte DMX-Artnet oder 
DMX-OSC-Umsetzer oder Midi-Artnet oder wasauchimmer, die dann keine 1:1 
Durchreiche machen, sondern ein bestimmtes serielles Protokoll auf ein 
bestimmtes Netzwerkprotokoll vornehmen. Das wird dann aber wieder 
aufwändiger, zum einen vom Geld her und zum anderen, weil du dann das 
serielle Protokoll korrekt implementieren musst, anstelle Dir selber 
irgendetwas maximal einfaches auszudenken.

fchk

von Uli A. (schnuppi44)


Lesenswert?

Manfred Scheer schrieb:
> Meine einfache Lösung: Raspberry Pi und Node-Red

Hm....das klingt ja interessant.....aber kann ich das auch auf einem 
STM32 implementieren ?

Da ich ja am Ende einen Prototypen und langfristig ggfs. eine 
verkaufbare Kleinserie herausbekommen möchte, bringt es mir ja wenig, 
wenn ich dann da einen RasPi einbauen soll....das Ganze soll insgesamt 
hardwareseitig möglichst schlank bleiben und eben als eigenes Board 
aufbaubar...

Das muss nicht unbedingt heißen, dass es am Ende selbst lötbar bleiben 
muss - für eine kleine Serie würde sich auch schon eine 
Auftragsfertigung lohnen - aber es geht eben nicht um "Bau da jetzt an 
Dein Discoboard noch ein ganzes Konglomerat an anderen Boards dran" (das 
wäre bei den obengenannten Lösungen der kleinen PHY-Boards noch im 
Rahmen, da man die ja auch am Ende selbst in den Einzelteilen nachbauen 
kann).

Auch die Bestandteile des Discoboards werde ich am Ende "maximal 
entschlackt auf das Nötigste" für das eigene Controllerboard 
übernehmen...

von Frank K. (fchk)


Lesenswert?

Uli A. schrieb:

> Da ich ja am Ende einen Prototypen und langfristig ggfs. eine
> verkaufbare Kleinserie herausbekommen möchte, bringt es mir ja wenig,
> wenn ich dann da einen RasPi einbauen soll....das Ganze soll insgesamt
> hardwareseitig möglichst schlank bleiben und eben als eigenes Board
> aufbaubar...

Auch dafür gibts was:
https://www.raspberrypi.org/products/compute-module-4/?variant=raspberry-pi-cm4001000

Dieser Pi4 ist extra dafür gemacht, als Modul auf ein kundenspezifisches 
Basisboard zu wandern und in ein Gesamtsystem integriert zu werden. So 
ein Vorgehen ist in der Industrie bei kleinen Stückzahlen nichts 
ungewöhnliches. Von NVidia gibts z.B das hier - da ist dann ein 64 Bit 
ARM Hexacore plus eine fette GPU drauf, zur Verwendung in eigenen 
Produkten:

https://www.nvidia.com/de-de/autonomous-machines/embedded-systems/jetson-xavier-nx/

Sollte das Dein Weg sein - hier ist er.

fchk

von temp (Gast)


Lesenswert?

Manfred Scheer schrieb:
> Meine einfache Lösung: Raspberry Pi und Node-Red

Wer das als einfache Lösung empfindet, hat den Schuss nicht gehört. 
Einfach höchsten in der Form: geht auch gerade noch für Dummies.
Ich frage mich wirklich ob die Welt heute schon so blöd ist für das 
Wackeln von ein paar Relais aber Millionen Zeilen Quellcode in der Summe 
zu benötigen. Und mit nodejs nur 1 Byte über eine serielle Schnittstelle 
zu schieben werden zusätzlich zu dem Haufen den man eh schon hat 612 
Dateien in 142 Verzeichnissen ins Projekt gespült. Und mit jeder 
weiteren kleinen Abhängigkeit kommen die nächsten paar hundert. In 
meinen Augen ist das alles nur noch krank.

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> für das
> Wackeln von ein paar Relais aber Millionen Zeilen Quellcode in der Summe
> zu benötigen.

Das verstehe ich als Einwand und finde es auch dem Grundsatz nach wenig 
sinnig.
Auf der anderen Seite ist die Frage, ob das für die von Dir ein wenig 
abfällig als "Dummies" bezeichneten Anfänger oder vielleicht auch 
schlicht Menschen mit anderen Schwerpunkten als ganz tief in die Materie 
einzutauchen nicht doch sinnvoll sein kann, sich über solche Vehikel 
eine Zugangsmöglichkeit zum Entwickeln zu schaffen.

Natürlich bringen diese Plattformen eine Menge an "unnötigem 
Code-Ballast" mit sich....aber ist das bei den heutigen Prozessoren mit 
Ihrer immensen Power und Speicherkapazität denn ein realistisches 
Problem (gerade für einfachere Anwendungen)? Das mag für Puristen 
regelrecht anstößig sein. Dem kreativen Anwender bietet es aber ggfs. 
tolle Optionen, ohne abgeschlossenes Studium auch Projekte zu 
realisieren....

Wenn in Zukunft die Leistung der Prozessoren ausreicht, um eine - 
vielleicht KI-basierte - Umgebung zu schaffen, der man nur noch 
diktiert, was denn so im Programm passieren soll, und die das dann in 
Massen von Code implementiert, bin ich der erste der das 
nutzt......egal, ob das programmierethisch einen Verfall bedeutet....;o)

Aber mal was ganz anderes: Was wäre denn Deine Lösung für mein Problem ?

von Uli A. (schnuppi44)


Lesenswert?

Frank K. schrieb:
> Auch dafür gibts was:
> 
https://www.raspberrypi.org/products/compute-module-4/?variant=raspberry-pi-cm4001000
>
> Dieser Pi4 ist extra dafür gemacht, als Modul auf ein kundenspezifisches
> Basisboard zu wandern und in ein Gesamtsystem integriert zu werden. So
> ein Vorgehen ist in der Industrie bei kleinen Stückzahlen nichts
> ungewöhnliches. Von NVidia gibts z.B das hier - da ist dann ein 64 Bit
> ARM Hexacore plus eine fette GPU drauf, zur Verwendung in eigenen
> Produkten:
>
> 
https://www.nvidia.com/de-de/autonomous-machines/embedded-systems/jetson-xavier-nx/
>
> Sollte das Dein Weg sein - hier ist er.
>
> fchk

Wow. Du hast echt für alles eine Antwort....;-)

Super interessant, diese Variante. Und cool zu wissen, dass es das gibt 
!
Allerdings möchte ich nach Möglichkeit in der Nähe zu Audioleitungen auf 
Hi-Speed Prozessoren verzichten - und das ist dann schon auch irgendwie 
Kanonen auf Spatzen für die paar übertragenen Bits...

Aber nochmal eine grundsätzliche Frage zu einem möglichen Aufbau für 
mein Projekt, die für mich noch nicht abschließend beantwortet wurde:

Brauche ich wirklich einen Server, wie weiter oben gesagt wurde, sobald 
ich irgendein Gerät per Ethernet-Schnittstelle ins Netz hängen 
möchte....? Also muss in JEDEM GERÄT ein Serverblock sein ? Das wäre mir 
neu.....

Also nochmal die Frage nach der MINIMALanforderung einer MCU-basierten 
Hardware für die Anbindung ans ('Äther')Netz per STM32....gerne auch per 
Skizze !
;o)
Danke allen auch nochmal für die Beiträge !

von Johannes S. (Gast)


Lesenswert?

für so eine Anwendung reicht einfaches UDP, siehe meine verlinktes 
Beispiel weiter oben. Man macht ein bind() auf einen Empfängerport, und 
damit kann jeder an das Gerät senden. Der Empfänger weiss auch von wem 
das Packet kam und kann mit Statusinfos antworten.
Ein UDP Testsender in JS mit Nodejs sind ein paar Zeilen ohne zig libs, 
das ist in der Doku schon als Beispiel drin.

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Brauche ich wirklich einen Server, wie weiter oben gesagt wurde, sobald
> ich irgendein Gerät per Ethernet-Schnittstelle ins Netz hängen
> möchte....? Also muss in JEDEM GERÄT ein Serverblock sein ? Das wäre mir
> neu.....

In (Inter-)net sind nur Server für andere erreichbar. Genau das sagt das 
Wort "Server" aus. Server stellen einen Service bereit.

Die anderen nennt man Clients. Clients sind nicht für andere erreichbar.

Vielleicht stellst du dir unter Server ein großes komplexes Ding vor, 
aber das muss nicht sein. Server sind oft sogar einfacher zu 
programmieren, als die zugehörigen Clients.

von Frank K. (fchk)


Lesenswert?

Uli A. schrieb:

> Brauche ich wirklich einen Server, wie weiter oben gesagt wurde, sobald
> ich irgendein Gerät per Ethernet-Schnittstelle ins Netz hängen
> möchte....? Also muss in JEDEM GERÄT ein Serverblock sein ? Das wäre mir
> neu.....

Was meinst Du mit Server genau?

Wenn es um Netzwerkverbindungen geht, muss es immer eine Seite geben, 
die einen Verbindungswunsch äußert, und eine Seite, die empfangsbereit 
ist und die Verbindung annimmt. Das erste nennt man üblicherweise 
Client, das zweite Server.

fchk

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Aber mal was ganz anderes: Was wäre denn Deine Lösung für mein Problem ?

Hab ich geschrieben. Midi.

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Uli A. schrieb:
>> Aber mal was ganz anderes: Was wäre denn Deine Lösung für mein Problem ?
>
> Hab ich geschrieben. Midi.

Kannst Du das denn auch etwas konkreter ausgestalten ?

Ich weiß, Du bist ein Fan von Effizienz, aber ich bräuchte ggfs. ein 
paar "unnötige Sätze" mehr.....

Ist nicht böse gemeint....! ;o)

Das wäre dann doch im Grunde MIDI über USB, oder ?
Das hilft mir zwar beim Anbinden z.B. der Remote oder des Hauptgerätes 
an einen Rechner, aber wie dann da die Idee einer variablen Verkoppelung 
ENTWEDER nur (lokal) zwischen Remote und Gerät ODER zwischen Hauptgerät 
und Rechner ODER sogar beides zusammen (z.B. Bedienung per Remote aber 
Speicherung der Daten im Rechner und bei Audio Playback auch wiederum 
Ansteuerung des Geräts und Update der Zustände auf der Remote) 
realisiert werden sollen, ist mir noch unklar...

von Uli A. (schnuppi44)


Lesenswert?

Stefan ⛄ F. schrieb:
> Vielleicht stellst du dir unter Server ein großes komplexes Ding vor,
> aber das muss nicht sein. Server sind oft sogar einfacher zu
> programmieren, als die zugehörigen Clients.

Ja, das habe ich mir in der Tat so vorgestellt...sorry in die Runde für 
meine Unwissenheit....;-/

Frank K. schrieb:
> Wenn es um Netzwerkverbindungen geht, muss es immer eine Seite geben,
> die einen Verbindungswunsch äußert, und eine Seite, die empfangsbereit
> ist und die Verbindung annimmt. Das erste nennt man üblicherweise
> Client, das zweite Server.

Aber das heißt dann, dass jeder PC/Mac grundsätzlich in einem 
Netzwerkverbund schon auch als Server fungiert, oder ?

Bedeutet denn "Verbindungswunsch" auch automatisch was für die Richtung 
der Datenübertragung ?
Also in meinem Projekt mit den drei Varianten

a) Lokale Konfiguration nur mit zwei Geräten (Remote und Hauptgerät)

b) PC als Ersatz für die Remote

c) Hauptgerät wird sowohl von der Hardware-Remote als auch von einer wie 
auch immer gearteten virtuellen Remote auf dem Rechner gesteuert und 
informiert auch die Hardware Remote über Änderungen der Schaltzustände

-> wie würde ich denn das am besten aufbauen, was die Einordnung in 
Server und Clients betrifft ?

von Uli A. (schnuppi44)


Lesenswert?

Wäre eigentlich nicht auch USB-OTG eine Möglichkeit ? Bietet der F407 ja 
auch ....

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Kannst Du das denn auch etwas konkreter ausgestalten ?

Du hast ja erst mal nur danach gefragt welcher Übertragungsstandard 
verwendet werden soll. Und da ist im Musikbereich die einfachste und 
universellste Schnittstelle nun mal Midi. Da geht es auch nicht um die 
Hardwareschnittstelle als solche (bei original Midi ist das uart über 
Stromschleife) sondern um die Softwareschicht.
Also sowas wie:

0x91 0x95 0x127 (Note On) für Relais ein und

0x81 0x95 0x00 (Note Off) für Relais aus

Wenn du im Sequenzer einfach eine Midi-Stpur für deine Relais anlegst, 
kannst du sie dann direkt von der Position im Song ansteuern.

Ich denke in den letzten 40 Jahren wurde genügend Hardware produziert um 
alle erdenklichen Midi-Routings für ein paar wenige Euros zu 
realisieren. (Midi Merger u.s.w.)
Wenn die Midi-Verkabelung nicht reicht kann als Brücke OSC (Udp) benutzt 
werden oder was selbst gestricktes mit einem Controller oder oder. 
Ausschlaggebend ist aber der einheitliche Transportstream den jedes 
musikalische Gerät versteht.

Wenn du selbst basteln willst reicht ein STM32 Billigboard. Hier mal ein 
Softwarebeispiel:
Beitrag "STM32 USB-MIDI"

von Frank K. (fchk)


Lesenswert?

Uli A. schrieb:

> Frank K. schrieb:
>> Wenn es um Netzwerkverbindungen geht, muss es immer eine Seite geben,
>> die einen Verbindungswunsch äußert, und eine Seite, die empfangsbereit
>> ist und die Verbindung annimmt. Das erste nennt man üblicherweise
>> Client, das zweite Server.
>
> Aber das heißt dann, dass jeder PC/Mac grundsätzlich in einem
> Netzwerkverbund schon auch als Server fungiert, oder ?

Ja, beispielsweise Dateifreigabe: Jemand gibt auf seinem Rechner ein 
Verzeichnis frei, damit andere darauf zugreifen können.
>
> Bedeutet denn "Verbindungswunsch" auch automatisch was für die Richtung
> der Datenübertragung ?

Nein, das ist unabhängig. Bei der Dateifreigabe kannst Du vom 
freigegebenen Verzeichnis Dateien lesen und schreiben (solange der 
Freigeber Dir das erlaubt hat).

> Also in meinem Projekt mit den drei Varianten
>
> a) Lokale Konfiguration nur mit zwei Geräten (Remote und Hauptgerät)
>
> b) PC als Ersatz für die Remote
>
> c) Hauptgerät wird sowohl von der Hardware-Remote als auch von einer wie
> auch immer gearteten virtuellen Remote auf dem Rechner gesteuert und
> informiert auch die Hardware Remote über Änderungen der Schaltzustände
>
> -> wie würde ich denn das am besten aufbauen, was die Einordnung in
> Server und Clients betrifft ?

Das Hauptgerät wäre der Server, der n verschiedene Clientverbindungen 
gleichzeitig handhaben müsste und sowohl Schaltbefehle als auch 
Zustandsabfragen entgegen nehmen würde.

Beachte, dass die seriell-Ethernet-Wandler das nicht können. Die reichen 
nur jeweils EINE serielle Verbindung 1:1 an EINE Netzwerkverbindung 
durch. Da musst Du direkt den IP-Stack des STM32 nehmen und Clients und 
Server selber zu Fuß programmieren. Aber dafür brauchst Du noch VIEL 
mehr Know-How als Du jetzt hast. Versuche das erstmal auf einem PC oder 
Mac, denn da kannst Du besser debuggen. Wenn das da klappt, dann kannst 
Du über Mikrocontroller anfangen nachzudenken.

fchk

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Wenn du selbst basteln willst reicht ein STM32 Billigboard. Hier mal ein
> Softwarebeispiel:
> Beitrag "STM32 USB-MIDI"

Danke für die Hinweise und das Beispiel - schaue ich mir an !

von Uli A. (schnuppi44)


Lesenswert?

Danke Frank für die Erklärungen und Deine Einschätzung des für mich 
(ggfs. noch nicht) Machbaren !

So langsam kommt Licht ins Dunkel...;-)

Frank K. schrieb:
> Beachte, dass die seriell-Ethernet-Wandler das nicht können. Die reichen
> nur jeweils EINE serielle Verbindung 1:1 an EINE Netzwerkverbindung
> durch.

Das heißt dann ja auch, dass diese Variante für die erweiterte 
(3-Geräte-) Konfiguratione ohnehin ausfällt - und für die lokale Lösung 
brauche ich ja wiederum kein Brimborium mit Netzwerk zu veranstalten - 
da tut's ja eh jede einfache serielle Schnittstelle...

Wenn ich mich da aber doch einarbeiten will, ist also IP Stack 
Programmierung das Stichwort, richtig ?

Wie gesagt ist es nicht leicht, da einen roten Faden zu finden, wie ich 
das lerntechnisch am besten angehe...

von Johannes S. (Gast)


Lesenswert?

lerntechnisch fängt man mit den Grundlagen an, z.B.
http://www.netzmafia.de/skripten/index.html
Mindestens die ersten drei Skripte unter 'Datenkommunikation, Netze'.
Es gibt tausend tolle Möglichkeiten, bringen aber alle nix wenn man 
nicht anfängt.

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Remoteunit mit STM32MCU (vermutlich F407VG) mit 54 beleuchteten
> LED-Tastern.

Ich gehe mal nicht darauf ein wie du 54 Tasten abfragst bzw. die LEDs 
ansteuerst. Wenn du hier Midi als Softwareschicht verwendest, bedeutet 
das jede der 54 Tasten sendet einen Note On/Note Off Befehl bei 
Tastendruck. Je nach Wunsch beim Drücken NoteOn beim Loslassen NoteOff 
oder (als Schalter) einmal drücken NoteOn nochmal drücken NoteOff.
Die Leds werden auch direkt über NoteOn/NoteOff Befehle ein- bzw. 
ausgeschaltet. Über einen Standard Midi LocalOn/LocalOff Befehl kannst 
du steuern ob die Tasten die Led's direkt steuern oder ob das z.B. der 
Sequenzer macht. Mit anderen Worten, du hast jetzt einen ganz normalen 
Midi-Controller wie es ihn früher mal zu kaufen gab. Ich sage deshalb 
früher, weil die heutigen Controller meistens nur noch USB können intern 
aber auch Midi sprechen. Das Teil verhält sich mehr oder weniger wie ein 
Keyboard. Im Sequenzer kannst du deine Tastendrücke/Schalterstellungen 
aufnehmen und bei Bedarf wieder abspielen. Das wäre damit ein völlig 
eigenständiges Gerät mit Midi-Ein/Ausgang. Und ja, im ersten Schritt 
würde ich da auch bei physikalisch Midi bleiben. Mehr geht immer, aber 
das Protokoll bleibt gleich.

Das zweite Gerät ist die Relaisbaugruppe. Die braucht theoretisch nur 
Midi-In und reagiert nur auf die Befehle aus dem Sequenzer oder deinem 
Controller. Ein zusätzlicher Midi-Merger würde es ermöglichen, das ganze 
von beliebig vielen Controllern/Sequenzern anzusteuern. Dafür musst du 
auch nicht alles neu erfinden, solche Aufgaben sind Standard. Heutige 
µCs haben aber sowieso auch mehrere UARTs so dass der diese simple 
Aufgabe mit übernehmen kann.
Die Midi-Verkabelung würde ich über CAT5-Kabel machen, damit ist der Weg 
für zwischengeschaltete Midi/Osc-Wandler und Transport über Ethernet 
frei.

Durch so ein modulares Konzept mit Standardschnittstellen kannst du das 
in jedem Studio dieser Welt einsetzen. Deinen LED/Tasten Controller 
kannst du dann auch prima verkaufen. So was mit direkt Midi oder OSC 
gibt es aktuell nur wenig zu kaufen. Hier im Forum haben schon Leute 
angefragt wie sie in eigene Projekte solche Controller einbinden können. 
Das läuft dann in der Regel auf einen Raspi oder ähnliches hinaus.

Nicht zu vergessen die leichte Testbarkeit. Mit jedem billigen  Master- 
oder Spielzeugkeybord kannst du deine Baugruppen testen. Solltest du in 
der Folge mehr Intelligenz brauchen, dann würde ich das in eine weitere 
Baugruppe verlagern. Meinetwegen STM32 mit mehreren Midi-In/Out. Oder 
sowas wie Midibox wenn du dich richtig ausferkeln willst.
http://www.ucapps.de/

Aber egal was du machst, mit so einem Weg bleibst du bei den Standards. 
Das wird ein selbstgestricktes Modbus/Ethernet/MQTT Protokoll niemals 
hergeben.

von Uli A. (schnuppi44)


Lesenswert?

Johannes S. schrieb:
> lerntechnisch fängt man mit den Grundlagen an, z.B.
> http://www.netzmafia.de/skripten/index.html
> Mindestens die ersten drei Skripte unter 'Datenkommunikation, Netze'.
> Es gibt tausend tolle Möglichkeiten, bringen aber alle nix wenn man
> nicht anfängt.

Danke für den Link zu netzmafia !

von Uli A. (schnuppi44)


Lesenswert?

Danke "temp" für die ausführliche Erklärung ! Das klingt recht 
sinnvoll...

temp schrieb:
> Die Midi-Verkabelung würde ich über CAT5-Kabel machen, damit ist der Weg
> für zwischengeschaltete Midi/Osc-Wandler und Transport über Ethernet
> frei.

Kannst Du mir das nochmal genauer erklären ? Also das mit der 
Verkabelung an sich verstehe ich natürlich, aber was sind das für 
zwischengeschaltete Wandler ? Hardware- oder softwareseitige ?

Und was meinst Du genau mit "Transport über Ethernet" ?

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Wenn du hier Midi als Softwareschicht verwendest

Kannst Du (oder sonst wer) mir sagen, wo ich Ressourcen zu dem Thema 
finde, also Programmierung von MIDI in C ? Also etwas eingängiger als 
die MIDI-Spezifikation durchzulesen ?  ;-)

Ich habe das Buch "Musik mit dem Arduino und MIDI" von Wronka/Naumann, 
das geht schon sehr in die Richtung und enthält für den Ansatz schon 
viel Wissenswertes.
Allerdings eben für Arduino mit den entsprechenden Libraries für die 
Arduino IDE...weißt Du zufällig, wo ich ggfs. entsprechende 
MIDI-Command-Libraries für STM32 finde ?

Wenn ich das richtig verstehe, würde ich ja dann hardwareseitig die 
MIDI-Ports an als UART konfigurierte GPIOs des STM32 anschließen, oder ?

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Aber das heißt dann, dass jeder PC/Mac grundsätzlich in einem
> Netzwerkverbund schon auch als Server fungiert, oder ?

Nur die, die irgendwelche Dienste anbieten. Was normalerweise* nicht der 
Fall ist.

Aber wenn du z.B. Skype startest, dann kann man dich anrufen. Dann 
bietest du einen Skype-Anruf-Service an.

*) Ich vermute mal, dass jeder Windows Rechner irgendwelche verborgenen 
Server-Dienste laufen hat, von denen ich nichts weiß. Bei Windows 8 ist 
mir z.B. mal aufgefallen, dass Windows immer einen leeren Webserver mit 
laufen hatte. Das soll aber eigentlich nicht sein.

> Bedeutet denn "Verbindungswunsch" auch automatisch
> was für die Richtung der Datenübertragung ?

Fast alle Services kommunizieren bidirektional. Der Client sende eine 
Anforderung an den Server (z.B. eine URL) und der Server beantwortet 
diese Anforderung (z.B. eine Webseite).

> wie würde ich denn das am besten aufbauen, was die Einordnung
> in Server und Clients betrifft?

Hatte ich schon geschrieben: Der Server bietet einen Dienst an, den der 
Client aufruft. Der Server ist derjenige, der ständig auf Anfragen 
lauscht und bereit sein muss, schnell zu antworten.

Der Client ist derjenige, der vom Server etwas anfordert.

Wenn ein Temperatursensor einen Messwert an eine Datenbank sendet, dann 
ist die Datenbank der Server und der Sensor ist der Client. Denn der 
Sensor initiiert den Verbindungsaufbau (Timer-gesteuert) und befiehlt 
der Datenbank "bitte speichere dies und das ab".

von Stefan F. (Gast)


Lesenswert?

Ich gebe dir noch ein Beispiel: Drucker mit WLAN.

Wenn du ein Dokument druckst, dann ist der Drucker der Server und dein 
PC ist der Client. Weil Drucker derjenige ist, der den Druck-Service 
bereit stellt und auf Anfragen des PC wartet.

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Wäre eigentlich nicht auch USB-OTG eine Möglichkeit ?
> Bietet der F407 ja auch ....

Ja aber nicht für dich, da noch sehr viel komplexer, als Ethernet.
Ich halte mich davon fern.

von Frank K. (fchk)


Lesenswert?

Uli A. schrieb:

> Frank K. schrieb:
>> Beachte, dass die seriell-Ethernet-Wandler das nicht können. Die reichen
>> nur jeweils EINE serielle Verbindung 1:1 an EINE Netzwerkverbindung
>> durch.
>
> Das heißt dann ja auch, dass diese Variante für die erweiterte
> (3-Geräte-) Konfiguratione ohnehin ausfällt - und für die lokale Lösung
> brauche ich ja wiederum kein Brimborium mit Netzwerk zu veranstalten -
> da tut's ja eh jede einfache serielle Schnittstelle...

Ausweg:
https://www.wiznet.io/product-item/wiz120sr/
Der hat zwei serielle Schnittstellen und unterstützt damit zwei 
Verbindungen. Das wäre der Trick. Dein STM32 müsste dann gleichzeitig 
beide seriellen Ports bedienen.

> Wenn ich mich da aber doch einarbeiten will, ist also IP Stack
> Programmierung das Stichwort, richtig ?

Ja. Stichwort Berkeley Sockets.

> Wie gesagt ist es nicht leicht, da einen roten Faden zu finden, wie ich
> das lerntechnisch am besten angehe...

fchk

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> weißt Du zufällig, wo ich ggfs. entsprechende
> MIDI-Command-Libraries für STM32 finde ?

Man braucht doch keine Library, um eine Hand voll Bytes zu senden!

von Johannes S. (Gast)


Lesenswert?

Uli A. schrieb:
> weißt Du zufällig, wo ich ggfs. entsprechende MIDI-Command-Libraries für
> STM32 finde ?

Oder darf es gleich eine fertige App sein? Ich lese nur Fragen über 
Fragen, hast du überhaupt schon mal eine Zeile eigenen Code geschrieben?

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Kannst Du (oder sonst wer) mir sagen, wo ich Ressourcen zu dem Thema
> finde, also Programmierung von MIDI in C ? Also etwas eingängiger als
> die MIDI-Spezifikation durchzulesen ?  ;-)

Also wenn du dich im Pro Audio Umfeld bewegst und nicht mal Midi 
verstanden hast, dann kann dir hier keiner mehr helfen. Das ist eines 
der simpelsten Protokolle überhaupt. Die komplexeren Dinge darin wie 
Sysex u.s.w kannst du ja erst mal links liegen lassen. Aber wenn du die 
Bytes für NoteOn/Off, Program Change und Control Change nicht im Schlaf, 
3.8 auf dem Kessel und Vollmond nicht aufsagen kannst, dann wird das in 
diesem Leben nichts mehr. Hier greift wieder mein alter Spruch: "je 
weniger man weiß, desto weniger weiß man dass man nichts weiß".

von Uli A. (schnuppi44)


Lesenswert?

Also echt, Leute....kommt mal wieder runter...

Ich bin mir meiner Wissenslücken durchaus bewusst aber deshalb noch 
lange kein Idiot !

Und ich bin seit 25 Jahren Pro Audio User(!) und habe diverse Tonstudios 
gehabt, gebaut und eingerichtet, was aber nicht heißt, dass ich deshalb 
selbst auch nur ein Byte MIDI Code gesendet haben muss....

Ich habe auch mehrfach erwähnt, was ich schon gemacht habe - eben ein 
bisschen Arduino und STM32 Registerprogrammierung - da aber bisher nur 
GPIO-bezogen.

Wem ich deshalb "zu inkompetent" erscheine, der muss sich auf mein 
Niveau ja nicht herablassen und kann einfach schweigen, oder ?

Danke dennoch allen, die sich "mir erbarmen"....;-)

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Und ich bin seit 25 Jahren Pro Audio User(!) und habe diverse Tonstudios
> gehabt, gebaut und eingerichtet, was aber nicht heißt, dass ich deshalb
> selbst auch nur ein Byte MIDI Code gesendet haben muss....

Brauchst du ja auch nicht. Aber eine Sequenzer mit Midi-Spuren wirst du 
doch schon bedient haben? Und da stehen die Bytes fast 1zu1 drin.
https://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface
Da steht die Tabelle drin. Oder mal ein kurzes Beispiel.
Wenn der Sequenzer eine Note am Synt spielen soll, sendet er
1
0x91 0x45 0x7f  aus der Midibuchse raus
2
   |   |   |
3
   |   |  Anschalgstärte
4
   |  Note 
5
  NoteOn Kanal 1 bzw. 2 je nach Zählart
6
7
Beim Beenden des Tons:
8
9
0x81 0x45 0x00
10
   |   |   |
11
   |   |  
12
   |  Note 
13
  NoteOff Kanal 1 bzw. 2 je nach Zählart
Jetzt kannst du schon anfange zu basteln. Nimm einen Arduino 2 
Widerstände und eine Din-Buchse und verbinde das mit einem beliebigen 
Tonerzeuger in deinem Studio.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/Midi
Dann Initialisierst du eine serielle Schnittstelle und schickst einfach 
die o.g. Bytes raus.
Wenn du das hingekriegt hast, können wir weiter reden.

von Uli A. (schnuppi44)


Lesenswert?

Ja, ich denke das kriege ich gerade so hin....;-)
Und ja, ich benutze seit 1992 Sequenzersoftware..

Weswegen ich so blöd gefragt habe, war, dass ich nicht wusste, ob bei 
der Midi-Übertragung auch eine Form von Header o.ä. mit übertragen 
werden muss.....wenn man einfach nur die drei Bytes mit den 
entsprechenden Daten rüberschicken muss, ist das natürlich einfach....

Danke nochmal für die Anleitung.

Nur eine kleine Randnotiz zu Deiner Idee, das mit Note On/ Not Off zu 
machen.....keine gute Idee...wenn dann nämlich beim Sprung an eine 
andere Stelle im Song andere Schaltzustände von der Automation 
wiedergegeben werden weil man beim Aufnehmen einen Taster gedrückt hat, 
kriegt man ein heilloses Durcheinander mit falschen Daten / Zuständen - 
mit das älteste MIDI-Problem der Welt....
Daher wäre es deutlich besser, statt der Notenbefehle 
Continuous-Controllerdaten mit den Werten 0 und 127 zu verwenden. Die 
werden dann auch beim Start "mittendrin" von der DAW immer aktualisiert 
ausgegeben...

: Bearbeitet durch User
von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Nimm einen Arduino 2
> Widerstände und eine Din-Buchse

Wenn ich das Ganze mit einem STM32 und dementsprechend unter 3.3V mache, 
kann ich dann die beiden 220Ω Widerstände einfach für den gleichen Strom 
analog zu 147Ω umrechnen ? Oder klappt das so nicht ?

Und funktioniert das mit dem STM32 auch mit nem 6N138 Optokoppler (für 
MIDI IN)?

Und noch was ganz anderes an die STM32-Cracks:

Sehe ich das richtig, dass ich die 31,25 kHz für die MIDI-Schnittstelle 
in dem jeweiligen UART als asynchronous einrichten muss und dann von 
Hand die 31,25 kHz als Baud Rate ? Hat diese Übertragungsrate was mit 
der 32kHz LSI-RTC zu tun oder wird die davon unabhängig einfach nur beim 
UART konfiguriert ?

: Bearbeitet durch User
von Harry L. (mysth)


Lesenswert?

Uli A. schrieb:
> Und funktioniert das mit dem STM32 auch mit nem 6N138 Optokoppler (für
> MIDI IN)?

Ja.

Uli A. schrieb:
> Sehe ich das richtig, dass ich die 31,25 kHz für die MIDI-Schnittstelle
> in dem jeweiligen UART als asynchronous einrichten muss und dann von
> Hand die 31,25 kHz als Baud Rate ?

Ja.

Uli A. schrieb:
> Hat diese Übertragungsrate was mit
> der 32kHz LSI-RTC zu tun

Nein.

Uli A. schrieb:
> oder wird die davon unabhängig einfach nur beim
> UART konfiguriert ?

Ja.

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Daher wäre es deutlich besser, statt der Notenbefehle
> Continuous-Controllerdaten mit den Werten 0 und 127 zu verwenden. Die
> werden dann auch beim Start "mittendrin" von der DAW immer aktualisiert
> ausgegeben...

Super, das hast du gut erkannt. Allerdings konnte ich bisher nicht ahnen 
auf welchem Niveau wir uns unterhalten, da es oben im Thread ziemlich 
durcheinander ging. Wenn du es selbst baust, kannst du das machen wie du 
willst. Ein Program Change könnte aber auch gehen. Das darf ein guter 
Sequenzer auch nicht überspringen beim ändern der Position. Man kann 
sich hier viel ausdenken, und bleibt trotzdem im gewohntem und 
standardisiertem Umfeld.

Uli A. schrieb:
> Wenn ich das Ganze mit einem STM32 und dementsprechend unter 3.3V mache,
> kann ich dann die beiden 220Ω Widerstände einfach für den gleichen Strom
> analog zu 147Ω umrechnen ? Oder klappt das so nicht ?
>
> Und funktioniert das mit dem STM32 auch mit nem 6N138 Optokoppler (für
> MIDI IN)?

Man kann den UART-Ausgang auch als OpenDrain konfigurieren, dann kann 
das ganze auch gegen 5V arbeiten.

von drm (Gast)


Lesenswert?

https://www.st.com/en/evaluation-tools/nucleo-f429zi.html
hat STM32F4 und Ethernet, wie gewünscht

STM32CubeIDE installieren, aus dem Repository das Beispielprojekt:
Repository\STM32Cube_FW_F4_V1.26.0\Projects\STM32F429ZI-Nucleo\Applicati 
ons\LwIP
durcharbeiten und verstehen.

Hardware ist billig und fast fertig zu kaufen.
Firmware erfordert einige an Eigenleistung.

von Uli A. (schnuppi44)


Lesenswert?

Okay. Kurzes Zwischenfazit:

Ich bin nun ziemlich sicher, dass generell der MIDI Weg für mich der 
Richtige ist - und sozusagen auch "Genre-konform".
Und das Ganze Netzwerkding ist für mich zu komplex um es in absehbarer 
Zeit zu lernen.

Damit lassen sich auch alle von mir angedachten Konfigurationen gut 
umsetzen, und die Anbindung an eine DAW-Software oder an entsprechende 
dortige Steuer-Plugins wäre auch gut machbar.

Wenn ich nun mittelfristig einen Schritt weiter gehen möchte und statt 
mit dem DIN-MIDI mit MIDI über USB arbeiten will, brauche ich dafür dann 
einen STM32 mit der Möglichkeit von USB-OTG oder kann ich das trotzdem 
über einen USART konfigurieren ? Was wäre hardwareseitig einfacher, was 
programmierseitig ?

Gerade in der erweiterten Konfiguration von gleichzeitiger Nutzung von 
Hardware-Remote und PC-basierender Steuerung wäre das (die Kombination 
von USB-MIDI und "einfachem MIDI") die schickste Lösung...
Es gäbe dann eine sozusagen bidirektionale USB-MIDI-Verbindung zwischen 
PC und Remote und eine simple MIDI-Verbindung von der Remote zum 
Hauptgerät.

Tasterbedienungen auf der Remote würden dann sowohl zum PC gesendet als 
auch zum HG, beim Playback der Sequenzersoftware oder beim Bedienen 
durch eine Software-Remote würden dann die Schaltimpulse bzw. deren 
Aktualisierung quasi die Remote ersetzen und diese wie gehabt die 
eigentlichen Schaltzustände dem HG mitteilen...

Für die einfachen Konfigurationen
a) Rein lokal Remote -> Hauotgerät
b) Wie a), aber PC ersetzt die Remote

wäre eine einfache unidirektionale (DIN)MIDI-Verbindung ohnehin völlig 
ausreichend...

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> Wenn ich nun mittelfristig einen Schritt weiter gehen möchte und statt
> mit dem DIN-MIDI mit MIDI über USB arbeiten will, brauche ich dafür dann
> einen STM32 mit der Möglichkeit von USB-OTG oder kann ich das trotzdem
> über einen USART konfigurieren ? Was wäre hardwareseitig einfacher, was
> programmierseitig ?

Es muss jetzt nicht unbedingt ein STM32 sein, aber um die USB-OTG 
Schnittstelle kommst du nicht herum.

Es gibt Adapter von MIDI (seriell) nach USB-Host: 
https://www.amazon.de/CAMOLA-MIDI-Host-Interface-Converter/dp/B08MZY59B7/ref=asc_df_B08MZY59B7 
(man beachte den Preis)

Da der Titel des Threads nicht mehr so Rechts pass würde ich dir 
empfehlen, weitere Fragen in einem neuen Thread zu diskutieren. Damit 
schüttelst du alle ab, die noch bei Ethernet hängen geblieben sind (ist 
nicht böse gemeint).

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Super, das hast du gut erkannt. Allerdings konnte ich bisher nicht ahnen
> auf welchem Niveau wir uns unterhalten, da es oben im Thread ziemlich
> durcheinander ging. Wenn du es selbst baust, kannst du das machen wie du
> willst. Ein Program Change könnte aber auch gehen. Das darf ein guter
> Sequenzer auch nicht überspringen beim ändern der Position. Man kann
> sich hier viel ausdenken, und bleibt trotzdem im gewohntem und
> standardisiertem Umfeld.

Tatsächlich scheint mir die CC-Variante am sinnvollsten, nach weiterem 
Nachdenken sogar mit vier Werten pro Schaltblock für ein Audiogerät, der 
jeweils aus drei sich "gegenseitig auslösenden" Tastern besteht.

Z.B.
CC = 0 : kein Schaltzustand aktiviert
CC = 42 : Schalter A aktiv
CC = 84 : Schalter B aktiv
CC = 126 : Schalter C aktiv

o.ä.

Programm Change bräuchte ich aber ggfs. für Presets.....;-)

von Stefan F. (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Da der Titel des Threads nicht mehr so Rechts pass

Sorry, das sieht ja aus als sei ein Nazi. Es sollte heißen:

> Da der Titel des Threads nicht mehr so recht passt

von temp (Gast)


Lesenswert?

Uli A. schrieb:
> Wenn ich nun mittelfristig einen Schritt weiter gehen möchte und statt
> mit dem DIN-MIDI mit MIDI über USB arbeiten will, brauche ich dafür dann
> einen STM32 mit der Möglichkeit von USB-OTG oder kann ich das trotzdem
> über einen USART konfigurieren ? Was wäre hardwareseitig einfacher, was
> programmierseitig ?

USB ist meines Erachtens nur dazu geeignet aus dem Rechner zu kommen und 
nicht für lange Leitungswege. Gerade im Studioumfeld fehlt die 
galvanische Trennung die es bei Midi bzw. Ethernet zwangsläufig gibt.
Solche USB-Midi Adapter sind aber so billig, da lohnt sich der Aufwand 
kaum es selbst zu bauen.
Der STM kann auch als USBMid-Interface arbeiten einen Link hatte ich 
schon hier eingestellt. Dann ist der STM das Device.

Was ziemlich aussichtslos ist einen STM32 egal welcher Art als USB-Host 
für die gefühlt 100tausend verschiedenen Controller zu verwenden die der 
Thomann Katalog hergibt und die nur USB können. Ausgenommen die paar 
wenigen die USB Class Conform Midi verwenden haben die meisten 
propriotäre Treiber die nur auf Windows, MAC, und manchmal auch unter 
Linux laufen.

Für das Midi-Routing über LAN gibt es rtpMidi, das können Apple Geräte 
von Haus aus:

https://www.tobias-erichsen.de/software/rtpmidi.html

https://www.bonedo.de/artikel/einzelansicht/bome-bomebox-universal-ethernet-midi-usb-wifi-hub-ab-sofort-verfuegbar.html

https://www.midi.org/midi-articles/rtp-midi-or-midi-over-networks

https://en.wikipedia.org/wiki/RTP-MIDI

So jetzt hast du Ostern was zum Lesen...
Ich denke für alle denkbaren Konstellationen für Midi-over-Lan gibt es 
bereits Lösungen.

von Johannes S. (Gast)


Lesenswert?

ja, man kann sich auch einreden lassen das Ethernet fürchterlich 
kompliziert ist. Der F407 kann alles, Ethernet und USB und seriell 
gleichzeitig. Mit Mbed leider einfach nur USB device, aber eine USBMidi 
Klasse die Controller oder Note messages liefert/sendet ist auch 
vorhanden.
https://os.mbed.com/docs/mbed-os/v6.9/apis/usbmidi.html
Wenn das Board keinen Phy hat, der kostet ca. 5€ und wird mit 11 Kabeln 
angeschlossen. Einfacher für den Anfang sind natürlich die Nucleos die 
das gleich on Board haben. UDP Beispiel hatte ich ja schon genannt, ist 
aber auch in der Doku zu finden:
https://os.mbed.com/docs/mbed-os/v6.9/apis/udpsocket.html
UDP ist für den Anfang einfacher, da kann man auch einfach die MIDI 
messages versenden, das werden die Gateways auch nicht anders machen.

von temp (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Es gibt Adapter von MIDI (seriell) nach USB-Host:
> 
https://www.amazon.de/CAMOLA-MIDI-Host-Interface-Converter/dp/B08MZY59B7/ref=asc_df_B08MZY59B7
> (man beachte den Preis)

Hier gilt auch das von mir gesagte. Solange die USB Geräte die 
angeschlossen werden sollen Class Compilant sind geht das. Alle anderen 
die eigene Treiber auf dem Host brauchen sind damit außen vor. Und das 
sind nicht wenige.

von temp (Gast)


Lesenswert?

Johannes S. schrieb:
> ja, man kann sich auch einreden lassen das Ethernet fürchterlich
> kompliziert ist. Der F407 kann alles, Ethernet und USB und seriell
> gleichzeitig. Mit Mbed leider einfach nur USB device, aber eine USBMidi
> Klasse die Controller oder Note messages liefert/sendet ist auch
> vorhanden.

Du kannst es lassen, es geht mittlerweile nicht mehr um Ethernet. Nicht 
wegen leicht oder schwer sondern wegen grundlegenden Überlegungen.
Was der F407 alles kann ist das eine, was der mbed oder arduino User 
kann das andere. Fakt bleibt aber, als Protokoll bleibt Midi für den 
Zweck die fast einzige Alternative. Wenn du anderer Meinung bist, dann 
erklär mal wie du dir die Kommunikation eines Sequenzers aus der 
Profiliga mit deinem Ethernetcode auf dem 407 vorstellst.

von Johannes S. (Gast)


Lesenswert?

Der TO wollte keinen Sequenzer der Profiliga bauen, sondern zwei 
Controller per Ethernet verbinden, Remote und Controller in seinem 
'Mainframe'. Zusätzlich sollte der Controller im Mainframe jetzt per 
Midi gesteuert werden können. Korrigiert mich wenn ich das falsch 
verstanden habe.
Und für die Fernsteuerung Remote-Cotroller im Mainframe ist man damit 
wahlfrei was beim Senden einer Taste passiert oder man sendet da auch 
eine MIDI Message um die Auswertung beim Empfanger gleich zu halten. Und 
ob die Daten jetzt per Ethernet oder USBMidi oder seriell reinkommen 
sollte doch wohl Jacke wie Hose sein.

von temp (Gast)


Lesenswert?

Johannes S. schrieb:
> Der TO wollte keinen Sequenzer der Profiliga bauen

nein aber benutzen. Er will seine Hardware syncron zum Projekt im 
Sequenzer steuern und auch alternativ über die Bedieneinheit. Und bei so 
einem Vorhaben muss man sich schon an die Standards im Studio halten.

von Johannes S. (Gast)


Lesenswert?

Ja, deshalb per USB MIDI an den Steuer PC. Und die 54 externen Tasten 
können über Ethernet angebunden werden, das war aus dem ursprünglichen 
Konzept noch übrig. Und diese Tasten können auch MIDI Befehle senden 
wenn man will.

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Stefan ⛄ F. schrieb:
>> Es gibt Adapter von MIDI (seriell) nach USB-Host:
>>
> 
https://www.amazon.de/CAMOLA-MIDI-Host-Interface-Converter/dp/B08MZY59B7/ref=asc_df_B08MZY59B7
>> (man beachte den Preis)
>
> Hier gilt auch das von mir gesagte. Solange die USB Geräte die
> angeschlossen werden sollen Class Compilant sind geht das. Alle anderen
> die eigene Treiber auf dem Host brauchen sind damit außen vor. Und das
> sind nicht wenige.

Hm. Danke für den Hinweis. Das ist aber hier nicht das richtige Gerät - 
so eine Art Host braucht man für die direkte Verkopplung (ohne PC!) 
zweier autarker MIDI Geräte, wovon das eine nur DIN-MIDI und das andere 
nur USB kann....

In meinem Fall wäre nur der PC (automatisch) USB-Host, die Remote wäre 
USB Peripheral  Node  Endpoint / Device....wie auch immer man das 
nennen möchte....da braucht man keinen externen USB-Host mehr sondern 
wenn überhaupt ein normales USB-MIDI-Interface, wenn ich USB nicht in 
bzw. von der Remote selbst zur Verfügung stellen möchte sondern meine 
beiden Geräte (Remote & Hauptgerät) nur DIN-MIDI können sollen...

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> Johannes S. schrieb:
>> Der TO wollte keinen Sequenzer der Profiliga bauen
>
> nein aber benutzen. Er will seine Hardware syncron zum Projekt im
> Sequenzer steuern und auch alternativ über die Bedieneinheit. Und bei so
> einem Vorhaben muss man sich schon an die Standards im Studio halten.

Ja, so ist das...

von Uli A. (schnuppi44)


Lesenswert?

temp schrieb:
> USB ist meines Erachtens nur dazu geeignet aus dem Rechner zu kommen und
> nicht für lange Leitungswege.

Ja, das stimmt zwar im Grundsatz, aber de facto hat man im Studio 
eigentlich auch überall USB Hubs (natürlich entsprechend hochwertige und 
extern bestromte) rumliegen, besonders zentral am Arbeitsplatz....von da 
aus ist der Weg zu einer Remote, die als eines der Haupt-Bedienelemente 
fungiert, ja auch nur kurz.

temp schrieb:
> Solche USB-Midi Adapter sind aber so billig, da lohnt sich der Aufwand
> kaum es selbst zu bauen.

Ja, das stimmt. Es ist nur mittlerweile (ob zum guten oder schlechten) 
sehr üblich, dass quasi jedes MIDI-Gerät auch USB hat...ist schlicht 
bisschen geschmeidiger, statt der Gurkerei mit zwei MIDI-Kabeln plus 
Interface einfach nur ne USB-Leitung zu haben. Das mit der galvanischen 
Trennung ist natürlich ein bedenkenswerter Aspekt.

temp schrieb:
> Was ziemlich aussichtslos ist einen STM32 egal welcher Art als USB-Host
> für die gefühlt 100tausend verschiedenen Controller zu verwenden die der
> Thomann Katalog hergibt und die nur USB können.

Das ist ja auch gar nicht angestrebt....wie gesagt, in jedem Fall ist 
nur der PC der Host, für die beiden 2-Geräte-Konfigurationen

Remote->Mainframe

und

PC->Mainframe

wird eh nur MIDI in einer Richtung verwendet
======> der Mainframe ist IMMER nur Empfänger der Steuerdaten...

temp schrieb:
> Für das Midi-Routing über LAN gibt es rtpMidi, das können Apple Geräte
> von Haus aus:

Ja, da hatte ich gar nicht dran gedacht, ist mir aber bekannt....benutze 
ich auch zwischen mehreren Macs...

von Uli A. (schnuppi44)


Lesenswert?

Johannes S. schrieb:
> Ja, deshalb per USB MIDI an den Steuer PC. Und die 54 externen Tasten
> können über Ethernet angebunden werden, das war aus dem ursprünglichen
> Konzept noch übrig. Und diese Tasten können auch MIDI Befehle senden
> wenn man will.

Das habe ich leider gar nicht verstanden....könntest Du das nochmal 
aufdröseln, was Du damit meinst ? Also wie die Konfiguration dann genau 
aussehen würde ? Was wird da per USB MIDI an den PC angebunden ?

von Stefan F. (Gast)


Lesenswert?

Uli A. schrieb:
> 
https://www.amazon.de/CAMOLA-MIDI-Host-Interface-Converter/dp/B08MZY59B7/ref=asc_df_B08MZY59B7

> Das ist aber hier nicht das richtige Gerät -
> so eine Art Host braucht man für die direkte Verkopplung (ohne PC!)

Ja, genau dafür galt mein Vorschlag. Ich dachte dabei gar nicht an den 
PC, sondern an dein Mikrocontroller Board mit UART bzw. Midi Buchsen. 
>Falls du da doch mal ein gerät anschließen musst, dass unbedingt einen 
USB Host erfordert, dann wäre das womöglich eine Option.

von Johannes S. (Gast)


Angehängte Dateien:

Lesenswert?

Uli A. schrieb:
> Das habe ich leider gar nicht verstanden....könntest Du das nochmal
> aufdröseln, was Du damit meinst ? Also wie die Konfiguration dann genau
> aussehen würde ? Was wird da per USB MIDI an den PC angebunden ?

Wie ich es verstanden habe sollte nach Vorschlag von temp ja Standard 
MIDI für die Steuerung des 'Mainframe' benutzt werden damit die Befehle 
z.B. von einem Sequencer Taktsynchron an den Controller im Mainframe 
gesendet werden. Der Sequencer (PC?) kann dann per USB mit dem 
Controller verbunden werden, der Controller ist dann ein USB Device das 
sich als USB-Midi Gerät anmeldet.

Das wäre ein Weg um Funktionen im Mainframe Controller auszulösen, 
welche MIDI Befehle man da geschickterweise nimmt, das weiss ich nicht. 
Meine MIDI Erfahrung beschränkt sich bisher auf das Zocken des 
legendären MIDI-Maze auf dem ebenso legendären Atari ST :)
Zum Testen von USB auf einem H743 hatte ich aber das USBMidi von Mbed 
benutzt und das Senden von Noten an den PC war einfach, das Beispiel in 
der Doku funktioniert. Der µC meldet sich als 'Mbed Audio' Gerät am PC 
an und als Testprogramm habe ich den MidiPlayer5 (Empfehlung hier aus 
dem Forum) benutzt. Gibbet hier: http://falcosoft.hu/softwares.html

Jetzt habe ich noch die andere Richtung probiert, das Empfangen von MIDI 
Messages per USB. In einer loop mit polling funktionierte das auch: in 
dem MidiPlayer Setup kann man das Midi Gerät für in/out getrennt 
auswählen. Ich habe aber festgestellt das der Player beim Start den µC 
mit Messages zuballert und die testweisen printf() nicht hinterher 
kamen. Dann habe ich das auf Eventhandling mit Pufferung umgebaut. Das 
war auch etwas tricky weil die Mailbox vom OS keine Objekte mag, das 
MidiMessage Objekt im Konstruktor aber einen 256 Byte Puffer auf dem 
Heap anlegt. Nachdem ich den testweise als festes Array angelegt hatte, 
da funktionierte es. Der Midi Player feuert beim Start 171 Messages und 
wenn man die Mailbox groß genug macht, dann werden die auch alle 
gepuffert. So ein echter MidiController muss also schon reichlich Power 
haben. Für eine Anwendung, die nur auf bestimmte Befehle reagieren soll 
ist das entspannter, man muss ja nicht alles puffern und kann beim 
Empfang im Interruptkontext schon filtern.
Getetst habe ich es jetzt auf einem F746, es wird aber auch auf einem 
F407 laufen.

Teil der Ausgabe wenn ich den MidiPlayer starte und ein paar Noten 
spiele:
1
#66 received ControlChangeType: value 2
2
#67 received ControlChangeType: value 40
3
#68 received other: type 5
4
#69 received other: type 7
5
#70 received other: type 6
6
#71 received ControlChangeType: value 127
7
#72 received other: type 9
8
#73 received other: type 8
9
#74 received other: type 5
10
#75 received other: type 5
11
#76 received ControlChangeType: value 0
12
#77 received other: type 5
13
#78 received ControlChangeType: value 40
14
#79 received other: type 5
15
#80 received other: type 5
16
#81 received other: type 5
17
#82 received ControlChangeType: value 127
18
#83 received other: type 5
19
#84 received ControlChangeType: value 40
20
#85 received other: type 6
21
#86 received other: type 5
22
#87 dropped: 91 received NoteOn: key 64
23
#88 received NoteOff: key 64
24
#89 dropped: 91 received NoteOn: key 79
25
#90 received NoteOff: key 79
26
#91 dropped: 91 received NoteOn: key 91
27
#92 received NoteOff: key 91
28
#93 dropped: 91 received NoteOn: key 28
29
#94 received NoteOff: key 28
30
#95 dropped: 91 received NoteOn: key 43
31
#96 received NoteOff: key 43
32
#97 dropped: 91 received NoteOn: key 76
33
#98 received NoteOff: key 76
34
#99 dropped: 91 received NoteOn: key 83
35
#100 received NoteOff: key 83

In der 'NoteOn' Ausgabe ist noch die Anzahl der verpassten Messages drin 
wenn die ISR die Daten nicht in die Queue schreiben kann.

Der MidiPlayer kann übrigens auch per Netzwerk senden, ich weiß nicht ob 
die da einen Standard benutzen oder einfach die Messages in UDP 
verpacken. Das war mein Vorschlag um das gleiche Gerät auch per Ethernet 
bedienbar zu machen. In dem Fall den MIDI und den UDP Receiver jeweils 
in einen eigenen Thread packen, fertich.

von Uli A. (schnuppi44)


Lesenswert?

Wow. Vielen Dank Johannes für Deine Bemühungen beim Ausprobieren...!!!!

Werde das die nächsten Tage auch mal testen...!

Kurz ne Nebenfrage:

Johannes S. schrieb:
> Zum Testen von USB auf einem H743 hatte ich aber das USBMidi von Mbed
> benutzt

Was meinst Du mit "von Mbed" ? Mbed als IDE-Plattform ? Und wenn ja, wie 
findest Du Mbed Studio im direkten Vergleich zu CubeIDE und was waren 
ggfs. Deine Gründe Mbed vorzuziehen ?

von Johannes S. (Gast)


Lesenswert?

Uli A. schrieb:
> Was meinst Du mit "von Mbed" ?

Mbed ist ein Open Source Projekt von ARM, 
https://os.mbed.com/docs/mbed-os/v6.9/introduction/index.html
Es ist ein OS für Cortex-M mit einem mittlerweile recht umfangreichen 
API für Standard IO wie GPIO, Serial, I2C, SPI und komplexere Sachen wie 
USB, Ethernet, Dateisysteme uvm. Und ein RTOS (RTX5 von Keil/ARM) und 
die Komponenten passen auch zusammen. Das alles mit einem C++ API.
C++ Komponenten gefallen mir besser um eigene Bibliotheken zu bauen als 
alles einem Codegenerator zu überlassen. CubeMX funktioniert zwar 
mittlerweile recht gut, aber der Arbeitsablauf ist einfach Kacke. Meine 
Meinung.
Ich beschäfftige mich mit Mbed schon recht lange, vor ein paar Jahren 
hat ARM da ein gutes Team aufgestellt das dann das bisherige mbed2 
kräftig überarbeitet und auf einen professionellen Level gehievt hat.
Die Cortex-M habe ich mit dem LPCXpresso und LPC1769 erarbeitet, aber 
diese IDE hat wie die CubeIDE eben die Bindung an NXP oder STM. 
Mittlerweile hat ST ja ein Riesenprogramm und auch viel zu Mbed 
beigetragen, aber die kleinen LPC8xx mag ich immer noch und die kann man 
auch noch mit Mbed6 benutzen.

Mittlerweile gibt es auch ein Mbed Studio das die Benutzung vereinfacht, 
ich habe mir aber vorher schon ein System mit VSCode zusammengebaut. Das 
ist vielleicht an einigen Stellen noch hakeliger, aber flexibler weil 
ich beliebige VSCode Extensions benutzen kann.
Mit Mbed Studio ist der Anfang jedenfalls recht einfach, das Board 
sollte nur aktuell von Mbed unterstützt werden, siehe 
https://os.mbed.com/platforms/
Mit Mbed6 sind einige ältere Boards rausgeflogen, man kann die trotzdem 
noch damit benutzen aber das ist etwas aufwändiger.
Ich kann mein Beispiel nochmal auf Polling umbauen, dann kann man das 
direkt benutzen. Für die Eventversion hatte ich wie geschrieben in den 
OS Quellen Änderungen vorgenommen, das sollte man vermeiden. Es ist aber 
alles git versioniert und damit hält sich das Chaos in Grenzen.

von Uli A. (schnuppi44)


Lesenswert?

Nochmals danke für Deine Ausführungen, Johannes.
Ich denke aber, ich werde erstmal bei meinem doch in vielen Punkten 
unterschiedlichen "Setup" für die Entwicklung bleiben:

- C statt C++ (wenn auch vermutlich kein Riesensprung)

- CubeIDE statt Mbed, weil ich nun die ganze Zeit mit dem F407 Disco 
arbeite, das in Mbed nicht gelistet ist...

Sind für mich eh schon genügend Baustellen mit neuen Themen, da muss ich 
das nicht auch nochmal komplett auf den Kopf stelle bzw. neu 
lernen...aber ist trotzdem interessant, was es alles gibt !

;o)

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.