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 programmer un reset ?


Sujet :

Arduino

  1. #1
    Membre régulier
    Comment programmer un reset ?
    Bonsoir,
    j'ai développé une application sur Arduino Uno avec un shied wifi et des capteurs.
    L'arduino lit des valeurs, puis est interrogé par un cron sur un raspberry pi 3 toute les 30 minutes.
    Dans 90% des cas, tout se passe bien.
    Cependant, il arrive parfois ( et je ne sais pas pourquoi ) qu'il y ait une coupure du réseau wifi ( connection à l'arduino).
    J'éteins celui-ci puis le rallume et tout marche à nouveau.
    Je fais cette manip tous les deux trois jours environ.
    Je sais qu'il est possible, via une broches numérique de piloter le reset ( avec une résistance de tirage de 100 ohms)
    Cependant, l'arduino n'est plus joignable quand le wifi coupe.
    Est-il possible d'imaginer un watchdog qui provoque un reset en cas de coupure réseau ?

  2. #2
    Membre expérimenté
    Bonsoir frederic13870
    Citation Envoyé par frederic13870 Voir le message
    Est-il possible d'imaginer un watchdog qui provoque un reset en cas de coupure réseau ?
    Oui, ce watchdog est "restarté" à chaque interrogation, si temps trop long signifiant plus de communication, faire un reset de l'Arduino selon 2 méthodes:

    Matériel en utilisant une pin em mode output pour envoyer un 0 sur la pin RST, voire ici.
    Ou software, avec quelques restrictions, voire ici.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  3. #3
    Membre régulier
    merci mais
    Désolé pour la réponse tardive.
    La première routine met la broche RESET à LOW suite à l'exécution de code.
    La seconde fait un "jump" à "adresse 0", ce qui provoque le RESET.
    Cependant, et je ne pas vraiment de moyen pour le savoir, je pense que l'arduino "plante" totalement.
    Il faudrait un reset hardware.
    J'ai pensé au début de la boucle principale d'alimenter un condensateur qui tiendra le RESET à "HIGHT".
    Lors du reboulage, si l'arduino "est dans les choux" la boucle ne s'exécutera pas, le condensateur ne sera pas rechargé,
    et le RESET hardware se fera.
    Cependant, je n'ai aucune idée pour le calcul de la capacité du Condo, et le schéma .
    Toute aide bienvenue.

  4. #4
    Modérateur

    Salut,
    Ce que tu décris c'est pour ainsi dire le fonctionnement du watchdog, il est fait pour ça. Le watchdog est un timer, tu lui demandes de "reseter" au bout d'un certain temps et il le fera sauf si tu lui donnes signe de vie, et c'est repartie pour un tour.

    Si tu es bloqué quelque part, le watchdog va reseter le micro tout seul car il a la main dessus. Suffit de bien le régler.

    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  5. #5
    Membre expérimenté
    Bonjour frederic13870
    Citation Envoyé par frederic13870 Voir le message
    Cependant, et je ne pas vraiment de moyen pour le savoir, je pense que l'arduino "plante" totalement.
    J'ai testé les 2 versions, ça fonctionne très bien

    Citation Envoyé par frederic13870 Voir le message
    J'ai pensé au début de la boucle principale d'alimenter un condensateur qui tiendra le RESET à "HIGHT".
    Lors du reboulage, si l'arduino "est dans les choux" la boucle ne s'exécutera pas, le condensateur ne sera pas rechargé,
    et le RESET hardware se fera.
    Si c'est l'Arduino qui "charge" le condo, cela veut dire, qu'au départ il est vide donc qu'il y a un 0 sur la pin Reset donc c'est comme si l'on appuyait en permanence sur le bouton!
    S' le programme démarrait (si), quand le programme se plante on se retrouve dans la même condition qu ci-dessus.

    Il reste la solution hardware avec ce type de cirrcuit: TC1232 ou MAX1232.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  6. #6
    Membre éprouvé
    idéalement il vaudrait mieux trouver la source du dysfonctionnement et rétablir le wifi...

    est-ce que vous joignez le réseau de votre domicile où votre montage fait point d'accès Wi-Fi ?

  7. #7
    Membre régulier
    ok !
    Merci à jpbbricole pour les circuits de reset sur le marché.
    Merci à Vincent ; j'ignorais que l'on pouvait programmer le timer Arduino pour faire un reset.
    Je vais me débrouiller.

###raw>template_hook.ano_emploi###