• Save 15% on ALL SFF Network merch, until Dec 31st! Use code SFF2024 at checkout. Click here!

Stalled Iris 16 - RGB Vandal Button

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
It will come with a cable that does that. You can get a micro HDMI to HDMI cable and either splice that yourself or get an HDMI breakout board and wire it up that way if you want to change the length, though.
 

HeroXLazer

King of Cable Management
Sep 11, 2016
707
476
It will come with a cable that does that. You can get a micro HDMI to HDMI cable and either splice that yourself or get an HDMI breakout board and wire it up that way if you want to change the length, though.
So it will come with a spliced connector? How would we control it then?
 

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
So would it be spliced into a header or a normal USB/2/3/3.1? Also what code?

USB2. There's no benefit to USB3 and most people have lots of free USB2 headers on their boards. At the very least you'll be able to program it with MPLAB X using the C language, but I would like to make it Arduino-compatible if I can manage to do so.
 

HeroXLazer

King of Cable Management
Sep 11, 2016
707
476
USB2. There's no benefit to USB3 and most people have lots of free USB2 headers on their boards. At the very least you'll be able to program it with MPLAB X using the C language, but I would like to make it Arduino-compatible if I can manage to do so.
So USB headers on motherboard and what if we don't know C...
 

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
Then you get a few presets that you can set with a small command line tool or a GUI tool. C is very easy when it's just about controlling LEDs, though :)
 

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
Have you thought about having your unique (and very cool) looking iF logo etched on the button face?

I did indeed, but there are two issues with it. First, if you have a case that supports multiple orientations like the S4 Mini, the logo will be on its side some of the time. And second, I don't think many people want branding on the front of the button. It's supposed to be a minimal piece that fits into every case and hopefully enhances either look, functionality or both.
What I'd rather do is put it on the back of the button, but that space might have to be used for compliance logos.

It would also require me to design the slider of the button as to not rotate. That can be done, but it makes the two pieces its made from more complex than they need to be. I might still do that anyway to make them more stiff, but the main two problems remain.
 

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
The guy that I am, ofcourse I want the most fully-featured and at the same time SFF solution there is. So I thought an RGB(W) set that plugs with an inline controller straight into a USB 2.0 header would be nice. Apparently that doesn't exist or not in an SFF format. So I caved in, hoping @iFreilicht 's RGB button will someday fill the hole (literally and figuratively), I ordered a CableMod RGB kit.

Keep in mind that my button won't have enough power to power those strips. Absolute maximum power output on each GPIO is 50mA, which is plenty for a single dome-head LED as they appear in front-panels, but by far not enough to light a strip like this.

You could go with an Arduino with an RGB LED shield and mount that somewhere where it fits. In the LZ7 you could stick it in place of one 2.5" drive or onto the side of the PSU maybe.

Since most RGB kits are 12V anyway (like the Asus AURA "standard"), wouldn't it suffice to just seperately power the 12V and let your button control the RGB channels ?

Or maybe use your controller PCB seperately for use atop a USB header, you could possibly piggyback of the already done design and production to expand to a whole new market in dire need of RGB controlling with lightweight software and tiny hardware.

Maybe we should go into some detail about how those RGB LED Strips work in the first place, and how LED control works in my button.

FIrst off, this is a schematic of a bog-standard RGB LED Strip with 5050 RGB LEDs (resistor values might vary):


Image courtesy of Adafruit

The four contacts you get on each strip are +12V, RED, GREEN and BLUE, as you might imagine. Now, to drive these, you would power the +12V and then pull the contacts for the colours to ground. To change the brightness, you can either use analog voltage control or PWM. Analog voltage control means that you set the colour pin to a voltage lower than 12V. For example, you could set it 9V, then the voltage across the LEDs would be 3V, and they would be less bright. This requires relatively complex circuitry to do and the results can vary depending on the parameters of the LEDs, so generally PWM is more often used. This means that you quickly turn the strips on and off, and the ratio between on- and off-time determines the brightness.

So, you might conclude that you could just use three GPIO pins from my button to control the three colour pins and power the +12V from your PSU. However, this is not necessarily correct. The current flowing through the +12V pin is equal to the combined current of the three colour pins, according to Kirchhoff's Current Law. The spec sheet of my microcontroler mentions an absolute maximum drive and sink current of 50mA for each pin. So, if the total current draw of the strip goes over 150mA, the micro could blow up, and that is not an exaggeration. In general, I would want to keep the current flow much lower than that, the maximum I'd go for is half of the absolute maximum, so about 75mA. So, how much current does flow through such a strip?

Again, Adafruit has great resources on this, and according to them, a single segment (that's three RGB LEDs or about 10-5cm of strip) pulls approximately 60mA total. That would be fine, no problem. Even if the actual draw is a little higher, we're on the safe side. Theoretically, even two segments would work at 120mA, but that'd already be too close to the upper limit in my eyes, and remember that other manufacturers stips could draw more than the ones from Adafruit. The LEDs inside my Button will never draw more than 30mA total, even when the ring is set to white at 100% brightness (the real number is a little lower but I can't look it up right now, I think it's 23mA).

To get away with a higher current that allows long strips to be powered (for example the 2m that Asus AURA boards can handle), driving transistors would be required, which are way too large to fit inside the button. You could easily rig that up yourself or annoy me enough to make an external solution, but at that point I feel it would be more sensible to make a small LED strip controller a separate product.
 
  • Like
Reactions: EdZ and Phuncz

Phuncz

Lord of the Boards
SFFn Staff
May 9, 2015
5,947
4,953
Thanks for the extensive reply. I'm lacking in electronic engineering knowledge that I don't know much about this stuff. Though it does seem like an interesting feature to be able to combine case RGB LED lighting with the RGB LED lighting in your button or just as well be completely seperated. With an additional controller ofcourse !

Do you have any plans for this, maybe in the future after the RGB button is finished ?
 

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
Yes, certainly! Well not plans strictly, but ideas on how to implement it. Ideally, I'd want to do something simple like ASUS AURA, just not as tacky.

I mean, look at this:



It's super simple. On the left you have all the devices, on the right you have the functionality for this device. Choose colour and effects, and whether to sync the effect between all the devices, done. I'm already thinking about ways to implement this in a way that makes it flexible enough to support any kind of RGB-lit hardware, but a simple USB-to-LED-strip controller is certainly one of the first possible candidates.

Maybe the blinkstick software would work for this as well? Haven't looked into it that much, but it seems like a good baseline.
 
  • Like
Reactions: Phuncz