VOGONS


Arduino-based PS/2 to serial mouse adapter

Topic actions

First post, by VioletGiraffe

User metadata
Rank Newbie
Rank
Newbie

Has anyone tried this project, any comments / knowledge to share?
https://github.com/Lameguy64/ps2serial

I'm looking for a way to get a mouse working as I already have two systems with no PS/2 ports. While a simple passive PS/2 to DIN adapter solves the keyboard problem, mouse is not as simple and requires an active adapter.

Reply 1 of 26, by dionb

User metadata
Rank l33t++
Rank
l33t++
VioletGiraffe wrote:

Has anyone tried this project, any comments / knowledge to share?
https://github.com/Lameguy64/ps2serial

I'm looking for a way to get a mouse working as I already have two systems with no PS/2 ports. While a simple passive PS/2 to DIN adapter solves the keyboard problem, mouse is not as simple and requires an active adapter.

No, but I am so going to try this!

I have a nice elegant KVM-switch setup for my vintage stuff - which completely fails to help me with my older systems without PS/2. This adapter would be perfect to interface them to it. In fact if it works I might just make a pile of them, one for each system.

I'd be tempted to make one modification though: instead of using DE9, I'd go for a 9-pin header so I could mount it internally and connect it directly to the motherboard - as well as power it from the PSU, with PS/2 port on a backplate.

Hmm, if I have time this evening I'll draw up plans and order parts...

Edit:
Given how simple this is I might even be able to scavenge the parts needed (voltage regulator and NAND gate - plus a PS/2 connector) from dead PCBs, and I already have a few Arduinos lying around 😉

Reply 2 of 26, by VioletGiraffe

User metadata
Rank Newbie
Rank
Newbie

I'm also about to order a KVM switch. And yeah, I though of using the COM header as well, the DB-9 connector is just extra unnecessary stuff to pay for and then waste time soldering, Dupont wires to the internal pin header FTW. But you took my idea a step further, good thinking! I have an Arduino UNO in the way of 5 V options, but the extra parts will take me a bit to procure so I'm not able to try it out immediately.
I'll start with seeing whether this project even compiles still.

Reply 3 of 26, by dionb

User metadata
Rank l33t++
Rank
l33t++

