IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Comment supprimer l'auto-reset du port com d'un arduino nano ?


Sujet :

Arduino

  1. #1
    Membre habitué
    Homme Profil pro
    artisan
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : artisan

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Par défaut Comment supprimer l'auto-reset du port com d'un arduino nano ?
    Bonjour la communauté,

    Je souhaiterais supprimer l'auto-reset de l'arduino quand un programme Python établit une communication série via le connecteur USB.

    Il semblerait qu'il y ait deux possibilités que j'ai donc essayé :

    1/ Une hardware, en mettant une résistance de 110 ohm entre le pin reset et le 5v.

    Voir le site de arduino : "You may also be able to disable the auto-reset by connecting a 110 ohm resistor from 5V to the reset line;"

    Ou sur le post de f-leb : forum developpez.net

    J'ai essayé de reproduire cette manip sur mon nano branché sur un shield I/O. Il y a dessus un point à souder écrit : "RST"
    J'imagine que c'est le pin reset. J'ai donc branché une résistance de 130 ohm, n'ayant pas de 110 ohm, entre le reset et le 5v.
    Ben... Ca ne marche pas. L'arduino reset a chaque fois que le script python se connecte au port com.

    Ce qui me tracasse, c'est de brancher le point "RST" au +5v à travers une résistance de 110 ohm (130 ohm pour moi).
    Quand je mesure la tension au point "RST", j'ai déjà 5v. Alors je ne vois pas l'intérêt de le brancher de nouveau sur le 5v avec une résistance.
    Du coup, j'ai essayer de brancher ce point "RST" à la masse a travers la résistance.
    Le script python ce connecte à la carte, visiblement ouvre le port com, envoie l'instruction mais rien ne se passe du coté arduino. Pas de réaction ni retour d'information. Le script se referme sans message d'erreur mais rien ne s'est passé.
    Du coup, je suis passé à la solution suivante.


    2/ Une software en modifiant le bootloader.

    Il semblerait que l'on puisse changer le bootloader. Voir sur cette page lien, mais je ne comprends pas la manip. On peut malgré tout, télécharger le package dans lequel il y a le fichier .hex

    En faisant des recherches, je suis tombé sur hexUploader pour Mac mais il existe l'équivalent pour PC.
    Une manière élégante de uploader le bootloader sans passer par un programmateur ou à travers un autre arduino.
    Voir le
    ...

    Ben... J'y arrive pas non plus...
    J'ai un message d'erreur : "avrdude: stk500v2_ReceiveMessage(): timout"

    N'ayant pas eu de succès avec ces deux solutions, j'aimerais avoir vos retours d'expériences concernant ce problème d'auto-reset et vos solutions pour un arduino nano.

    Merci par avance...

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 282
    Par défaut
    Bonsoir

    Sur les Arduino le /RST càd "reset actif à 0" (action direct qui ne dépends pas du micro-code et qui n'est que difficilement désactivable, j'y reviens dessus à la fin) est relié au DTR du convertisseur USB-RS232 par l’intermédiaire d'un C-R (condensateur en série, résistance vers le plus).
    De cette manière un front descendant sur le DTR provoque un pic à 0 réalisant un Reset de l'Arduino, et un front montant n'a pas d'influence. Cela est nécessaire pour programmer l'Arduino par l'USB sans ISP.

    La méthode propre de résoudre ce problème (de manière générale) c'est de ne pas toucher le DTR lors de l'ouverture du port COM, mais plusieurs discussions du forum semble dire que cela n'est pas possible en Python (mais comme je n'ai pas d'expérience en Python).

    La méthode par ajout de résistance sur le 5V tente à minimiser le pic pour qu'il ne soit plus détecté par le microcontrôleur. Pour que cela fonctionne il faut que le branchement soit direct et sans fils ou contacts intermédiaires qui ajoutent de la résistance et de l'inductance parasites diminuant d'autant l'effet de la résistance. Perso je trouve cela une méthode de sauvage...

    Matériellement le plus correct sera de retirer C4 ou de couper une des pistes aux abords, par contre pour l'installer à nouveau cela sera une autre histoire. Sur l'Uno il y a un endroit prévu pour cela, on peut couper la piste, puis faire un pont de soudure pour rétablir la configuration par défaut, sauf que cela n'est pas présent sur le Nano.

    Ensuite sur tes expériences:

    En installant une résistance entre le RST et le 0V on force le RST à 0 maintenant le microcontrôleur en état de reset et dans cet état normal qu'il ne fonctionne plus.

    La vidéo c'est le téléversement d'un logiciel de gestion de fraiseuse numérique, rien à voir avec un bootloader, il utilise le bootloader pour charger un programme écrit en C. Mais pour modifier le bootloader il faut passer par la programmation ISP.

    On peut désactiver le reset matériel en modifiant un fusible de l'AVR, mais cela n'est réalisable que par programmation ISP..., une limitation du microcontrôleur. Cela je sais le faire uniquement avec un vrai programmateur (celui de Kanda aussi cher qu'un Arduino) vu que c'est mon équipement.

    Le lien qui tu indiques ne fait pas cela. Il y a toujours un reset, sauf que le démarrage du programme est plus rapide que avec le bootloader d'origine.

    Bonne suite

    Delias

  3. #3
    Membre habitué
    Homme Profil pro
    artisan
    Inscrit en
    Avril 2019
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : artisan

    Informations forums :
    Inscription : Avril 2019
    Messages : 12
    Par défaut
    Merci pour toutes ces explications !
    Cela me semble bien plus clair.
    En parallèle, sur un autre forum, on m’a suggéré de dessouder le condensateur.
    Ce que j’ai fait et ça marche nickel.
    Simple et efficace.
    Merci encore pour ce retour instructif.

Discussions similaires

  1. Comment recuperer le nom d'un Port Com
    Par teo73 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 20/08/2009, 17h33
  2. comment détecter l'absence de connexion sur port COM ?
    Par nicoboud2 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 12/04/2006, 14h41
  3. [C#] Comment écrire dans un port COM ?
    Par Le poulpe dans le forum C#
    Réponses: 3
    Dernier message: 17/03/2006, 20h22
  4. [C#] Comment utiliser tous les ports COM ?
    Par Seb.26 dans le forum C#
    Réponses: 2
    Dernier message: 10/01/2006, 16h34
  5. Comment utilise-t-on ReadStr sur le port COM ?
    Par chourmo dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/06/2005, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo