USB statt RS232, aber wie?

Hallo Zusammen,

ich habe mit dem UNO einen Überwachungsgerät gebaut, mit dem ich ein Druckerprotokoll im ASCII Format über eine RS232-Schnittstelle abgreife. Ich wusste bei dem "Sender" auf welchem Pin TX und RX ist und konnte diese Pins direkt auf dem Arduino auf den Pins 0 und 1 auflegen. Leider gibt es keine Ersatzteile mehr für das alte Gerät und wir müssen auf ein neues Gerät umsteigen. Dort kann man genauso ein Druckerprotokoll im ASCII-Format ausgeben, allerdings ist die Schnittstelle ein Mini USB B Stecker. USB hat ja auch 2 Datenleitungen, meist grün und weiß. Ich bezweifle aber, dass ich die Datenleitungen einfach an TX und RX am Arduino anlegen kann und darf. Würde es funktionieren, wenn ich das über ein USB zu TTL-Adapter mache? Bestückt ist der Adapter mit einem FTDI FT232RL Chip, zudem kann man noch den Pegel der Datenleitung mit einem Jumper switchen zwischen 3,3V und 5V.
Ich habe wieder einmal absolut keinen Plan wie ich das angehen soll....

Danke für eure Unterstützung.

Gruß Marco

Wenn du den USB-Serial-Wandler dazwischen setzt, solltest du die Daten per Serial lesen können.
Verwende dazu SoftwareSerial und du kannst dir die Informationen am Uno über den Seriellen Monitor ansehen.

HotSystems:
Wenn du den USB-Serial-Wandler dazwischen setzt, solltest du die Daten per Serial lesen können.
Verwende dazu SoftwareSerial und du kannst dir die Informationen am Uno über den Seriellen Monitor ansehen.

Der Drucker dürfte aber ein USB Client sein, da wird ein normaler USB-Serial Wandler nicht gehen.

ArduFE:
Der Drucker dürfte aber ein USB Client sein, da wird ein normaler USB-Serial Wandler nicht gehen.

Genau die Befürchtung habe ich auch. Ich würde ja dann einen USB Host benötigen, oder? Wie kann man einen USB Host am Arduino realisieren?

Danke und Gruß und Marco

Es gibt sogenannte USB-Host Shields. Hab ich aber noch nie in Funktion gesehen.

Zwei Boards aus der erweiterten Arduino Familie haben eine USB-Host Library und einen entsprechenden Anschluss:

Der Arduino Due kann meines Wissens nach nur direkt angeschlossene Tastaturen und Mäuse ansteuern, keine USB-Geräte hinter Hubs oder andere Geräteklassen. Ist also nicht geeignet.

Der Teensy 3.6 scheint zumindest 4 Typen von Serial Adaptern zu unterstützen (Auszug aus der Lib)

		// Now do specific setup per type
		switch (sertype) {
		//---------------------------------------------------------------------
		// FTDI
		case FTDI:
			{
				pending_control = 0x0F;
				mk_setup(setup, 0x40, 0, 0, 0, 0); // reset port
				queue_Control_Transfer(dev, &setup, NULL, this);
				control_queued = true;
				return true;
			}
		//------------------------------------------------------------------------
		// Prolific
		// TODO: Note: there are probably more vendor/product pairs.. Maybe should create table of them
		case PL2303: 
			{
				//  First attempt keep it simple... 
				println("PL2303: readRegister(0x04)");
				// Need to setup  the data the line coding data
				mk_setup(setup, 0xC0, 0x1, 0x8484, 0, 1);  
				queue_Control_Transfer(dev, &setup, setupdata, this); 
				control_queued = true;
				setup_state = 1; 	// We are at step one of setup... 
				pending_control = 0x3f;
				return true;
			}
		//------------------------------------------------------------------------
		// CH341
		case CH341:
			{
				println("CH341:  0xC0, 0x5f, 0, 0, 8");
				// Need to setup  the data the line coding data
				mk_setup(setup, 0xC0, 0x5f, 0, 0, sizeof(setupdata));  
				queue_Control_Transfer(dev, &setup, setupdata, this); 
				control_queued = true;
				setup_state = 1; 	// We are at step one of setup... 
				pending_control = 0x7f;	
				return true;
			}
		//------------------------------------------------------------------------
		// CP210X
		case CP210X:
			{
				println("CP210X:  0x41, 0x11, 0, 0, 0 - reset port");
				// Need to setup  the data the line coding data
				mk_setup(setup, 0x41, 0x11, 0, 0, 0);  
				queue_Control_Transfer(dev, &setup, NULL, this); 
				control_queued = true;
				setup_state = 1; 	// We are at step one of setup... 
				pending_control = 0xf;	
				return true;
			}

probiert habe ich das noch nicht. (Die Lib läuft auch auf dem Teensy 4.0, da braucht man aber externe Hardware für den Busanschluss.)

ArduFE:
Der Drucker dürfte aber ein USB Client sein, da wird ein normaler USB-Serial Wandler nicht gehen.

Dann waren die Angaben nicht deutlich bzw. ich habe diese falsch verstanden.
da wir hier im Arduino Forum sind, war für mich der Arduino maßgeblich.