Zum Inhalt springen

← I2C-Kommunikation | Inhaltsverzeichnis | Weiter: Erweiterte Nutzung →

Einplatinencomputer

Anschluss von DimmerLink an Raspberry Pi, Orange Pi, Banana Pi und andere SBCs.




Übersicht

Alle Einplatinencomputer arbeiten mit 3,3V-Logik — direkter Anschluss an DimmerLink ohne Pegelwandler.

SBC I2C UART OS
Raspberry Pi 3/4/5 Raspberry Pi OS
Orange Pi Armbian
Banana Pi Armbian



Raspberry Pi


Verdrahtung

Raspberry Pi DimmerLink Funktion
Pin 1 (3.3V) VCC Stromversorgung
Pin 6 (GND) GND Masse
Pin 3 (GPIO2) SDA I2C Data
Pin 5 (GPIO3) SCL I2C Clock

Für UART:

Raspberry Pi DimmerLink Funktion
Pin 1 (3.3V) VCC Stromversorgung
Pin 6 (GND) GND Masse
Pin 8 (GPIO14) RX UART TX → RX
Pin 10 (GPIO15) TX UART RX ← TX


Schnittstellen aktivieren

bash
sudo raspi-config
  • I2C: Interface Options → I2C → Enable
  • UART: Interface Options → Serial Port → Enable

Neustart nach Änderungen:

bash
sudo reboot


I2C prüfen

bash
# Install utilities (if not installed)
sudo apt install i2c-tools

# Scan I2C bus for devices
i2cdetect -y 1

Erwartete Ausgabe — Adresse 50 in der Tabelle:

python
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --


Steuerung über CLI

I2C:

bash
# Set brightness to 50%
i2cset -y 1 0x50 0x10 0x32

# 💡 Tip: 0x32 in HEX = 50 in decimal. You can use decimal numbers: i2cset -y 1 0x50 0x10 50

# Read current brightness
i2cget -y 1 0x50 0x10

# Read mains frequency
i2cget -y 1 0x50 0x20

UART:

bash
# Configure port
stty -F /dev/serial0 115200 cs8 -cstopb -parenb

# Set brightness to 50% (requires xxd or printf)
printf '\x02\x53\x00\x32' > /dev/serial0

# Or using a Python one-liner
python3 -c "import serial; s=serial.Serial('/dev/serial0', 115200); s.write(bytes([0x02,0x53,0x00,50])); print(s.read(1).hex())"


Python + I2C (smbus2)

bash
# Install library
pip install smbus2
python
from smbus2 import SMBus
import time

DIMMER_ADDR = 0x50
REG_LEVEL = 0x10
REG_CURVE = 0x11
REG_FREQ = 0x20

bus = SMBus(1)

# Read mains frequency
freq = bus.read_byte_data(DIMMER_ADDR, REG_FREQ)
print(f"Mains frequency: {freq} Hz")

# Set brightness to 50%
bus.write_byte_data(DIMMER_ADDR, REG_LEVEL, 50)
print("Brightness set: 50%")

# Read current brightness
level = bus.read_byte_data(DIMMER_ADDR, REG_LEVEL)
print(f"Current brightness: {level}%")

bus.close()


Python + UART (pyserial)

bash
# Install library
pip install pyserial
python
import serial
import time

ser = serial.Serial('/dev/serial0', 115200, timeout=0.1)

# Set brightness to 50%
ser.write(bytes([0x02, 0x53, 0x00, 50]))
resp = ser.read(1)
if resp and resp[0] == 0x00:
    print("Brightness set: 50%")

# Get mains frequency
ser.write(bytes([0x02, 0x52]))
resp = ser.read(2)
if len(resp) == 2 and resp[0] == 0x00:
    print(f"Mains frequency: {resp[1]} Hz")

ser.close()


Autostart-Skript (systemd)

Datei /etc/systemd/system/dimmer.service erstellen:

ini
[Unit]
Description=Dimmer Controller Service
After=multi-user.target

[Service]
Type=simple
ExecStart=/usr/bin/python3 /home/pi/dimmer_control.py
Restart=on-failure
User=pi

[Install]
WantedBy=multi-user.target

⚠️ Wichtig: Ersetzen Sie /home/pi/dimmer_control.py durch den Pfad zu Ihrem Skript.

Aktivierung:

bash
sudo systemctl daemon-reload
sudo systemctl enable dimmer.service
sudo systemctl start dimmer.service



Orange Pi


Besonderheiten

  • Die meisten Modelle sind GPIO-kompatibel mit Raspberry Pi
  • OS: Armbian (empfohlen)
  • I2C/UART-Hilfsprogramme sind ähnlich wie bei Raspberry Pi


I2C aktivieren

In Armbian:

bash
sudo armbian-config
# System → Hardware → enable i2c

Oder über Overlays in /boot/armbianEnv.txt:

python
overlays=i2c0

📘 Orange Pi läuft in der Regel mit Armbian. Armbian-Installationsanleitung


Verdrahtung (Orange Pi Zero)

Orange Pi Zero DimmerLink
Pin 1 (3.3V) VCC
Pin 6 (GND) GND
Pin 3 (PA12/SDA) SDA
Pin 5 (PA11/SCL) SCL


Überprüfung

bash
# Scan for devices
i2cdetect -y 0   # May be i2c-0 instead of i2c-1


Python-Code

Der Code ist ähnlich wie bei Raspberry Pi, aber die Busnummer kann abweichen:

python
from smbus2 import SMBus

# Orange Pi may use bus 0
bus = SMBus(0)  # or SMBus(1) — depends on model



Banana Pi


Besonderheiten

  • GPIO-Pinbelegung kompatibel mit Raspberry Pi
  • OS: Armbian, BPI-WiringPi


Verdrahtung (Banana Pi M2)

Banana Pi M2 DimmerLink
Pin 1 (3.3V) VCC
Pin 6 (GND) GND
Pin 3 (GPIO2) SDA
Pin 5 (GPIO3) SCL


I2C aktivieren

bash
sudo armbian-config
# System → Hardware → enable i2c



Allgemeine Empfehlungen


Pull-up-Widerstände für I2C

Board Integrierter Pull-up Empfehlung
Raspberry Pi 1,8kΩ In der Regel ausreichend
Orange Pi Modellabhängig Prüfen, ggf. 4,7kΩ hinzufügen
Banana Pi Modellabhängig Prüfen, ggf. 4,7kΩ hinzufügen
Pico Keiner 4,7kΩ hinzufügen


Kabellänge

  • I2C: bis zu 30 cm problemlos
  • UART: bis zu 1–2 Meter


Stromversorgung

  • DimmerLink verbraucht minimalen Strom
  • Stromversorgung über den 3,3V-Pin des SBC ist in der Regel ausreichend
  • Bei instabilem Betrieb eine separate Stromversorgung verwenden


Fehlerbehebung

  1. I2C funktioniert nicht:
  2. i2cdetect prüfen — ist Adresse 0x50 sichtbar
  3. Pull-up-Widerstände prüfen
  4. Sicherstellen, dass I2C im System aktiviert ist

  5. UART funktioniert nicht:

  6. TX↔RX prüfen (gekreuzte Verdrahtung)
  7. Sicherstellen, dass UART aktiviert ist
  8. Zugriffsrechte für /dev/serial0 prüfen

  9. Permission denied error:
    bash sudo usermod -a -G i2c,dialout $USER # Log out and back in after this




What's Next?

← I2C-Kommunikation | Inhaltsverzeichnis | Weiter: Erweiterte Nutzung →