Home
JAQForum Ver 20.06
Log In or Join  
Active Topics
Local Time 06:38 20 May 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 3 of 4    
Author Message
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5771
Posted: 08:42pm 19 Mar 2023
Copy link to clipboard 
Print this post

I started playing with putting the Waveshare display onto a PCB in the square Hammond case that I've been using. It's currently at the stage where the front panel is replaced by a PCB which has 9 soldered-in 2mm sockets on it, one common and 8 signal lines. At the moment I've fed 3V3 out via a low value resistor and resistors on each data pin.

The intention is to include a socket for a PS2 keyboard (because it's easy) and my favourite barrel jack socket for 5V power.

Getting the Waveshare display separate to the Pico has a lot of advantages. They just used whatever pins they wanted - lots of them - leaving very few for the user, even if you find a way to connect to them.

Note that Hammond will customise their cases (if you buy enough, I suppose) so having a pre-cut window or something like that might be possible. Their boxes are pretty rigid too.

Just playing...
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: 05:52am 17 Apr 2023
Copy link to clipboard 
Print this post

Progress has been made on getting the Perixx PERIBOARD-409 keyboard mechanically mounted in a 3D printable case.  Still working on the case top at this stage.  I decided that it was best to leave the whole keyboard in one piece and mount it into the computer case.  My test prints have been mostly about getting the dimensions correct so that the keyboard fits neatly into the top.  Once that has been worked out, mounting of the internal components can be worked out, and the overall case dimensions.

I'm also starting to think more about the PCB layout and pin allocations.

As suggested, I have used @Mixtel90's PicoGame NES as the main source of design.

I am trying to keep the I/O pin allocations the same as what already exists, however there is a discrepancy between the RTC pins on the PicoGame NES and the PicoMite VGA mini.

I am also trying to keep the I/O port allocations the same as the PicoMite VGA mini's I/O port.

Along the back on the case/PCB it will need:

- Power: 5V (or some other power supply, like the options in @Mixtel90's PicoGame NES.
- VGA
- Audio Out: Stereo as per PicoGame NES
- I/O Port
- Reset switch

On the left or right side it will need:

-SD/uSD card (Optional) and place for header to a detached SD card socket mounted on right side of case.  The deteched SD card socket could also be achieved by using a uSD to SD ribbon adaptor.  I have sourced and tested those on another project.

-PS/2 Keyboard port (Optional) and place for header to case mounted keyboard.  Using the keyboard's PS/2 connector is OK, but not quite as neat as cutting it shorter and using a header connector.  The PS/2 connector also has to be allowed for height-wise inside the case.

External modules:
Regarding my desire to have RS232 port and joypad (x2) ports, I realise that these would probably be best as modules that plug in to the I/O port.  It is unlikely that the serial port will be needed at the same time as the joypad ports.  This would allow me to reuse the same GPIO pins for these modules.  My preference for joypad interface is either NES or SNES, as these use fewer I/O lines and offer more buttons.

Desireable:
Having the option for built in speaker(s) with some sort of amplifier would be nice, and avoid having to run a seperate audio externally, but not essential.  Perhaps a header could be put on the PCB to allow this to be added later.  I see some chatter on the forum about sound quality.  I think sound quality is important for this build, so I will be looking at the best option.  I guess that involves using a linear 3.3V regulator.

Mike.
Edited 2023-04-17 15:54 by Hawk
 
Hawk

Senior Member

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

More things that I left off the list.

Along the back of the case/PCB:

- Power switch (on left side)
- Reset switch (on right side)

Additional requirements:

- a header to allow an external Power LED to be fitted to the case.

I've also just sourced another PS/2 keyboard to try.

8ware Compact Mini USB/ PS/2 Keyboard

The key layout of this keyboard isn't great, and it is more like a laptop keyboard than a desktop keyboard, but it will give me another option.  It may just require a redesign of the case top to accomodate the different keyboard.
Edited 2023-04-18 15:21 by Hawk
 
phil99

Guru

Joined: 11/02/2018
Location: Australia
Posts: 1813
Posted: 08:26am 18 Apr 2023
Copy link to clipboard 
Print this post

The supply voltage for that KB is shown as 1.8 - 3V so to be safe a diode in series may be needed.
Pullup resistors go to the cathode (KB side) of the diode.
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5771
Posted: 08:38am 18 Apr 2023
Copy link to clipboard 
Print this post

Goodness knows what the *actual* spec is. In (only) one place they say it's USB/PS2 so it *has* to be 5V otherwise it can't be powered from USB - and they say just plug it in. Similar looking BT keyboards use 3V battery arrangements. More Chinese confusion...
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: 11:24am 18 Apr 2023
Copy link to clipboard 
Print this post

I expect the 8wave keyboard to be one of the dual USB PS/2 units that were common during the transition to USB.  I'm expecting it to come with a USB cable and a PS/2 adaptor.  I would guess that the 1.8 to 3V spec is for the BT version of this keyboard.

I reckon that the Perixx PERIBOARD-409 is similar.  I haven't tried it with USB yet, but they sell a USB version.  I would guess that the only difference between the PS/2 and the USB versions is the cable that's soldered to the PCB.  If Perixx stop selling the PS/2 version of the keyboard, the USB version may still work.  There are multiple versions of the 409 keyboard, including BT.  You can see the moulding inside where the batteries would go.

English documentation is not one of the Chinese's strong points.

I have yet to test it, but I really hope that the PicoMite VGA is compatible with the keyboards that support both USB and PS/2 protocols.

Mick, which info for the RTC should I use?  The PicoGame NES or the PicoMite VGA Mini?

Mike
Edited 2023-04-18 21:25 by Hawk
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 11:45am 18 Apr 2023
Copy link to clipboard 
Print this post

I should point out that I'm no hardware expert.  I'm just trying to create a different form factor of the existing deisgn(s).  I would hope that it's as backwards compatible with as much of the existing designs as possible.  The variations that I want to make will be in the plug-in modules, the serial port, and the (S)NES joypad interface.

I haven't layed out a PCB in a long time, so it's going to be a real challenge.  Mostly I just wire up prototypes and one-offs.
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5771
Posted: 02:49pm 18 Apr 2023
Copy link to clipboard 
Print this post

The RTC doesn't matter. You just set OPTION I2S for the pins that you are using. MMBasic will find the RTC then. I used the same RTC module on both the PicoGAME and the PicoMite VGA mini, but they are on different I2S pins. Just find some that you have left over. :)

If you are using a particular keyboard then it probably *will* be a prototype and one-off. :)
Mick

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

Joined: 05/03/2018
Location: Netherlands
Posts: 3591
Posted: 04:37pm 18 Apr 2023
Copy link to clipboard 
Print this post

I2c

Volhout
PicomiteVGA PETSCII ROBOTS
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5771
Posted: 04:54pm 18 Apr 2023
Copy link to clipboard 
Print this post

Correct - brain on the blink again....   :(
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:58pm 18 Apr 2023
Copy link to clipboard 
Print this post

  Mixtel90 said  The RTC doesn't matter. You just set OPTION I2S for the pins that you are using. MMBasic will find the RTC then. I used the same RTC module on both the PicoGAME and the PicoMite VGA mini, but they are on different I2S pins. Just find some that you have left over. :)


I’m aware that the I2C pins for the RTC can be remapped, I was more concerned with trying to maintain compatibility with the I/O port on the PicoMite VGA mini.  I thought it would be best to try to maintain some sort of “standard” I/O port to encourage people to make add ons.  It’s difficult to design add ons if the hardware keeps changing.

I don’t know the goals of the overall PicoMite project, whether it is always just meant to be a hackers playground, with no real standardisation, and people share their creations, or whether it is trying to define a standard platform.  It makes it a less desirable platform for software developers if the hardware keeps changing.

Mike
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5771
Posted: 07:04am 19 Apr 2023
Copy link to clipboard 
Print this post

The goal of the PicoMite project is to run MMBasic on it, I suppose. :)  I'm not sure that there's any sort of mechanical goal - that's up to the user's requirements.

Pin usage is pretty much what the user wants it to be. Until the Pico came along the IO pins were, at least, partially defined. SETPIN was developed to allow the IO pins to be remapped because the Pico supports it.

Thee isn't a standard GPIO port as it changes with whatever pins are left after some (or all!) have been allocated. Likewise, until the PicoGAME there was no joystick pin mapping to aim for - and that was only done to assist people writing games. I'm still not sure if it's the best way to do it. PicoGAME was created purely as a gaming platform. It's not really intended to do other things, but it can be made to do so. All the pins were allocated (sometimes to several tasks) so no GPIO port was possible. You could connect a port extender of some sort using the serial port function of PORT B.

The PicoMite VGA mini GPIO port merely uses the pins I had left and are in the positions that I didn't have to wrestle too much to get. :)  Anyone trying to copy it may have their work cut out. In this case the device isn't intended specifically to be a gaming platform so the relatively low number of GPIO pins available for controllers doesn't matter. (You can't count on the I2C pins being available as inputs or on GP22 always being available either).

