marți, 11 mai 2010

Convertor USB la Serial "de criza" pentru Arduino

Convertor USB la Serial "de criza" pentru Arduino (si nu numai...)


Am modificat un pic placa din postarea anterioara pentru a putea comunica serial cu un calculator care dispune doar de port USB.

In acest scop sunt necesare urmatoarele:
1. Cablu de date Nokia tip DKU-5 sau CA-42. Important este sa aiba mufa de USB mai lunga si/sau mai groasa decat normal, sau o cutiuta mica si neagra la mijlocul cablului ;-)
2. Trei rezistente (1K, 10K, 15K)
3. Cutter, banda izolatoare, multimetru

Ideea de baza este ca aceste tipuri de cabluri contin deja un Prolific 2303 si un MAX232. Pretul de achizitie variaza intre 9-10 RON la importatori si cca. 15-20 RON la diversi comercianti, care vor fi fericiti sa scape de ele... Cred ca de ocazie, de la cineva care a avut un Nokia mai vechi, se poate obtine mult mai ieftin :D

Un tutorial pe larg gasiti la uC Hobby
Pinout-ul pentru aceste cabluri il gasiti aici.

Procedura:
1. Se verifica prezenta circuitelor in cablu.
Se introduce cablul in mufa USB a calculatorului. In Linux (Kernel 2.4.31 sau mai nou) exista deja drivere. La Windows va cere driverele. Daca nu le-ati primit pe CD impreuna cu cablul se pot descarca de aici: PL-2303 USB to Serial Bridge (H, HX, X) Installshield Driver Setup Program
Dupa instalare ar trebui sa gasim in Control Panel un port COM cu numele "Prolific".
2. Se scoate cablul din calculator si se taie in partea dinspre conectorul pentru telefon, NU CEL USB, lasand cca. 10 cm de cablu pentru identificarea firelor.

3. Se identifica cu multimetrul 3 fire (Rx, Tx si GND) conform tutorialului din linkul de mai sus sau conform pinout-ului. Ne intereseaza firele care duc la pinii 6, 7 si 8 din imagine.
Optional se testeaza corectitudinea ca loopback (legand intre ele Rx si Tx) cu ajutorul programului Hyperterminal sau asemanantor.

4. Se conecteaza Rx cablu la Tx controller prin rezistenta de 10K.
5. Se conecteaza Tx cablu la Rx controller prin rezistenta de 1K.
6. Se conecteaza GND cablu la GND placa prin rezistenta de 15-22K.

Avertisment: verificati, verificati, verificati!!!

9 comentarii:

  1. Ideea este foarte buna ! Chiar ma uitam mai lung zilele trecute la un cablu de date de la un telefon Hyundai ( folosit pe ZAPP ) .

    RăspundețiȘtergere
  2. Ce chip are cablul pentru Hyundai?
    Eu am mai facut rost de doua cabluri DCU-11 pentru Ericsson-uri mai vechi la doar 7 lei bucata direct din magazin in Bucuresti, pe urma le-am gasit cu 4 lei + transport de la Constanta: http://www.gsmnet.ro/cabluri-de-date/cablu-de-date-sony-ericsson-dcu-11--1410
    Desi au acelasi indicativ arata altfel, unul are cutiuta la mijloc, altul are mufa USB mai mare si mai au si chipuri diferite...
    In plus, unul ofera posibilitatea alimentarii de la incarcatorul telefonului, asa ca l-am folosit ca sa leg un Ericsson R320 pentru transmitere si receptie de SMS-uri.
    La cat costa un modul GSM pentru Arduino se pot lua vreo 3-4 telefoane la mana a doua, cu tot cu cablurile de date si incarcatoarele aferente ;-)

    RăspundețiȘtergere
  3. As mai adauga inca un detaliu, si anume ca nu toate cablurile CA-42 sunt bune, sar putea ca quartz-ul sa nu fie de precizie prea mare la ele, ca am luat 3 bucati acum 3-4 luni de CA-42 pe placuta interioara scrie DKU-5-B la aproximativ 18 lei si toate imi dau cu virgula(Cand este recunoscut, cand reseteaza usb-ul cand se blocheaza in timpul comunicarii etc, totusi am luat tot un CA-42 la 45 lei de prin kaufland si merge perfect au acelasi chip amandoua tipurile.

    RăspundețiȘtergere
  4. Buna seara.. tocmai cautam pe net o modalitate de a comunica cu un telefon mobil (prin arduino) ca sa pot trimite un mesaj text (print tx/rx din ce am mai citit, deci serial). Ma puteti cumva ajuta cu un astfel de cablu, eventual si telefon (contracost, desigur)?
    Multumesc frumos, Bogdan.

    RăspundețiȘtergere
  5. Imi pare rau, nu am de vanzare. Nu pot nici sa va spun exact care model va merge si care nu, trebuie vazut in documentie.
    Asa cum spunea si Morgoth mai sus, e si chestie de noroc. Acum cateva luni am "reusit" sa fac un Nokia 6610, folosind un cablu original, sa afiseze doar "Contact service" desi n-am facut nimic ciudat cu el :(
    Acum e tocmai bun de piese...

    RăspundețiȘtergere
  6. Atunci o sa mai caut.. Multumesc frumos, oricum. :)

    RăspundețiȘtergere
  7. Am zis ca fac o treaba, si-am luat si eu un cablu DKU-5 de pe net. Dar vad ca nu merge sub nici o forma. Conectarea la GND este absolut necesara? Nu functioneaza si fara? Cat despre masurat, observ ca la pinul de Tx nu am tensiune deloc, atunci cand il conectez sau incerc sa trimit ceva. Sa se fi ars ceva? Pe pinul de Rx am 3.8v sau ceva de genul

    RăspundețiȘtergere
    Răspunsuri
    1. Chiar si intre doua placi Arduino, fara cablu special, doar cu fire, este nevoie de masa comuna. De exemplu http://arduino.cc/en/Tutorial/MasterWriter unde la circuit zice asa: "Make sure that both boards share a common ground".
      Daca reusiti sa ajungeti la intalnirea Tehnorama de marti ne putem vedea si ma uit eu la cablu. Daca nu, putem discuta in direct pe gtalk sau yahoo messenger, unde am userul iardsoft.

      Ștergere
    2. Bun. L-am desfacut, cu gandul ca si-asa l-am stricat, desi cablul, conectat la laptop, la atingerea pinilor Rx si Tx primea ce trimitea. (in USART terminal de la MikroC for AVR).

      [IMG]http://i42.tinypic.com/33yjmhd.jpg[/IMG]
      [IMG]http://i40.tinypic.com/52cpcm.jpg[/IMG]

      Presupun ca sub acea bulina neagra este prolific2302. Iar celalalt este un max232. Acum, Dupa ce-am dezlipit toate firele, am tinut minte care cum este pus, si le-am lipit la loc, doar pe cele de care am nevoie.

      Problema cea noua, este ca atunci cand lipesc cablul de Tx(adica firul in sine de placuta, acolo unde era lipit), primesc in terminal numai caractere aiurea...

      [IMG]http://i42.tinypic.com/jkub1s.jpg[/IMG]

      Ștergere