Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 04:47 29 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : PicoMiteVGA: Stand-alone Keyboard Form-factor

     Page 1 of 4    
Author Message
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 11:58am 13 Mar 2023
Copy link to clipboard 
Print this post

Is there any interest in a version of the PicoMiteVGA that is in the same form-factor as the Raspberry Pi 400?

https://forum.diyperks.com/user-projects/raspberry-pi-400-x-mechanical-keyboard/

It would require a redesign of the PCB with all the ports and connectors on the one edge of the PCB, and as such, would be larger, and more expensive than versions with ports on all sides.

Aside from laying out the PCB, one of the more difficult tasks would be finding an affordable PS/2 compatible keyboard, preferably mechanical.
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6810
Posted: 12:54pm 13 Mar 2023
Copy link to clipboard 
Print this post

I did a PCB some time ago that's designed to fit underneath a PS2 keyboard that's propped up on its rear legs. In theory any keyboard can be used. The PCB is pretty flat as the PicoMite is surface mounted. The sockets etc "poke up" along the rear of the PCB so they are effectively behind rather than underneath.

Follow the PCBs link in my sig. Look for
"Mixtel90's Partial Designs / 2022-05-08_065323_picomite keyboard 2.zip"

I never really completed the design, but it probably wouldn't take much to finish it and sort out some Gerbers.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 09:00pm 13 Mar 2023
Copy link to clipboard 
Print this post

Thanks Mick, it looks like that folder may not have been shared.
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6810
Posted: 09:29pm 13 Mar 2023
Copy link to clipboard 
Print this post

Try this:
https://www.dropbox.com/sh/enw2ndblcz4xi3t/AADR2CG-MYwdJbyEaYz3aDEla?dl=0
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 07:29am 15 Mar 2023
Copy link to clipboard 
Print this post

That link worked.  Your layout looks pretty compact.

I've just ordered one of these keyboards to see what I can come up with.

https://www.amazon.com.au/gp/product/B09296SM7H

It's not a mechanical keyboard, but it is reasonably affordable.  I'll look at redesigning a bottom for it, as per the Pi 400 project linked above, and then see what sort of layout will work.

I would like to include the following connectors:
- Power
- VGA
- Audio
- SD (I know microSD is smaller, but SD is easier)
- 1 or 2 X (S)NES controllers (Optional)
- 9-pin serial (Optional)

The SD card could use a microSD card on the right side of the board, with a standard SD extension socket on the right side of the case.

The optional parts could be additional boards that connect to headers on the main board.

I'm not sure how many unused pins this leaves for an expansion slot.

Any feedback on these ideas?
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6810
Posted: 08:00am 15 Mar 2023
Copy link to clipboard 
Print this post

