úterý 3. září 2013

Arduino: nový USB převodník s CP2102

V minulém příspěvku jsem popisoval způsob připojení Arduino Pro Mini se sériovým výstupem k PC s USB přes převodník s PL2303. Důležité z toho bylo, že původně dobře promyšlený nákup se ukázal jako špatný krok, ale s pomocí návodů z Internetu, páječky a kusu umu/štěstí se mi podařilo proměnit původně 5-pinový převodník na převodník 6-pinový, tedy včetně DTR signálu klíčového pro programování Arduin.

Několik měsíců jsem s tím byl relativně spokojen, ale pak jsem si řekl, že než čtenářům představím toto své řešení, raději si koupím i ten druhý převodník s CP2102, 6-pinový, a když ten bude fungovat bezvadně, tak tu svou smutnou PL2303 story s relativně šťastným koncem raději nechám v trezoru a všem budu doporučovat osvědčené řešení bez nutnosti pájet něco pod lupou.

Vyrazil jsem tedy na ebay.com (ano, už od března nakupuji téměř výhradně na Ebay, kde jsou ceny minimálně o třetinu nižší než na dx.com) a začal prohledávat nabídku převodníků ze sériového na USB rozhraní s čipem CP2102. Se světáckým úsměvem na rtech jsem vyfiltroval všechny převodníky s pouhými pěti piny (kdepak, mě už podruhé nenachytají!) a začal si prohlížet na fotografiích ty 6-pinové.  Všiml jsem si, že jsou vyráběny v nejméně dvou provedeních, kdy je čtvercový čip buďto sladěn se směrem desky, nebo stojí "na koso". Neviděl jsem v tom však většího rozdílu, a tak jsem vybral dle svého oblíbeného kritéria ten nejlevnější.


Obzvlášť mě potěšilo, že tento převodník má šestý pin už rovnou nazvaný RST, jako reset. Říkal jsem si, že výrobce je opravdu šikula, že už ví, že tento pin budu propojovat s RST pinem Arduina, a proto mi ho rovnou nazval RST i tady na převodníku, abych nebyl zmatený z méně známého DTR a rovnou spojil RST s RST. Natěšeně jsem převodník propojil s Arduinem a zkusil nahrát program. Ale ouha, překvapivě jsem dostal nechvalně proslulý stk500_recv() error. Co to? Mám snad něco zapojeno špatně?

Po chvíli kontrolování zapojení mě napadlo opatrně se podívat na Internet, jak to vlastně s tím CP2102, RST a Arduinem je. Obratem jsem se dočetl pravdu a krve by se ve mně v tu chvíli nedořezal! Ten RST pin na převodníku je totiž skutečný reset pin toho čipu CP2102, naprosto zbytečně vyvedený ven, zatímco DTR signál je opět nevyveden a dřímá na jedné z těch nano-nožiček...

V tuto chvíli jsem byl prakticky ve stejné situaci, jako s PL2303. Mohl jsem tento převodník vyhodit z okna a koupit si jiný, který má vyvedené všechny signály (ale už skutečně všechny, celkem 14 vývodů), anebo se pokusit o zoufalý čin - připájet na jednu z těch nano-nožiček (ještě mnohem tenší a s menší roztečí než u toho PL2303) dráteček tenký jako vlas a někam ho vyvést ven. No, rozhodování bylo jednoduché - vyhodit ten modul přece můžu vždycky, takže následoval pokus o připájení a dopadl takto:


Ze spodní strany jsem přeřízl měděnou cestičku vedoucí od RST pinu někam doprostřed plošného spoje a přímo na ten RST pin jsem připájel drátek vedoucí DTR signál od pinu č.1 toho CP2102 čipu. Tím jsem elegantně využil ten pin header a navíc jsem se zbavil toho snad zbytečného RST pinu. Vlastně jsem to udělal tak, jak jsem si původně myslel, že to je zapojeno.

Výsledek je opravdu funkční, převodník s CP2102 mi připadá i rychlejší a hlavně - nemá žádné problémy s USB prodlužkami, takže teď mám Arduino Pro Mini konečně na stole jako normální člověk a dolů k PC vede jen 2 m USB prodlužka.

Každopádně pokud někdo zvažuje, čím spojit sériové rozhraní Arduina s USB na PC, vřele doporučuji koupit převodník (spíš ten s CP2102), který má výslovně vyveden DTR signál. Tento bude nejspíš vyveden úplně mimo pin-header, na boku spolu s ostatními, méně používanými modemovými signály (viz obrázek):


Možná bude o chlup dražší než ty převodníky, co mám doma já, ale zas to bude fungovat bez starostí - a to se určitě vyplatí :-)

2 komentáře:

  1. a vite otom ze se da prevodnik prejmenovat? udelat mu vlastni ovladace atd? aby se komfortne prihlasoval namisto serial nebo COM port. Se muze hlasit vasim nazvem treba ARDUINO nebo ARDULIK apod.

    OdpovědětVymazat
    Odpovědi
    1. A komu tím prospějete? Jinými slovy, proč by někdo přejmenovával převodník? To je přece fuk, když má v systému jen jeden, jak se zrovna jmenuje - Arduino IDE si ho najde jako sériový port a je to.

      Vymazat