Jump to content

[STALLED] Iris 16 - Building an RGB power button

iFreilicht

I really like this project, looks really cool!! Definitely need one of these when available. Maybe create a kickstarter for it soon?

 

Is it also gonna be possible to show the hdd status in one corner in one color, and like a temperature in another corner and that collor depending on the temperature.

 

+1 Follow

Link to comment
Share on other sites

Link to post
Share on other sites

On 4.12.2016 at 4:18 AM, lieder1987 said:

I may buy one if you finish it and will send it to NC.

Of course I will! International shipping is pretty cheap for small and light packages (I'm from Germany), so that won't be a problem :)

 

On 3.12.2016 at 11:41 PM, nofxz said:

That is an very good idea. I may copy it once you have completed it. ;)

Good luck! Hopefully you'll just be able to get one from myself at that point. :D

Link to comment
Share on other sites

Link to post
Share on other sites

18 hours ago, Jamie42 said:

I really like this project, looks really cool!! Definitely need one of these when available. Maybe create a kickstarter for it soon?

 

Is it also gonna be possible to show the hdd status in one corner in one color, and like a temperature in another corner and that collor depending on the temperature.

 

+1 Follow

Thank you! I will only make a crowdfunding campaign once the first prototype is finished and I'm 100% sure I can deliver it. To make a campaign I have to know exactly what a single unit will cost if a certain quantity is made and I need to know what kind of quantity I can expect to sell at least, otherwise I would just have to guess on the funding goal, and that could either mean that backers are paying way too much or that I run out of money before I can actually ship to everyone. Both of those things I want to avoid.

 

Oh absolutely! Every single LED is individually controllable, so you'll be able to do pretty much everything you can imagine with a ring of 12 LEDs. :D

I still need to work out the software aspect, though. There will at least be a cross-platform command line tool, but that's not very user friendly, so at least for Windows I want to make a UI configuration tool of some sort. Not sure which example to go by, from what I've heard most RGB suites (Corsair, Razer, Alienware, NZXT) are pretty terrible.

Link to comment
Share on other sites

Link to post
Share on other sites

On 5-12-2016 at 9:27 AM, iFreilicht said:

Thank you! I will only make a crowdfunding campaign once the first prototype is finished and I'm 100% sure I can deliver it. To make a campaign I have to know exactly what a single unit will cost if a certain quantity is made and I need to know what kind of quantity I can expect to sell at least, otherwise I would just have to guess on the funding goal, and that could either mean that backers are paying way too much or that I run out of money before I can actually ship to everyone. Both of those things I want to avoid.

 

Oh absolutely! Every single LED is individually controllable, so you'll be able to do pretty much everything you can imagine with a ring of 12 LEDs. :D

I still need to work out the software aspect, though. There will at least be a cross-platform command line tool, but that's not very user friendly, so at least for Windows I want to make a UI configuration tool of some sort. Not sure which example to go by, from what I've heard most RGB suites (Corsair, Razer, Alienware, NZXT) are pretty terrible.

Ok thats nice.

 

Umm, yeah maybe like have conditions:

  • For what the color of a led will be
  • If the led will be turned on
  • How long the led will be on

And let people like group those individual leds to whatever they want. Also it could be nice to simply have presets so the noobies with software can simply select your slider turning thingy.

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

19 hours ago, Jamie42 said:

Umm, yeah maybe like have conditions:

  • For what the color of a led will be
  • If the led will be turned on
  • How long the led will be on

And let people like group those individual leds to whatever they want. Also it could be nice to simply have presets so the noobies with software can simply select your slider turning thingy.

 

 

Oh I'll absolutely make a few presets, don't worry about that! :)

 

Yeah, stuff like that has to be in there, but you might also want colours to change in a pattern. So they are normally red, and you want them to turn white for a moment. Or, with the spinning ring, you might want the ring to cycle through all colours priodically. That's far from trivial to program, and I want to make it as easy as possible to do that. I'll also look into alternate colour spaces like HCL for the UI, because that might make it much easier to pick the actual colour you want. For example, it's very hard with RGB keyboards and mice to get a nice orange colour because the RGB colour space is linear while our eyes respond to luminosity in a logarithmic way.

 

