ARDUINO, RESET, Port série et Moniteur IDE Arduino

Lorsque votre Arduino est autonome (non relié à un PC), si votre programme est correct, tout va bien !

Mais si vous connectez un câble USB et ouvrez l’IDE Arduino, il y a INMANQUABLEMENT un RESET.

Là ou il y a problème, c’est que vous perdez la valeur des variables internes au moment où vous vous êtes connecté (et que vous vouliez afficher avec le moniteur série), sauf si vous les avez sauvegardées en EEPROM (solution un peu lourde et vous n’êtes pas sûr d’avoir les dernières valeurs en fonction du moment où s’est produit le Reset).

Il semble que le problème soit lié à Windows et à sa gestion des ports USB et en particulier du DTR de la liaison série ainsi que du moniteur de l’IDE Arduino.

Sur le Web on trouve différentes “solutions” qui ne fonctionnent pas (résistance de 110 Ω entre la borne RESET et Vcc ou condensateur 10µF entre Reset et masse : le système fonctionne de façon trop aléatoire) .

Autre solution vraiment HARD : couper la piste sur la carte Arduino pour empêcher le Reset, mais on ne peut plus télécharger de programme ce qui est vraiment gênant pour les phases de mise au point; un essai avec un interrupteur relié aux les deux pattes ne marche pas ! On peut rétablir la situation en mettant un point de soudure entre les deux pattes (ça marche). Même possibilité sur la carte MEGA.

Sources :         https://tushev.org/articles/arduino/22/preventing-arduino-from-auto-reset-when-com-port-opens-closes et http://wp.yellowkazoo.com/?p=177

          La seule solution trouvée, simple et vraiment fiable consiste à utiliser un autre moniteur série que celui de l’IDE Arduino (“Hercules” par exemple — http://www.hw-group.com/products/hercules/index_en.html — est un freeware) qui permet de ne pas activer le DTR lors du branchement du câble USB (cause du RESET – désactivez la case DTR dans l’onglet ‘Serial’-).

          Autre solution intéressante et bien pratique quand le système est loin de l’ordinateur : connecter une tablette ou un smartphone à la carte Arduino avec un câble ou connecteur OTG (moins de 3€) et un câble USB et utiliser l’application “Usb Terminal” pour Androïd qui permet de gérer le signal DTR ( à désactiver en décochant la case); à voir pour Mac OS X ou Iphone.

Pour ma part et pour le coté pratique, sur le boitier du système piloté je place un inverseur et un bouton poussoir de façon à me réserver la possibilité d’un Reset à la demande:

Gaston

Posted in arduino.

2 Comments

  1. Bonjour à tous,
    un grand merci Gaston, même les spécialistes Arduino ont du mal à identifier ce qui se passe.
    Maintenant j’ai pigé l’origine de mon soucis …
    Je vais voir quelle option utiliser pour contourner le problème (Arduino de mesure qui perd ses données à la connexion USB).
    Pol

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.