• 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
I just noticed, did you ever think to do RGBW instead of RGB? What would have been the problems?

I'm glad you asked, because I actually did think about that in the beginning. The problems are twofold. First, there are no RGBW LEDs as small as the RGB one I'm using, so I couldn't have made it a 16mm switch. And secondly, instead of 36, you now have to control 48 individual LEDs, which would make each of them a little dimmer and would require a beefier microcontroller, which of course wouldn't fit into a 16mm switch either.

There's also little benefit to RGBW outside of room lighting.

For now the simple LED strip I have ordered will do, but I'm looking forward to what you'll be releasing !

BTW, I couldn't imagine nobody had made something like this yet, and I was right. The Blinkstick Pro together with the LED adapter is exactly what you're looking for:


Up to 4A for the LEDs, and you can connect the 12V from the PSU yourself. And what's even better, you can get the LED adapter (the thing on the right) separately, so all you'd have to do is hook that up to my button and you'd be golden.
 
  • Like
Reactions: ricochet and Phuncz

Phuncz

Lord of the Boards
SFFn Staff
May 9, 2015
5,957
4,957
Ah nice one ! Although that looks 5 times as big as it needs to be. Oh well, we weren't all born with an obsessive need to minimize wasted space.
 

jtd871

SFF Guru
Jun 22, 2015
1,166
851
I don't know that it's super big - you need to provide room for physical interfaces that won't break easily and make it manipulatable (if there is such a word) by people with ham fists, or at least fat fingers.
 
  • Like
Reactions: ricochet

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
Well I think all they really could've done is replace the jack with a terminal block and put the MOSFETs closer, but they probably need a certain amount of copper to keep them cool enough for the 4A of current they can handle. I guess you could go smaller with double-sided construction, but in the end, it's absolutely OK for what it is in my eyes.
 
  • Like
Reactions: ricochet

HeroXLazer

King of Cable Management
Sep 11, 2016
707
476
I'm glad you asked, because I actually did think about that in the beginning. The problems are twofold. First, there are no RGBW LEDs as small as the RGB one I'm using, so I couldn't have made it a 16mm switch. And secondly, instead of 36, you now have to control 48 individual LEDs, which would make each of them a little dimmer and would require a beefier microcontroller, which of course wouldn't fit into a 16mm switch either.

There's also little benefit to RGBW outside of room lighting.



BTW, I couldn't imagine nobody had made something like this yet, and I was right. The Blinkstick Pro together with the LED adapter is exactly what you're looking for:


Up to 4A for the LEDs, and you can connect the 12V from the PSU yourself. And what's even better, you can get the LED adapter (the thing on the right) separately, so all you'd have to do is hook that up to my button and you'd be golden.
Yah, I see.
 

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
So, the more I look into it, the more I'm feeling like I have to make this button Arudino compatible. It would make everyone's lives so much easier.

If you wanted to change anything about how it works, you could easily do it, and with Arduino there is a huuuuuge variety of libraries available that allow you to integrate cool stuff into it.

For example, the Adafruit NeoPixel LED string. It's using an LPD8806 controller to control the LEDs with just two pins from a compatible microcontroller. Power is supplied by a separate source, similar to how WS2181 strips work. And of course, they have an Arduino library for it. And of course there are all sorts of other things for Arduino like motor controller boards, infrared sensors and stuff like that, all with an associated library that you can easily integrate.

If I required people to program the button with MPLABX, they'd have to port those libraries manually or find one that is compatible with PIC controllers themselves. Arduino compatibility opens up so many options in how you can use the button, it undeniably makes it a better product.

I'll be looking into ways to create a custom Arduino-compatible bootloader for this microcontroller, but if anyone knows anything about this, I'd be very happy for you to share your knowledge!

P.S.: This of course doesn't mean that I'm abandoning a GUI to configure LED effects, that is a completely separate thing and not tied to how the button can be reprogrammed. :)
 
  • Like
Reactions: EdZ, Phuncz and |||

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
Yeah no kidding, I often wonder whether I only consider all those details because of my nationality :D

Either way, I couldn't possibly sell this if I didn't consider every damn little thing about it thrice. I just need the knowledge that everything on it has been a deliberate decision to be confident in the product. It can be a difficult legacy to carry, but it's also one to be proud of ;)
 

jeshikat

Jessica. Wayward SFF.n Founder
Silver Supporter
Feb 22, 2015
4,969
4,784
Just thought of something, and apologies if it's been covered already, but would it be possible to detect if the computer is in sleep?

Most motherboards don't have the alternate PWR LED header connection for the sleep state like OEM machines, but maybe it could detect that the PWR LED is slowly pulsing instead of a steady on?

That way it wouldn't require any additional wiring.
 
  • Like
Reactions: Phuncz

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
That depends. In theory, this is possible, but I'm not looking at the power LED anyway. I have two pins going to the PW_BTN connection and two to the HD_LED button. If the PC is off, the button won't get powered, and if it's asleep, it depends on the mainboard. At least with my current one, the internal USB connectors don't get any power, even in sleep.

But, you could always mod the cable to power the button from +5VSB so it's always on and then look at the PW_LED to change the effect of the ring to breathing or something like that. Maybe some high end motherboards even allow to set whether internal USB ports supply power when asleep.

I never owned a motherboard that pulsed the power LED when asleep. They were always off completely.

EDIT: Actually, now that I think about it, you wouldn't even have to wire the button to the PW_LED. If the PC goes to sleep, it will not poll connected USB devices, so if the button detects that it still has power but is not being polled, it can conclude that the PC is sleeping. Very useful.
 
Last edited:

jtd871

SFF Guru
Jun 22, 2015
1,166
851
My current lappie pulses the power button during sleep otherwise I wouldn't know it's sleeping. Not that it much matters - the boot time is pretty low on even a SATA SSD (Samsung 830), and I generally use the power button to wake the computer anyway.
 
  • Like
Reactions: ricochet

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
My current lappie pulses the power button during sleep otherwise I wouldn't know it's sleeping. Not that it much matters - the boot time is pretty low on even a SATA SSD (Samsung 830), and I generally use the power button to wake the computer anyway.

Yes, my laptop does this as well. Maybe I should've clarified that I've never seen that behaviour on desktop boards :)
 

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
Update!

Ok, so I've been doing a lot of research this night, and despite being somewhat of a set-back, made the decision to abandon the PIC micro and move to the well-known Atmega32u4. 8-bit and 16-bit PIC microcontrollers can't be made compatible with Arduino easily, because there is no C++ compiler for those architectures. It can be hacked together, but I really don't want to spend any time on that.

So, what use is the Atmega32u4 to us?

Advantages:
  • Same microcontroller used in the Arduino/Genuino Micro, which means:
  • No need to write a new bootloader
  • Easy modification of firmware through Arduino IDE
  • More GPIO, the button can now have 7 GPIO pins instead of 5
  • Support for SPI and U(S)ART, maybe JTAG as well
  • GPIO pins are now capable of Analog Input (possibly all of them, but I can't confirm that yet)
  • Hardware PWM for internal LED control
Disadvantages:
  • Higher material cost (about 3$)
  • No support for SCL/SDA 2-wire serial
  • Possibly higher assembly cost (because of VQFN package instead of SSOP)
  • Rework of two PCB assemblies required
The size of the button won't change at all. The maximum current for external LEDs might decrease from 50mA to 40mA, but it could also increase to 80mA if two pins are allowed to source in parallel.

Overall, pretty good value for money if you ask me, but that slowed my progress a little bit.
 
Last edited:

iFreilicht

FlexATX Authority
Original poster
Feb 28, 2015
3,243
2,361
freilite.com
Hopefully, you don't run into any 'doh' moments from this point out.

This is my biggest fear. Good thing is, the Atmega32u4 is super easy to test because I can just get a Genuino Micro and that already has all the support components on. So hopefully, the chance of a major doh-moment will be highly reduced :)
 

HeroXLazer

King of Cable Management
Sep 11, 2016
707
476
Update!

Ok, so I've been doing a lot of research this night, and despite being somewhat of a set-back, made the decision to abandon the PIC micro and move to the well-known Atmega32u4. 8-bit and 16-bit PIC microcontrollers can't be made compatible with Arduino easily, because there is no C++ compiler for those architectures. It can be hacked together, but I really don't want to spend any time on that.

So, what use is the Atmega32u4 to us?

Advantages:
  • Same microcontroller used in the Arduino/Genuino Micro, which means:
  • No need to write a new bootloader
  • Easy modification of firmware through Arduino IDE
  • More GPIO, the button can now have 7 GPIO pins instead of 5
  • Support for SPI and U(S)ART, maybe JTAG as well
  • GPIO pins are now capable of Analog Input (possibly all of them, but I can't confirm that yet)
  • Hardware PWM for internal LED control
Disadvantages:
  • Higher material cost (about 3$)
  • No support for SCL/SDA 2-wire serial
  • Possibly higher assembly cost (because of VQFN package instead of SSOP)
  • Rework of two PCB assemblies required
The size of the button won't change at all. The maximum current for external LEDs might decrease from 50mA to 40mA, but it could also increase to 80mA if two pins are allowed to source in parallel.

Overall, pretty good value for money if you ask me, but that slowed my progress a little bit.
Yeah, 32u4, at least I have some knowledge of it from custom keyboards. :)