Still, the UI is a long way away right now. But maybe if someone has any experience with RGB keyboards and knows what works, what doesn't and what they'd want in a RGB configuration UI, I'd be very happy to listen to your input!

 

On 5.12.2016 at 2:40 PM, nofxz said:

IF you need a machined item, send me a pm.

I might get back to you on that offer! Right now I'm trying to see whether I can 3D-print or sinter the body for the first prototypes, but tolerances, minimal hole sizes and minimal wall thicknesses will probably prevent that from working.

Link to comment
Share on other sites

Link to post
Share on other sites

I'd buy one of these anyday. How does it attach to your PC if you are using HDMI as a connection?

 

 

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

5 hours ago, beach_boy98 said:

I'd buy one of these anyday. How does it attach to your PC if you are using HDMI as a connection?

Good to know! :D I'm still overwhelmed by how much everyone likes this project, it's quite flattering.

 

On your question: Micro HDMI (or HDMI Type-D as the standard calls it) is just the physical connector which I'm (mis)using to get all the signals out that I need. It's about as small as a micro USB connector and has 19 pins instead of 5, of which I can use 15, and space is extremely limited with the project.

 

The cable will go to an internal USB2.0 header, the two PWR_BTN pins and the two HDD_LED pins. If you wanted to customise the cable (make it longer, sleeve it, whatever), you'd only need a ~$5 micro HDMI cable from any electronics shop and the necessary Dupont pins and header housings. So in a way, the buttons cabling is fully modular ;)

Link to comment
Share on other sites

Link to post
Share on other sites

One more GPIO pin!


So, I was thinking a little. There was one GPIO left on my MCU, and it bugged me that I didn't utilise it. Today I found a way to do exactly that. Behold, the new GPIO layout:

PaTrMNO.png

 

It's not final, but I confirmed that this fits onto the PCBs and into the casing. So, we gained one more pin and I found a DIP switch that allows to decouple P1 from the button.

So, what does this mean?

 

Well, when flipping the DIP switch (for which the casing needs to be opened), the button is connected to GND on one side, so it can still be used normally when connected to the PWR_SW_P pin of the mainboard. Now P1 and P2 are a completely independent pair of IO pins, which are connected to the internal I2C signal processor. (Incidentally, you can also use P3 and P4 for EUSART, but that would still require replacing the 330R resistor with a 0R jumper.)

But that's not all.

This video from this great build shows a fading effect for the HDD LED. With now 5 pins, you can either flip the DIP switch, use P1 and P2 for reading the HDD signal out and P3 and P4 for driving an external LED, or you could leave everything as it is, and just set P2 and P4 to read the HDD signal and P3 to drive an external LED on some external ground. While the circuit used for the effect in the video isn't very complicated, it's nice to have this integrated into the button.

 

And additionally you can also drive an external switch input now. For example, if you wanted a double press on the button to reset the PC, that's now possible as well, without sacrificing any other functionality.

 

Pretty good increase in features for a single additional component if you ask me.

Link to comment
Share on other sites

Link to post
Share on other sites

First pictures of the model!

 

Alright, here is what I've got so far (more in spoiler):

 

fHAevVql.jpg

 

Spoiler

Front:

Pic1.PNG

 

Back:

pic2.PNG

 

Bottom:

Bottom.PNG

 

Top:

Top.PNG

 

Now, you can see multiple things here, some are a bit more hidden. You can see the general shape, which is is very reminiscent of a normal vandal switch, apart from a few changes. I'll walk you through those features and my reasoning behind them. If you missed any prior discussion in the thread, you can catch up here.

 

Why not something other than a vandal switch?
While some are getting tired of seeing vandal switches used so commonly or dislike that they can't be flush with the front of a case, they have a very nice and minimal front and many still like that aesthetic. Additionally, that makes installation a breeze. Modding a case to take this switch is as simple as drilling a 16mm hole.

 

