![]() |
Forum Index : Microcontroller and PC projects : Keyboard for Micromite Plus
![]() ![]() ![]() ![]() |
|||||
Author | Message | ||||
WhiteWizzard Guru ![]() Joined: 05/04/2013 Location: United KingdomPosts: 2948 |
Hi G, Any reason why not output PS2 signals so that it can connect straight into the MM as it is? The PS2 protocol is easy to mimic although the timings would require use of a CFunction (if you were basing the 'interface' on MMBasic. WW |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
Do tell - what's involved in mimicing PS/2? Smoke makes things work. When the smoke gets out, it stops! |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
UPDATE: I have removed the FPC(flexible Printed Circuit) socket from the circuit board using Chip-Quik, and have used it to find some new replacements. You can buy 10 of these connectors for US$5 with free freight from eBay. FPC connector to suit blue keyboard matrix I also designed an extremely simple breakout PCB for this connector, so that I can experiment with the matrix decoding. This PCB I will etch here at home tomorrow, as it is so small and simple, and then I can get to experimenting with the matrix right away. ![]() At this stage, I am going to try the "Rob method"(robert.rozee) to decode the matrix - a small plug-pack, and an LED + resistor. I will translate the keypresses from the matrix, into a spreadsheet for future reference, and also for including in the constructors pack. Smoke makes things work. When the smoke gets out, it stops! |
||||
Positron![]() Newbie ![]() Joined: 09/08/2015 Location: ArgentinaPosts: 15 |
Grog, Frank, others, below is the link to the spreadsheet I made to document the key layout in row/column fashion for the Chatpad matrix used in my mini terminal project (arduino based) some time ago. It's output was simple one byte ASCII codes. I used a chinese clon that had a non programmable chip, so I removed it and used the matrix directly connected by the TP points ( refered in the table) that are easy solderable to thin cables. Maybe I'll resurrect it and reprogram the mappings for the MMite+ Chatpad_Matrix_Link |
||||
Frank N. Furter Guru ![]() Joined: 28/05/2012 Location: GermanyPosts: 950 |
Hi Positron, thank you very much! Frank |
||||
CircuitGizmos![]() Guru ![]() Joined: 08/09/2011 Location: United StatesPosts: 1427 |
There are so many Robs running around. -Rob (CG) Micromites and Maximites! - Beginning Maximite |
||||
bigmik![]() Guru ![]() Joined: 20/06/2011 Location: AustraliaPosts: 2956 |
Robs, At least we aren't flooded with Micks. ![]() Mick Mick's uMite Stuff can be found >>> HERE (Kindly hosted by Dontronics) <<< |
||||
OA47 Guru ![]() Joined: 11/04/2012 Location: AustraliaPosts: 1000 |
@Grogster, I take it from your change of avatar that you are now at peace with the mosfets ![]() |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
Yes, as I was teaching myself about MOSFET's being a NPN/PNP man, I thought it was time for a change of avatar at the same time as I put up the new website. That avatar is actually my company logo, so I figured I might as well use it - I paid to get the logo designed, I might as well use it! ![]() The company logo used to be just the bitmap version of the same MOSFET, and I gave that to the graphics guys doing the site, and they designed the "New" MOSFET logo, and I must say - it looks much better then the B/W bitmap - but then, I would say that! ![]() However, I digress....... Smoke makes things work. When the smoke gets out, it stops! |
||||
MicroBlocks![]() Guru ![]() Joined: 12/05/2012 Location: ThailandPosts: 2209 |
G, Did you already figure out the keyboard matrix? I ordered the same keyboard but mine did not arrive yet. I think i want to use a small pic and maybe a 3-8 decoder to change it into a usb hid or serial keyboard. Before ordering some chips i need to know how many ros and columns there are. Microblocks. Build with logic. |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
Yes, last night, as it happened! ![]() Here are some shots: ![]() ![]() ![]() From what I can see, it would appear to be a 8 x 16 matrix, with the eight on the top layer, and the 16 on the bottom. The hand-written chart above lists the keycode connections in the CODE column, in a BOTTOM LAYER,TOP LAYER format. Therefore, the ENTER key is CODE 12,20 - meaning lines 12 and 20 will give a closure if ENTER is pressed. There is a normal resistance on this matrix ranging from about 50R through to about 350R for the longest traces. EDIT: The chart is missing one data point for the ':' key - it should read 12,18. Pin '1' is the trace closest to the writing on the FPC cable: 'HASKEY.....' etc. Smoke makes things work. When the smoke gets out, it stops! |
||||
MicroBlocks![]() Guru ![]() Joined: 12/05/2012 Location: ThailandPosts: 2209 |
G, I found some small mistakes in your table. J and L are both 09,20 F8 and F12 are both 10,15 F10 and F11 are both 12,15 ! is missing : is 12,21 and in your edit it is 12,18 I have sorted a list by row and column. [code] ---------- 1 --------- Fn 01 20 Command 01 22 ---------- 2 --------- Alt 02 18 ---------- 3 ---------- Shift 03 18 ---------- 4 ---------- Ctrl 04 15 ---------- 5 ---------- Esc/~ 05 15 F1/1 05 16 Q 05 17 Tab 05 18 A 05 20 Z 05 21 ---------- 6 ---------- F2/2 06 16 W 06 17 Caps 06 18 S 06 20 X 06 21 --------- 7 ----------- F3/3 07 16 E 07 17 D 07 20 C 07 21 ---------- 8 ---------- F5/5 08 15 F4/4 08 16 R 08 17 T 08 18 F 08 20 G 08 22 V 08 23 ---------- 9 ---------- F6/6 09 15 F7/7 09 16 O 09 17 Y 09 18 *J 09 20 *L 09 20 N 09 21 H 09 22 B 09 23 ---------- 10 --------- *F8/8 10 15 *F12/+ 10 15 I 10 17 K 10 20 M 10 21 ---------- 11 --------- F9/9 11 15 U 11 17 < 11 21 ---------- 12 --------- *F10/0 12 15 *F11/- 12 15 P 12 17 ? 12 18 Enter 12 20 : 12 21 > 12 23 ---------- 13 --------- Left 13 23 Up 13 22 ---------- 14 --------- Del 14 18 Shift 14 21 ---------- 15---------- Ctrl 04 15 Esc/~ 05 15 F5/5 08 15 F6/6 09 15 *F8/8 10 15 *F12/+ 10 15 F9/9 11 15 *F10/0 12 15 *F11/- 12 15 ----------- 16 ---------- F1/1 05 16 F2/2 06 16 F3/3 07 16 F4/4 08 16 F7/7 09 16 ----------- 17 ---------- Q 05 17 W 06 17 E 07 17 R 08 17 O 09 17 I 10 17 U 11 17 P 12 17 ----------- 18 ----------- Alt 02 18 Shift 03 18 Tab 05 18 Caps 06 18 T 08 18 Y 09 18 ? 12 18 Del 14 18 *! 18 ---------- 19 ----------- Space 19 22 Down 19 23 ---------- 20 ----------- Fn 01 20 A 05 20 S 06 20 D 07 20 F 08 20 *J 09 20 *L 09 20 K 10 20 Enter 12 20 ---------- 21 ---------- Z 05 21 X 06 21 C 07 21 N 09 21 M 10 21 < 11 21 : 12 21 Shift 14 21 ---------- 22 ----------- Command 01 22 G 08 22 H 09 22 Up 13 22 Space 19 22 ---------- 23 ---------- V 08 23 B 09 23 > 12 23 Left 13 23 Down 19 23 Right 24 23 ---------- 24 --------- Right 24 23 [/code] Microblocks. Build with logic. |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
Thanks for that! ![]() I will re-probe those ones, and find out where I went wrong. ![]() '!' is SHIFT F1/1 - 05,16 (plus SHIFT key) Smoke makes things work. When the smoke gets out, it stops! |
||||
MicroBlocks![]() Guru ![]() Joined: 12/05/2012 Location: ThailandPosts: 2209 |
Here is the matrix. [code] 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | ----------|------|------|------|------|------|------|------| 01 | | | | | Fn | | Cmd | | 02 | | | | Alt | | | | | 03 | | | |Shift | | | | | 04 | Ctrl | | | | | | | | 05 | Esc/~| F1/1 | Q | Tab | A | Z | | | 06 | | F2/2 | W | Caps | S | X | | | 07 | | F3/3 | E | | D | C | | | 08 | F5/5 | F4/4 | R | T | F | | G | V | 09 | F6/6 | F7/7 | O | Y | J?L? | N | H | B | 10 |F8F12?| | I | | K | M | | | 11 | F9/9 | | U | | | < | | | 12 |F10F11| | P | ? | Enter| : | | > | 13 | | | | | | | Up | Left | 14 | | | Del | | | Shift| | | 19 | | | | | | | | Down | 24 | | | | | | | | Right| [/code] I think you can get away with less rows when combining rows 1,3,4,14 and 19. I named it CR (Combined rows) in the matrix below resulting in a 12x8. [code] 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | ----------|------|------|------|------|------|------|------| CR | Ctrl | | Del | Shift| Fn | Shift| Cmd | Down | 02 | | | | Alt | | | | | 05 | Esc/~| F1/1 | Q | Tab | A | Z | | | 06 | | F2/2 | W | Caps | S | X | | | 07 | | F3/3 | E | | D | C | | | 08 | F5/5 | F4/4 | R | T | F | | G | V | 09 | F6/6 | F7/7 | O | Y | J?L? | N | H | B | 10 |F8F12?| | I | | K | M | | | 11 | F9/9 | | U | | | < | | | 12 |F10F11| | P | ? | Enter| : | | > | 13 | | | | | | | Up | Left | 24 | | | | | | | | Right| [/code] After some more thinking it can be a 9x8 matrix. A pity it can not be an 8x8,that would have been easier to use. In this configuration most control keys are in one row. [code] 15 | 16 | 17 | 18 | 20 | 21 | 22 | 23 | ----------|------|------|------|------|------|------|------| 05 19 | Esc/~| F1/1 | Q | Tab | A | Z | | Down | 06 | | F2/2 | W | Caps | S | X | | | 03 07 13 | | F3/3 | E | Shift| D | C | Up | Left | 08 | F5/5 | F4/4 | R | T | F | | G | V | 09 | F6/6 | F7/7 | O | Y | J?L? | N | H | B | 10 |F8F12?| | I | | K | M | | | 11 | F9/9 | | U | | | < | | | 12 |F10F11| | P | ? | Enter| : | | > | 01 02 04 14 24 | Ctrl | | Del | Alt | Fn | Shift| Cmd | Right| [/code] Microblocks. Build with logic. |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
Excellent, TZA. ![]() I see you have a new Avatar of your own.... ![]() I am back from a job, so I will probe those wrong keys now, and post an update. Smoke makes things work. When the smoke gets out, it stops! |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
UPDATE: F8/8/* - (10,16) F12/+/= - (10,15) J - (09,20) L - (11,20) : - (12,21) Your compressed row/column chart is excellent - that was to be my next step, so thanks. ![]() EDIT: I should warn others reading this, that you basically have to destroy the keyboard, to get it to reveal it's matrix to you, so the one I have been probing is the sacrificial one. I have another blue one, and a couple of black ones from a different trader coming - I hope and expect the matrix to be exactly the same across all colours and suppliers. Wishful thinking perhaps, but I will hold onto that theory for now!!!! ![]() I will now pull apart the other one, and hook up and LED arragement, and test each and every one of those keys on the chart I have, to ensure it is correct before anyone designs anything from it - only to find out I have made another silly mistake! ![]() Smoke makes things work. When the smoke gets out, it stops! |
||||
MicroBlocks![]() Guru ![]() Joined: 12/05/2012 Location: ThailandPosts: 2209 |
G, Can you check F10/F11. Microblocks. Build with logic. |
||||
Grogster![]() Admin Group ![]() Joined: 31/12/2012 Location: New ZealandPosts: 9641 |
UPDATE: Three more keycode errors, that failed the LED test with the 2nd keyboard. F9, F10 and | I am re-tracing them, and will post update soon. All other keys right across the KB have passed the LED test when each one is pressed. Smoke makes things work. When the smoke gets out, it stops! |
||||
WhiteWizzard Guru ![]() Joined: 05/04/2013 Location: United KingdomPosts: 2948 |
Gents, You may find the following useful to cross reference against. This is a 'standard' matrix that appears to have been adopted by many manufacturers so probably worth running your eyes over . . . . 2015-08-21_055818_Grogs_KeyMatrix.pdf Hope this helps . . . . ![]() WW |
||||
MicroBlocks![]() Guru ![]() Joined: 12/05/2012 Location: ThailandPosts: 2209 |
I am thinking of using a pic16f1455 to do the decoding of the matrix, together with a 4040B 12 stage counter. You can then hookup the columns directly to the pins of the pic and use 2 pins for controlling the 4040B that will 'walk' through the rows. In total 10 pins are needed. In the PIC software you will need to count the pulses to know which row you are scanning. Should be pretty easy to do. To make sure software and hardware are in sync the 4040 can be reset to start with 0. The pic16f1455 supports HID so it will be possible to make a USB/Serial/I2C capable keyboard. When used with this little keyboard there will be 3 outputs of the 4040 available to add some more 8 bit input/output ports. Maybe a joystick or touch to have some more choices for input. I plan to use http://www.codeproject.com/Articles/832135/Microchip-PIC-F-USB-Stack-Part as the basis to get it to work. Microblocks. Build with logic. |
||||
![]() ![]() ![]() ![]() |
![]() |
![]() |
The Back Shed's forum code is written, and hosted, in Australia. | © JAQ Software 2025 |