Aller au contenu

Modules et horloge RTC

Les modules se branchent sur le bus I²C de l’ESP32 (SDA = GPIO21, SCL = GPIO22) et se déclarent dans les modules d’extension du contrôleur. Horloge et extensions se branchent en parallèle sur ces deux fils, alimentés en 3,3 V.

Module Broches ajoutées Usage Adresses
PCF8574 8 relais, flotteurs 0x20–0x27 (0x38–0x3F pour un PCF8574A)
PCF8575 16 relais, flotteurs 0x20–0x27
PCA9685 16 sorties PWM canaux de lampe 0x40–0x4F conseillé

PCF8574 et PCF8575 partagent la plage 0x20–0x27 : chaque carte doit y avoir sa propre adresse.

Elles permettent de piloter une carte de 8 ou 16 relais avec seulement deux broches de l’ESP32.

Chaque module a une adresse I²C, réglée par ses cavaliers A0, A1 et A2 :

A2 A1 A0 PCF8574 PCF8574A
0 0 0 0x20 0x38
0 0 1 0x21 0x39
0 1 0 0x22 0x3A
0 1 1 0x23 0x3B
1 0 0 0x24 0x3C
1 0 1 0x25 0x3D
1 1 0 0x26 0x3E
1 1 1 0x27 0x3F

(0 = cavalier vers GND, 1 = vers VCC.) Deux modules d’un même contrôleur doivent avoir des adresses différentes.

Chaque module reçoit un numéro sur son contrôleur (« Module 1 », « Module 2 »…), modifiable à tout moment. C’est lui qui s’affiche dans le choix des broches : « Module 2 · broche 5 ». Numérotez vos modules comme ils sont rangés dans le boîtier.

Le bouton Scanner le bus I²C des modules d’extension liste les adresses vues par le contrôleur : modules déclarés, horloge, mémoire de l’horloge, et modules non déclarés (bouton Déclarer). Il signale aussi un module déclaré mais absent du bus (câblage ou cavaliers). Le firmware du contrôleur doit déjà contenir le bus I²C : déclarez l’horloge ou un module, flashez, puis scannez. Le contrôleur ne scanne qu’à son démarrage : après avoir branché ou débranché un module, utilisez Redémarrer et scanner, qui redémarre le contrôleur et relance le scan dès son retour.

L’I²C est prévu pour un câble court (1 à 2 m). Pour éloigner les modules :

  • baissez la fréquence du bus dans les modules d’extension (10 kHz au-delà de 5 m), puis flashez ;
  • en câble réseau, mettez SDA avec une masse dans une paire et SCL avec une autre masse dans une autre paire ;
  • ajoutez des résistances de tirage de 2,2 kΩ vers le 3,3 V sur SDA et SCL, côté ESP32 ;
  • au-delà, utilisez un prolongateur I²C (P82B715, PCA9615) ;
  • avec un prolongateur, alimentez le côté distant sur place (3,3 V) plutôt que par le câble : une tension trop basse au bout du câble fait échouer l’initialisation des modules (journal du contrôleur : Setting up PCA9685 failed!, sorties en roue libre).

Le PCA9685 ajoute 16 sorties PWM : dans le choix de la broche d’un canal de lampe, ses canaux s’ajoutent aux GPIO de l’ESP32. Il ne délivre qu’un signal : reliez-le à des drivers LED à entrée PWM (ou des MOSFET). Le module a une seule fréquence PWM, celle des lampes branchées dessus (jusqu’à 1525 Hz). Évitez les adresses 0x68 (horloge) et 0x70 (adresse commune des PCA9685, visible au scan).

Une horloge sur pile garde l’heure même sans réseau ni serveur. Elle est obligatoire pour les règles horaires et les programmes d’éclairage.

Modèles pris en charge :

  • DS3231 (recommandé, très précis) ;
  • DS1307 ;
  • PCF8563 ;
  • PCF85063.

Pas d’adresse à saisir : elle est fixée par la puce (0x68 pour DS3231 et DS1307, 0x51 pour PCF8563 et PCF85063). Beaucoup de modules DS3231 portent aussi une petite mémoire en 0x57 : elle apparaît au scan, il n’y a rien à déclarer.

Au démarrage, l’ESP lit l’heure dans l’horloge. Dès qu’il accède au réseau, il se synchronise sur Internet (NTP) et remet l’horloge à l’heure.