Go Down

Topic: Un câble de programmation USB à moins de 3 euros (Read 8396 times) previous topic - next topic

Jean-Marie

Jul 10, 2011, 11:20 pm Last Edit: Aug 08, 2011, 09:20 pm by Jean-Marie Reason: 1
Il y a peu de temps, j'ai acquis 2 atmega328 chargés avec le bootloader Duemilanove. J'aime mettre la main à la pâte. J'ai donc placé un atmega sur une breadboard, avec un quartz de 16 MHz et ses 2 condensateurs, un bouton de reset muni d'une résistance pull-up de 10K, une led de contrôle de l'alimentation et la led à laquelle aucun arduinophile débutant n'échappe : celle de la Pin Arduino 13 (= Pin 19 de l'Atmega).

N'ayant pas le câble USB officiel de l'Arduino, j'ai utilisé un adaptateur USB-TTL  acheté sur eBay il y a quelques mois pour moins de 3 euros, envoi de Chine compris. Cet adaptateur fonctionne très bien mais il nécessite d'appuyer manuellement sur le bouton Reset pour démarrer la programmation.

Ce n'est pas un gros problème d'appuyer sur le bouton. Ce qui est plus délicat, c'est le tempo. Avec ce Duemilanove, j'obtenais de bons résultats en appuyant avant le lancer la commande Upload et en relâchant le bouton dès que le message « Binary sketch size: xxxx bytes »  apparaissait.

Malgré le bon fonctionnement du système, je me suis demandé qu'est-ce que le câble USB officiel avait de plus pour déclencher l'AutoReset, et j'ai trouvé cette page :
http://www.arduino.cc/playground/Learning/AutoResetRetrofit
On y explique que pour provoquer l'AutoReset, il faut relier le signal DTR à la Pin 0 de l'Atmega (la Pin de Reset) à l'aide d'un condensateur de 0,1 µF.

Mon adaptateur mesure 15 x 20 mm et se présente comme ceci :


A l'arrière, on peut y lire la dénomination des pin :

Je me sert du +5V pour alimenter l'atmega et les signaux Tx et Rx sont évidement reliées aux Pins Rx et Tx de l'Atmega.
J'ai essayé de relier la Pin RST au Reset de l'atmega, mais je n'ai obtenu aucun résultat.

L'adaptateur comporte au centre un chip minuscule. A l'aide d'une loupe, on peut y lire CP2102. Un coup d'œil à la datasheet m'apprend qu'il s'agit d'un chip de Silicon Labs constituant un pont USB-UART dont voici le brochage :


On voit qu'il y a bien une Pin de sortie DTR, correspondant à la Pin 28 du chip. J'ai donc décidé d'essayer de souder un condensateur de 0,1µF entre cette Pin et la broche RST de l'adaptateur. Après quelques mesures et observation par transparence, j'ai vu que la broche RST était reliée au 5V par l'intermédiaire de la résistance SMD R2 de 2,2Kohm. Sous une loupe binoculaire, j'ai soudé le condensateur à la Pin 28 et à la résistance R2.



Dans un premier essai, je n'ai pas coupé la piste menant de R2 au 5V, me réservant cette manœuvre au cas où le Reset ne fonctionnerait pas.

En fait, l'AutoReset fonctionne parfaitement comme cela. Il suffit donc maintenant de relier la broche RST à la Pin0 de l'atmega pour profiter de l'AutoReset.

Cet adaptateur est toujours disponible sur eBay. Il suffit de faire une recherche sur CP2102. Il n'y a que l'embarras du choix, et c'est très très léger pour le portefeuille. Le seul point délicat est la soudure sous une grosse loupe.

Zut, comment fait-on pour insérer des images dans le texte. Mes images sont sur Picasa web. En inscrivant les adresses entre "img" et "/img" çà ne marche pas !
Finalement, je suis obligé d'inclure seulement les adresses des images au lieu des images elles-mêmes.


Edit de Jean-François : pour les photos, c'est fait...  XD
Amicalement, Jean-Marie

skywodd

Cool merci ! Je garde ton astuce on sait jamais ça peut servir pour plus tard.

Sinon pourquoi s'embêter quand on peut avoir pour le même prix un adaptateur complet ?
ebay -> "FTDI USB to serial UART Module Based TTL FT232RL" 1.10€ ;)

et dans le genre bonne astuce, l'adaptateur apm usb->RS-232 qu'on peut trouver en grande surface pour même pas 7€ contient un CP2102 et un buffer 5v/+-8v (rs-232) donc pour 7€ on peut avoir un câble usb série et rs-232 ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Jean-Marie

Hello Skywodd,

J'ai évidemment été voir mais le prix que tu renseignes est une enchère. Le premier prix en "achat immédiat" pour ce module est de 11,26€ + 2,25€ de port.

De plus, ce modèle ne donne pas non plus accès au signal DTR, à moins bien sûr d'y souder à nouveau un condensateur.

Ouf ! Tu m'as fait croire un moment que j'avais passé ma journée pour rien  ;)
Amicalement, Jean-Marie

skywodd

:smiley-eek-blue: j'avais pas vu les frais de port désolé, effectivement si ton module est en achat immédiat c'est plus intéressant !

Sinon moi j'ai fait mon bidouillage avec un adaptateur usb/rs232 et là j'en suis sur que c'est un achat immédiat et à 2€ ;)
ebay -> "Câble Convertisseur USB vers RS232/DB9 Série 9 Pin,F111" (il existe différent type mais presque tous à 1€ c'est le genre de truc à savoir)
J'ai découvert cette astuce ici (qu'on ne me demande pas ce que je voulai faire avec ma box hein ;)) http://www.neufbox4.org/wiki/index.php?title=APM_USB_to_Serial_Adapter
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