Why the two flat spots?
These have both an aesthetic and a functional reason. The functional reason is that they make it easier to hold the button in the same orientation while installing it. The aesthetic reason is that it ties the micro HDMI connector in much nicer than if the whole body was round. They also work much better with the set screws in my opinion.

 

What do the two slots do?
They each serve a different purpose. The one at the front grants access to a DIP switch that allows the user to free up one GPIO pin as explained in the previous post. This allows extending the functionality of the switch without opening the switch. The one at the back is an unfortunate necessity. When disassembling the switch, one has to insert a small slot screwdriver or other stiff flat object there before pulling out the internal assembly.

 

What are the set screws for?
Holding the whole thing together. To disassemble the button, only those two screws have to be removed. Then the whole internal assembly can be pulled out the bottom of the button. This allows access to the two resistors which are in series with two of the GPIO pins. These resistors can then be swapped out to accommodate different external LEDs or to use the EUSART bus on P4 and P5. (To use the I2C bus on P1 and P2 one only has to flick the DIP switch, no modding required) You can see that one screw is showing on the bottom. I'll see whether I can fix that, but right now the screw is too close to the bottom for that to work.

 

Why use a micro HDMI connector?
This connector (also called HDMI Type-D) is the only one for external use that has enough pins and is small enough to fit the button. It is also small enough to potentially fit a smaller 12mm version of this button. It carries a USB2.0 signal and five GPIO signals, which requires at least nine pins. There are a few pins left over, which could be used in a future version with a better Microcontroller for even more GPIOs.
Using a connector like this over directly connected wiring has multiple advantages for modding. It makes it easier, cheaper and safer. If the stock cable isn't the right length, right colour or you need different terminating connectors on the other end, you can just get a micro HDMI cable for 5 bucks and modify that to your hearts content. There's no risk of damaging the button by soldering and you don't even have to open it.

 

What are the 12 slots on the top for?
Those direct the light from the twelve independent RGB LEDs to the top. They are very visible in these pictures, but the actual cover ring will be frosted and I will do some testing beforehand to make sure that the slots don't show when the button is turned off and the separate LEDs lights don't bleed into each other inside the ring when turned on.

 

What is the purpose of those weird shapes at the bottom?
They serve alignment purposes. Some animations on the switch might be dependent on orientation, so the switch needs to know where "up" is. Usually it will consider the triangle to be "up", but if that is not desired (for example if that orientation would block the connector), one can set in the software which of the lines is the top one. Unfortunately, there's no space for an accelerometer inside the switch with the current manufacturing techniques I'm using, so this is has to be done manually.

 

Final thoughts
Of course, all of this is in flux and subject to change, but apart from a few small internal things that need to be changed I'm quite happy with the current status of the button. The next step would of course be a prototype, but I doubt that I'll make it to that stage this year. I'm also dreaming of replacing part of the internal structure with a flex-rigid assembly, which would free up a lot of space that is used by board-to-board interconnects at the moment, but prototyping that can be extremely expensive compared to a regular multi-PCB assembly.

 

Thanks for reading, let me know what you think!

Link to comment
Share on other sites

Link to post
Share on other sites

Learning from mistakes.

So today I had a bit of time and wanted to complete the BOM that I already started working on. This uncovered a very dumb mistake that I've made previously: I didn't finish the BOM right away. The problem there was that I didn't check whether the exact variant of the board-to-board connectors I wanted to use was available to buy. As it turns out, it isn't. This means that I have to use a different variant with two bosses that turned this

k7bCIcv.png

into this:

NboPwmc.png

Whoopsy daysie, that's not good. So I spent the better part of the day reworking all three PCBs, two of them are finished now. What an unnecessary hold-up. I also tidied the schematics up, they are much nicer to look at now.

Link to comment
Share on other sites

Link to post
Share on other sites

