[résolu] Ftdi maison via cable nokia avec arduino

Bonjour à tous.

J'ai récement décidé de me faire une petite carte arduino sur breadboard car j'ai quelques montages en tête et je ne veux pas "griller" ma vrai carte arduino uno. J'ai acheté quelques atmega328p sans bootloader sur lesquelles j'ai installé le bootloader à l'aide de "optiLoader" Cela a bien fonctionné.

Ensuite je me suis acheté un des fameux cable nokia avec la puce FTDI intégré que j'ai modifié comme expliqué sur ce tuto: http://letsmakerobots.com/node/23728

Pour finir, j'ai donc monté sur une breadboard une carte arduino minimal. (j'ai cablé le strict strict minimum) J'ai essayé de le programmer (vu que l'atmega dessus ne contient que le bootloader et rien d'autre) via mon cable ftdi maison. Pour cela j'ai juste branché le VCC, la masse, et RX TX. Je ne me suis pas occupé de la broche DTR pour le moment car je ne pense pas que cela soit primordiale pour mes premiers tests, je pourrais faire mes "resets" manuelement pour le moment. Bien sur, j'ai branché le RX de mon cable maison sur la broche TX (3) de l'arduino et inversement pour l'autre.

Et comme vous pouvez le deviner, je n'arrive pas à écrire sur le chip. J'ai le fameux message:

avrdude: stk500_recv(): programmer is not responding

Notez que je suis sous linux, je n'ai donc aucun driver a installer.

Pour debugger, voici ce que j'ai fais pour le moment:

J'ai demonter le chip de mon véritable arduino uno pour mettre le chip sur lequel j'ai installé le bootloader. J'ai pu ensuite uploader dessus sans aucun problème et du premier coup le fameux exemple "blink". J'ai ensuite remis le chip sur ma breadboard, et lorsque j'alimente la carte via le VCC et la masse de mon cable FTDI maison, la led "blink" bien aussi sur ma breadboard. Mon "clone simpliste" arduino fonctionne donc bel et bien.

Ensuite j'ai tester seulement mon cable FTDI maison. Je sais deja que le VCC et la masse fonctionne grace au teste précedent (vérifié en plus via multimètre). J'ai ensuite connecté ensemble le RX et le TX, puis, dans une console, j'ai testé en utilisant screen la commande suivante:

screen /dev/ttyUSB0

(évidement ttyUSB0 est bien le bon dans mon cas) Lorsque j'appuis sur une touche, elle s'affiche bien à l'ecran. Ce qui indique que mon RX et TX fonctionnent très bien.

J'ai essayé d'inverser mon RX/TX sur mon arduino, j'ai aussi essayé tous les ports possible (au cas ou...). Rien à faire, toujours le même message. Je n'arrive pas à comprendre pourquoi cela ne marcherait pas alors que j'ai testé non seulement l'arduino "breadboard" et en plus le cable FTDI maison. J'ai même "re-switcher" le chip sur ma vrai carte arduino pour voir si j'arrivais encore a uploader dessus au cas ou je l'aurais "cramé" mais non, le chip fonctionne très bien sur la carte originale.

Est ce que quelqu'un qui aurait eu le courage de lire ce message en entier aurait quelques pistes pour moi?

Merci beaucoup à vous tous.

Bonjour Quand tu cherches a uploader sur le chip neuf sur la breadboard, tu choisis bien le même type de carte que quand tu réussi a le programmer sur la Uno ?

Tu devrais essayer depuis la Uno d'uploader un sketch qui fait des Serial.println("Hello"); en boucle. Verifie que ca marche sur la Uno, puis déplace le chip sur la breadboard. Cherche a recevoir les "Hello" sur ton terminal.

Pour finir, j'ai donc monté sur une breadboard une carte arduino minimal. (j'ai cablé le strict strict minimum)

Avec ou sans quartz? Parce que cela conditionne le bootloader à installer. Et les fusibles à modifier lors de la programmation du bootloader. En fait es-tu certain d'avoir programmé le bon bootloader? Parce que si le processeur prévu pour ta carte minimale fonctionne dans la UNO on peut se poser la question.

Je ne me suis pas occupé de la broche DTR pour le moment car je ne pense pas que cela soit primordiale pour mes premiers tests, je pourrais faire mes "resets" manuelement pour le moment.

C'est vrai mais c'est aussi des fois un peu délicat pour appuyer sur le reset au bon moment et il faut s'y reprendre à plusieurs fois pour initialiser le dialogue.

barbudor: Bonjour Quand tu cherches a uploader sur le chip neuf sur la breadboard, tu choisis bien le même type de carte que quand tu réussi a le programmer sur la Uno ?

Si j'en crois le message qu'atlas2003 donne il n'arrive même pas là. L'application ne reçoit même pas de réponse. Lorsqu'un mauvais type de carte est sélectionné, il me semble que le message donne quelque chose comme not in sync avec un identifiant de carte attendu.

Bonjour,