al1fch

#4
Jul 10, 2011, 11:56 pm Last Edit: Jul 11, 2011, 12:13 am by al1fch Reason: 1
Merci Jean Marie .... et bravo pour avoir été jusqu'au bout !!

J'ai suivi la même démarche .... sans 'conclure' vu la difficulté dans mon cas pour réaliser la soudure sur la broche 28 ! Je suis par contre surpris que cela fonctionne en laissant en place la liaison RST qui est l'entrée de Reset du CP2102. A première vue on pouvais supposer que le passage de DTR à l'état bas provoque dans ces conditions un reset du CP2102 et que cela perturbe le début de l'émission des données vers le bootloader.
Ces modules se trouvent sur ebay avec les mots clefs "USB TTL 6 PIN"
La puce utilisée (Silicon Labs CP2102) a un petit avantage sur celle de FTDI : sortie 3,3V -> près de 100mA disponibles.

PS : quand tu édites un message  tu peux joindre une image ou un document avec "Additional Options"




al1fch

#5
Jul 11, 2011, 01:03 am Last Edit: Jul 11, 2011, 10:51 pm by al1fch Reason: 1
@Skywodd
ta box a sans doute bénéficié des mêmes soins qu'une Fonera de récupération
munie hier d'un de ces petits modules "Usb-TTL 6 pins" !!


Jean-François

Super, merci pour ce truc que je mettrai en pratique prochainement sur une des mes standalones.
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

skywodd


@Skywodd
ta box a sans doute bénéficié des mêmes soins ce qu'une Fonera de récupération
munie hier d'un de ces petits modules "Usb-TTL 6 pins" !!

Les grands esprit ce rencontre :)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Jean-Marie

@ Skywodd: merci pour ton article. Il paraît intéressant mais je n'ai fait que le survoler car je m'absente pour 2 jours et je n'ai pas le temps.

@al1fch: Je m'étais dit que RST voulait peut-être dire Reset mais je j'ai pas pensé que ce Reset pouvait s'appliquer au CP2102 lui-même. Je pensais à un Reset de l'Atmega. Cependant, la seule liaison que j'ai trouvé pour cette broche est avec le +5V par la résistance de 2,2K. Je n'ai trouvé aucune trace vers une broche du CP2102.

@Jean-François: C'est probablement à toi que je dois l'affichage des photos dans le texte. Merci. Je crois que j'avais essayé en insérant l'adresse de la page web et non l'adresse de la photo elle-même. Mon plus grand plaisir serait que d'autres réussissent ce mini hacking.
Amicalement, Jean-Marie

al1fch

#9
Jul 11, 2011, 02:54 pm Last Edit: Jul 11, 2011, 04:58 pm by al1fch Reason: 1
@Jean-Marie
La liaison entre la broche 9 (Reset du CP2102) et la résistance R2 est principalement sur la face inférieure.
La piste est facile à couper en cas de doute !
Couper cette piste n'est à la réflexion pas une bonne idée : il faut laisser au circuit sa résistance R2 de tirage (pull up) sur son reset.

ojal

#10
Jul 11, 2011, 06:54 pm Last Edit: Jul 11, 2011, 07:56 pm by Jean-François Reason: 1
Bonjour,

Une adaptation similaire est-elle aussi nécessaire avec cet adaptateur?

USB2.0 to TTL Converter Module PL2303 +4pcs Free cable :


Plus généralement comment savoir si une adaptation et nécessaire?

Par avance merci  :)


   Edit de Jean-François : pas de lien Ebêee SVP, ils ne sont plus valides après un certain temps et le post perd en compréhension.

al1fch

Oui Ojal l'adaptation est nécessaire car le module ne sort pas les signaux DTR ou RTS suceptibles de resetter le Mega328 et ainsi amorcer le bootloader.
Ces signaux existent au niveau de la puce Prolific PL2303 (broches 2 et 3, voir PDF en lien) mais la soudure d'un fil pour récupérer l'un de ces signaux est quand même acrobatique !!
http://www.prolific.com.tw/support/files/%5CIO%20Cable%5CPL-2303HX%5CDocuments%5CDatasheet%5Cds_pl2303HX_v15F.pdf
Tout module ne sortant pas DTR ou RTS nécessite une modification.

ojal

Je comprends bien qu'il faille que la puce utilisée puisse sortir le signal adéquat, néanmoins comment savoir pour un adaptateur donné si l'adaptation doit être réalisée???

al1fch

#13
Jul 11, 2011, 10:28 pm Last Edit: Jul 11, 2011, 10:47 pm by al1fch Reason: 1
A mon avis un adaptateur qui fournit RTS, DTR (ou les deux) est utilisable sans modification.
Pour info voir ci dessous le brochage "FTDI" de référence et un exemple d'adaptateur qui fournit  DTR a la place de RTS.
-> S'il n'y a ni DTR ni RTS, il faut aller en chercher un des deux sur la puce.

ojal


On y explique que pour provoquer l'AutoReset, il faut relier le signal DTR à la Pin 0 de l'Atmega (la Pin de Reset) à l'aide d'un condensateur de 0,1 µF.


Ce n'était pas possible de rajouter le condensateur après la sortie de la pin RST??? Facilement réalisable plutôt que de venir micro-souder comme tu l'as fait...??? J'imagine que tu as essayé cette solution???

Go Up