We can't get that keyboard - it's currently out of stock and they don't know when it will be back in stock. That's always a problem with these integrated keyboard ideas, you really need a "big name" industrial model that will always be available - and that will make the whole thing too expensive. :(

The controllers that Tom uses are a Chinese version that has a standard DB9 connector, not the more modern USB. I hope that's ok. Apart from that it looks pretty much like PicoGAME, which I would recommend rather than using a keyboard form factor. That's because of the above comment about keyboards.

26 GPIO to start with
VGA -6
keyboard -2
controller A -3
controller B -3
audio -2
SD card -4
Leaves 6

I'd recommend using another 2 for I2C so that a RTC can be added. That way the time stamps on your files are correct.

Have a look at the construction pack for the PicoGAME 2 (follow the link in my sig). That will give you an idea of what I'd aim at for the circuit. Leave out everything to do with the analogue inputs, make the Fire buttons simple 3V3 supplies. Note that Port B can also be a serial port (just TXD, RXD & GND).
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 10:26am 15 Mar 2023
Copy link to clipboard 
Print this post

Thanks for the advice Mick.  I forgot about the RTC.  You’re correct about the keyboard…that’s probably because I bought one of the last two.

The mainstream readily available ones are VERY expensive.  More readily available keyboards tend to be full size, and more difficult to make replacement bases for.
 
Volhout
Guru

Joined: 05/03/2018
Location: Netherlands
Posts: 4253
Posted: 03:40pm 15 Mar 2023
Copy link to clipboard 
Print this post

  Hawk said  That link worked.  Your layout looks pretty compact.

I've just ordered one of these keyboards to see what I can come up with.

https://www.amazon.com.au/gp/product/B09296SM7H

It's not a mechanical keyboard, but it is reasonably affordable.  I'll look at redesigning a bottom for it, as per the Pi 400 project linked above, and then see what sort of layout will work.

I would like to include the following connectors:
- Power
- VGA
- Audio
- SD (I know microSD is smaller, but SD is easier)
- 1 or 2 X (S)NES controllers (Optional)
- 9-pin serial (Optional)

The SD card could use a microSD card on the right side of the board, with a standard SD extension socket on the right side of the case.

The optional parts could be additional boards that connect to headers on the main board.

I'm not sure how many unused pins this leaves for an expansion slot.

Any feedback on these ideas?



PicoMiteVGA (VGA/PS2/SDcard/audio) has GP0..5,GP22,GP26..28 unused (when I2C is used at pin GP14/15) = 10 GPIO pins.

2x NES controlers using individual pins use 6 pins. You could however share LOAD and CLK pulses, so you would need only 4 pins (LOAD, CLK, DATA_IN_1, DATA_IN_2).

Remaining are 6 pins for GPIO.

I personally would provide a GPIO header with the 10 free GPIO pins, +5V, +3.3V, GND (2x) so a 16 pin, and develop an interface board (header -> 2 x DB9) for the NES controllers.

Regards,

Volhout
Edited 2023-03-16 01:45 by Volhout
PicomiteVGA PETSCII ROBOTS
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 08:55pm 15 Mar 2023
Copy link to clipboard 
Print this post

For the controllers, additional controllers should only require a DATA line, and be able to reuse the same CLOCK and LATCH lines as the first controller.  That saves a couple of I/O lines.

—-Edit—-
Ha…I should have reloaded the page before posting.
Edited 2023-03-16 06:58 by Hawk
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 11:33pm 15 Mar 2023
Copy link to clipboard 
Print this post

  Volhout said  
<snip>

2x NES controlers using individual pins use 6 pins. You could however share LOAD and CLK pulses, so you would need only 4 pins (LOAD, CLK, DATA_IN_1, DATA_IN_2).

Remaining are 6 pins for GPIO.

I personally would provide a GPIO header with the 10 free GPIO pins, +5V, +3.3V, GND (2x) so a 16 pin, and develop an interface board (header -> 2 x DB9) for the NES controllers.

Regards,

Volhout


I like you're idea of a plug in interface board for the game controllers.  That way the connectors don't take up extra space along the back of the machine, and they are optional.  If there was enough space between the GPIO header and the other connectors on the back of the machine, I would want the controller connectors to come out one each side.

I'm not sure whether I would go for DB9s, or the SNES connectors.  I know that affordable controllers are available with both types.  The DB9 connectors may be mistaken for Atari or Megadrive style connectors.  With (S)NES connectors it is clear what they are for.  The (S)NES style connectors are also available affordably via Aliexpress.

I guess, if people wanted Atari style joysticks, a different interface board could be made that includes a parallel to serial interface, the same as the (S)NES controllers have built in.

Regarding the serial port, I personally want that to drive older pen plotters.  I would have to look into whether the ones that I have all support XON/XOFF, or require CTS/RTS for flow control.  This would take up an additional two control lines.
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 12:22am 16 Mar 2023
Copy link to clipboard 
Print this post

Oh, I forgot to say that the keyboard would be internally connected to the PCB via a header.
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 01:18am 16 Mar 2023
Copy link to clipboard 
Print this post

I wish that I had found this post before I ordered my PS/2 keyboard.  I hope that the PicoMite firmware handles this protocol.

https://electronics.stackexchange.com/questions/625609/scan-codes-from-ps-2-keyboard-misbehaviors

https://www.nxp.com/docs/en/reference-manual/DRM014.pdf
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4047
Posted: 07:43am 16 Mar 2023
Copy link to clipboard 
Print this post

Just what we need, another PCB design .

With regards {S}NES controllers be aware that:

1. On-spec they require 5V not 3.3V, though most seem to work with the latter.

2. There are some SNES controllers (with the inline 7 pin connector) on AliExpress that contain a micro-controller in place of the expected 12-bit shift-register; these definitely don't work at 3.3V.

Best wishes,

Tom
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6810
Posted: 08:06am 16 Mar 2023
Copy link to clipboard 
Print this post

It may not be possible to bet the PCB socket connector for a SNES plug. Even if you can they will be as a spare part as it's a non-standard connector that's designed to fit behind a specific case moulding, I think. It's perfectly possible to have Atari, and analogue joysticks together with a NES controller all on a single DB9 connector providing your software knows which you are using. I've done it. :) You can also share a DB9 between a serial port, an Atari joystick and a NES controller. I've done that too. :) (although the serial port connections are non-standard). See the PicoGAME.

Although the PicoMite supports simple COM ports it doesn't handle any sort of flow control signals. You would need to write all that in your software.

NES protocol can't use a common latch line.
- Flip latch - inputs are latched into shift register
- send clock pulses - shift register comes out on data line
- Flip latch back again.
So, you *might* be able to share Clock and Data, but not Latch or you will get data from both controllers simultaneously on the same line. :) I say *might* because, without checking the data sheet, I'm not sure if the inputs are transferred into the shift register or merely isolated from it. If it's the latter then the shift register is already holding data when the clock pulses start so, if a common data line is used, it will be corrupted. I've never attempted to use common signal lines with these as I didn't need to. I already wanted individual lines for Atari joysticks to make them easy to read.

