PIC32MX KBD
Posted: 02 Mar 2017, 13:28
I'm putting the finishing touches(almost) my first keyboard build, just happens to be split into to boards.
The motivation is a practical one, I'm rebuilding a 3 axis cnc mill and the main Fanuc controller is missing, and who wants to store your gcode on reel to reel tape anyway, well ok that might be neat, but not really practical for what I need. So I have replaced the cnc controller with a modern PC and a couple of FPGAs, but now I need to get a good way to interface with the system as the old HMI is dead. None of the panels I looked at really suited my purpose. Any idea on those keycaps? The plan, use the same space to fit in two keyboards and a touch screen.
Here are the two boards a 44key and a 59 key. I really like this one. I got extras to make up a desktop version. I've used a PIC32MX270F256D as the mcu as I'm kind of familiar with PICs, I don't see many PIC mcu in keyboards, I'm going to guess that is because of the boot loader and lack of friendly keyboard firmware. Anyone usings PICs? The few LED's that there are come off a 16 bit i2c port expander (not really necessary) but the keyboard controller gets will get used in other places around the cnc machine and I wanted to have the extra io for that. The port expander I wish I had not put on the bottom of the board as it will not quite sit as flat as I would have liked and I have to space controller off keyboard by at least 5mm.
The plates are stainless steel and the whole assembly is very rigid. There is provision for a back plate to mounted that is the same size as the PCB +0.5mm. Main purpose for this is keep other cables inn the HMI box away from the keyboards. I used plate mount Gateron greens.
Some oddites:
I use a 10kHz scan rate (over kill, but... it does a very nice snappy keyboard), usb on the OS still only reports at 500Hz(linux), donno why but I could not get 1000Hz working, either way I have already denounced, mapped, and timed ordered the key presses and releases by the time comes around to send the next key report. Gateron Greens don't seem to have much bounce, but I have not put them on the oscilloscope to see what they are really like.
The RJ45 connector is for RS422, which is runs a protocol which talks directly with the FPGA. Some key go over usb, some go over RS422. If I dont populate the RJ45 or the RS422 chip it is a normal uart, and I use that for debugging on my development board. I had planned on putting an micro sd card on the back and using that as a USB mass storage device as well as a place to load new keymaps from, but a via appeared where it should not have been, anyway not for this version but maybe the next version if there is ever one. I'm liking the way ELF is going so I might just use that in the future.
Still todo. numpad mouse. but that might be a while before I get around to programing that.
The motivation is a practical one, I'm rebuilding a 3 axis cnc mill and the main Fanuc controller is missing, and who wants to store your gcode on reel to reel tape anyway, well ok that might be neat, but not really practical for what I need. So I have replaced the cnc controller with a modern PC and a couple of FPGAs, but now I need to get a good way to interface with the system as the old HMI is dead. None of the panels I looked at really suited my purpose. Any idea on those keycaps? The plan, use the same space to fit in two keyboards and a touch screen.
Here are the two boards a 44key and a 59 key. I really like this one. I got extras to make up a desktop version. I've used a PIC32MX270F256D as the mcu as I'm kind of familiar with PICs, I don't see many PIC mcu in keyboards, I'm going to guess that is because of the boot loader and lack of friendly keyboard firmware. Anyone usings PICs? The few LED's that there are come off a 16 bit i2c port expander (not really necessary) but the keyboard controller gets will get used in other places around the cnc machine and I wanted to have the extra io for that. The port expander I wish I had not put on the bottom of the board as it will not quite sit as flat as I would have liked and I have to space controller off keyboard by at least 5mm.
The plates are stainless steel and the whole assembly is very rigid. There is provision for a back plate to mounted that is the same size as the PCB +0.5mm. Main purpose for this is keep other cables inn the HMI box away from the keyboards. I used plate mount Gateron greens.
Some oddites:
I use a 10kHz scan rate (over kill, but... it does a very nice snappy keyboard), usb on the OS still only reports at 500Hz(linux), donno why but I could not get 1000Hz working, either way I have already denounced, mapped, and timed ordered the key presses and releases by the time comes around to send the next key report. Gateron Greens don't seem to have much bounce, but I have not put them on the oscilloscope to see what they are really like.
The RJ45 connector is for RS422, which is runs a protocol which talks directly with the FPGA. Some key go over usb, some go over RS422. If I dont populate the RJ45 or the RS422 chip it is a normal uart, and I use that for debugging on my development board. I had planned on putting an micro sd card on the back and using that as a USB mass storage device as well as a place to load new keymaps from, but a via appeared where it should not have been, anyway not for this version but maybe the next version if there is ever one. I'm liking the way ELF is going so I might just use that in the future.
Still todo. numpad mouse. but that might be a while before I get around to programing that.