Current status:
2017-06-16: First and most important Prototype parts arrived!
2017-03-24: "Bleeding Edge Edition" Sign-Up!
Well, here it is:
https://******/forms/Jdq6ZzC8VFhPTaoJ3
Details inside. Quantity limited to 16. The winners will be picked manually at my discretion, not randomly. If you've got any more questions, ask away!
2017-03-16: Please vote for the product 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!
2016-12-13: First pictures of the model!
Alright, here is what I've got so far:
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.
2016-12-11: GPIO pin layout!
If pairs of the already broken-out GPIO pins could be used for I2C, these could be used to daisy-chain buttons without any extra hardware (and allow for easier synchronisation of multi-button effects than through a shared USB hub). That's a pretty rare use-case though.
Boy do I have news for you.
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:
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.
That video was the reason why I thought about the button controlling LEDs in the first place. Unfortunately this particular setup would require more GPIOs than I have available.
The video I posted 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.
Can't you provide a header for "reset " output that can be connected to the motherboard, which is activated by one the GPIOs configured as open collector output ?
Well and of course you can also drive an external switch input if you want to.
Pretty good increase in features for a single additional component if you ask me.