RTC Tiny ne fonctionne pas

Bonjour je suis nouveau dans le monde d’Arduino.
Mon problème : J’ai un module Tiny RTC DS1307 sur UNO
J’ai essayé bon nombre de librairies RTC mais rien y fait.

j’ai toujours :
RTC ne fonctionne pas
165,165,165 165,165,85 qui s’affiche dans le moniteur série.

seule la mise à l’heure et date fonctionne quand j’utilise l’exemple softrtc dont voici le code

// Date and time functions using just software, based on millis() & timer

#include <Arduino.h>
#include <Wire.h>         // this #include still required because the RTClib depends on it
#include "RTClib.h"

#if defined(ARDUINO_ARCH_SAMD)
// for Zero, output on USB Serial console, remove line below if using programming port to program the Zero!
   #define Serial SerialUSB
#endif

RTC_Millis rtc;

void setup () {
    Serial.begin(57600);
    // following line sets the RTC to the date & time this sketch was compiled
    rtc.begin(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}

void loop () {
    DateTime now = rtc.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" seconds since 1970: ");
    Serial.println(now.unixtime());
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now.unixtime() + 7 * 86400L + 30);
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
}

j’ai mis des résistances pull-up mais même résultat.

quand j’utilise des programme test avec RTCsetup cela ne fonctionne pas sauf avec RTC_Millis

pouvez-vous m’aider?

Utilise, si ce n'est pas déjà fait, un scanner I2C (on en trouve plusieurs sur le net).

Normalement tu devrais détecter :
Si le module horloge ne comporte qu'un seul circuit intégré DS1307 (c'est rare) un module à l'adresse 0x68 et si module comporte aussi comme très souvent un circuit intégré EEPROM une autre adresse que j'ai oubliée mais l'important c'est :
1 seul CI --> une adresse
2 CI ---> deux adresses.
Et surtout fait la manip avec rien d'autre de raccordé sur le microcontrôleur..

Si jamais le module refuse de répondre et que tu en achète un autre prend un D3231 : même prix mais bien, bien plus précis.

Il y a bien une pile de sauvegarde branchée sur la carte?

merci pour votre intérêt.

oui c’est un module à 2 IC ( DS1307 + 24CN32 )
dois-je modifier le programme pour les déclarer?

oui il y a une pile de 3V CR3203

j'ai lancer un logiciel " I2C_scanner "
il me dit :

" scanning...
No I2C devices found "

pilou8830:
j'ai lancer un logiciel " I2C_scanner "
il me dit :

" scanning...
No I2C devices found "

j'ai une carte UNO et mis la pin SDA sur A4 et SCL sur A5 + le 5V et la masse
Vous en pensez quoi j'ai oublié quelque chose?

Bonsoir,

une piste:

sujet abordé ici #5

ta pile c'est vraiment CR3203 ? elle est inconnue chez Google

La première horloge sauvegardée que j'ai acheté avait une pile HS à la livraison.
Rien ne fonctionnait.

En retirant la pile le module s'est mis à fonctionner, les info horaires n'étaient pas sauvegardée mais cela fonctionnait.

Avec une pile neuve tout fonctionnait comme prévu.

oups!

c'est une CR2032 batterie au lithium et non CR3203 que j'ai écrit cela de mémoire

je vais essayer de la retirer et voir ce qui se passe et voir peut-être avec une autre pile neuve si j'en croise une.

lorsque j’utilise ce programme de mise à l’heure cela a l’air de fonctionner

#include "RTClib.h"

RTC_Millis RTC;

void setup()
{
  Serial.begin( 115200 );
  // Règle le DS1307 à la date et l’heure de la compilation du programme
  RTC.begin( DateTime( __DATE__, __TIME__ ) );
}

void loop()
{
  DateTime now = RTC.now();
  char buf[ 50 ];
  sprintf( buf, "\n\n%1d-%1d-%1d\n%02d:%02d:%02d", now.day(), now.month(), now.year(), now.hour(), now.minute(), now.second() );
  Serial.print( buf );
  _delay_ms( 1000 );
}

le moniteur série me renvoie la date d’aujourd’hui ainsi que l’heure exacte, sous le format :

28-8-2017
23:51:01 et incrémente les secondes

mais dès que je met // devant RTC.begin( DateTime( DATE, TIME ) );

le moniteur série me renvoie ceci au format différent :

6-2-2106
06:28:16 et incrémente les secondes

et puis c’est quoi RTC_Millis RTC;

RTC_Millis n'exploite pas le DS1307 mais la fonction millis() de l'arduino..
Pour utiliser le DS1307 il faut instancier un objet RTC_DS1307.
Regarde un peu les exemples qui sont inclus dans la librairie. Tu peux aussi lire les commentaires de RTClib.h

merci pour l'info sur Millis.
j'ai testé tous les exemples RTC Adafruit et seul softrct qui utilise Millis, fonctionne.
je crois que je suis bon pour en acheté un autre non?

Ce module NE peut PAS fonctionner avec une PILE CR2032. (tension fournie trop faible)

Il est conçu pour un accu rechargeable LIR2032 ( 4V) ( "battery" en anglais)

pour les détails voir le lien dans la réponse #6

ok j'ai commandé une LIR2032.
à suivre donc
merci et bonne fin de soirée

Voila j’ai l’accu rechargeable, je l’ai laissé se rechargée 2h sur le module qui est raccordé à l’Arduino uno.
Raccordé le SDA sur A4, le SCL sur A5, GND sur GND, VCC sur le +5V
J’ai retiré et mesuré l’accu à 4,3V .
Je l’ai remise sur le module Tiny RTC I2C, puis, j’ai utilisé le programme scanner_I2C qui me donne :
Scanning …
I2C device found at adress 0x50
I2C device found at adress 0x68
Donc c’est qu’il détecte bien le module … en principe

Mais en utilisant RTCLib pas de mise à l’heure possible
Il affiche, via le moniteur série, 10 :10 :58 2 septembre 2021(voir photo)
Et voici le programme utilisé :

#include <RTClib.h>
#include <Wire.h>

RTC_DS1307 RTC;

void setup () {
    Serial.begin(9600);
    Wire.begin();
    RTC.begin();
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}
void loop () {
    DateTime now = RTC.now(); 
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(' ');
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println(); 
    delay(1000);
}

je ne sais plus quoi faire.
Avez-vous des suggestions

me suit trompé
lors du test le moniteur série affiche
2021/2/4 20:20:10 puis
2021/2/4 20:20:18 puis
2021/2/4 20:20:26 puis
2021/2/4 20:20:34 puis ....

donc même les secondes ça ne tourne pas rond

2 remarques:

  1. dans ton programme, la RTC n'est mise à l'heure que si elle ne tourne pas. Donc si elle tourne mais que l'heure est incorrecte elle n'est pas reprogrammée. Ce qu pourrait expliquer le 2021.

  2. dans la copie d'écran, il se passe exactement 8s entre la sortie de chaque ligne. Donc:
    a) sont le processeur va trop lentement (problème d'horloge du processeur). Dû, soit à un quartz défectueux, soit à une mauvaise programmation des fusibles du processeur.
    b) la RTC va trop vite, quartz défectueux sur la carte portant la RTC

Pour lever le doute tu peux déjà vérifier si le programme blink tourne à la bonne vitesse sur ta carte Arduino.

Edit: à la réflexion, si l'arduino était mal configuré la vitesse de la console ne serait pas bonne et tu l'aurais déjà vu.

J'abandonne le projet avec le RTC TINY DS 1307 au profit du RTC DS3231

Merci quand même pour votre aide