Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Idea: Rotary Encoder #22

Open
dmcgits opened this issue Jun 22, 2019 · 13 comments
Open

Idea: Rotary Encoder #22

dmcgits opened this issue Jun 22, 2019 · 13 comments

Comments

@dmcgits
Copy link

dmcgits commented Jun 22, 2019

Have you ever considered one of these for the ergodash? Apologies that I’m suggesting rather than attempting it myself, I’m still new to circuits/kiCad.

The Preonic’s rotary encoder is pretty neat and I’d love to replace maybe my top row innermost keys (currently -, + in the laser image) with a rotary encoder. Alternatively, it could be thumb accessible on the snap-off section.

The Preonic uses a twisting stick style dial, but with an ortho being so friendly to home row users it’d be slick if it were a drum you could roll with a thumb or forefinger without flexion. Like a Logitech G810 but the width of a keycap :)

Since Jack added one to Preonic I’m guessing QMK support is there too.

Thanks for reading and thanks again for your generosity!

@brethash
Copy link

brethash commented Jun 23, 2019

For what its worth, I'd love something like this and have been thinking about if it could work. I was literally just telling a friend of mine today how much I've been loving my Ergodash, but that I was considering building an Iris just to play around w/ the addition of a rotary encoder.

I did notice during the build that there seem to be some indications on the PCB for an I2C interface, but I'm not 1000% sure how to access that. If that were possible, you could theoretically leverage it to add an I2C-ready rotary encoder. I found this project which looks like turned into this, which I think you can buy here or maybe even here (I think!).

@omkbd I don't suppose you might be able to shed a little light on this potential implementation?

Edit: Adding the Iris QMK config here for reference.

Double Edit: I dug through the schematics with my good friend @kevin-mitchell and got a rough idea of where the SCL and SDA/UART pins end up! I haven't had time to really figure out if we'd need to bridge the xtradata and scl pads or not though to activate the SCL? My preliminary guess is yes, but I'm sleepy! Anyway, that conceivably gets us VCC, GND, SCL, and SDA, which is almost everything we need! I think the last piece of the puzzle is trying this into an available GPIO pin for the INT connection on that I2C Encoder. Maybe steal the audio pin since it isn't currently supported? Must sleep now.
Screen Shot 2019-06-23 at 3 41 25 PM
Screen Shot 2019-06-23 at 3 42 39 PM

@omkbd
Copy link
Owner

omkbd commented Jun 23, 2019

I am already working on the implementation of the rotary encoder. However, I am worried about where to place it. I think that the position of the thumb is the best.

@brethash
Copy link

brethash commented Jun 23, 2019

I was also thinking somewhere around the thumb cluster. I'm curious how you were going about the implementation? Would this be an add-on for the current v1.2 board or would this be something for a v1.3? I was thinking of just whipping up a little enclosure for the encoder and its pcb that attaches with the top case plate via the screw at the top of the thumb cluster. Then I was just going to throw it on my 3d printer and see where it takes me. :)

@dmcgits
Copy link
Author

dmcgits commented Jun 24, 2019

Thanks so much @omkbd for responding, also @brethash!

What if you had a V1.2 and a V1.2R, the R being a version with rotary encoder?

I’m having a think about the positioning and will sketch them down, maybe it’ll be useful.

@omkbd
Copy link
Owner

omkbd commented Jul 4, 2019

Testing...
IMG_20190704_203844

@dmcgits
Copy link
Author

dmcgits commented Jul 4, 2019

Haha, lovely! Will it be difficult to make it work on both sides of pcb like your switch mounts do?

@dmcgits
Copy link
Author

dmcgits commented Oct 6, 2019

Hi @omkbd, how did the testing go? Is there somewhere you’d rather I ask questions? Maybe Discord?

@MattBlissett
Copy link
Contributor

MattBlissett commented Nov 12, 2019

In case anyone else wants to hack this on an existing board:

encoder

encoder-wiring

I'm not using the backlight or audio, so these two pins are available, and there's conveniently a trace bringing them across the board.

It's then simple to add support in QMK: MattBlissett/qmk_firmware@16ed43b

The encoders are jammed into the MX plate holes with some bits of folded cardboard. Since the keyboard is going to stay on my desk, this is probably OK for a while.

whipping up a little enclosure for the encoder and its pcb that attaches with the top case plate via the screw at the top of the thumb cluster

That would be much neater. Another option is to 3D print or use a tiny PCB that fits in the MX hole, like this one (except that's for handwired keyboards).

Will it be difficult to make it work on both sides of pcb like your switch mounts do?

I doubt it, as the wiring is symmetrical:

A C B 
| | | 
[===]
 | |
 D E

C is the common pin, A and B are the signals when rotating. D and E are the push button (I have not connected the push button).

@n8gray
Copy link

n8gray commented Dec 4, 2019

Oh dear lord, now I can't live without this. I've been debating between Redox and ErgoDash but this decides it.

@dyamon
Copy link

dyamon commented Feb 9, 2021

Hey @MattBlissett , noob-ish guy here! Would you mind giving a bit more details on how to connect the wires on the encoder side? Do you get both rotation and push botton functionalities?

@MattBlissett
Copy link
Contributor

Hi,

I don't use the push button of the encoder -- the ones I bought are rather stiff to push, so I didn't feel I needed it. There's also nowhere to connect it, unless you swapped one of the nearby keys for a double-height one and used the freed-up connection, but I don't see the benefit.

There was a typo in my comment above, which I've fixed (above too):

A C B 
| | | 
[===]
 | |
 D E

The middle pin C is the common pin, which I connected to the unused audio trace. A and B are the signals when rotating, they are activated in a special pattern (Gray code) when rotating the knob. These I connect to the backlight trace:

68679555-63590880-0560-11ea-96cf-b1bd669439ec

If you connect A and B the "wrong" way around, just change the key mappings in your QMK code accordingly.

@dyamon
Copy link

dyamon commented Feb 9, 2021

Thank you very much!

There's also nowhere to connect it, unless you swapped one of the nearby keys for a double-height one and used the freed-up connection, but I don't see the benefit.

Oh I see, that's because you installed it in the extra thumb key, which I removed. I'm planning on putting it next to it where I have the connection directly under the encoder. So it seems like I might be able to get the push button functionality as well.

The middle pin C is the common pin, which I connected to the unused audio trace. A and B are the signals when rotating, they are activated in a special pattern (Gray code) when rotating the knob. These I connect to the backlight trace

Thanks, this is super useful!

@gregor-on
Copy link

gregor-on commented Feb 22, 2023

it can be done relatively easy, by utilising led's pins from the board Arduino, and also I've been able to add displays by changing D0 to D2 and attaching display there see at gdoes.art , I'm not great at this github thing, not sure how to share it. message me and I'd like to attach it here including CAD files etc. btw I used vertical encoders, mouse - like setup. Ergodash is a great platform to play with, it is a shame it is so hard to get it working with VIA tho

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants