A Wi-Fi-enabled RGB LED strip controller
A while ago, two unrelated things happened: I got one of those cheap RGB LED strips from Ebay, and I became interested in hardware hacking. If you aren’t familiar with the LED strips, they’re basically a long string of LEDs connected to a controller that usually supports an infrared remote control, which can be used to set the color and intensity of the lights.
When I started tinkering with hardware, I noticed a change: I started looking at common, everyday things around the house and thinking “I bet I could put a controller in that and write an API for it”. This led to a button that orders food when pressed, a rotary mobile phone, a Wi-Fi-enabled room fragrance sprayer (I haven’t written that one up, it was too simple), a self-driving RC car (writeup coming up), etc. This is partly because, when you’ve bought and used a few components, you start being able to recognize roughly what the parts of a PCB are. rather than thinking about the PCB as “that weird green plate with all the odd-looking bumps that’s inside my devices”.

The infrared LED controller.
Ever the shrewd observer, I quickly deduced that the little white box with the RF-receiver-looking-bit must be the controller for the strip, and resolved to open it and see the mysteries it might hold. Oh, how I dreamt of complicated arrays of component upon component, whose purpose I would quickly unravel with my trusty multimeter and zest for the engineered. However, when I finally did unravel the knot of how the complicated assembly held together and managed to open it up by pressing both sides at once, I was faced with a microcontroller chip and three MOSFETs. a kind of tiny electronic switch.
Puzzled that such complicated functionality as changing the color of a LED strip could be implemented by just three MOSFETs, I set out to figure out how the controller worked and how I could replicate that functionality in my designs.
The controller circuit
The circuit turned out to be pretty simple. A microcontroller just pulses the MOSFETs open and closed many thousands of times a second, and that controls the intensity of the different color LEDs in the strip. Each LED assembly actually consists of three smaller LEDs, one red, one green, and one blue. By alternating the intensity of each, you can make any color you want!
Sounds like a simple circuit, doesn’t it? Well, that’s because it is. However, by far the hardest part was finding a MOSFET type that was suitable for driving that much current. It turns out that you need a MOSFET that can:
- Turn on and off at the low voltage (3.3V) and current (no idea) that an ESP8266. my microcontroller of choice nowadays because of its embedded Wi-Fi and general awesomeness, provides.
- Switch 12V, which is what my LED strip uses, and do it fast enough that the LEDs don’t flicker.
- Handle the large amount of current that a long strip needs, without overheating, blowing up, or destroying the earth.
With the help of Martin Ayotte and the rest of the very helpful people in the ESP8266 Arduino Gitter channel, and after multiple false starts and months spent waiting for my orders to arrive from China, only to realize they were unsuitable for the project and start the cycle all over again, I finally found a type of MOSFET that would work: The AO3402 N-MOS, a nifty little component.
After that, the schematic was easy enough to draw and prototype:

