microclub-ch / P19-projets-microclub-2019

Projet Robotique/Domotique du Microclub de Lausanne, partage d'idées et de questions
0 stars 0 forks source link

Module RTC proposé par YvesMasur #5

Open rolfz opened 5 years ago

rolfz commented 5 years ago

alors mettons nous un chip RTC sur le pcb ou un module RTC, donc option que l'on peut y mettre selon les besoins ?? A voir.

https://www.banggood.com/3pcs-Q206-PCF8563-PCF8563T-8563-Module-Clock-Module-RTC-Module-DIY-Clock-Kit-p-1373506.html?rmmds=search&cur_warehouse=CN

Dans le cas de ce module, pas besoins de pile, elle est sur le module

jmparatte commented 5 years ago

Perso, je recommanderais le DS3231, j'ai une librairie toute prête. Et une autre librairie pour les TimeZone (pour autant qu'elles restent en vigueur dans les années prochaines...)

franic commented 5 years ago

Pourquoi ne pas utiliser la RTC interne ?

jmparatte commented 5 years ago

Est-ce que la RTC interne fonctionne sur pile bouton avec le processeur sans alimentation?

rolfz commented 5 years ago

D'après le livre de Kolban, le RTC interne de l'ESP32 ne garde pas et ou perd les données pendant un reset ou power-down, il explique aussi (p377) qu'un RTC externe peut-être utilisé pour restaurer l'heure exacte. Par contre plus loin dans le document (p561) il décrit que le RTC reste opérationnel en mode "light-sleep-mode" ou "deep-sleep-mode", mais les conditions de sleep ne sont pas décrits. Dans Expressif, on décrit le RTC comme timer pour réveiller le module après un certain temps. RIen n'indique donc que le RTC de l'ESP32 peut-être utilisé pour garder l'heure exacte. Pas important pour un robot, mais ça l'est bien pour une horloge ou autre appareil qui doit indiquer l'heure exacte (J'ai fais une horloge oled qui prend l'heure exacte par NTP sur mon routeur). Manque que le Time-Zone avec cette solution. A voir si Yves trouve quelque chose !!

NicHub commented 5 years ago

Si l’ESP32 a une RTC, il suffit de lui ajouter une pile bouton pour qu’il soit toujours alimenté. À vérifier quand même si l’exactitude reste dans des tolérances acceptables.

Pour la gestion des fuseaux horaires on peut à choix :

Dans les deux cas, il faut prévoir un moyen pour obtenir la position géographique (GPS ou entrée manuelle de l’utilisateur).

rolfz commented 5 years ago

Et il faut probablement 2 pins pour un quarz, alors quels pins prenons nous ? et quelle fonction enlevons nous ? Je ne vois pas la solution, as tu une page web ou ils décrivent comment cela a été réalisé ? un module RTC permet d'ajouter un RTC sans avoir de branchements sur l'ESP32, tout se fait en I2C !

NicHub commented 5 years ago

Il y a plus d’informations dans la fiche technique de l’ESP32 :

https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf

Au chapitre 3.3.2, il est spécifié que la RTC a 5 horloges possibles et les conditions de leur utilisation :

• external low-speed (32 kHz) crystal clock • external crystal clock divided by 4 • internal RC oscillator (typically about 150 kHz, and adjustable) • internal 8 MHz oscillator • internal 31.25 kHz clock (derived from the internal 8 MHz oscillator divided by 256)

When the chip is in the normal power mode and needs faster CPU accessing, the application can choose the external high-speed crystal clock divided by 4 or the internal 8 MHz oscillator. When the chip operates in the low-power mode, the application chooses the external low-speed (32 kHz) crystal clock, the internal RC clock or the internal 31.25 kHz clock.

Pour moi, ce n’est pas clair si l’horloge externe de 32 kHz est installée sur les boards ou si on doit la prévoir en plus.

Mais de toute façon, je viens de voir que l’horloge interne peut facilement dériver de 5%. Donc je suppose qu’une RTC externe sera quand même mieux adaptée.

https://www.reddit.com/r/esp32/comments/9v22bj/esp32_rtc_external_crystal_vs_internal_rc_clock/

http://bbs.esp32.com/viewtopic.php?t=5391

jmparatte commented 5 years ago

Bonjour la troupe, J'ai testé les routines ESP32 pour la gestion des fuseaux horaires et l'affichage "locale", c'est OK. En résumé, l'horloge RTC interne est suffisant, elle requière une synchro NTP pour opérer. J'ai utilisé l'exemple Arduino SimpleTime.ino et remplacer la ligne 35: configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); par: configTzTime("CET-01:00:00CST-02:00:00,M2.1.6/15:25:00,M2.1.6/16:26:00", ntpServer); Pendant 1 minute, j'ai fait apparaître l'heure d'été en plein hiver...

rolfz commented 5 years ago

Hello Jean-Marc, Bonnes nouvelles, merci pour l'étude. Peux-tu vérifier si l'on peut mettre l'ESP32 en mode sleep et voir si l'on peut mettre une batterie 3.3v en // sur l'alim. Une Shottky pourrait isoler la batterie de l'alim. Ceci en mode non-wifi et non-BT ! les 2 modes qui consomment beaucoup de courant.

ymasur commented 5 years ago

Au prix "chinois", une RTC coûte 1.- Elle peut se connecter sur le I2C; donc ne prend pas de ressource E/S du CPU. On évite la problématique d'une horloge à 5%, et des bricolages à faire pour la "redresser". Toutefois, un bon algorithme basé sur le NTP, pour reprendre l'heure Internet et resynchroniser la RTC serait bon à prendre.

rolfz commented 5 years ago

Hello Un chip DS3231 a à été ajouté directement sur le PCB (SMD à souder), ce qui devrait satisfaire les personnes désirant ajouter un RTC dédié. Une 2ème solution est de connecter un module I2C sur un des connecteurs I2C, par exemple Grove. Ceux qui n'en veulent pas pourront ignorer cette option. Ceci devrait convenir à tous. Un schéma du PCB actuel sera distribué aux actifs de ce thread.

NicHub commented 5 years ago

Voici une idée intéressante liée à la question de la RTC :

The mmClock Programmer un réveil-matin avec Google Calendar https://github.com/MickMake/Project-mmClock