I'm beginning to think that there should be a *specific* controller designed for all MMBasic platforms. That severely limits the number of pins available so it almost certainly couldn't be a conventional switched joystick. That's partially why I've been investigating the use of I2C controllers recently. This approach would also help in standardization as controllers could use specific addresses, with most using just a couple of alternatives.
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: 02:55am 20 Apr 2023
Copy link to clipboard 
Print this post

  Mixtel90 said  
I'm beginning to think that there should be a *specific* controller designed for all MMBasic platforms. That severely limits the number of pins available so it almost certainly couldn't be a conventional switched joystick. That's partially why I've been investigating the use of I2C controllers recently. This approach would also help in standardization as controllers could use specific addresses, with most using just a couple of alternatives.


Having a plug-in controller module would allow users not interested in gaming to use the I/O pins however they liked, but if they were "allocated" to the specific type of controller, then game programmers would know what to expect.  I'm unsure whether MMBASIC has to ability to have "drivers" so that a programmer can say "Read Controller", and MMBASIC works out which controller is fitted, and how to read from it.

My preference for controllers is (S)NES ones, pretty much for the same reasons that they were chosen for the Commander X16 project.  Controllers are still readily available, the I/O pin count is low (4 + 1 extra for each additional controller), and the number of buttons is high (more than 1).  I would suggest that their biggest down side is the you can't actually get a "joystick", only a gamepad.