The gamelights controller schematic.
It works exactly like how I imagine the original controller to work, i.e. it pulses the MOSFETs very very quickly to vary the intensity of the light that is produced. Since the ESP8266 has an embedded Wi-Fi adapter, the LED controller can be controlled through Wi-Fi with just a bit of code. The only problem was that the LED strip runs on 12V, whereas the ESP8266 runs on 3.3V, but a step-down converter together with an LDO. which is another kind of voltage regulator that’s more suitable for small voltage drops, solved that very easily.
If you’re wondering why I used two kinds of voltage converters, it’s because the [tiny ESP8266 breakout I designed](https://github.com/skorokithakis/tiny-ESP8266-breakout) already includes the LDO, and I like the fact that I don’t have to be too accurate with the output voltage of the step-down converter, as long as it’s around 4-5V.
The hardware

The back of the gamelights controller.
Once I designed the schematic, routing the PCB was easy (and, by far, the most fun part). The only constraint that I had on the PCB was that I wanted to make it as small as possible, perhaps fitting four controllers on a 5cm x 5cm panel. This means that I’d get 40 controllers per fabrication run, which is much more than the two I’d ever need, but you can never have too many Wi-Fi-enabled light controllers!
The way the controller works is that you plug it in to a 12V adapter, it steps the 12V down to 5V, which then gets turned into 3.3V by the LDO, and the 12V is passed along to the LED strip, with the three RGB channels coming back to be connected to the ground via the three MOSFETs. To change each LED’s luminosity, the MOSFETs are pulsed open and closed using the PWM functionality of the ESP8266, and voilà, our work is done.

The front of the gamelights controller.
The PCB is pretty simple, with the only wrinkle being the DC-DC converter. Since it’s quite a sizable board (compared to the pretty-small controller) I didn’t want to waste a bunch of space by adding its footprint to the PCB. What I ended up doing was to just have the step-down converter hover above the controller and connect to it with wires, which in practice worked out well enough.
The software
I wrote the software in good old ESP8266 Arduino, although I’ve been suitably impressed with Micropython lately and would like to try that as well.
The code itself isn’t anything too special. It can be controlled either over MQTT, for easy discovery, or over UDP, for more… real-time applications (next section wink wink). It also uses mDNS for discovery, in case you want to use the UDP protocol to talk to it, which makes it easier to discover all the devices around the house. I’m not overly in love with mDNS, as it seems to be working spottily and not the way I would like it to, but it’s passable and it’s very easy to implement on the microcontroller.
You can find the complete source code for the controller, along with KiCAD schematics, footprints and a link to buy the paneled PCB directly in my Gitlab repository:
It’s called Gamelights, because of all the game stuff.
All the game stuff
One day, I was sitting around, playing Super Hexagon, as one does, when an idea struck me: What if I moved on from what is essentially a meandering, blathering introduction and got to the real point of this post? Forsooth, I will do this anon:

The actual, ugly, real Gamelights controller.
While playing Super Hexagon, as one, indeed, does, I thought it would be a fantastic idea if I could get the lights in my room to flash with the same color as the color on the screen. Seeing how I already had something I could control the color of, this seemed like a splendid idea. I immediately started to figure out ways to programmatically retrieve the screen color, but every idea I had, from screen captures (too slow) to directly reading the program’s memory (too I-have-no-idea-how-to-do-this-and-I’ve-been-staring-at-Ida-for-hours) failed completely.
Determined to not be defeated, I emailed Terry Cavanagh, the creator of Super Hexagon, who loved the idea and promised to send me a custom build of the game that would emit various bits of information about what’s going on. Unfortunately, he emailed me back a few days later saying that he was having problems implementing this, and that he didn’t know how much time it would take to figure it out, so it wasn’t looking possible.
Even more determined to not be defeated, I Googled around with increasing fervour, finally stumbling upon a post in the small hours of the morning. The post contained some arcane PyGTK voodoo that would capture an area of the screen in mere microseconds, rather than the two seconds that my previous approach took, and the method worked beautifully.
Connecting everything up, I managed to make something that would not only take the color from a specific pixel of the screen (the leftmost pixel of the top left progress bar, if you’re curious), but would also perform a bit more sophisticated analysis to see what was happening in the game, and display some custom colors on death.
Without further ado, this is the glorious, glorious result, whereupon my television is ensconced in the brilliant Gamelights-controlled glow:
It took a surprising amount of LEDs just to do that (the screen is way, way bigger than it looks in the video), but when I said “the lights in my room”, I meant “the lights in the entire room“, so I am either going to buy a ton more LED strips or a bunch of Hue light bulbs and turn my house into an epileptic’s worst nightmare.
The future
Given how awesome this project is, there is only one way forward: Integrate it into more games. Ideally, the games themselves would have some sort of API, or some other way to either communicate what’s happening in the game so I can map colors to it, or a way to output colors directly, but this is wishful thinking. For best results, I need to make this work with every game separately, which is unfortunate, but I can start small.
Currently, my next project is to get the lights to flash along with Rocket League: Orange when orange team scores a goal, blue when blue team does, white when I touch the ball, or red when the opposing team does. Things like that. Imagine how fantastic it would be if, every time you scored a goal, the lights in the room went crazy and quickly flashed orange, or slowly and dejectedly pulsed blue every time you got scored on. That’s right, you can’t imagine it, because it defies imagination, that’s how groundbreaking it is.
Epilogue
If any of you can help in any way, especially with reading game events from Rocket League or any other game, please leave a comment here or tweet to me. I am really excited about this project and want to get more things working with it, and not only limited to games, either.
For example, here are some ideas off the top of my head:
- Slowly increase the lights’ brightness the later it is after sundown.
- Slowly turn the lights red the closer you get to bedtime.
- Turn the lights on progressively five minutes before your alarm time in the morning.
- Turn the office lights redder the slower the production website is.
- Automatically turn the lights on when people yell “SURPRISE!” (for surprise parties or home invasions).
- And much, much more!
I need to wrap this post up, or I can ramble on for ages about this, but do drop me a line if you’re as excited by this as I am and have some good ideas.
LED RGB Wi-Fi Controller with Remote
LED RGB Wi-Fi Controller. Now control your LED RGB lighting using your iPhone or Samsung Smartphone from anywhere. This controller with remote helps to connect your RGB LED light strips to a Wi-Fi network. You just need to download a free app from your mobile phone and then start enjoying free control without looking around for IR remote.
It is compatible with Amazon Alexa, Google Assistant, IFTTT, and Google Home. Simply turn your led lights on/off, change brightness and colors by voice command. DIY your room or TV strip lights depending on various events by connecting it to IFTTT.
Lights Dancing With Music. When playing music with your phone, the LED strip controller makes the lights beat with the music. Great for building an atmosphere of party or dating. What’s more, with 16 million color control, the app allows you to select any color, intensity, or pattern, as well as program the lights to store 5 own created colors and brightness levels.
Sync Control by Group Timer Mode. The led controller supports to control of multi-LED strips at the same time. Name each LED strip in-app and sort each into different groups. You can control certain groups or individual light strip with the Magic Home app. And also you can use the timer functions for waking up and setting a more ambient mood at bedtime. Convenient for daily use.
It also has two working modes. You can set the wireless led controller to work in hotspot mode when you are using outdoor or somewhere like in a car or boat that there is no Wi-Fi network. Or connect it to your home Wi-Fi router to remote control your room decoration strip lights or TV background LED lights.
Need help with your RGB LED lighting applications? Our lighting experts are here to help! Contact us today for assistance with the lighting plan or installation instructions.
Required : Requires a non-dimmable 5V, 12V or 24V DC Electronic LED Power Supply.
Key Features
- Easy to connect with RGB LED Strip Lights with included 4-pin connector
- Works with Amazon Alexa, Google Assistant IFTTT, and Google Home
- Lights Dancing with Music Features
- Sync Control by Group Timer Modes
- Works in hotspot mode or connect to home Wi-Fi
Applications
- Trade Show Exhibit Lighting
- Retail Display Lighting
- Architectural Lighting
- Hotels, Casinos, and Clubs
- Custom Lighting Shows
- Stage Lighting
Specifications
- Input Voltage: 5-28V DC
- Output Power: 4A x 3CH
- Output Channels: 3
- Input Connection: Female DC Barrel Plug (5.5 x 2.1 mm)
- Output Connection: RGB 4-Pin Connector
- Max Load: 100 Watts
- Standby Power:
- Environment: Dry Location
- IP Rating: IP20
- Required: 5V, 12V, or 24V DC Electronic LED Driver
- Controller Dimensions: 2.08 in. L x 0.9 in. W x 0.39 in. H
- Controller Dimensions (metric): 53 mm L x 23 mm W x 10 mm H
- Remote Dimensions: 3.4 in. L x 1.57 in. W x 0.24 in. H
- Remote Dimensions (metric): 86 mm L x 40 mm W x 6 mm H
- Labels and Listings: CE, RoHS, FCC
RGB LED Strip Light Mini Controller with 24 Key Wireless Remote. 12 Volt

12 volt RGB LED Strip Light 24 Key Mini Controller with IR (Infrared) Wireless Remote. Allows you to adjust the brightness of the 16 pre-programmed steady burn colors as well as adjusting the speed of the available effects. (Flash, Strobe, Fade, and Smooth)
Shipping Returns
Returns Policy You may return most new, unopened items within 30 days of delivery for a full refund. We’ll also pay the return shipping costs if the return is a result of our error (you received an incorrect or defective item, etc.).
You should expect to receive your refund within four weeks of giving your package to the return shipper, however, in many cases you will receive a refund more quickly. This time period includes the transit time for us to receive your return from the shipper (5 to 10 business days), the time it takes us to process your return once we receive it (3 to 5 business days), and the time it takes your bank to process our refund request (5 to 10 business days).
If you need to return an item, simply login to your account, view the order using the “Complete Orders” link under the My Account menu and click the Return Item(s) button. We’ll notify you via e-mail of your refund once we’ve received and processed the returned item.
Shipping We can ship to virtually any address in the world. Note that there are restrictions on some products, and some products cannot be shipped to international destinations.
When you place an order, we will estimate shipping and delivery dates for you based on the availability of your items and the shipping options you choose. Depending on the shipping provider you choose, shipping date estimates may appear on the shipping quotes page.
Please also note that the shipping rates for many items we sell are weight-based. The weight of any such item can be found on its detail page. To reflect the policies of the shipping companies we use, all weights will be rounded up to the next full pound.
Custom product tab
You should expect to receive your refund within four weeks of giving your package to the return shipper, however, in many cases you will receive a refund more quickly. This time period includes the transit time for us to receive your return from the shipper (5 to 10 business days), the time it takes us to process your return once we receive it (3 to 5 business days), and the time it takes your bank to process our refund request (5 to 10 business days).
If you need to return an item, simply login to your account, view the order using the “Complete Orders” link under the My Account menu and click the Return Item(s) button. We’ll notify you via e-mail of your refund once we’ve received and processed the returned item.
Smart 2.4G RF Wi-Fi controller for RGBW LED strip 16A, 192W (12VDC), 12-24VDC
SSWFRGBW is a constant voltage controller for RGBW LED strips. It can be operated with SSMFR4Z RF remote control (4 zones) from the same product line or by using the TUYA Smart smartphone app for Android and iOS.
It is compatible with all models of Ultralux RGBW LED strips.
Maximum power | 192W (12V)/384W (24V) |
Voltage DC | 12/24V |
Max output current | 4X4A |
RF frequency | 2.4 GHz |
Protection rating | IP20 |
Working temperature range | -10 °C ÷ 40 °C |
Dimensions | 41/71/21mm |
Range | 20m |
Warranty | 2 years |
Type of lighting | RGBW |
Software | Tuya Smart |
SSWFRGBW is a constant voltage controller for RGBW LED strips. It can be operated with SSMFR4Z RF remote control (4 zones) from the same product line or by using the TUYA Smart smartphone app for Android and iOS. It is compatible with all models of Ultralux RGBW LED strips.
Related products
About us
- Dryanovo,12 Treti mart Str.
- 359 676 72173359 676 74466
- 359 888 161716359 887 787868
- sales@ultralux.bg
Когато посещавате даден уеб сайт, той може да съхранява или извлича информация от вашия браузър под формата на бисквитки. Тази информация може да се отнася за Вас, Вашите предпочитания, Вашето устройство или да бъде анализирана с цел подобряване на ползването на сайта. Може да изберете да спрете някои видове бисквитки. Кликнете върху заглавията на различните категории, за да научите повече за тях и да промените настройките по подразбиране. Трябва обаче да знаете, че блокирането на някои типове бисквитки може да възпрепятства правилната работа на сайта.
Teзи биcĸвитĸи ca зaдължитeлни зa нopмaлнaтa paбoтa нa yeбcaйтa и нe мoгaт дa бъдaт изĸлючвaни. Използват се за цялостното функциониране на сайта.
Тези бисквитки служат за подобряване на функционалността и персонализирането на услугата, като чатове и др. Те биват задавани от нас или от трети страни, чиито услуги сме добавили към нашите страници. Ако блокирате тези бисквитки, някои или всички от тези функции може да не работят правилно.
Тези бисквитки позволяват анализа на използваемостта на сайта и оптимизиране на работата му. Измерват броя на посещенията, кои страници са посещавани, източниците на трафик, обща информация за размер на екран, вид браузър и др. Събираната инфopмaция e aнoнимнa.
Това са бисквитки, включително и такива на трети страни и необходими за предоставянето на функции на социални медии или възможност за таргетирана реклама извън сайта
Какво представляват бисквитките?
Бисквитките са файлове с информация, които се съхранява на твърдия диск на компютъра Ви, в които се записва как се движите в даден уеб сайт, така че когато отново го посетите, да Ви представи определени опции, базирани на съхранената информация от последното Ви посещение. Бисквитките могат да се използват за анализ на трафика, както и за рекламни и маркетингови цели.
Бисквитките се използват от повечето уеб сайтове и не вредят на операционните системи. Ако искате да промените или проверите какъв тип бисквитки приемате, може да го направите в настройките на браузъра, който използвате. Може да блокирате всички или определени бисквитки във всеки един момент, като активирате настройката на браузъра, която Ви позволява тази дейност. Но ако блокирате всички бисквитки (включително основни), няма да имате достъп до всички или някои части от нашия сайт.
Как използваме бисквитките?
Бисквитките ни служат да разберем как използвате нашия сайт. Този анализ ни помага да развиваме и подобряваме сайта, както и продуктите и/или услугите и да ви предлагаме това, от което се нуждаете.
Бисквитките са:
Сесийни бисквитки: Те се съхраняват на компютъра Ви само по време на уеб сесията и автоматично се изтриват, когато затворите браузъра си. съхраняват анонимен идентификационен номер на сесията, който Ви позволява да съирате в сайта, без да се налага да се логвате във всяка страница и не събират никакви лични данни от компютъра Ви.
Постоянни бисквитки: Постоянната бисквитка се съхранява под формата на файл на компютъра ви и остава там, когато затворите уеб браузъра си. Бисквитката може да бъде прочетена от сайта, който я е създал, когато го посетите отново.
Бисквитките също могат да бъдат категоризирани по следния начин:
Необходими бисквитки: Тези бисквитки са от съществено значение, за да можете ефективно да използвате сайта, например когато купувате продукт и/или услуга и следователно не могат да бъдат изключвани. Без тези бисквитки услугите, които са Ви на разположение на нашия сайт, не могат да бъдат предоставени. Тези бисквитки не събират информация за Вас, която да бъде използвана за маркетинг или за запомняне на мястото за достъп до интернет.
Функционални бисквитки: Тези бисквитки ни позволяват да наблюдаваме и подобряваме ефективността на нашия сайт. Те ни позволяват да отчитаме посещенията, да идентифицираме източниците на трафик и да видим кои части от сайта са най-популярни.
Маркетингови бисквитки: Teзи биcĸвитĸи ce зaдaвaт чpeз нaшия caйт oт peĸлaмнитe ни пapтньopи. Te мoгaт дa бъдaт изпoлзвaни oт тeзи ĸoмпaнии зa cъздaвaнeтo нa пpoфил нa Baшитe интepecи и пoзвoлявaт пoĸaзвaнeтo нa peĸлaми и cъoбщeния извън плaтфopмaтa нa дpyги caйтoвe. Te paбoтят чpeз yниĸaлнo идeнтифициpaнe нa Baшия бpayзъp и ycтpoйcтвo. Πpи блoĸиpaнeтo им, нямa дa пoлyчaвaтe нaшaтa нacoчeнa peĸлaмa.
Този сайт използва бисквитки. При натискане на “Запази настройките”, или ако продължите да разглеждате сайта, Вие приемате всички бисквитки, чиято цел е подобряване на услугата и анализа на потреблението. Ако искате да промените настройките им, натиснете “Настройки на бисквитки” и изберете съответните опции.