Portál AbcLinuxu, 30. dubna 2025 20:27
Před nedávnem mi přestal fungovat starý projektor, a tak jsem si koupil nový Acer X1373WH. Tento zápisek je o tom, jak jsem se snažil zprovoznit jeho ovládání z PC přes RS-232. Třeba někomu bude užitečný alespoň proto, aby neopakoval moje chyby.
Projektor mám připojený k Raspbery Pi 2. To RS-232 nemá, a proto jsem měl v plánu použít některý z USB převodníků, které mám doma.
Doma mám několik různých převodníků, které byly kupovány pod označením převodník USB RS232:
Můj první nápad bylo použít převodník 1 nebo 2, což se mi jevilo jako nejčistší řešení, protože vyžadovalo nejméně kabelů. Jakmile mi projektor dorazil, zjistil jsem, že má konektor samec, přičemž převodník také. Našel jsem tedy malou redukci, která má na obou stranách samici, a projektor připojil. Spustil jsem echo -ne "* 0 IR 001\r" > /dev/ttyUSB0
(viz seznam příkazů), ale projektor se nespustil.
Po chvíli přemýšlení mně došlo, že takovéto zapojení fungovat nebude, neboť takto je připojený TX pin převodníku na TX pin projektoru. Malou redukci jsem tedy nahradil kabelem, který má příslušné piny křížené, takže TX pin převodníku už byl připojen na RX pin projektoru. Ani tak projektor ale ovládat nešlo.
Dlouze jsem přemýšlel, co dalšího ještě může být špatně, a začal jsem podezřívat převodník. Vytáhl jsem tedy laboratorní zdroj, který též má RS-232 rozhraní, a zkusil jej z počítače ovládat, což fungovalo. Nakonec jsem ze zoufalosti zapnul osciloskop a podíval se na signály, které převodník odesílá. Nakonec jsem zkontroloval signály na všech čtyřech převodnících a zde je výsledek (postupně od převodníku 1 po 4):
Rozdíl mezi převodníky 1, 2 a převodníky 3, 4 je zřejmý - u prvních jmenovaných je logická 1 napětí 0 V, u druhé dvojice asi -5 V. První chování neodpovídá specifikaci RS-232, takže není divu, že tyto převodníky nefungují. Přesněji řečeno, v mnoha případech fungují, ale nemusí fungovat vždy.
Při zapojení převodníku 3 nebo 4 začalo ovládání projektoru fungovat.
Ještě dodám, že převodníky se v lsusb
hlásí (opět postupně od 1 do 4) následovně:
1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Ve výpisu dmegs
je viditelné, že převodníky 3 a 4 nejsou úplně stejné, jeden obsahuje FT232RL, druhý FT232BM (což je ale zřejmě jen jiná verze v podstatě téhož). Mezi převodníky 1 a 2 jsem kromě mírně různého odstínu modré barvy nenašel rozdíl.
Pro zajímavost jsem ještě zkoušel, zda převodníky umí ovládat RTS a DTR signály. Ve všech čtyřech případech ovládat šly.
Bohužel ten z nefungujících převodníků, který jsem kupoval v ČR, jsem již kupoval dávno, takže jej nemohu reklamovat. V opačném případě bych jej okamžitě šel vrátit, protože se nejedná o převodník na RS-232 (přestože je tak označen).
Přemýšlel jsem, jak snadno poznat ten správný převodník bez osciloskopu. Mělo by to jít pomocí LED. V případě, kdy převodník vysílá jen 0 V nebo 5 V LED připojená mezi TX a GND piny v jedné orientaci při odeslání zprávy blikne, v druhé nesvítí. Jestliže je odesíláno -5 V a 5 V (případně jiné napětí dle specifikace), LED v jedné orientaci při odeslání zprávy blikne, v druhé orientaci naopak svítí stále a při odeslání zprávy krátce pohasne.
Protože jsem strávil poměrně dlouhou dobu, než se mi podařilo odhalit všechny příčiny problémů, už si snad budu pamatovat tyto dva závěry:
Kdybyste někdo věděli o převodníku, který vypadá jako ten na prvním obrázku (tj. samotný převodník je v DE9 konektoru (případně někde mezi konektory), ale má samici a vhodně překřížené piny, a jde opravdu o RS-232, dejte prosím vědět.
Protože se mi převodníky, které fungují, nevejdou přímo do USB konektoru na Raspberry Pi (zavazí ostatním USB kabelům) a protože je potřeba použít křížený kabel, mám momentálně zapojení Raspbery - USB kabel - převodník - RS-232 kabel - projektor, což se mi nelíbí.
Tiskni
Sdílej:
Ale zase u kabelu s FTDI z číny se může objevit jinej problém.Ve skutečnosti se ten problém neobjevil u kabelu z Číny, ale u OS z USA.
Ještě dodám, že převodníky se v lsusb hlásí (opět postupně od 1 do 4) následovněUSB část je nezávislá, typicky převádí na TTL. Důležité jestli je za tím něco jako MAX232 nebo to nějaké prase připojilo přímo na výstup.
Kdybyste někdo věděli o převodníku, který vypadá jako ten na prvním obrázku (tj. samotný převodník je v DE9 konektoru (případně někde mezi konektory), ale má samici a vhodně překřížené piny, a jde opravdu o RS-232, dejte prosím vědět.Myslím že si ho budeš muset postavit.
Protože se mi převodníky, které fungují, nevejdou přímo do USB konektoru na Raspberry PiŘešení stojí $1, např. USB kabel nebo 90° adaptér. Nebo připájet drátkama.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.