Grmbl. Found a few 74LS00 NAND-gates and managed to desolder one successfully, but only found one 7805, and it was SMD with ROHS solder. Desoldering SMD is a skill I still have to master, and ROHS isn't the easiest way to do so. Destroyed the unit while trying :'(

So have to order after all.

Reply 4 of 26, by VioletGiraffe

User metadata
Rank Newbie
Rank
Newbie

Oh well. You need to crank your soldering iron up to 350 C to easily de-solder this stuff, and install the biggest tip you've got if you iron has interchangeable tips.
I wonder why the author of this project chose to use a quad NAND chip to just implement a single invertor. There are other open collector parts in the 74LS series, including a hex inverter, but curiously, the LS00 is the only one my local shop has in stock, albeit it costs 80 cents (robbery!).

Reply 5 of 26, by dionb

User metadata
Rank l33t++
Rank
l33t++
VioletGiraffe wrote:

Oh well. You need to crank your soldering iron up to 350 C to easily de-solder this stuff, and install the biggest tip you've got if you iron has interchangeable tips.

I tried it at 350C first, then at 380C, using my biggest tip. Sloshed on flux, added a blob of leaded solder, sloshed on more flux, heated the damned pins until they and everything around them was HOT and it looked like my new solder had mixed with the old stuff - but still it wouldn't budge until I applied enough force for two of the three pins to disconnect and go flying 😢

I wonder why the author of this project chose to use a quad NAND chip to just implement a single invertor. There are other open collector parts in the 74LS series, including a hex inverter, but curiously, the LS00 is the only one my local shop has in stock, albeit it costs 80 cents (robbery!).

At a guess: he happened to have an LS00 lying around 😉

I've just ordered the parts (and a pile more stuff as usual) and went for HC00. Partly because of the comment about 12V, but mainly that my shop charged EUR 1.69 for the LS00 but only 0.69 for the HC00 😜

Should arrive sometime next week, which is fine as I'm away for a long weekend with my youngest son in Berlin anyway.

When the parts are here and I'm back I'll start with a PoC on a breadboard, if that works I'll make one external one on a little prototype PCB. If that also works I'll do the internal one - and if that works I'll do a little contribution to the GitHub page 😀

Reply 6 of 26, by dionb

User metadata
Rank l33t++
Rank
l33t++

Update:

Package has arrived and I've gotten to work.

full.jpg

It's a mess. On the right an Arduino Nano clone I had lying around. On the bottom (somewhat in the shade) a PS/2 bracket, on the left the I/O card of a 486 with a few pins hooked up and then the breadboard with 74HC00 and voltage regulator.

The breadboard and/or cables are crap, having major issues with bad contacts. PS/2 to Arduino works fine, I can see the LED happily indicating activity on the mouse whenever I do anything, but the bit through the breadboard needs constant jiggling to register anything at all. However the fact jiggling helps makes it clear it's not a conceptual problem, incorrect connection or bad software, it's just those connections.

So... I'm going to proceed to next step, a prototype on a prototype PCB. Will start with only the stuff from the breadboard as I'm not sure I want to use this particular Arduino for the end result, I might use a smaller one once I figure out what it's compatible with.

Reply 7 of 26, by Caluser2000

User metadata
Rank l33t
Rank
l33t

Seems overly complicated. I use one of these

The attachment 20191008_101546[1].jpg is no longer available

There's a glitch in the matrix.
A founding member of the 286 appreciation society.
Apparently 32-bit is dead and nobody likes P4s.
Of course, as always, I'm open to correction...😉

Reply 8 of 26, by VioletGiraffe

User metadata
Rank Newbie
Rank
Newbie

That is really well made, given the technology you used. I thought about the exact same thing (except I've never seen such a small Arduino compatible board!), but I wasn't able to find the 74LS00 IC in a DIP package. They have SOIC, but not SOIC to DIP adapter so I'm stuck.
Do you understand the purpose of the 74LS00 in this circuit? Can't the same role be fulfilled more adequately by an optocoupler? it provides true galvanic isolation from high voltage, and the logical inversion can be done either by a pull-up resistor or in software (far simpler).

P. S. I always expect connection problems from these dupont wires, but they have never given me any. Except when I see that the pin-tip is not shiny, I clean it up until it shines. They seem to be prone to light oxidation over time.

Reply 9 of 26, by VioletGiraffe

User metadata
Rank Newbie
Rank
Newbie
Caluser2000 wrote:

Seems overly complicated. I use one of these

20191008_101546[1].jpg

A passive adapter? It would only work with a dual-interface mouse (COM + PS/2), I don't have nor ever seen one. I'll much rather use a good modern optical/laser mouse.

Reply 10 of 26, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Were you able to check for mouse tracking lag while behind a kvm?

Plan your life wisely, you'll be dead before you know it.

Reply 11 of 26, by Caluser2000

User metadata
Rank l33t
Rank
l33t
VioletGiraffe wrote:
Caluser2000 wrote:

Seems overly complicated. I use one of these

20191008_101546[1].jpg

A passive adapter? It would only work with a dual-interface mouse (COM + PS/2), I don't have nor ever seen one. I'll much rather use a good modern optical/laser mouse.

Works just fine with my opticle ps/2 mice and usb mice with ps/2 mice adapters. Obviously you haven't been around computers that long.

There's a glitch in the matrix.
A founding member of the 286 appreciation society.
Apparently 32-bit is dead and nobody likes P4s.
Of course, as always, I'm open to correction...😉

Reply 12 of 26, by VioletGiraffe

User metadata
Rank Newbie
Rank
Newbie
Caluser2000 wrote:

Obviously you haven't been around computers that long.

No, only 20 years or so. Is it an active adapter?
Both of my USB mice don't work with a PS/2 adapter for the same reason: the mouse's internal controller must natively support PS/2 alongside USB to work with a simple passive adapter.

Reply 13 of 26, by feipoa

User metadata
Rank l33t++
Rank
l33t++
Caluser2000 wrote:

Seems overly complicated. I use one of these

20191008_101546[1].jpg

Looks like a passive adapter. From my experience, they only work with mice which support, both, PS/2 and serial protocols. I have a few of such these mice, one Logitech, and one Microsoft Intellipoint with scroll wheel. My other PS/2 mice which do not indicate that serial protocol is supported, will not function with a passive adapter. Hence the purpose of this thread, to create an active adapter for all PS/2 mice to work on a serial port.

Plan your life wisely, you'll be dead before you know it.

Reply 14 of 26, by dionb

User metadata
Rank l33t++
Rank
l33t++
VioletGiraffe wrote:

That is really well made, given the technology you used. I thought about the exact same thing (except I've never seen such a small Arduino compatible board!),

That's the big one, the one I intend to use is even smaller 😉

but I wasn't able to find the 74LS00 IC in a DIP package. They have SOIC, but not SOIC to DIP adapter so I'm stuck.

The documentation mentioned that 74HC00 would also work, that's what I'm using. If I suspect that the HC vs LS is causing problems, I can easily switch it out for the 74LS00 I cannibalized from a dead old board - hence the socket.

Do you understand the purpose of the 74LS00 in this circuit? Can't the same role be fulfilled more adequately by an optocoupler? it provides true galvanic isolation from high voltage, and the logical inversion can be done either by a pull-up resistor or in software (far simpler).

Looks to me like it's mainly just abusing a NAND gate to act as an inverter, outputting logical 0 whenever input from the Arduino is 1 or vice versa. That said I am a novice at this sort of thing, so sticking with in original design until I know better.

P. S. I always expect connection problems from these dupont wires, but they have never given me any. Except when I see that the pin-tip is not shiny, I clean it up until it shines. They seem to be prone to light oxidation over time.

This is an almost new set I obtained with a Raspberry Pi electronics tutorial kit. I got that about the same time I discovered Arduino. I still love Pis for more complicated computer stuff, but for nuts and bolts I'm converted to Arduino all the way.

Have finished the hardware of the soldered version, but still need to figure out how to program this little one:

full.jpg

Of course the other side looks like a dogs' breakfast 😉

Caluser2000 wrote:
VioletGiraffe wrote:

A passive adapter? It would only work with a dual-interface mouse (COM + PS/2), I don't have nor ever seen one. I'll much rather use a good modern optical/laser mouse.

Works just fine with my opticle ps/2 mice and usb mice with ps/2 mice adapters. Obviously you haven't been around computers that long.

That's an unnecessarily condescending comment - and too much of a generalization too. I have several such passive adapters and can assure you they do not work with my Microsoft Trackball Explorer, which is what I want to use with the PS/2-less systems too. Otherwise I wouldn't have bothered with all this work...

Reply 15 of 26, by Warlord

User metadata
Rank l33t
Rank
l33t

whats the advantage of this adapter as opposed to the RiO444 Ps2 to serial emulator card. 😕 feipoa had some issues with that one on some of his bioses but its worked pretty great for me. 🤣

Reply 16 of 26, by feipoa

User metadata
Rank l33t++
Rank
l33t++
Warlord wrote:

whats the advantage of this adapter as opposed to the RiO444 Ps2 to serial emulator card. :confused: feipoa had some issues with that one on some of his bioses but its worked pretty great for me. :lol:

Maybe if you run out of ISA slots?

The RIO444 adapter works great even through a KVM - no mouse pointer lag. If you have a WinBIOS with integrated serial ports, you may need to disable one of the COM ports in Windows 95 to use the RIO444 adapter. I was so pleased with his adapter that I ordered a second one for the test bed.

Plan your life wisely, you'll be dead before you know it.

Reply 17 of 26, by VioletGiraffe

User metadata
Rank Newbie
Rank
Newbie
dionb wrote:

Looks to me like it's mainly just abusing a NAND gate to act as an inverter, outputting logical 0 whenever input from the Arduino is 1 or vice versa.

If that was the case, it would have been done in software just by outputting the right (non-inverted) level. I'm sure the IC is there for its electrical properties. I thought I read somewhere that COM uses 12 volt signals which Arduino can't produce nor take. I just think there is both a simpler and more robust way to design this circuit, but I'll need to figure out what it does first.

dionb wrote:

but still need to figure out how to program this little one

You need a USB to serial converter. I haven't tested it yet, but I've been recommended this one as the most reliable and robust model.

Reply 18 of 26, by dionb

User metadata
Rank l33t++
Rank
l33t++
Warlord wrote:

whats the advantage of this adapter as opposed to the RiO444 Ps2 to serial emulator card. 😕 feipoa had some issues with that one on some of his bioses but its worked pretty great for me. 🤣

Biggest advantage is that I could source all parts nearby at low cost with fast&cheap shipping. Plus this is simple enough that I actually understand what each component is doing at some level.

Additionally, being ISA-bus independent means I could use it in various situations where I don't have an ISA slot available, which applies to at least one of the systems I want to use it with (multi-sound card build on Pentium motherboard without spare ISA). But this is just nice-to-have, main reason is low price and quick availability.

VioletGiraffe wrote:
dionb wrote:

Looks to me like it's mainly just abusing a NAND gate to act as an inverter, outputting logical 0 whenever input from the Arduino is 1 or vice versa.

If that was the case, it would have been done in software just by outputting the right (non-inverted) level. I'm sure the IC is there for its electrical properties. I thought I read somewhere that COM uses 12 volt signals which Arduino can't produce nor take. I just think there is both a simpler and more robust way to design this circuit, but I'll need to figure out what it does first.

Given the comment that 74HC00 *might* be able to do 12V, I doubt the design as it stands does 12V. The 74HC00/74LS00 outputs 5Vcc right now as it stands, and looking at data sheet the 74HC00 can't go beyond 6V anyway. Agreed that using a 4-gate NAND IC for a single inversion step is wasteful, even the NAND gate itself is an essential part.

dionb wrote:

but still need to figure out how to program this little one

You need a USB to serial converter. I haven't tested it yet, but I've been recommended this one as the most reliable and robust model.

Ugh, serves me right for buying cheap knock-off stuff without decent documentation. Yes, I see now that this is a clone of the Arduino Pro Mini 5V and wants TTL on those pins, not naked USB (as I had assumed). Don't have any TTL adapters here, but fortunately we use them a lot at work. I'll see if I can dig up one today (and put a USB-TTL adapter on the shopping list for next time, as I like the form factor of this board so want permanently myself)