Go Down

Topic: Un câble de programmation USB à moins de 3 euros (Read 7 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 tuto et plein de bonne chose 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 tuto et plein de bonne chose 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"




Go Up