Hello everyone,
after an extremely stressful year I'm trying to resume normal life and try to have a bit of time for hobbies. To kick things off I wanted to something relatively simple. The QL keyboard looks great but trying to type on it is frankly quite painful. So the idea was born to try to hook up a USB keyboard to the QL. Easiest way to go about it was to get inspiration from an existing design. The Jurgen Falkenberg PC keyboard adapter was an interesting approach to the problem so I started to see how to bring that idea to the modern world.
I ended up throwing together an analogue crosspoint switch (Zarlink MT8808), an Atmega328P microcontroller and a USB host controller chip (MAX3421E). There's an existing USB host library for Arduino and it was a straightforward job to adapt it to the job of controlling the crosspoint switch based on input from the USB keyboard. The crosspoint switch matrix chip interfaces with the 8049 chip on the QL main board emulating the keyboard membrane switches. The PCB sits inside the QL in the 8049 socket. Like in the Jurgen Falkenberg design, the 8049 chip needs to be removed from its socket and seated on the keyboard adapter PCB.
The first prototype batch of PCBs arrived today from China so I was eager to solder one together to show you guys. My soldering skills leave a lot to be desired but I somehow managed to get even the fine pitch SMD components on the board successfully. Having never worked with 0603 footprint components it was rather slow going and it took me around three hours to solder everything in. Next one is going to be faster (I hope!)
I'm open sourcing the design including Eagle design files and the associated software for the microcontroller so if somebody wants to enhance the solution, please feel free to contribute! Details to follow...
Also, the minimum order for the PCBs was five pieces and for some reason the factory actually sent seven pieces. If anyone is interested in trying it out once I have tested the board I would be happy to solder one up and send over for testing. I ordered enough components from Mouser for five boards initially. Some of the components are a tad on the expensive side bringing the total cost for the board up to around 32€.
One thing I have not gotten around to yet is support for different keyboard layouts. Currently it is Finnish only But, I'm willing to work together with anyone willing to help in adding support for other layouts, obvious starting points being the UK and German layouts.
Since this is a hobby project for me, I'm not looking to make money on this, it is not going to be a commercial product and there will definitely NOT be any kind of warranty and/or service for it!
I'm hoping to post a video of the keyboard in action in the near future.
Well, sorry for the long post but I hope someone finds this interesting.
By the way, this is the first PCB I have ever designed so please go easy on the critique...
Kind regards,
Petri
USB Keyboard Adapter for the QL
- vanpeebles
- Commissario Pebbli
- Posts: 2821
- Joined: Sat Nov 20, 2010 7:13 pm
- Location: North East UK
Re: USB Keyboard Adapter for the QL
Your solution looks good and I don't want to whinge about it but I do have a suggestion:
Instead of designing something that simulates a membrane keyboard to an existing coprocessor,
Wouldn't it be better to just replace the 8049?
This would also be an advantage for an FPGA implementation or a new source for spares for the existing QLs or a help in designing a new QL board.
It could then be a Hermes replacement with USB keyboard enhancement.
Please comment on this idea, I am keen on any thoughts about this
kind regards Paul
Instead of designing something that simulates a membrane keyboard to an existing coprocessor,
Wouldn't it be better to just replace the 8049?
This would also be an advantage for an FPGA implementation or a new source for spares for the existing QLs or a help in designing a new QL board.
It could then be a Hermes replacement with USB keyboard enhancement.
Please comment on this idea, I am keen on any thoughts about this
kind regards Paul
Re: USB Keyboard Adapter for the QL
Hi Paul,Paul wrote:Wouldn't it be better to just replace the 8049?
I agree 100% - that would be a great idea! However, such a project is outside the scope of my limited time for hobbies/recreation so unfortunately I don't have a chance to participate in such an endeavour. There seem to be a lot of FPGA projects going on nowadays, which is nice.
By the way, isn't (non-Super) Hermes a pin-compatible 8049 replacement chip? I have one sitting somewhere and was planning to test it with this adapter.
Kind regards,
Petri
Re: USB Keyboard Adapter for the QL
Yes it is. It would be cute if it had PC Keyboard support in it.ppe wrote:By the way, isn't (non-Super) Hermes a pin-compatible 8049 replacement chip?
- XorA
- Site Admin
- Posts: 1367
- Joined: Thu Jun 02, 2011 11:31 am
- Location: Shotts, North Lanarkshire, Scotland, UK
Re: USB Keyboard Adapter for the QL
Nice bit of work, I was kicking around some ideas for this type of device but you beat me to it!
One task off my list then
One task off my list then
Re: USB Keyboard Adapter for the QL
SuperHermes has a PS/2 adapter included.Paul wrote:Yes it is. It would be cute if it had PC Keyboard support in it.ppe wrote:By the way, isn't (non-Super) Hermes a pin-compatible 8049 replacement chip?
ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
Re: USB Keyboard Adapter for the QL
I have never seen one. Are they for sale?
Or open source?
That's what the community needs.
To me it seems to be like aurora. Or a unicorn.
Tales from the past.
Or open source?
That's what the community needs.
To me it seems to be like aurora. Or a unicorn.
Tales from the past.
- vanpeebles
- Commissario Pebbli
- Posts: 2821
- Joined: Sat Nov 20, 2010 7:13 pm
- Location: North East UK
Re: USB Keyboard Adapter for the QL
I think Super Hermes was AT? Here is mine before it got fitted ages ago
Re: USB Keyboard Adapter for the QL
Depends on what plug you actually solder to it. AT keyboard and PS/2 keyboard connectors are electrically identical
ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO