Op zoek naar een plafondlamp kwamen we bij de bouwmarkt deze rgb ledlamp met afstandsbediening tegen. Gek als ik op rgb ledjes ben, wist ik mijn kinderen bij de Minions en Star Wars lampen weg te houden en Mrs. Crützen te overtuigen van de noodzaak van deze aankoop.
De mogelijkheden van de lamp waren nogal beperkt. Er waren maar vier manieren om kleuren weer te geven: helemaal rood, helemaal groen, helemaal blauw, of een langzaam kleurverloop van rood, via oranje, geel, groen, blauw en paars weer terug naar rood. Verder kon je de lamp in verschillende felheden wit instellen, maar daar wilde ik die lamp natuurlijk niet voor hebben.
Nou ja zeg! Een rgb lamp waarbij de fabrikant je in je kleurkeuze tot slechts de drie keuzes beperkt. En dat terwijl er in principe 256 x 256 x 256 = 16777216 verschillende kleuren mogelijk zijn. Deze lamp moest gehackt worden!
Het plan: uitzoeken hoe de kleur van de ledjes bepaald wordt en dit door een Particle Photon aansturen. Hoe ik dat voor elkaar heb gekregen ga ik, zonder al te veel in details te treden (dit is namelijk geen Instructable), in deze blog beschrijven.
Research
Eerst de lamp maar eens openmaken. Daar zag ik het volgende onder de ("motor")kap:
Na eerst een tijdje naar het circuit gestaard te hebben (van elektronica heb ik echt te weinig verstand) en hier en daar met de multimeter eens wat aan te raken, ontdekte ik dat de chip die je ongeveer in het midden van de foto ziet een controller is die de drie transistors (beetje rechts daarboven) aansturen. Elke transistor is verbonden met een basiskleur van de 24 rgb ledjes in de lamp. Op de meest felle stand is het voltage tussen de controller en de transistor zo'n 5 volt. Ideaal dus om door een Arduino of Particle Photon te besturen.
Mijn vermoeden was dat het signaal tussen de controller en transistors PWM (pulsbreedte gemoduleerd) was, en om daar helemaal zeker over te zijn heb ik aan een pootje van elk van de drie transistors een draadje gesoldeerd (dat ging nog bijna mis - man, wat zijn die smd onderdelen klein!) en ben ik naar onze natuurkunde TOA gestapt, want die heeft een oscilloscoop. En daar bleek dat PWM inderdaad the way to go was!
Besturen via Blynk
Volgende stap: Particle Photon aansluiten met het kabeltje van rood op pin 1, groen op 2 en blauw op 3. Via de Blynk app kon ik binnen 5 minuten de waardes op de drie pinnetjes met de ZeRGBa kleurenkiezer instellen en zo via mijn telefoon de kleur van de lamp bepalen. Vet!
Zelf programmeren
Maar niet vet genoeg. Want nu het aan de kant van de hardware werkt, zijn de mogelijkheden aan de kant van de software eindeloos:
- De tijd instellen waarop de lamp automatisch aan gaat, net zoals mijn eerder gemaakte Arduino Wakeup Lights.
- Een inslaap modus, waarbij de lamp in een half uur van zacht blauwgroen steeds minder fel wordt totdat hij tenslotte helemaal uit gaat.
- Een vaste kleur kiezen uit alle 17,6 miljoen mogelijkheden.
- De "regenboog modus": automatisch van kleur veranderen.
- Disco modus: om de 125, 250, 375 of 500 milliseconden (hangt van het toeval af) een willekeurige kleur tonen.
Dit alles kon ik redelijk eenvoudig via een html formulier en JavaScript op een webpagina regelen. De Particle Photon kan namelijk http requests ontvangen, die je met JavaScript kunt versturen. Na een paar uurtjes programmeren, waarbij het meeste werk bij mij toch altijd in het perfectioneren van de details gaat zitten, was de webpagina klaar. Alle programmacode (van zowel de webpagina als de Photon) vind je hier.
Stroomvoorziening Photon
Nu de lamp aan het plafond ophangen. Het probleem dat ik zo lang mogelijk had uitgesteld (omdat ik van elektronica echt te weinig verstand heb), moest nu toch maar aangepakt worden: hoe voorzie ik de Particle Photon van stroom als hij aan het plafond hangt en er geen beschikking is over een usb kabel?
De plafondlamp heeft een transformator die 230 volt wisselspanning naar 20 volt gelijkspanning omzet. Die 20 volt moest dus nog naar 5 volt worden teruggebracht. Een 7805 spanningsregelaar en twee 100 nF keramische condensatoren bleken deze klus te kunnen klaren.
Mijn grote dank gaat nog uit naar @harrydord en @JamesSjaalman, die altijd heel erg behulpzaam zijn als ik onnozele elektronica vragen op Twitter stel!
Het eindresultaat
Omdat ik de verbindingen tussen de oorspronkelijke controller en de transisors in de lamp heb verbroken, kun je de rgb ledjes nu niet meer met de afstandbediening instellen. De witte ledjes kunnen wel nog met de afstandsbediening aan en uit worden gezet.
Hieronder nog wat foto's en twee filmpjes. OK, ok, het ziet er aan de binnenkant misschien een beetje prutserig en amateuristisch uit, (had ik al vermeld dat ik van elektronica echt te weinig vestand heb?) maar... eh... tja. Dat is dan zo. 😉 Aan de buitenkant vind ik het geslaagd!