Probleme rtc arduino - interruptions externes
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

Probleme rtc arduino - interruptions externes



  1. #1
    invite21365b4f

    Question Probleme rtc arduino - interruptions externes


    ------

    Bonsoir,
    Je m'appelle Valentin, j'ai 16 ans, et je suis un débutant en programmation. Je me suis "formé" entièrement seul, à l'aide de vidéos, sur l'apprentissage du langage C++.Je suis en train de concevoir mon premier projet Arduino, un poulailler autonome, avec une carte Arduino UNO, qui permet de fermer la trappe à mes poules la nuit puis de la rouvrir au matin. Cela fonctionne avec une photorésistance et le tout est 100% autonome en énergie grâce à un petit panneau solaire qui recharge une batterie afin d'alimenter le petit système.
    Cependant, la carte Arduino et les différents capteurs consomment énormément et ne permettent pas, en une charge, d'alimenter mon système une journée au mieux. La solution ?! Le module RTC et la mise en veille de ma carte afin de limiter les consommations inutiles.
    Toutefois, après avoir épluché le net entier sur ce sujet , je n'ai pas trouvé une seule information concluante. En définitive, je souhaiterai pouvoir éteindre ma carte pendant 15 minutes, puis la rallumer, puis la rééteindre pendant 15 min...tout ca grâce à mon module RTC DS3231, en gardant en tête le fait de consommer le moins possible. Je sais qu'il existe des librairies déjà faites, mais je n'y comprends pas grand chose…!!!
    Si je sollicite votre aide aujourd'hui, c'est parce que cela fait longtemps que je cherche et que je ne trouve quasiment rien !!
    Pourriez-vous m'aider afin de mettre un terme à mon projet, lancé il y a déjà quelques mois ?!
    En vous remerciant,
    Valentin.

    -----

  2. #2
    invite6c250b59

    Re : Probleme rtc arduino - interruptions externes

    Dans le forum électronique il y a des tutos pour faire une horloge, àmha ce serait le meilleur endroit pour ce. genre de demande).

  3. #3
    umfred

    Re : Probleme rtc arduino - interruptions externes

    Tout d'abord regarder la doc du DS3231, on y lit qu'il possède 2 Alarmes "Time-of-Day" (en gros, tu règles une heure, et à cette heure, une "alarme" est déclenchée, mais c'est plus flexible si besoin), et une sortie d'interruption qui est déclenchée par l'alarme.
    Donc , il suffit :
    - de relier la sortie d'interruption de la RTC sur une entrée interruption capable de réveiller l'arduino,
    - que l'arduino (après avoir mis au moins une fois la RTC à l'heure) de programmer une alarme à l'heure voulue, de configurer son entrée d'interruption et de s'endormir
    Quand l'heure sera arrivée, l'arduino devrait se réveiller du fait de l'arrivée de l'interruption, et avant de se rendormir, programmer la prochaine heure de réveil (ne pas oublier d'effacer l'interruption dans la RTC et au niveau de l'arduino).

  4. #4
    invite21365b4f

    Re : Probleme rtc arduino - interruptions externes

    Ok ! Merci pour ces informations. Cependant, je ne souhaite pas expressément réveiller l'Arduino à une heure précise mais le réveiller à intervalles de temps réguliers. C'est cette nuance que je n'ai pas comprise. Pourriez-vous me montrer un exemple de code afin que je puisse mieux comprendre ? La bibliothèque de JChristensen est-elle adaptée ?
    En vous remerciant,
    Cordialement,
    Valentin

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Probleme rtc arduino - interruptions externes

    Dans ce cas, le plus simple est de réveiller l'arduino grâce au timer interne.

  7. #6
    invite6c250b59

    Re : Probleme rtc arduino - interruptions externes

    Citation Envoyé par Jack Voir le message
    Dans ce cas, le plus simple est de réveiller l'arduino grâce au timer interne.
    Extrait de ce blog “if you need a longer sleep period than 8s (...) then you could consider an external real-time clock”. Mais la page date un peu, est-ce que tu dirais que ce conseil n’est plus pertinent avec les cartes plus récentes?

  8. #7
    invite21365b4f

    Re : Probleme rtc arduino - interruptions externes

    J'ai déjà songé à cette solution. Cependant, je souhaite quand même gagner davantage d'énergie en réveillant mon Arduino toutes les 5 minutes environ. La solution du timer interne aurait pu fonctionner mais pas dans mon cas...

  9. #8
    umfred

    Re : Probleme rtc arduino - interruptions externes

    Citation Envoyé par VALENTIN1234 Voir le message
    Ok ! Merci pour ces informations. Cependant, je ne souhaite pas expressément réveiller l'Arduino à une heure précise mais le réveiller à intervalles de temps réguliers. C'est cette nuance que je n'ai pas comprise. Pourriez-vous me montrer un exemple de code afin que je puisse mieux comprendre ? La bibliothèque de JChristensen est-elle adaptée ?
    En vous remerciant,
    Cordialement,
    Valentin
    à intervalles réguliers ou à une heure précise, c'est "presque" pareil: comme je l'ai indiqué il suffit de programmer un réveil à heure actuelle + intervalle, à chaque réveil (il y a un peu plus d'opération à faire c'est tout)
    La bibliothèque de JChristensen me semble adaptée

  10. #9
    Jack
    Modérateur

    Re : Probleme rtc arduino - interruptions externes

    Citation Envoyé par VALENTIN1234 Voir le message
    J'ai déjà songé à cette solution. Cependant, je souhaite quand même gagner davantage d'énergie en réveillant mon Arduino toutes les 5 minutes environ. La solution du timer interne aurait pu fonctionner mais pas dans mon cas...
    C'est sur que 4 secondes, c'est pas très long.
    Mais est-ce vraiment un problème? S'il l'arduino "dort" 4 s, puis se réveille pour voir si les 5 minutes sont écoulées avant de se rendormir ou de gérer l'ouverture / fermeture de la porte, l'économie d'énergie est sûrement suffisante.

    Je ne connais pas le temps de sortie de veille de l'AVR, mais disons qu'elle prenne 4 ms y compris le traitement mesurant si les 5 min sont atteintes, ça veut dire qu'il va fonctionner à plein régime 0.1% du temps. Ca devrait suffire pour épargner ta batterie.

  11. #10
    umfred

    Re : Probleme rtc arduino - interruptions externes

    c'est vrai que ça sera plus rapide (et simple) de compter le nombre de réveil que de faire tout le dialogue avec la RTC.
    Au bout de 75 réveils, hop 5 minutes d'écoulées

  12. #11
    invite21365b4f

    Re : Probleme rtc arduino - interruptions externes

    Pourquoi pas, mais comment faire ?!

  13. #12
    jojo150393

    Re : Probleme rtc arduino - interruptions externes

    Bonjour,
    le plus simple est de configurer le DS3231 pour qu'il active sa sortie n°3 (INT/SQW) en signal carré avec une fréquence de 1Hz. Ensuite, il suffit de configurer l'arduino pour se réveiller sur Irq sur cette pin et de compter le nombre de "réveil".

  14. #13
    Jack
    Modérateur

    Re : Probleme rtc arduino - interruptions externes

    Citation Envoyé par VALENTIN1234 Voir le message
    Pourquoi pas, mais comment faire ?!
    Tu suis les indications du site. Le code est même donné. Que te faut-il de plus?

    @jojo150393 : l'utilisation d'une RTC ne me<semble pas ce qu'il y de plus simple: il faudra ajouter soit un shield, soit une petite carte externe.

  15. #14
    invite21365b4f

    Re : Probleme rtc arduino - interruptions externes

    Effectivement, cela ne me semble pas être la solution la plus simple. Cependant, je suis là pour apprendre ! �� Comment activer ce "signal carré"? Comment définir sa période afin de réveiller l'Arduino à intervalles réguliers ?

  16. #15
    Jack
    Modérateur

    Re : Probleme rtc arduino - interruptions externes

    Tu parles de quelle solution? Avec ou sans RTC externe?

  17. #16
    umfred

    Re : Probleme rtc arduino - interruptions externes

    Lire la datasheet du composant

  18. #17
    invite21365b4f

    Re : Probleme rtc arduino - interruptions externes

    Avec le RTC DS3231. Pour la datasheet, j'y ai déjà jeté un coup d'œil mais rien de concluant de mon côté....

  19. #18
    umfred

    Re : Probleme rtc arduino - interruptions externes

    page 13 de la datasheet (lien donnée dans la réponse #3) SQUARE-WAVE OUTPUT FREQUENCY soit "fréquence de la sortie signal carré"

  20. #19
    abracadabra75

    Re : Probleme rtc arduino - interruptions externes

    Bonjour.

    Le DS3231 est idéal pour une horloge de très haute précision.
    Pour avoir une sortie 1 HZ il faut documenter les bits RS2 et RS1du “Control registrer” (adresse 0Eh).

    Mais tu te compliques la vie car tu dois rajouter le DS3231 et le programmer.

    Sans passer par le DS3231, tu peux programmer directement le Mega323 (ou n° autre) de ton argh...o exactement de la même façon, en documentant deux ou 3 registres du Mega relatifs aux timers. Pour cela, il suffit de changer de….. datasheet!

    Mais comme cette lecture est particulièrement rébarbative quand on aborde le sujet pour la première fois, voici un document trrrrrrrrrrrrrrrès bien fait qui décortique pas à pas la question:

    https://maxembedded.wordpress.com/20...imers-timer0-2

    le nom de la page est "AVR Timers – TIMER0 | maxEmbedded" au cas où le lien est foireux.
    Il est suivi de 4 autres dont l’adresse est en bas de chaque document.

    Celui qui t’intéressera le plus est celui relatif au mode dit “CTC” (c’est, il me semble de mémoire) le 5ème, qui détaille tout.

    La programmation des registres est donnée en Assembleur et en C.

    Prends le temps de lire, tu devrais y trouver ton compte.

    De plus, pour réduire la consommation, il faut remplacer le quartz de 16 MHz par un de 2 ou même 1 MHz; ou aussi le remplacer par l’oscillateur interne réglé à sa fréquence mini.
    Tu réduiras aussi la consommation en mettant en slip, (pardon en sleep) ton infatigable travailleur entre deux comptages uccessifs (réalisés bien sûr en mode CTC!).

    Pour déterminer une durée, tu n'as plus qu'à compter les secondes.

    Bonne bidouille.
    Dernière modification par abracadabra75 ; 29/01/2020 à 18h25.
    Il n'y a que dans le dictionnaire où 'réussite' vient avant 'travail'.

  21. #20
    invite21365b4f

    Re : Probleme rtc arduino - interruptions externes

    Bonsoir,
    Merci pour votre réponse rapide et précise. Je jette un œil sur le lien immédiatement.
    Bonne soirée
    Valentin

  22. #21
    abracadabra75

    Re : Probleme rtc arduino - interruptions externes

    Un petit complément.
    Tu n'as même pas besoin de passer par le mode CTC comme je l'ai suggéré. Ce mode est destiné à créer des intervalles de temps précis.
    Or d'après ce que tu dis, tu veux mesurer un temps de 15 minutes environ.
    Tu peux obtenir un temps de base suffisamment précis dans ton cas, en employant le comptage avec débordement.
    Le timer1 compte de 0 à 65535. Arrivé là, cela déclenche une interruption que tu comptes.
    Sachant que cette durée de base = t, que la durée désirée est T, le nombre d'interruptions nécessaires est n= T/t
    Je te laisse le soin du calcul réel.
    A+
    Il n'y a que dans le dictionnaire où 'réussite' vient avant 'travail'.

Discussions similaires

  1. Interruptions avec bouton (Arduino)
    Par invited35955f1 dans le forum Électronique
    Réponses: 61
    Dernier message: 02/05/2017, 15h42
  2. Réponses: 35
    Dernier message: 08/05/2016, 12h43
  3. filtrer les pics par interruptions externes
    Par minioim dans le forum Électronique
    Réponses: 14
    Dernier message: 16/06/2014, 23h49
  4. Probleme interruptions C18 (encore)
    Par invite4671370c dans le forum Électronique
    Réponses: 8
    Dernier message: 27/09/2009, 12h05
  5. Interruptions externes
    Par invite5e5ea0fa dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 23/02/2007, 10h05