As a person who can't understand schematics that looks cool. How many layers is the PCB going to be in the end?

 

 

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

1 hour ago, beach_boy98 said:

As a person who can't understand schematics that looks cool. How many layers is the PCB going to be in the end?

Yeah PCB layouts look pretty technical. Though this is not a schematic. A schematic drawing is what I've posted here, it's greatly helps understanding how everything is connected up. The layout then is the actual drawing of every single trace on the PCB, and that can get very confusing very quickly.

 

The final electrical assembly will consist of three PCBs. Two of them have two layers, one has four.

Link to comment
Share on other sites

Link to post
Share on other sites

  • 1 month later...

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.

Link to comment
Share on other sites

Link to post
Share on other sites

4 hours ago, iFreilicht said:

-snips-

This'd make the perfect power button for my next build :P Any ideas on pricing? (I cba to read through the whole thread again xd)

USEFUL LINKS:

PSU Tier List F@H stats

Link to comment
Share on other sites

Link to post
Share on other sites

19 hours ago, TheRandomness said:

This'd make the perfect power button for my next build :P Any ideas on pricing? (I cba to read through the whole thread again xd)

Great to hear! Not really. I'm aiming for a ballpark of 30€, but it's hard to know how achievable that is, it highly depends on the manufacturing volume.

Link to comment
Share on other sites

Link to post
Share on other sites

Update!

As we all know, not everyone has the same level of expertise when it comes to electronics, soldering or modding in general. So, for those of us who don't have crimping or soldering equipment at home or want to modify the pinout of the button easier, I threw a quick (2 days) breakout-board together:

kZGe2UC.png
ppy55TZ.png

So if you need a longer/shorter cable or want to do custom stuff with the pins, you only need this, a microHDMI to HDMI cable, an internal USB cable and ideally a short zip-tie for materials and a slot screwdriver and box cutter for tools.

To fix the breakout board to the case you can either use screws or double-sided tape, but the latter would either require tape about 2mm thick or cutting the protruding pins off with a flush-trim sidecutter:

cPc6Td7.png

In the form you see here, the whole assembly is 12(H)*32(D)*36(W)mm in size, but you can get the height down to about 10.2mm by cutting the pins off and I will get those terminal blocks and a bit of prototype board to see how close I can get the two together without compromising usability. For a e s t h e t i c s, I also made a case that could be 3D-printed:

adnB5Wm.png

It's just transparent here for illustrative purposes, it could be any other colour, but you can see where the zip-tied bundle of cables would exit. When connecting an RGB LED strip or stuff like that, you could probably stuff the cable connections into there as well to get a clean look.

The total dimensions with the case are 14(H)*34(D)*39(W), so most cases should have space for it somewhere. If a case supports a 15mm thick 2.5" drive, then this will fit with no problem whatsoever.

Of course, for the highest possible space efficiency, you'll have to modify a microHDMI cable yourself.

What do you think? Would you use this instead of making your own cable?

Link to comment
Share on other sites

Link to post
Share on other sites

Personally modding a Micro HDMI cable wouldn't be an issue. For other people I think a box like this would be great. +1 to buy one, once they are released though.

 

 

 

 

Link to comment
Share on other sites

Link to post
Share on other sites

  • 1 month later...

Update! First Hardware tests and a surprise!

TL;DR: Got an Arduino Micro to test how stuff would work.

This is what my testing setup currently looks like:

zMtwBRl.jpg

