Kurzfassung: DimmerLink wird ab Werk im UART-Modus ausgeliefert.
i2cdetectzeigt die Adresse 0x50 nicht an, bis Sie den SWITCH_I2C-Befehl (02 5B) über UART bei 115200 Baud senden. Fügen Sie außerdem 4,7 kΩ Pull-up-Widerstände an SDA und SCL hinzu — viele Boards haben keine ausreichenden eingebauten Pull-ups. Setzen Sie VCC auf die gleiche Spannung wie den Logikpegel Ihres MCU (5V, 3,3V oder 1,8V).
Symptom
Sie verbinden DimmerLink mit Ihrem I2C-Bus, führen i2cdetect -y 1
aus (oder scannen von Arduino), und entweder:
- die Adresstabelle ist komplett leer — Adresse 0x50 wird nicht angezeigt;
- der Scan dauert viel länger als üblich oder scheint zu hängen.
Ursache 1 — Falscher Modus (UART aktiv)
Jedes DimmerLink-Modul verlässt das Werk im UART-Modus. Im UART-Modus:
- überwacht das Gerät den I2C-Bus nicht;
- verhalten sich die TX/SDA- und RX/SCL-Pins als UART-Ausgänge;
- kann das Gerät nicht auf I2C-Adressen antworten — es wird niemals bei einem Scan erscheinen.
Die I2C-Schnittstelle ist erst aktiv, nachdem der Modus auf I2C umgeschaltet wurde. Der Modus wird im EEPROM gespeichert und bleibt über Neustarts hinweg erhalten, sodass Sie nur einmal umschalten müssen.
Ursache 2 — UART-Modus zieht I2C-Bus-Leitungen auf Low
Wenn DimmerLink im UART-Modus ist und mit Ihrem I2C-Bus verbunden:
- Der UART-TX-Ausgang wird auf logisch High gehalten (Ruhezustand) — das ist kein Problem.
- Einige UART-Implementierungen ziehen den Ausgang zwischen Übertragungen oder beim Start auf Low.
Wenn die TX-Leitung (die mit SDA verdrahtet ist) auf Low geht, zieht sie die
I2C-SDA-Leitung auf Low. Der I2C-Scanner sendet eine START-Bedingung auf SDA und SCL,
aber SDA bleibt Low — der Bus erscheint dauerhaft belegt. i2cdetect
wartet mehrere Sekunden pro Adresse vor dem Timeout, sodass der
Scan hängend erscheint.
Dies ist kein Hardware-Fehler — sobald DimmerLink in den I2C-Modus umgeschaltet ist, werden SDA/SCL zu echten bidirektionalen I2C-Leitungen und das Problem verschwindet.
Ursache 3 — Fehlende Pull-up-Widerstände
I2C benötigt externe Pull-up-Widerstände an SDA und SCL. Ohne sie kann die Spannung auf diesen Leitungen nicht auf logisch High ansteigen und der Bus funktioniert nicht.
| Platine | Eingebaute I2C-Pull-ups | Ausreichend? |
|---|---|---|
| Raspberry Pi 3/4/5 | 1,8 kΩ (auf dem Board) | Normalerweise ausreichend |
| Arduino Uno / Mega | ~50 kΩ (schwach) | Unzureichend — externe hinzufügen |
| ESP8266 / ESP32 | Schwach (~50 kΩ) | Unzureichend — externe hinzufügen |
| STM32 | Keine | Externe müssen hinzugefügt werden |
| Raspberry Pi Pico | Keine | Externe müssen hinzugefügt werden |
Erforderlicher Wert: 4,7 kΩ von SDA zu VCC und 4,7 kΩ von SCL zu VCC. Verwenden Sie das gleiche VCC wie für DimmerLink (siehe unten).
Ursache 4 — VCC-Spannungsfehlanpassung
DimmerLink unterstützt drei Versorgungsspannungen:
| VCC | Logikpegel | Typischer MCU |
|---|---|---|
| 5 V | 5V TTL | Arduino Uno, Mega |
| 3,3V | 3.3V CMOS | ESP32, ESP8266, Raspberry Pi |
| 1,8V | 1.8V CMOS | Niederspannungs-MCUs |
Verbinden Sie VCC mit der gleichen Spannung wie den Logikpegel Ihres MCU. Nicht mischen: Ein DimmerLink-VCC von 5V, verbunden mit einem 3,3V-MCU, führt zu 5V-Signalen auf SDA/SCL, was den MCU beschädigen oder Logikfehler verursachen kann.
Ein Pegelwandler ist nicht nötig — DimmerLink passt sich an die jeweilige VCC-Spannung an.
Lösung: Schritt-für-Schritt-Umschaltung in den I2C-Modus
Was Sie benötigen
- USB-UART-Adapter (CP2102, CH340, FT232 oder ähnlich)
- Jumperkabel
- Eine beliebige serielle Terminal-Anwendung
Schritt 1 — DimmerLink mit USB-UART-Adapter verbinden
| DimmerLink-Pin | UART-Adapter-Pin |
|---|---|
| VCC | 3.3V-Ausgang |
| GND | GND |
| TX/SDA | RX |
| RX/SCL | TX |
Verbinden Sie TX mit RX und RX mit TX (gekreuzt). Versorgung über den 3.3V-Ausgang des Adapters — verwenden Sie nicht 5V, wenn Ihr UART-Adapter nur 5V-Signale liefert.
Schritt 2 — Serielles Terminal öffnen
Einstellungen: 115200 Baud, 8 Datenbits, keine Parität, 1 Stoppbit (8N1).
Empfohlene Terminals:
- Windows: RealTerm (HEX-Sendemodus)
- Linux/macOS:
picocom -b 115200 /dev/ttyUSB0
Schritt 3 — SWITCH_I2C-Befehl senden
Senden Sie Roh-Bytes: 02 5B
- In RealTerm: Reiter Send → Feld Send Numbers:
02 5B→ Send - Unter Linux/macOS — verwenden Sie den folgenden Python-Einzeiler (erfordert
pyserial):
python3 -c "
import serial
s = serial.Serial('/dev/ttyUSB0', 115200, timeout=1)
s.write(bytes([0x02, 0x5B]))
resp = s.read(1)
print('Antwort:', resp.hex() if resp else 'keine')
s.close()
"Ersetzen Sie /dev/ttyUSB0 durch Ihren tatsächlichen Port (/dev/ttyACM0, /dev/ttyS0 usw.).
Installieren Sie pyserial bei Bedarf: pip install pyserial.
Erwartete Antwort: 00 (ein Byte, OK).
Falls keine Antwort:
- Prüfen Sie, ob TX/RX gekreuzt sind (Adapter TX → DimmerLink RX).
- Bestätigen Sie, dass die Baudrate genau 115200 beträgt.
- Bestätigen Sie, dass VCC angeschlossen ist.
Schritt 4 — Modusumschaltung überprüfen
Nach Erhalt von 00 befindet sich DimmerLink jetzt im I2C-Modus. Trennen Sie
den UART-Adapter, verdrahten Sie für I2C und scannen Sie:
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("Gefunden bei 0x");
Serial.println(addr, HEX);
}
}
}Erwartetes Ergebnis: Adresse 0x50 gefunden.
Verdrahtung für I2C-Betrieb
Nach dem Umschalten in den I2C-Modus wie folgt verbinden:
— (kein ISR)
| RPi GPIO-Header | Jeder ESP32 |
|---|---|
| Pin 1 (3.3V) | VCC |
| Pin 6 (GND) | GND |
| Pin 3 (GPIO2 / SDA) | TX/SDA |
| Pin 5 (GPIO3 / SCL) | RX/SCL |
RPi hat 1,8 kΩ Pull-ups an GPIO2/3 — normalerweise ausreichend für Kabel unter 30 cm. Fügen Sie externe 4,7 kΩ Pull-ups hinzu, wenn die Kommunikation unzuverlässig ist.
Arduino (Uno/Mega)
| Arduino | Jeder ESP32 |
|---|---|
| A4 (SDA) | TX/SDA |
| A5 (SCL) | RX/SCL |
| 5 V | VCC |
| GND | GND |
Fügen Sie 4,7 kΩ Pull-ups von A4 zu 5V und von A5 zu 5V hinzu.
❌ nein
| ❌ nein | Jeder ESP32 |
|---|---|
| GPIO21 (SDA) | TX/SDA |
| GPIO22 (SCL) | RX/SCL |
| 3,3V | VCC |
| GND | GND |
Fügen Sie 4,7 kΩ Pull-ups von GPIO21 zu 3.3V und von GPIO22 zu 3.3V hinzu.
I2C-Pull-up-Verdrahtungsdiagramm
VCC (gleich wie DimmerLink VCC)
│
├── 4.7kΩ ── SDA
│
└── 4.7kΩ ── SCLKommunikation überprüfen
Raspberry Pi (CLI)
# Netzfrequenz lesen (sollte 50 oder 60 zurückgeben)
i2cget -y 1 0x50 0x20
# Helligkeit auf 50% setzen
i2cset -y 1 0x50 0x10 50
# Helligkeit zurücklesen
i2cget -y 1 0x50 0x10Arduino
#include <Wire.h>
void setup() {
Serial.begin(115200);
Wire.begin();
// Helligkeit auf 50% setzen
Wire.beginTransmission(0x50);
Wire.write(0x10); // DIM0_LEVEL-Register
Wire.write(50); // 50%
if (Wire.endTransmission() == 0) {
Serial.println("DimmerLink: Helligkeit auf 50% gesetzt");
} else {
Serial.println("Fehler: DimmerLink antwortet nicht");
}
}Python (Raspberry Pi)
from smbus2 import SMBus
try:
bus = SMBus(1)
freq = bus.read_byte_data(0x50, 0x20)
print(f"DimmerLink OK — Netzfrequenz: {freq} Hz")
bus.close()
except OSError as e:
print(f"Nicht gefunden: {e}")
print("Prüfen Sie: I2C-Modus umgeschaltet, Pull-ups installiert, VCC korrekt")Zurück zum UART-Modus wechseln
Wenn Sie zum UART-Modus zurückkehren müssen, schreiben Sie den Befehl 0x03
(SWITCH_UART) in das I2C-COMMAND-Register (0x01):
Arduino:
Wire.beginTransmission(0x50);
Wire.write(0x01); // COMMAND-Register
Wire.write(0x03); // SWITCH_UART
Wire.endTransmission();
// I2C funktioniert nicht mehr — über UART neu verbindenRaspberry Pi:
i2cset -y 1 0x50 0x01 0x03
# Jetzt Steuerung nur über UARTDiagnose-Flussdiagramm
i2cdetect zeigt nichts bei 0x50?
│
├── Ist DimmerLink VCC angeschlossen und korrekt? → Nein → VCC anschließen
│
├── Wurde SWITCH_I2C gesendet (02 5B über UART)? → Nein → Senden
│
├── Sind 4,7 kΩ Pull-ups an SDA und SCL? → Nein → Hinzufügen
│
├── Ist SDA mit SDA verdrahtet, SCL mit SCL? → Nein → Verdrahtung korrigieren
│
└── Hängt i2cdetect (langsamer Scan)?
→ UART-Modus aktiv → Zuerst SWITCH_I2C sendenSchnell-Checkliste
Verwandte Artikel
- 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
Noch Fragen?
Ask on forum.rbdimmer.com or open a GitHub Issue.