De nieuwsgierige transformatie: IKEA OBEGRÄNSAD LED wandlamp gehackt, gemodificeerd en geopend voor creatieve vrijheid

29 mei 2023

Afgelopen week las ik op Hackaday.com een interessant artikel over de IKEA hack van de LED wandlamp OBEGRÄNSAD. Deze €99,95 decoratieve wandlamp is door IKEA ontwikkeld in samenwerking met Swedish House Mafia. Standaard kent deze wandlamp 5 lichtprogramma’s. Getriggerd door het artikel op Hackaday en met een gezonde nieuwsgierigheid ben ik direct naar IKEA gereden om een OBEGRÄNSAD lamp te halen. Vervolgens heb ik meteen de schroevendraaier erbij gepakt om te achterhalen welke techniek wordt gebruikt om de matrix LEDs aan te sturen. Mijn doel is om zelf controle te krijgen over de LED matrix en hierop eigen teksten en pictogrammen weer te kunnen geven.

Nadat ik de achterkant heb verwijderd, zie ik vier LED matrix panelen, allemaal met een vergelijkbare opzet. Er is een input- en outputaansluiting per paneel, waarop Enable, Data-In, Clock, Latch, Gnd en VCC beschikbaar zijn. Daarnaast is er een aansluiting voor een USB stekker en een schakelaar om het lichtprogramma te switchen. Met behulp van een microscoop lukt het me om te achterhalen dat er gebruik wordt gemaakt van een STC2024 16-bit Serial-In/Parallel-Out Constant-Current LED Driver. Deze chip wordt gebruikt voor LED-displays, variabele berichtborden en LED-verkeersborden. Het timingdiagram lijkt duidelijk te interpreteren en om het display aan te sluiten op een Arduino, Raspberry Pi of ESP32 heb je slechts 4 digitale signalen nodig. De hoge seriële overdrachtsnelheid van 25 MHz biedt mogelijkheden om het scherm snel te verversen en daardoor ook grijstinten te kunnen genereren.

De opbouw van de 4 gekoppelde chips en de 4×16 pixels per paneel blijkt zeer specifiek te zijn. Daarom heb ik een Excel-sheet gemaakt met als doel om straks elke pixel een (X,Y)-coördinaat te kunnen geven. De eerste stappen blijken veelbelovend. Ik kan individuele pixels en groepen aansturen. De uitdaging ligt nu in het opzetten van een lookup-array om de positie van elke pixel te bepalen en een extra array om de gewenste waarde per pixel weer te geven. Er zijn behoorlijk wat uitdagingen op het gebied van programmeren, vooral omdat er geen standaardbibliotheken beschikbaar zijn. Dit zal de nodige puzzeltijd vergen, maar het eindresultaat zal een prachtig LED-display zijn, waarbij ik volledige controle heb over de pixels en de intensiteit ervan.