DS3231 horloge i2c (0x57=87, 0x5F=95, 0x68=104)

Module horloge RTC

DS3231-AT24C32 – Real Time Clock – I2C – addresse: 0x57=87, 0x5F=95, 0x68=104

page7image3719728page7image1797792

Le module DS3231 est une horloge temps réel (RTC) qui contient un quartz compensée pour les dérives suivant la température.

La communication se fait via le bus I2C. Les dates et heures sont mémorisées grâce à une pile CR2032.

Comment l’utiliser ?

Afin de simplifier l’interaction avec le module horloge nous allons utiliser la librairie DS3231_port.py  ou (GitHub)

a) Chargement de la librairie :

  1. Connecter vous sur votre ESP8266 à travers le réseau WiFi.
  2. Lancer WebREPL et connecter l’esp
  3. Charger le fichier DS3231_port

b) à la première utilisation on doit de initialiser la date et heure dans le module DS3231 à partir de la date/heure de l’Esp8266 et sauvegarder le tout par la commande ds3231.save_time()

save_time No args. Sets the DS3231 time from the platform’s local time

# mise à l'heure du module DS3231
>> from ds3231_port import DS3231
>> from machine import I2C, Pin, RTC

# ESP8266: Pin5->GPI05->d1 Pin4->GPIO04->d2
>> i2c=I2C(scl=Pin(5), sda=Pin(4))  

>> ds3231=DS3231(i2c)
>> rtc = RTC()

>> rtc.datetime((1918,11,11,1,5,15,14,18))

# format rtc.datime: 
#    an, mois, jour, 
#    jour de la semaine _1 lundi/7 dimanche_, 
#    heure, minute, seconde,
#     1/256 seconde
# --> lundi 11 novembre 1918 
#     à 5 heure 15 minute 14 seconde 
#     et 18/256 de seconde


# vérifions la date/heure
>> print(rtc.datetime())

# sauvegarde de la date/heure Esp8286 dans le module DS3231
>> ds3231_save_time()

c) pour récupérer la date et heure et je vous conseille de travailler avec les classes rtc que directement avec ds3231 (qui restera le dépositaire référent de la date/heure).

# utilisation de la date et heure du module DS3231
>> from ds3231_port import DS3231
>> from machine import I2C, Pin, RTC
>> import machine

# ESP8266: Pin5->GPI05->d1 Pin4->GPIO04->d2
>> i2c=I2C(scl=Pin(5), sda=Pin(4))  

>> ds3231=DS3231(i2c)
>> ds3231.get_time()        # on récupère la date et heure
# (2018, 12, 1, 20, 49, 49, 5, 0)
# (an, mois, jour, heure, minute, seconde, jourNumero, 0)

>> rtc=RTC()
>> rtc.datetime(ds3231.get_time())       # c'est sauvegardé dans rtc !


# pour travailler sur date/heure:
>>> (an, mois, jour, hh, mm, ss, jsem, zorbec) = ds3231.get_time() 
>>> print( hh ,':', mm, ':', ss)  # Seiko type 14 : 18 : 19 !
exemple simple en micropython pqp_horloge.py :
import machine
from ds3231_port import DS3231

i2c = machine.I2C(scl=machine.Pin(5), sda=machine.Pin(4))
ds = DS3231(i2c)

def test():
 print(ds.get_time())
utilisation:
Welcome to MicroPython!

Password:

WebREPL connected

>>> import pqp_horloge as h

>>> h.test()
(2018, 12, 11, 20, 55, 43, 1, 0)


retour schéma