Added Documentation and CAD-Files

This commit is contained in:
Souko Hiabuto
2025-11-01 00:50:39 +01:00
parent 645280e6d1
commit af5094b7e5
21 changed files with 448 additions and 0 deletions

14
.gitignore vendored
View File

@@ -99,3 +99,17 @@ Thumbs.db
*~
*.swp
*.swo
# KiCad Backups & Locks
*-backups/
backups/
*.bak
*.lck
~*.kicad_*
# Cache (legacy)
fp-info-cache
fp-info-cache/
# Produktions-/Ausgabeordner (falls nur Generiertes)
production/

BIN
CAD/Spacer ALDIlight.stl Executable file

Binary file not shown.

BIN
CAD/Spacer AldiLight.f3d Executable file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

207
README.md
View File

@@ -0,0 +1,207 @@
# 💡 ALDIlight Umbau der CASALUX LED-Leuchte (ALDI SÜD) mit WLED
> entwickelt im **Chaos Computer Club Mannheim (C3MA)**
> Hardware & Firmware-Integration: Souko "Shakaru" Hiabuto
---
## 🧩 Projektüberblick
**ALDIlight** ist ein Hack-Projekt aus dem C3MA.
Ziel: Eine handelsübliche **CASALUX-LED-Leuchte** von **ALDI SÜD**
([Produkt-ID 665090001](https://www.aldi-sued.de/de/p.000000000665090001.html))
wird zu einer voll steuerbaren **RGBW-WLAN-Leuchte** aufgerüstet
mit **ESP32-C3**, **IR-Fernbedienung** und der Open-Source-Firmware [**WLED**](https://kno.wled.ge/).
---
## ⚙️ Hauptkomponenten
| Komponente | Beschreibung |
|-------------|--------------|
| 🧠 **ESP32-C3 SuperMini** | Wird **direkt auf die Platine gelötet**, läuft mit WLED |
| ⚡ **Custom-PCB (C3MA-Design)** | Ersatzplatine mit DC/DC-Wandler, IR-Receiver-Anschluss, 3-Pin-LED-Anschluss & I²S-Pads |
| 📡 **IR-Empfänger (3-Pin)** | Vom Original übernommen, um 180 ° gedreht eingelötet |
| 🔌 **3-Pin-Kabel** | Verbindung zur **integrierten LED-Tube / LED-Strip** im Lampengehäuse |
| 🧱 **3D-Distanzring (optional)** | Kompensiert zusätzliche Bauhöhe der neuen Platine |
| 🔩 **4 Gehäuseschrauben + 5 mm länger** | Notwendig, wenn der Distanzring eingesetzt wird |
---
## 🧰 Werkzeuge & Voraussetzungen
- Lötkolben mit feiner Spitze
- Kreuzschlitzschraubendreher
- Pinzette & Seitenschneider
- 3D-Drucker (für Distanzring, optional)
- USB-Kabel (für Flash-Vorgang)
- Chromium-basierter Browser (Chrome, Edge, Brave …)
- Grundkenntnisse in Elektronik und Firmware-Flashen
---
## 🧠 Entwicklung
Die Platine wurde im **C3MA (Chaos Computer Club Mannheim)** entwickelt.
Ziel war ein **drop-in Replacement** mit stabiler 5 V-Versorgung
und nativer Unterstützung für **WLED + IR-Remote**.
💡 Die Platine ist zusätzlich bereits für **zwei I²S-Mikrofone** vorbereitet.
Damit lässt sich die Leuchte künftig auch als **Sound-to-Light-System** nutzen
z. B. mit den WLED-Audio-Reaktiven Builds oder einer Custom-Firmware.
---
## 🔧 Umbauanleitung
### 1⃣ Gehäuse öffnen
- Vier Schrauben auf der Unterseite entfernen.
- Bodenplatte abnehmen, Platine freilegen.
- Kabelverbindung zur LED-Tube (integrierter LED-Streifen im Diffusor) trennen.
![Gehäuse geöffnet](Documentation/images/IMG_20251101_001308_786.jpg)
---
### 2⃣ Alte Platine entfernen
- Originalplatine abschrauben und ausbauen.
- IR-Empfänger (schwarze 3-Pin-LED) und Steckbuchse auslöten.
---
### 3⃣ Neue Platine vorbereiten
- **ESP32-C3 SuperMini** **direkt auflöten** kein Stecksockel!
- **IR-Empfänger** einlöten **abgeflachte Seite nach oben!**
(180 ° gedreht gegenüber dem Original)
![IR richtig eingelötet](Documentation/images/IMG_20251101_001326_267.jpg)
- **Buchse** wieder an die vorgesehene Stelle löten.
---
### 4⃣ Einbau in die Lampe
- Neue Platine mit Schrauben fixieren.
- 3-Pin-Kabel zur **LED-Tube** wieder anschließen.
Die neue Platine ist durch den **integrierten DC/DC-Wandler** deutlich höher als die Originalplatine.
Dadurch lässt sich der Boden der Leuchte nicht mehr ohne Anpassung montieren.
Es ist also **zwingend notwendig**, den Innenraum entsprechend anzupassen:
- **Option A:** Am Metallgewicht der Leuchte etwas Material ausfräsen, damit die Platine platz hat.
- **Option B (empfohlen):** Den **Distanzring** aus dem Ordner [`CAD/`](../CAD/) drucken.
- Der Ring erhöht den Abstand zwischen Boden und oberen Gehäuse um ca. **5 mm**.
- Verwende dafür **5 mm längere Schrauben** als im Original.
![Distanzring](Documentation/images/IMG_20251101_001113_380.jpg)
---
## 🔌 Firmware: WLED installieren
1. **ESP32-C3 per USB anschließen**
2. Browser öffnen: 👉 [https://install.wled.me/](https://install.wled.me/)
3. Im Webflasher **ESP32-C3** auswählen.
4. Flashvorgang starten.
5. Nach dem Flashen:
- WLAN „`WLED-AP`“ erscheint
- mit `http://4.3.2.1` verbinden
- eigenes WLAN konfigurieren
---
## 🧠 WLED-Konfiguration
### LED-Output
| Einstellung | Wert |
|--------------|------|
| LED-Typ | **SK6812 / WS2814 RGBW** |
| Color-Order | **BRG** |
| Swap | **W & G** |
| Data GPIO | **10** |
| LED Count | **75** |
| Auto-Calc W | **Brighter** |
![LED Settings](Documentation/images/LED_Settings.png)
---
### IR-Remote & Relais
| Einstellung | Wert |
|--------------|------|
| IR GPIO | **9** |
| Relay GPIO | **20** |
| Invert | ✅ aktiviert |
| Open Drain | ☐ deaktiviert |
| JSON-File | `WLED/38-key_ir.json` importieren |
![IR Settings](Documentation/images/LED_Settings2.png)
---
## 📁 Remote-Profil (JSON)
Im Ordner `WLED/` liegt das fertige JSON-Profil für die mitgelieferte IR-Fernbedienung.
Einfach in WLED hochladen danach funktionieren alle Tasten (Farben, Helligkeit, Modi).
---
## ✅ Funktionstest
Wenn alles richtig verlötet und eingestellt ist:
- ✅ Lampe reagiert auf IR-Fernbedienung
- 🌈 WLAN-Steuerung über WLED funktioniert
- 💾 Konfiguration bleibt nach Neustart erhalten
- ⚙️ Netzteil bleibt kühl, DC/DC-Wandler stabil
---
## 📂 Projektstruktur
```text
.
├── CAD/ → 3D-Modelle & Distanzring
│ ├── Spacer AldiLight.f3d
│ └── Spacer ALDIlight.stl
├── Documentation/ → Doku & Bilder
│ └── images/
├── PCB/ → KiCad-Projektdateien
│ ├── ALDIent-Light.kicad_pcb
│ ├── ESP32-C3-SuperMini.pretty/
│ └── …
├── WLED/ → JSON & Config-Dateien
│ ├── 38-key_ir.json
│ └── wled_cfg.json
└── README.md → Dieses Dokument
````
---
## 🏷️ Projektinfos
| Feld | Info |
| -------------------- | --------------------------------------------- |
| **Projektname:** | ALDIlight |
| **Basismodell:** | CASALUX LED-Leuchte (ALDI SÜD ID 665090001) |
| **Organisation:** | Chaos Computer Club Mannheim (C3MA) |
| **Firmware:** | [WLED](https://kno.wled.ge/) |
| **Hardware-Design:** | C3MA |
| **Autor:** | Souko „Shakaru“ Hiabuto |
| **Lizenz:** | MIT |
---
## ⚠️ Haftungsausschluss
Dieses Projekt wird in der C3MA-Tradition des „Hack it yourself“ geteilt.
Der Umbau erfolgt **auf eigene Verantwortung**.
Arbeiten an elektrischen Geräten sollten nur mit Fachkenntnis erfolgen.
Kein Support für gegrillte ESPs, verschmorte LEDs oder verbrannte Finger 😼
---
© 2025 C3MA

226
WLED/38-key_ir.json Normal file
View File

@@ -0,0 +1,226 @@
{
"remote": "38-key",
"0xFF3AC5": {
"label": "On",
"pos": "1x1",
"cmd": "T=1"
},
"0xFF02FD": {
"label": "Off",
"pos": "1x4",
"cmd": "T=0"
},
"0xFF1AE5": {
"label": "Red",
"pos": "2x1",
"cmnt": "Lava",
"cmd": "FP=8&CL=hFF0000&C2=hFF7F00&C3=hCC3D60"
},
"0xFF9A65": {
"label": "Green",
"pos": "2x2",
"cmnt": "Forest",
"cmd": "FP=10&CL=h8000&C2=h8040&C3=h30661E"
},
"0xFFA25D": {
"label": "Blue",
"pos": "2x3",
"cmnt": "Breeze",
"cmd": "FP=15&CL=hFF&C2=h7F00FF&C3=h3D60CC"
},
"0xFF22DD": {
"label": "White",
"pos": "2x4",
"cmd": "FP=5&CL=hFFFFFF&C2=hFFFFFF&C3=hCCCCCC"
},
"0xFF2AD5": {
"label": "Tomato",
"pos": "3x1",
"cmnt": "Yelmag",
"cmd": "FP=5&CL=hFF6347&C2=hFFBF47&C3=hCC646F"
},
"0xFFAA55": {
"label": "LightGreen",
"pos": "3x2",
"cmnt": "Rivendale",
"cmd": "FP=14&CL=h90EE90&C2=h90EEBF&C3=h96BE89"
},
"0xFF926D": {
"label": "SkyBlue",
"pos": "3x3",
"cmnt": "Ocean",
"cmd": "FP=9&CL=h87CEEB&C2=h879CEB&C3=h84B9BC"
},
"0xFF12ED": {
"label": "Rainbow",
"pos": "3x4",
"cmnt": "Pride 2015",
"cmd": "FX=63"
},
"0xFF0AF5": {
"label": "OrangeRed",
"pos": "4x1",
"cmnt": "Sakura",
"cmd": "FP=49&CL=hFF4500&C2=hFFC400&C3=hCC403D"
},
"0xFF8A75": {
"label": "Cyan",
"pos": "4x2",
"cmnt": "Beech",
"cmd": "FP=22&CL=hFFFF&C2=h7FFF&C3=h3DCCA8"
},
"0xFFB24D": {
"label": "RebeccaPurple",
"pos": "4x3",
"cmd": "FP=5&CL=h663399&C2=h993399&C3=h4F417A"
},
"0xFF32CD": {
"label": "Meteor",
"pos": "4x4",
"cmnt": "Meteor Smooth",
"cmd": "FX=77&FP=33"
},
"0xFF38C7": {
"label": "Orange",
"pos": "5x1",
"cmnt": "Orangery",
"cmd": "FP=47&CL=hFFA500&C2=hD9FF00&C3=hCC753D"
},
"0xFFB847": {
"label": "Turquoise",
"pos": "5x2",
"cmd": "FP=5&CL=h40E0D0&C2=h40A0E0&C3=h59B393"
},
"0xFF7887": {
"label": "Purple",
"pos": "5x3",
"cmd": "FP=5&CL=h800080&C2=h800040&C3=h541E66"
},
"0xFFF807": {
"label": "Stars",
"pos": "5x4",
"cmnt": "TwinkleUp-Magenta",
"cmd": "FX=106&FP=40&C2=h14142e"
},
"0xFF18E7": {
"label": "Yellow",
"pos": "6x1",
"cmd": "FP=5&CL=hFFFF00&C2=h7FFF00&C3=hCCA83D"
},
"0xFF9867": {
"label": "DarkCyan",
"pos": "6x2",
"cmd": "FP=5&CL=h8B8B&C2=h458B&C3=h216F5B"
},
"0xFF58A7": {
"label": "Plum",
"pos": "6x3",
"cmnt": "Magenta",
"cmd": "FP=40&CL=hDDA0DD&C2=hDDA0BE&C3=hA88EB0"
},
"0xFFD827": {
"label": "Fire",
"pos": "6x4",
"cmnt": "Fire 2012",
"cmd": "FX=66&FP=35"
},
"0xFF28D7": {
"label": "Effect-",
"pos": "7x1",
"cmd": "FX=~-"
},
"0xFFA857": {
"label": "Effect+",
"pos": "7x2",
"cmd": "FX=~"
},
"0xFF6897": {
"label": "Speed-",
"pos": "7x3",
"cmd": "SX=~-16"
},
"0xFFE817": {
"label": "Speed+",
"pos": "7x4",
"cmd": "SX=~16"
},
"0xFF08F7": {
"label": "Play",
"pos": "8x1",
"cmnt": "Edit Me!",
"cmd": {"playlist":{"ps":[1,2,3,4,5],"dur":1800,"transition":7,"repeat":0}}
},
"0xFF8877": {
"label": "Palette+",
"pos": "8x2",
"cmd": "FP=~"
},
"0xFF48B7": {
"label": "Bright-",
"pos": "8x3",
"cmd": "!decBrightness"
},
"0xFFC837": {
"label": "Bright+",
"pos": "8x4",
"cmd": "!incBrightness"
},
"0xFF30CF": {
"label": "Music-",
"pos": "9x1",
"cmd": "!presetFallback",
"PL": 5
},
"0xFFB04F": {
"label": "Music+",
"pos": "9x2",
"cmd": "!presetFallback",
"PL": 6
},
"0xFF708F": {
"label": "Intensity-",
"pos": "9x3",
"cmd": "IX=~-16"
},
"0xFFF00F": {
"label": "Intensity+",
"pos": "9x4",
"cmd": "IX=~16"
},
"0xFF10EF": {
"label": "DIY1",
"pos": "10x1",
"cmnt": "Preset 1 or Flow-Party",
"cmd": "!presetFallback",
"PL": 1,
"FX": 110,
"FP": 6
},
"0xFF906F": {
"label": "DIY2",
"pos": "10x2",
"cmnt": "Preset 2 or Aurora-Aurora2",
"cmd": "!presetFallback",
"PL": 2,
"FX": 38,
"FP": 55
},
"0xFF50AF": {
"label": "DIY3",
"pos": "10x3",
"cmnt": "Preset 3 or Colorwaves-Hult",
"cmd": "!presetFallback",
"PL": 3,
"FX": 67,
"FP": 28
},
"0xFFD02F": {
"label": "DIY4",
"pos": "10x4",
"cmnt": "Preset 4 or Noise3-Orange/Teal",
"cmd": "!presetFallback",
"PL": 4,
"FX": 72,
"FP": 44
}
}

1
WLED/wled_cfg.json Normal file
View File

@@ -0,0 +1 @@
{"rev":[1,0],"vid":2507300,"id":{"mdns":"wled-6b66e0","name":"WLED","inv":"Light","sui":false},"nw":{"espnow":false,"linked_remote":"","ins":[{"ssid":"C3MA","pskl":14,"ip":[0,0,0,0],"gw":[0,0,0,0],"sn":[255,255,255,0]}],"dns":[8,8,8,8]},"ap":{"ssid":"WLED-AP","pskl":8,"chan":1,"hide":0,"behav":0,"ip":[4,3,2,1]},"wifi":{"sleep":false,"phy":false,"txpwr":34},"hw":{"led":{"total":75,"maxpwr":0,"ledma":0,"cct":false,"cr":false,"ic":false,"cb":0,"fps":42,"rgbwm":255,"ld":true,"ins":[{"start":0,"len":75,"pin":[10],"order":34,"rev":false,"skip":0,"type":30,"ref":false,"rgbwm":1,"freq":0,"maxpwr":0,"ledma":30}]},"com":[],"btn":{"max":4,"pull":true,"ins":[{"type":0,"pin":[-1],"macros":[0,0,0]},{"type":0,"pin":[-1],"macros":[0,0,0]},{"type":0,"pin":[-1],"macros":[0,0,0]},{"type":0,"pin":[-1],"macros":[0,0,0]}],"tt":32,"mqtt":false},"ir":{"pin":9,"type":8,"sel":true},"relay":{"pin":20,"rev":false,"odrain":false},"baud":1152,"if":{"i2c-pin":[-1,-1],"spi-pin":[-1,-1,-1]}},"light":{"scale-bri":100,"pal-mode":0,"aseg":false,"gc":{"bri":1,"col":2.8,"val":2.8},"tr":{"mode":true,"fx":true,"dur":7,"pal":false,"rpc":5,"hrp":true},"nl":{"mode":1,"dur":60,"tbri":0,"macro":0}},"def":{"ps":0,"on":true,"bri":128},"if":{"sync":{"port0":21324,"port1":65506,"espnow":false,"recv":{"bri":true,"col":true,"fx":true,"pal":true,"grp":1,"seg":false,"sb":false},"send":{"en":false,"dir":false,"btn":false,"va":false,"hue":true,"grp":1,"ret":0}},"nodes":{"list":true,"bcast":true},"live":{"en":true,"mso":false,"rlm":true,"port":5568,"mc":false,"dmx":{"uni":1,"seqskip":false,"e131prio":0,"addr":1,"dss":0,"mode":4},"timeout":25,"maxbri":false,"no-gc":true,"offset":0},"va":{"alexa":false,"macros":[0,0],"p":0},"mqtt":{"en":false,"broker":"","port":1883,"user":"","pskl":0,"cid":"WLED-6b66e0","rtn":false,"topics":{"device":"wled/6b66e0","group":"wled/all"}},"hue":{"en":false,"id":1,"iv":25,"recv":{"on":true,"bri":true,"col":true},"ip":[10,23,45,0]},"ntp":{"en":false,"host":"0.wled.pool.ntp.org","tz":0,"offset":0,"ampm":false,"ln":0,"lt":0}},"ol":{"clock":0,"cntdwn":false,"min":0,"max":29,"o12pix":0,"o5m":false,"osec":false,"osb":false},"timers":{"cntdwn":{"goal":[20,1,1,0,0,0],"macro":0},"ins":[]},"ota":{"lock":false,"lock-wifi":false,"pskl":7,"aota":true},"um":{}}