As for the connector, I was leaning towards the DB9 until I tried to source gamepads with them.  They're not as easy to source as the standard (S)NES ones, but the the right angled DB9 plugs are easier to source (and mount reliably) than the (S)NES ones.

I'd be interested to hear how consistent the pinouts of the DB9 (S)NES controllers are.  With the DB9 plugs, there is always the risk that an Atari or Megadrive style joystick would be plugged in, and whether that would cause damage to the main board hardware.

I did a quick search for I2C gamepads, and although you can get the PCBs, pretty much, you would have to print your own case, or fit I2C guts into an existing controller.  That would be the biggest down side.  The upside is definitely the low I/O count.

With respect to the RTC, I was considering putting jumpers on the main board that can have the SPI lines connected to either the on-board RTC, or to the external I/O connector.  Opinions?

Mike
Edited 2023-04-20 12:56 by Hawk
 
Hawk

Senior Member

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

I discovered that the controller discussion was already taking place over here...
Controller Discussion

Probably no point in continuing it here.  I'll just hope for a suitable outcome.

Oops...an error in my previous post.  GPIO lines required for (S)NES controllers is 3 + 1 for each extra controller, as has been previously mentioned in this thread.
Edited 2023-04-20 21:00 by Hawk
 
Hawk

Senior Member

Joined: 15/07/2021
Location: Australia
Posts: 141
Posted: 10:49pm 20 Apr 2023
Copy link to clipboard 
Print this post

  Mixtel90 said  The RTC doesn't matter. You just set OPTION I2S for the pins that you are using. MMBasic will find the RTC then. I used the same RTC module on both the PicoGAME and the PicoMite VGA mini, but they are on different I2S pins. Just find some that you have left over. :)


