Portál AbcLinuxu, 4. července 2025 22:27
IrDA už není v módě. Na nových základových deskách je už nenajdeme. Jistě, existují poměrně levné USB převodníky (pokud se je podaří pod linuxem zprovoznit). Co když ale máte vysílač/příjmač IrDA zabudovaný do bedny počítače a vyhovuje vám to? Můžete si postavit jednoduchý převodník RS232 ←→ IrDA založený na čipu MCP2120.
MCP2120 je převodník IrDA na UART, který zvládá rychlosti až do 115200 baudů (resp. dá se „přetaktovat“ na vyšší rychlost, jenže to už velikost pulzu nebude odpovídat standardu IrDA), tedy tzn. IrDA SIR. Ovšem vstup/výstup na UART je v TTL logice, takže chceme-li jej připojit přímo na sériový port v počítači, musíme použít převodník, např. profláklý MAX232 (viz třeba tento článek tady na abclinuxu.).
Má to ale háček. IrDA SIR většinou kvůli zpětné kompatibilitě používa dvě rychlosti: 9600 baudů pro identifikaci zařízení a 115200 pro vlastní datové přenosy. MCP2120 umožňuje nastavení rychlosti dvěma způsoby: buď „natvrdo“ krz piny BAUD0-BAUD2, což se pro takovéto přepínání moc nehodí (to je určeno spíše k připojení k nějakému mikročipu). Proto většina převodníků postavených na MCP2120 použivá jiného způsobu řízení, kdy je jeden RS232 signál (DTR) použit k přepínání převodníku do řídícího módu, ve kterém byte přijatý přes UART říká, jakou rychlostí se má vysílat. Ovšem někdy se stane, že je převodník „rozhozen“ a druhá strana by nevědela, jakou rychlostí s ním má komunikovat. Proto je třeba ještě další signál k resetování obvodu (běžně se používá RTS sériového portu).
To představuje maličký problém: převodník MAX232 totiž má pouze dvě linky RS232 → UART (a naopak dvě UART → RS232). My ale potřebujeme pro směr RS232 → UART. Některé zapojení použijí tranzistor, já jsem se rozhodl vzít ze šuplíku optopřevodník 6N136. Celé zapojení vypadá takto:
Na schématu není zakresleno napájení, já se rozhodl napájet přímo z +5V větve ze zdroje. Ovšem raději jsem předřadil jednu „vratnou pojistku“ a přidal několik vyhlazovacích kondenzátorů (bez nich jsem si ani nešktl, to co „lítá“ po drátech uvnitře počítače bude docela divoké... :D ). Signály do vysílače/příjimače IrDA jsou vyvedeny na klasickou pinovou lištu ve standardním pořadí:
1 - TxIR 2 - GND 3 - RxIR 4 - n.c. 5 - +5V
Testování zapojení není složíté: na linky Rx a Tx jsem mezi MAX232 a MCP2120 pověsil dvě LED diody, takže je možné velmi dobře sledovat, kdo vysílá a kdo přijímá. Jelikož řídící mód funguje zároveň jako testovací a je aktivní při „nahozeném“ DTS, pak při spuštení terminálu, jakým je třeba minicom, se do takovéhoto testovacího módu dostaneme. To se projeví tím, že MCP2120 posílá všechny znaky zpět na UART. Pokud toto funguje, stačí IrDA nastavit a spustit. Konkrétně na mé Fedoře bude vypadat konfigurák (v /etc/sysconfig/irda) nějak takto:
IRDA=yes DEVICE=/dev/ttyS5 DONGLE=mcp2120 DISCOVERY=yes
Pak už jen service irda start a otestovat na nějakém zařízení (vřele doporučuji utiliktu irdadump)...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.