Afin de te répondre il nous faudrait quelques précisions: - le schéma de ton montage - la fréquence du quartz utilisé - le bootloader utilisé (version + fusibles + nom de la carte arduino associé dans l'ide)

Pour un montage sur breaboard à 16MHz alimenté en 5v il faut utiliser le bootloader : "arduino pro /pro mini 5v @16MHz "

Pour un montage sur breaboard à 8MHz alimenté en 3v3 il faut utiliser le bootloader : "arduino pro /pro mini 3v3 8MHz "

D'après l'erreur que donne avrdude le bootloader (une fois l'ATmega sur la breadboard) ne démarre pas, il ne répond même pas au demande de "sync".

Raisons possibles : -> schéma faux, -> mauvaise fréquence de quartz / tension d'alimentation -> mauvais choix de bootloader

Ok merci pour vous reponses.

C’est le schema avec le quartz de 16Mhz
Comme je disais précedement, j’ai reussis a installer blink dessus et même a apporter quelques modif de temporisation pour être sur que l’upload de mon propre programme fonctionne en placant ce chip la sur mon vrai arduino uno. Ce qui veut dire que le bootloader est bien installé non? Je ne sais pas quelle version est installé par contre car sur la page du site “optiloader”, ce n’est pas vraiment précisé. C’est expliqué qu’il detecte lui même la version du chip et choisit le bon. Par contre, ca n’explique pas s’il installe un bootloader pour utiliser le crystal interne 8Mhz ou externe 16Mhz.
Personnement, je pense que c’est la version 16Mhz externe car si j’enleve le crystal, le programme blink ne fonctionne plus sur ma breadboard.

Par contre effectivement, je choisis comme “board”, la carte “Arduino Uno”. Je vais essayer avec celle indiqué par skywodd: arduino pro /pro mini 5v @16MHz

À propos de la pin DTR, pour le reset, juste pour être sur, il faut bien faire un reset APRÈS l’upload du sketch? Pas besoin d’en faire avant l’upload?

Je vous reviens avec des réponses quand je vais effectuer les tests.
Merci pour votre aide.

Bonjour

À propos de la pin DTR, pour le reset, juste pour être sur, il faut bien faire un reset APRÈS l'upload du sketch? Pas besoin d'en faire avant l'upload?

Le reset se fait juste avant l'upload, c'est lui qui active le bootloader de la cible, sans reset pas d'upload ! le bon moment est celui ou s'affiche la taille du sketche (pardon, du "croquis" !) et ou est tenté l'upload.

Ok! je vais essayer ca. Ou tout simplement je vais vraiment connecter la pin DTR, ca va être bien plus simple.

Merci, je vous donne des nouvelles.

skywodd: Pour un montage sur breaboard à 16MHz alimenté en 5v il faut utiliser le bootloader : "arduino pro /pro mini 5v @16MHz "

Pourquoi ? J'ai un bootloader Uno sur mon chip qui est sur une breadboard avec quartz 16MHz. Je l'utilise comme une Uno sans aucun problème.

barbudor: Pourquoi ? J'ai un bootloader Uno sur mon chip qui est sur une breadboard avec quartz 16MHz. Je l'utilise comme une Uno sans aucun problème.

La vitesse d'upload est plus lente ce qui diminue les possibles interférences causé par le montage sur breadboard.

Je dois avoir une breadboard de bonne qualité alors :)

barbudor: Je dois avoir une breadboard de bonne qualité alors :)

Ou des câbles entre le chipset usb et l'ATmega assez court ;) Moi sur ma breadboard avec des fils "volant" le bootloader UNO c'est même pas la peine :zipper_mouth_face:

Ok, en lisant ça je me rend compte que moi j'ai au moins un cable de 1 mètre après mon chip FTDI (qui est inclu dans le boitier du cable que je branche dans le pc) Ensuite, après ce metre de cable, j'ai un header femele que j'ai soudé dessus. Enfin, j'ai des fils "volant" qui vont vers ma breadboard....

C'est pas l'idéal? :)

Ok Je viens de tester a l'instant. J'ai changé la "board" dans l'arduino IDE pour essayer celle que skywodd conseil mais j'ai eu le meme resultat. J'ai ensuite cablé le DTR et refait le test: Même chose. J'ai remis la board "arduino uno" dans l'ide, et refait le test avec le DTR, et BINGO!

Merci pour vous conseils!

atlas2003: Je viens de tester a l'instant. J'ai changé la "board" dans l'arduino IDE pour essayer celle que skywodd conseil mais j'ai eu le meme resultat.

Si tu veut utiliser ma méthode il faut envoyer le bon bootloader dans l'ATmega, pas juste changer de carte dans l'ide ;) Si tu ne met pas le bon bootloader ça ne ferait rien à par un "not in sync" ou un "programmer not responding".

atlas2003: J'ai ensuite cablé le DTR et refait le test: Même chose. J'ai remis la board "arduino uno" dans l'ide, et refait le test avec le DTR, et BINGO!

C'était donc juste un probléme de reset au final. Tu n'appuyais pas sur le bouton reset au moment de l'upload (j'avais cru comprendre que si) ?