I'll go through the parts and explain what they do and what they simulate.

  1. Arduino Micro: This is basically a breakout of the ATMega32u4, which will be the MC inside the button. Connecting that to my PC, I can implement firmware features easily and check their feasibility before committing to a Prototype PCB.
  2. The six long orange wires: Those connect the pins PF[014567] of the MC to the "actual" GPIO pins of the button, which I'll be dubbing P[1-6]. The "internal" PF pins offer a separate ADC-channel (analog input) each and PF[4-7] expose the JTAG serial interface on P[3-6] for anyone who wants to use it.
  3. The multi-coloured wires below those connect the PD[2-3] and PB[0-3] pins of the MC to the P[3-6] "actual" pins. The former two will provide 2-wire serial interface on P[1-2], the latter SPI serial on P[3-6] and all of them can also act as digital interrupt inputs.
  4. The button and the short wires around it simulate the pushbutton itself and the switch that can be used to free up P1 when required. The configuration seen in the picture is the standard one, where P0 and P1 both connect to one side of the button. When moving the button on the breadboard one column to the right, it is connected to P0 and GND.
  5. The bridge row of orange wires and resistors represents the actual I/O pins P[0-6]. In the picture, two LEDs are connected to the latter four pins.
  6. Arduino Uno: This one is set up and programmed to flash a new bootloader onto the Arduino Micro. This was an important part for testing and will be useful in the future as well when I replace the original bootloader with my modified version.


So, what did I test with this thing so far?

Most importantly, I tested whether I could flash a new bootloader with the series resistors and the parallel internal I/O pins. As you can see or may already know, there is one series resistor of 330Ω on both P5 and P3 to comply with Intels Front I/O Design Guide, to allow driving the LEDs of existing front panels with the button if so desired. Those pins are also used for the SPI interface, through which the bootloader is flashed onto the MC. Additionally, they are also connected to another I/O pin each for enhanced functionality. In some cases you need isolation circuitry to make sure that the SPI signals can reach the MC unimpeded.

Luckily, all GPIOs are left in their standard state during programming, which means that none of them interfere with the SPI signals. And additionally, the resistors didn't influence the reliability of flashing at all. Even when putting 1K resistors in there, the bootloader flashed perfectly with no issues.

This means that the bootloader of a fully assembled button can be flashed, which in turn means that I won't have to do the assembly myself but can let a contractor take care of that if production volume justifies it. Very useful! Additionally, it gives me a little bit more freedom when laying out the components onto the board.

The only other thing I did so far was to implement a rudimentary version of the non-RGB part of the firmware, which will probably go through many iterations before I'm satisfied with it.

And finally, I had a little chat with the people from Arduino about a possible collaboration! There's nothing set in stone yet, so I don't want to go into any details yet, but I hope we can work something out and I'm very excited for it!

Link to comment
Share on other sites

Link to post
Share on other sites

Update! Please vote for the project name!

I've narrowed it down to three final candidates. One Latin word followed by the number 16 to denominate the hole diameter. The meaning of the word is written in parenthesis. The initial list was almost 70 words long.

 

Vote here!

 

If you have any additional thoughts, please let me know!
 

Link to comment
Share on other sites

Link to post
Share on other sites

16 hours ago, iFreilicht said:

snip
 

I prefer it be called the Vandal button tbh.

 

And sign me up if its made of machined aluminum. I'd drop $50 bucks for one if it is plug and play.

I7-7700k@5.1ghz + 1080ti @ 2050mhz + 32gbs Ram + 2TB SSD = CSGO

i7-6700k@4.9ghz + 980ti @ 1501mhz + 16gbs Ram + 1 TB SSD = Backup

i7-3770k@4.8ghz + 680 4gb + 32gbs Ram + 500gb SSD = Retired/Office work

Link to comment
Share on other sites

Link to post
Share on other sites

@iFreilicht - If it can be made plug-and-play and the aluminium can be anodised black, I'll buy two off you.

Main Rig "Melanie" (click!) -- AMD Ryzen7 1800X • Gigabyte Aorus X370-Gaming 5 • 3x G.SKILL TridentZ 3200 8GB • Gigabyte GTX 970 G1 Gaming • Corsair RM750x • Phanteks Enthoo Pro --

HTPC "Keira" -- AMD Sempron 2650 • MSI AM1I • 2x Kingston HyperX Fury DDR3 1866 8GB • ASUS ENGTX 560Ti • Corsair SF450 • Phanteks Enthoo EVOLV Shift --