I’m aware that the I2C pins for the RTC can be remapped, I was more concerned with trying to maintain compatibility with the I/O port on the PicoMite VGA mini.  I thought it would be best to try to maintain some sort of “standard” I/O port to encourage people to make add ons.  It’s difficult to design add ons if the hardware keeps changing.

I don’t know the goals of the overall PicoMite project, whether it is always just meant to be a hackers playground, with no real standardisation, and people share their creations, or whether it is trying to define a standard platform.  It makes it a less desirable platform for software developers if the hardware keeps changing.

Mike
 
Turbo46

Guru

Joined: 24/12/2017
Location: Australia
Posts: 1595
Posted: 01:32am 21 Apr 2023
Copy link to clipboard 
Print this post

  Quote  It makes it a less desirable platform for software developers if the hardware keeps changing.

Too true.

Bill
Keep safe. Live long and prosper.
 
lizby
Guru

Joined: 17/05/2016
Location: United States
Posts: 3027
Posted: 03:27am 21 Apr 2023
Copy link to clipboard 
Print this post

  Turbo46 said  
  Quote  It makes it a less desirable platform for software developers if the hardware keeps changing.

Too true. Bill


It has been a very desirable platform for this particular (hobbyist, formerly professional) software developer expressly because the hardware has kept changing and improving. If you want unchanging hardware, you can just stick with the MX170.

As crucial as the changing hardware has been the changing and growing MMBasic firmware, which now supports many valuable additions to Geoff's original offering (which provided a solid base for the growth we have enjoyed).
PicoMite, Armmite F4, SensorKits, MMBasic Hardware, Games, etc. on fruitoftheshed
 
Turbo46

Guru

Joined: 24/12/2017
Location: Australia
Posts: 1595
Posted: 04:04am 21 Apr 2023
Copy link to clipboard 
Print this post

@lisby, That may be true for you but I have no desire to build the latest version of the PicoMite VGA that comes along. There are 4 version's on Geoff's site now and soon to be 5! I don't recall any new versions with hardware variations that will entice me to build another.

I have the first one that Peter designed and that will have to do me. @thwill is trying to develop a games controller library but with so many variations it must be a nightmare. It's not so much 'new' hardware additions but the variations that make it difficult.

That's my 2 cents worth (or tuppence) anyway.

Bill
Keep safe. Live long and prosper.
 
Mixtel90

Guru

Joined: 05/10/2019
Location: United Kingdom
Posts: 5771
Posted: 07:00am 21 Apr 2023
Copy link to clipboard 
Print this post

I'm still working on Super Star Trek as time allows. I've decided to try to give it a graphical front end, even though it's still a bit buggy. After all, if it's going to run on a PicoMite VGA then scrolling text is a bit *too* '70's. Unlike Eliza, where I worked from "normal" line-numbered BASIC, I'm working from a port into Liberty BASIC this time. There is structure but still some confusion. :)
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:19pm 22 Apr 2023
Copy link to clipboard 
Print this post

  lizby said  
  Turbo46 said  
  Quote  It makes it a less desirable platform for software developers if the hardware keeps changing.

Too true. Bill


It has been a very desirable platform for this particular (hobbyist, formerly professional) software developer expressly because the hardware has kept changing and improving. If you want unchanging hardware, you can just stick with the MX170.

As crucial as the changing hardware has been the changing and growing MMBasic firmware, which now supports many valuable additions to Geoff's original offering (which provided a solid base for the growth we have enjoyed).


I'm not familiar with the MX170 version.  Did it support PS/2 keyboards and have VGA out?  I know there have been some versions that only supported a serial interface for programming.  That doesn't interest me so much.  I already have Arduinios and STM32s that can do that.  I'm specifically looking for a Boot-to-BASIC stand alone platform with Graphical support.  The CMM2 is good, but costs a lot more to build than the PicoMite VGA.

I better get on and write some software for the PicoMite VGA.  It probably won't need to use a controller anyway, as my ability to play twich games these days is not what it used to be.  I'm hoping to start with a card game.

I did think it would be fun though, to have the PicoMite VGA drive one of my old pen plotters, and a serial interface is the easiest way for it to interface to them.
 
     Page 3 of 4    
Print this page
© JAQ Software 2024