If you can use my "mostly flat" design or something similar then you're quite welcome, but there's no point in making a custom design to fit in a particular keyboard with a custom bottom on it unless you are doing it just for yourself with money and time no object. That keyboard, in the same usable version, may never be available again because manufacturers change things like fixing points, internal connections, wire colours, even circuitry, without changing the model number, customer-facing connections or outward appearance. You don't know if you are getting the same thing unless it comes from the same batch. The only way to have full control over this is to make your own keyboard. That's perfectly possible but it's an expensive route to take (I've already considered and rejected that idea). An alternative way is to gut something like a C64 and make a keyboard interface.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4047
Posted: 08:41am 16 Mar 2023
Copy link to clipboard 
Print this post

Hi Mick,

I think you are getting yourself mixed up on the NES controller, or didn't write down what you meant. As far as I can see they could definitely share CLOCK and LATCH but they would need independent DATA.

1  Pulse LATCH.
2. All controllers copy current button state into their own 4021.
3. Read bit from each DATA line.
4. Pulse CLOCK
5. Repeat from (3) until 8 bits have been read.

Strictly speaking you shouldn't need a CLOCK pulse after the 8th bit, but through experimentation we've found you do on modern clones or the first bit of the next byte read can be wrong; the working assumption is they don't have a true 4021 beneath their epoxy blob.

Best wishes,

Tom
Edited 2023-03-16 18:47 by thwill
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6810
Posted: 09:28am 16 Mar 2023
Copy link to clipboard 
Print this post

Ah... Confusion about the controllers, sorry. You've played with these far more than I have. :)

IMHO I wouldn't use them if there was an easy way to use the WII Classic controllers anyway. We already have I2C, it's just that the horrible things all have the same unchangeable address. :(  It would give much better compatibility with the CMM2.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4047
Posted: 10:26am 16 Mar 2023
Copy link to clipboard 
Print this post

  Mixtel90 said  Ah... Confusion about the controllers, sorry. You've played with these far more than I have. :)


Yeah, tell me about it ;-)

  Quote  IMHO I wouldn't use them if there was an easy way to use the WII Classic controllers anyway. We already have I2C, it's just that the horrible things all have the same unchangeable address. :(  It would give much better compatibility with the CMM2.


You mean that if they could have different addresses then multiple could share the same I2C channel instead of needing an I2C channel each ?

I've got a Wii Classic, Wii Nunchuk, NES (and SNES) gamepads and Atari joysticks and for the sort of games likely to be on the PicoMiteVGA (and CMM2) the NES and Atari options are just much nicer to use. The Wii Nunchuk joystick is analog which is a bu**er for playing classic games and the Wii Classic just has more buttons than you would ever want ... and IMO the ergonomics of it aren't great. YMMV.

Best wishes,

Tom
Game*Mite, CMM2 Welcome Tape, Creaky old text adventures
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6810
Posted: 12:10pm 16 Mar 2023
Copy link to clipboard 
Print this post

Ah, but it only needs 2 pins. :)

I suspect that you could probably gate the sdc signal with something and use a third pin to select which controller you want to read. You only need one I2C port then. With 2 pins and a 2-4 line demultiplexer you could have 4 controllers on just 4 pins. :)

Of course, a DIY controller could be I2C just as easily as NES (use MCP23008) - and they could be addressable (op to 8) so that they could co-exist on the same port. Now I just need to design one...
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 12:51pm 17 Mar 2023
Copy link to clipboard 
Print this post

The PS/2 keyboard arrived and it shows promise.  Certainly not as nice to type on as even a cheap mechanical keyboard, but no worse than the Tauon PC-1.

The replacement base will need to provide support up under the keys, as it does not include any internal support.  This just complicates the design slightly.  Hopefully there is enough room behind the keys, otherwise it will need to extend out beyond the keyboard top like Commodore C64C.

If I was to include an internal speaker, is there any point to including stereo?
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 6810
Posted: 01:08pm 17 Mar 2023
Copy link to clipboard 
Print this post

I did a little self-contained keyboard for a RPi some time ago, made out of foam board. I made it so that a BT keyboard simply sits on top of the case, on a slope. As many of those keyboards are similar in size it made it fairly non-critical.

If the audio is to a speaker only then mono would probably be fine. If you have a headphone jack then I'd go for stereo, even if the speaker is only mono.
Mick

Zilog Inside! nascom.info for Nascom & Gemini
Preliminary MMBasic docs & my PCB designs
 
     Page 1 of 4    
Print this page
© JAQ Software 2024