Laptop "Abbey" -- AMD E-350 • HP 646982-001 • 1x Samsung DDR3 1333 4GB • AMD Radeon HD 6310 • HP MU06 Notebook Battery • HP 635 case --

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, PCMasterDebater said:

I prefer it be called the Vandal button tbh.

 

And sign me up if its made of machined aluminum. I'd drop $50 bucks for one if it is plug and play.

 

3 hours ago, rjfaber91 said:

@iFreilicht - If it can be made plug-and-play and the aluminium can be anodised black, I'll buy two off you.

 

Thanks to you two!  Yeah just calling it Vandal button would be the most simple name, but I need the name to be memorable so people who google it can find it easily. I tried to translate vandal into latin and make that work somehow, but none of those names really sounded that good. Additionally, I might do different versions of this in the future with more features. I'd like to do a large one that can fit a mechanical keyboard switch, so you could customise how pressing the button feels, for example.

 

Yes, I want to make it from aluminium. The walls of the button should be thick enough to make that work. Anodising is an obvious choice for finish, but I don't want to rule out any other options :)

 

What constitutes plug and play for you? Some of the features are absolutely plug and play, but will require additional software.

 

Using the button as a regular button is p&p, same goes for the LEDs lighting up when the PC is on and flashing during HDD activity. On both accounts, it's even more p&p than other power buttons and LEDs, because both those features will work no matter which way you plug the connectors into the Mainboard headers. To disable the LED flashing with HDD activity, you just don't plug it into the Mainboard.

 

But, to customise the colour and effects or to set up the headers to drive an external Front I/O LED, you'd have to install a piece of software. I want to keep that very minimal, no bloated edgy Gamer-UI like all the RGB control software for keyboards and mice has that sucks up RAM and CPU resources and takes forever to start. I'm more going for something akin to the BlinkStick software. Additionally, you can also use the Arduino IDE to customise effects to an unlimited extent and to use the various secondary functions of all the headers.

 

EDIT: It might also be possible to make this software an online-configuration tool so you don't have to install anything. Not sure whether browsers can access any kind of USB device, though. I'll have to look into it.

EDIT2: What would be possible is for the button to pretend to be a USB-stick. After making your configuration in the web-tool, you'd download a hex-file and select the button as the download location. Sounds like a good system to me. For the very advanced stuff you'd still need the Arduino IDE, though.

 

However, now that you mention this, I could make it so that you can choose what effects and colours are pre-loaded onto the button before it is delivered with so you don't have to change them yourself. I would then load those effects onto the button for you. The standard would probably be white colour, a short spinning ring animation when the PC is turned on and a dampened flashing animation during HDD activity.

Link to comment
Share on other sites

Link to post
Share on other sites

2 hours ago, iFreilicht said:

Thanks to you two!

 

(...)

 

However, now that you mention this, I could make it so that you can choose what effects and colours are pre-loaded onto the button before it is delivered with so you don't have to change them yourself. I would then load those effects onto the button for you. The standard would probably be white colour, a short spinning ring animation when the PC is turned on and a dampened flashing animation during HDD activity.

That's a lengthy stream of consciousness, but yes, having the settings pre-loaded onto the button would absolutely constitute plug-and-play as far as I'm concerned. :)

Main Rig "Melanie" (click!) -- AMD Ryzen7 1800X • Gigabyte Aorus X370-Gaming 5 • 3x G.SKILL TridentZ 3200 8GB • Gigabyte GTX 970 G1 Gaming • Corsair RM750x • Phanteks Enthoo Pro --

HTPC "Keira" -- AMD Sempron 2650 • MSI AM1I • 2x Kingston HyperX Fury DDR3 1866 8GB • ASUS ENGTX 560Ti • Corsair SF450 • Phanteks Enthoo EVOLV Shift --

Laptop "Abbey" -- AMD E-350 • HP 646982-001 • 1x Samsung DDR3 1333 4GB • AMD Radeon HD 6310 • HP MU06 Notebook Battery • HP 635 case --

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×