Bedienen van HDMI Switch via RS232/UART

Probleem:

Ik heb een HDMI-switch die via RS232 kan worden bestuurd

  • Scenario 1:
    • Setup: PC connected to HDMI switch using USB -> serial adapter
    • Test: Opening PuTTY on COM port and sending command "sw i01" from my PC
    • Results: HDMI switch input changes to port 1 [Good]
  • Scenario 2:
    • Setup: Arduino UART port connected to TTL->RS232 adapter connected to serial->USB adapter connected to PC with PuTTY program open on COM port
    • Test: Sending command "sw i01" from Arduino to PC using code below
    • Results: "sw i01" prints repeatedly on the Putty terminal [Good]
  • Scenario 3:
    • Setup: Arduino UART port connected to TTL->RS232 adapter connected to HDMI switch serial port
    • Test: Sending "sw i01" from Arduino repeatedly to HDMI switch using code below
    • Results: HDMI port does not switch from port2 to port1 [Bad]

Hardware:

Code:

[Opmerking: Galileo Gen 2 vereist Serial1 voor UART-communicatie]

void setup() {
    Serial1.begin(19200);
}

void loop() {
    Serial1.print("sw i01");
    Serial1.write(13);   //CR
    Serial1.write(10);   //LF
    delay(1000);
}

Vraag:

It seems like Scenario 1 and 2 confirm that the Arduino->HDMI switch communication should work, but it doesn't. Am I missing something regarding physical connectivity? Does manually typing "sw i01" in PuTTY send different commands than I have in the Arduino code?

1
Ik kan niet zeggen hoe je het fysiek verbonden hebt. Dus ik kan niet zeggen of het verkeerd is. Het zou inderdaad moeten werken. Maar je hebt precies de juiste instellingen nodig en waarschijnlijk een (corrigeer me als ik het mis heb) uart <-> RS232-converter.
toegevoegd de auteur dotnetengineer, de bron
U zou willen controleren of het omkeren van de Rx- en Tx-lijnen iets doet. Maar afgaande op de tests die je hebt gedaan, zou het geen verschil moeten maken. In het ergste geval zou je een ossiloscope kunnen proberen en de werkelijke onbewerkte elektrische output van de werkende en niet-werkende voorbeelden kunnen vergelijken. Weet je zeker dat je een CR + LF nodig hebt? Misschien sturen uw stopverfinstellingen alleen een LF (en werkt het om die reden)
toegevoegd de auteur dotnetengineer, de bron
Hoe heb je dit verbonden?
toegevoegd de auteur Mikael Patel, de bron
@MikaelPatel Ik heb de bovenstaande beschrijving bewerkt om aan te geven hoe ik alles voor elk scenario heb verbonden. Laat me weten of ik ergens meer duidelijkheid over wil hebben. Bedankt!
toegevoegd de auteur spoon, de bron
@Paul I bewerkte de bovenstaande beschrijving om toe te voegen hoe ik alles voor elk scenario heb verbonden. Laat me weten of ik ergens meer duidelijkheid over wil hebben. Bedankt!
toegevoegd de auteur spoon, de bron

2 antwoord

Uw HDMI-switcher en uw USB naar RS-232-converter spreken RS-232. De Arduino spreekt TTL UART.

Hoewel het concept achter hen en het algehele formaat van de gegevens hetzelfde is, zijn er grote verschillen:

  • RS-232 gebruikt een ± 10V NRZ-signaleringsmethode, TTL UART gebruikt een 0-5V-signaleringsmethode
  • RS-232 gebruikt inverse logica in vergelijking met TTL UART

Dat betekent dat je de TTL UART van de Arduino moet converteren naar ± 10V NRZ met inverse logica om te communiceren met de IOGear.

Gelukkig is dat een eenvoudig genoeg taak met behulp van een speciale interface-chip. Deze zijn direct beschikbaar en kunnen voor kleine hoeveelheden worden gekocht als een breakout-bord of zelfs als een volledig schild (zoals deze van Sparkfun ). De chip staat bekend als een MAX232 in zijn meest voorkomende vorm, hoewel andere fabrikanten mogelijk verschillende letters gebruiken.

Als je pop op eBay (of je favoriete budget verkoper site) en zoeken naar "Arduino MAX232 DB9" (de DB9 is het type plug op het bord - de 9-pins D-connector) krijgt u veel hits om uit te kiezen.

1
toegevoegd
Majenko, heb je het gedeelte "SparkFun RS232/TTL Shifter connected to Galileo UART" in de vraag gelezen?
toegevoegd de auteur Martin C. Martin, de bron
Nee. Ik heb dat gemist.
toegevoegd de auteur Majenko, de bron
@ jwpat7 en Majenko, ik heb de bovenstaande beschrijving bewerkt om op te nemen hoe ik alles voor elk scenario heb verbonden. Laat me weten of ik ergens meer duidelijkheid over wil hebben. Bedankt!
toegevoegd de auteur spoon, de bron

Ik vond dat het gerelateerd was aan de fysieke verbinding!

In scenario 3 had ik oorspronkelijk de Sparkfun TTL/RS232-adapter met een vrouwelijke DB9-connector aangesloten op de vrouwelijke female DB9-connector met HDMI-switch via een mannelijke/mannelijke seriële kabel. De seriële kabel die ik kocht was een straight through-kabel.

Ik ruilde het uit met een nulmodem kabel en het werkte meteen.

Als ik naar het bedradingsschema keek, dacht ik dat het vervangen van de Tx/Rx-pinnen op de Sparkfun-adapter hetzelfde resultaat had als de nulmodemkabel, maar blijkbaar niet.

Als iemand kan aangeven waarom de nulmodemkabel het verschil maakte, zou dat voor de toekomst iets goeds zijn om te weten.

0
toegevoegd