En bref : DimmerLink est livré d'usine en mode UART.
i2cdetectn'affichera pas l'adresse 0x50 tant que vous n'aurez pas envoyé la commande SWITCH_I2C (02 5B) via UART à 115200 bauds. Ajoutez également des résistances de tirage de 4,7 kΩ sur SDA et SCL — de nombreuses cartes n'ont pas de pull-ups intégrés suffisants. Réglez VCC à la même tension que le niveau logique de votre MCU (5V, 3,3V ou 1,8V).
Symptôme
Vous connectez DimmerLink à votre bus I2C, lancez i2cdetect -y 1
(ou un scan depuis Arduino), et l'un des deux cas se produit :
- la grille d'adresses est complètement vide — l'adresse 0x50 n'est pas affichée ;
- le scan prend beaucoup plus de temps que d'habitude ou semble se bloquer.
Cause 1 — Mauvais mode (UART actif)
Chaque module DimmerLink quitte l'usine en mode UART. En mode UART :
- l'appareil ne surveille pas le bus I2C ;
- les broches TX/SDA et RX/SCL fonctionnent comme des sorties UART ;
- l'appareil ne peut pas répondre aux adresses I2C — il n'apparaîtra jamais dans un scan.
L'interface I2C n'est active qu'après le basculement du mode en I2C. Le mode est stocké en EEPROM et persiste après les mises hors tension, vous n'avez donc besoin de basculer qu'une seule fois.
Cause 2 — Le mode UART tire les lignes du bus I2C vers le bas
Lorsque DimmerLink est en mode UART et connecté à votre bus I2C :
- La sortie UART TX est maintenue à l'état logique haut (état de repos) — ce n'est pas un problème.
- Certaines implémentations UART tirent la sortie vers le bas entre les transmissions ou pendant le démarrage.
Si la ligne TX (qui est câblée à SDA) passe à l'état bas, elle tire la ligne
I2C SDA vers le bas. Le scanner I2C envoie une condition START sur SDA et SCL,
mais SDA reste bas — le bus semble occupé en permanence. i2cdetect
attend plusieurs secondes par adresse avant expiration, ce qui donne
l'impression que le scan est bloqué.
Ce n'est pas une panne matérielle — une fois DimmerLink basculé en mode I2C, SDA/SCL deviennent de véritables lignes I2C bidirectionnelles et le problème disparaît.
Cause 3 — Résistances de tirage manquantes
L'I2C nécessite des résistances de tirage externes sur SDA et SCL. Sans elles, la tension sur ces lignes ne peut pas monter à l'état logique haut et le bus ne fonctionne pas.
| Carte | Pull-ups I2C intégrés | Suffisance |
|---|---|---|
| Raspberry Pi 3/4/5 | 1,8 kΩ (sur la carte) | Généralement suffisant |
| Arduino Uno / Mega | ~50 kΩ (faible) | Insuffisant — ajouter des externes |
| ESP8266 / ESP32 | Faible (~50 kΩ) | Insuffisant — ajouter des externes |
| STM32 | Aucun | Externes obligatoires |
| Raspberry Pi Pico | Aucun | Externes obligatoires |
Valeur requise : 4,7 kΩ de SDA à VCC, et 4,7 kΩ de SCL à VCC. Utilisez le même VCC que pour DimmerLink (voir ci-dessous).
Cause 4 — Inadéquation de la tension VCC
DimmerLink prend en charge trois tensions d'alimentation :
| VCC | Niveaux logiques | MCU typique |
|---|---|---|
| 5 V | 5V TTL | Arduino Uno, Mega |
| 3,3V | 3.3V CMOS | ESP32, ESP8266, Raspberry Pi |
| 1,8V | 1.8V CMOS | MCU basse tension |
Connectez VCC à la même tension que le niveau logique de votre MCU. Ne mélangez pas : un VCC DimmerLink de 5V connecté à un MCU 3,3V produira des signaux 5V sur SDA/SCL, ce qui peut endommager le MCU ou provoquer des erreurs logiques.
Un convertisseur de niveaux n'est pas nécessaire — DimmerLink s'adapte à la tension VCC que vous fournissez.
Solution : basculement étape par étape en mode I2C
Ce dont vous avez besoin
- Adaptateur USB-UART (CP2102, CH340, FT232 ou similaire)
- Fils de connexion
- N'importe quelle application de terminal série
Étape 1 — Connecter DimmerLink à l'adaptateur USB-UART
| Broche DimmerLink | Broche adaptateur UART |
|---|---|
| VCC | Sortie 3.3V |
| GND | GND |
| TX/SDA | RX |
| RX/SCL | TX |
Câblez TX vers RX et RX vers TX (croisé). Alimentation depuis la sortie 3.3V de l'adaptateur — n'utilisez pas 5V si votre adaptateur UART ne fournit que des signaux 5V.
Étape 2 — Ouvrir un terminal série
Configuration : 115200 bauds, 8 bits de données, pas de parité, 1 bit de stop (8N1).
Terminaux recommandés :
- Windows : RealTerm (mode d'envoi HEX)
- Linux/macOS :
picocom -b 115200 /dev/ttyUSB0
Étape 3 — Envoyer la commande SWITCH_I2C
Envoyez les octets bruts : 02 5B
- Dans RealTerm : onglet Send → champ Send Numbers :
02 5B→ Send - Sous Linux/macOS — utilisez le script Python ci-dessous (nécessite
pyserial) :
python3 -c "
import serial
s = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
s.write(bytes([0x02, 0x5B]))
resp = s.read(1)
print('Réponse:', resp.hex() if resp else 'aucune')
s.close()
"Remplacez /dev/ttyUSB0 par votre port réel (/dev/ttyACM0, /dev/ttyS0, etc.).
Installez pyserial si nécessaire : pip install pyserial.
Réponse attendue : 00 (un octet, OK).
En cas d'absence de réponse :
- Vérifiez que TX/RX sont croisés (TX adaptateur → RX DimmerLink).
- Confirmez que le débit est exactement 115200 bauds.
- Confirmez que VCC est connecté.
Étape 4 — Vérifier le basculement de mode
Après avoir reçu 00, DimmerLink est maintenant en mode I2C. Déconnectez
l'adaptateur UART, câblez pour I2C et scannez :
Raspberry Pi :
i2cdetect -y 1Arduino :
#include <Wire.h>
void setup() {
Serial.begin(115200);
Wire.begin();
for (uint8_t addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
if (Wire.endTransmission() == 0) {
Serial.print("Trouvé à 0x");
Serial.println(addr, HEX);
}
}
}Résultat attendu : adresse 0x50 trouvée.
Câblage pour le fonctionnement I2C
Après le basculement en mode I2C, connectez comme suit :
DimmerLink
| En-tête GPIO RPi | ❌ non supporté |
|---|---|
| Pin 1 (3.3V) | VCC |
| Pin 6 (GND) | GND |
| Pin 3 (GPIO2 / SDA) | TX/SDA |
| Pin 5 (GPIO3 / SCL) | RX/SCL |
Le RPi dispose de pull-ups de 1,8 kΩ sur GPIO2/3 — généralement suffisants pour des câbles de moins de 30 cm. Ajoutez des pull-ups externes de 4,7 kΩ si la communication est instable.
Arduino (Uno/Mega)
| Arduino | ❌ non supporté |
|---|---|
| A4 (SDA) | TX/SDA |
| A5 (SCL) | RX/SCL |
| 5 V | VCC |
| GND | GND |
Ajoutez des pull-ups de 4,7 kΩ de A4 à 5V et de A5 à 5V.
RBDdimmer (ancienne)
| RBDdimmer (ancienne) | ❌ non supporté |
|---|---|
| GPIO21 (SDA) | TX/SDA |
| GPIO22 (SCL) | RX/SCL |
| 3,3V | VCC |
| GND | GND |
Ajoutez des pull-ups de 4,7 kΩ de GPIO21 à 3.3V et de GPIO22 à 3.3V.
Schéma de câblage des résistances de tirage I2C
VCC (identique au VCC de DimmerLink)
│
├── 4.7kΩ ── SDA
│
└── 4.7kΩ ── SCLVérifier la communication
Raspberry Pi (CLI)
# Lire la fréquence du secteur (devrait retourner 50 ou 60)
i2cget -y 1 0x50 0x20
# Régler la luminosité à 50 %
i2cset -y 1 0x50 0x10 50
# Relire la luminosité
i2cget -y 1 0x50 0x10Arduino
#include <Wire.h>
void setup() {
Serial.begin(115200);
Wire.begin();
// Régler la luminosité à 50 %
Wire.beginTransmission(0x50);
Wire.write(0x10); // registre DIM0_LEVEL
Wire.write(50); // 50 %
if (Wire.endTransmission() == 0) {
Serial.println("DimmerLink : luminosité réglée à 50 %");
} else {
Serial.println("Erreur : DimmerLink ne répond pas");
}
}Python (Raspberry Pi)
from smbus2 import SMBus
try:
bus = SMBus(1)
freq = bus.read_byte_data(0x50, 0x20)
print(f"DimmerLink OK — fréquence du secteur : {freq} Hz")
bus.close()
except OSError as e:
print(f"Non trouvé : {e}")
print("Vérifiez : mode I2C activé, pull-ups installés, VCC correct")Comment revenir au mode UART
Si vous devez revenir au mode UART, écrivez la commande 0x03
(SWITCH_UART) dans le registre COMMAND I2C (0x01) :
Arduino :
Wire.beginTransmission(0x50);
Wire.write(0x01); // registre COMMAND
Wire.write(0x03); // SWITCH_UART
Wire.endTransmission();
// L'I2C ne fonctionne plus — reconnectez via UARTRaspberry Pi :
i2cset -y 1 0x50 0x01 0x03
# Contrôle désormais uniquement via UARTOrganigramme de diagnostic
i2cdetect n'affiche rien à 0x50 ?
│
├── Le VCC de DimmerLink est-il connecté et correct ? → Non → Connecter VCC
│
├── SWITCH_I2C a-t-il été envoyé (02 5B via UART) ? → Non → Envoyer
│
├── Des pull-ups 4,7 kΩ sur SDA et SCL ? → Non → Ajouter
│
├── SDA câblé à SDA, SCL à SCL ? → Non → Corriger le câblage
│
└── i2cdetect bloque (scan lent) ?
→ Mode UART actif → Envoyer SWITCH_I2C d'abordChecklist rapide
Articles connexes
- Raspberry Pi setup → Raspberry Pi AC Dimmer via DimmerLink
- Tasmota setup → Tasmota AC Dimmer via DimmerLink
- ESPHome integration → ESPHome YAML for AC Dimmer and DimmerLink
- Home Assistant guide → AC Dimmer with Home Assistant and ESPHome
Encore des questions ?
Ask on forum.rbdimmer.com or open a GitHub Issue.