diff --git a/.gitignore b/.gitignore index 4a9470f..1a43f8c 100644 --- a/.gitignore +++ b/.gitignore @@ -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/ diff --git a/CAD/Spacer ALDIlight.stl b/CAD/Spacer ALDIlight.stl new file mode 100755 index 0000000..81b8f05 Binary files /dev/null and b/CAD/Spacer ALDIlight.stl differ diff --git a/CAD/Spacer AldiLight.f3d b/CAD/Spacer AldiLight.f3d new file mode 100755 index 0000000..45006e8 Binary files /dev/null and b/CAD/Spacer AldiLight.f3d differ diff --git a/Documentation/images/IMG_20251101_001113_380.jpg b/Documentation/images/IMG_20251101_001113_380.jpg new file mode 100644 index 0000000..ba63b66 Binary files /dev/null and b/Documentation/images/IMG_20251101_001113_380.jpg differ diff --git a/Documentation/images/IMG_20251101_001308_786.jpg b/Documentation/images/IMG_20251101_001308_786.jpg new file mode 100644 index 0000000..ddc195a Binary files /dev/null and b/Documentation/images/IMG_20251101_001308_786.jpg differ diff --git a/Documentation/images/IMG_20251101_001316_975.jpg b/Documentation/images/IMG_20251101_001316_975.jpg new file mode 100644 index 0000000..e62c56c Binary files /dev/null and b/Documentation/images/IMG_20251101_001316_975.jpg differ diff --git a/Documentation/images/IMG_20251101_001326_267.jpg b/Documentation/images/IMG_20251101_001326_267.jpg new file mode 100644 index 0000000..c43f57f Binary files /dev/null and b/Documentation/images/IMG_20251101_001326_267.jpg differ diff --git a/Documentation/images/LED_Settings.png b/Documentation/images/LED_Settings.png new file mode 100644 index 0000000..aa0775c Binary files /dev/null and b/Documentation/images/LED_Settings.png differ diff --git a/Documentation/images/LED_Settings2.png b/Documentation/images/LED_Settings2.png new file mode 100644 index 0000000..d096bb6 Binary files /dev/null and b/Documentation/images/LED_Settings2.png differ diff --git a/ALDIent-Light.kicad_pcb b/PCB/ALDIent-Light.kicad_pcb similarity index 100% rename from ALDIent-Light.kicad_pcb rename to PCB/ALDIent-Light.kicad_pcb diff --git a/ALDIent-Light.kicad_prl b/PCB/ALDIent-Light.kicad_prl similarity index 100% rename from ALDIent-Light.kicad_prl rename to PCB/ALDIent-Light.kicad_prl diff --git a/ALDIent-Light.kicad_pro b/PCB/ALDIent-Light.kicad_pro similarity index 100% rename from ALDIent-Light.kicad_pro rename to PCB/ALDIent-Light.kicad_pro diff --git a/ALDIent-Light.kicad_sch b/PCB/ALDIent-Light.kicad_sch similarity index 100% rename from ALDIent-Light.kicad_sch rename to PCB/ALDIent-Light.kicad_sch diff --git a/ESP32-C3-SuperMini.kicad_sym b/PCB/ESP32-C3-SuperMini.kicad_sym similarity index 100% rename from ESP32-C3-SuperMini.kicad_sym rename to PCB/ESP32-C3-SuperMini.kicad_sym diff --git a/ESP32-C3-SuperMini.pretty/ESP32_C3_Super_Mini.kicad_mod b/PCB/ESP32-C3-SuperMini.pretty/ESP32_C3_Super_Mini.kicad_mod similarity index 100% rename from ESP32-C3-SuperMini.pretty/ESP32_C3_Super_Mini.kicad_mod rename to PCB/ESP32-C3-SuperMini.pretty/ESP32_C3_Super_Mini.kicad_mod diff --git a/fabrication-toolkit-options.json b/PCB/fabrication-toolkit-options.json similarity index 100% rename from fabrication-toolkit-options.json rename to PCB/fabrication-toolkit-options.json diff --git a/fp-lib-table b/PCB/fp-lib-table similarity index 100% rename from fp-lib-table rename to PCB/fp-lib-table diff --git a/sym-lib-table b/PCB/sym-lib-table similarity index 100% rename from sym-lib-table rename to PCB/sym-lib-table diff --git a/README.md b/README.md index e69de29..726d176 100644 --- a/README.md +++ b/README.md @@ -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 \ No newline at end of file diff --git a/WLED/38-key_ir.json b/WLED/38-key_ir.json new file mode 100644 index 0000000..55168fa --- /dev/null +++ b/WLED/38-key_ir.json @@ -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 + } +} diff --git a/WLED/wled_cfg.json b/WLED/wled_cfg.json new file mode 100644 index 0000000..02d8bf1 --- /dev/null +++ b/WLED/wled_cfg.json @@ -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":{}} \ No newline at end of file