VOGONS


First post, by Darmok

User metadata
Rank Newbie
Rank
Newbie

Greetings to all members of the Vogons community!

Since I do not know English well enough, I used the Google translator. Please be indulgent.

Every owner of old computers with only COM ports has a mouse problem. Where to get a quality serial mouse? Such mice have not been produced for more than 20 years, and those ball mice that have survived from past years are often very worn out and, by modern standards, they are uncomfortable to use. There is a desire to somehow use an optical mouse with such computers. However, the industry does not produce serial mice with a modern optical sensor, presumably due to low demand.

Some ways of solving this problem are proposed.
One option is to use interface and protocol converters developed by skilled hobbyists in conjunction with USB or PS/2 mice. However, independent production of such converters at home is almost impossible and in any case requires professional skills. Purchasing a ready-made converter from the authors is also not always possible. Various industrial solutions for such converters, according to reviews, have serious drawbacks.
It is possible to integrate a keyboard controller with PS/2 mouse support into the computer motherboard. However, it is not universal and also requires high qualification.

All of these methods are essentially options for adapting a computer to an optical mouse. And why not do the opposite - adapt the mouse to the computer? That is, design and manufacture a serial optical mouse. Such a mouse, using a specially designed serial controller, has no problems with delays associated with protocol conversion and behaves like a regular serial ball mouse, but does not have its drawbacks.

Having studied the available datasheets for serial mouse controllers and optical mouse sensors, I designed and manufactured such a mouse. And now I responsibly affirm that it is possible to independently manufacture a serial optical mouse at home. Moreover, it is not only simple - it is very simple! Anyone who knows how to use a multimeter and a soldering iron can handle this.

Since I was looking to use the mouse with a DOS and Windows 3.1 computer, I decided to use a controller without wheel support as it would be of little use on those systems. In addition, I have implemented the ability to block mouse movement along the Y-coordinate, which I have long desired, which I find useful in older games like DOOM.

In my design, I used the HM8350A controller, which I removed from an old unnamed serial ball mouse. I used A4tech OP-620 optical PS/2 mouse as a basis. This mouse uses the OM02 optical sensor with the required properties.

In the photo of the mouse, you can see the jumper and a few extra components - these are artifacts left over from my unsuccessful experiments in trying to achieve a useful use of the middle button in Microsoft Mouse mode. Using the CuteMouse driver with the /3 option, the HM8350A controller supports the use of the middle mouse button in MS mode, however, the practical use of this feature, due to the unreliable implementation method, does more harm than good.

The mouse is not made very neatly, but I can't do better 😀. As my teachers at work said: - “Crooked, askew - lives longer!”

I tried to depict the wiring diagram in such a way that all technical solutions were self-evident and did not require explanation.

I invite everyone to repeat my design. I also offer a simplified way.

Using the proposed idea, the creation of a serial optical mouse is possible on any serial mouse controller and on some optical mouse sensors. In this case, you will have to do the design of the circuit yourself.

Attachments

  • page1.GIF
    Filename
    page1.GIF
    File size
    79.9 KiB
    Views
    1723 views
    File license
    Public domain
  • page2.GIF
    Filename
    page2.GIF
    File size
    185.55 KiB
    Views
    1723 views
    File license
    Public domain
  • top.jpg
    Filename
    top.jpg
    File size
    96.87 KiB
    Views
    1784 views
    File license
    Public domain
  • btm.jpg
    Filename
    btm.jpg
    File size
    99.04 KiB
    Views
    1784 views
    File license
    Public domain
  • int.jpg
    Filename
    int.jpg
    File size
    194.17 KiB
    Views
    1784 views
    File license
    Public domain
Last edited by Darmok on 2022-12-13, 13:49. Edited 2 times in total.

Reply 1 of 11, by waterbeesje

User metadata
Rank Oldbie
Rank
Oldbie

That looks very useful and promising 😀 nice!

One could get the design and create custom PCB to fit in the classic ball mouse housing as well I think 😁

Just one question: I see you use the+5v and Gnd from the keyboard.
Why not use the +5v and Gnd from the serial port?

Stuck at 10MHz...

Reply 2 of 11, by Darmok

User metadata
Rank Newbie
Rank
Newbie
waterbeesje wrote on 2022-12-13, 09:37:
That looks very useful and promising :) nice! […]
Show full quote

That looks very useful and promising 😀 nice!

One could get the design and create custom PCB to fit in the classic ball mouse housing as well I think 😁

Just one question: I see you use the+5v and Gnd from the keyboard.
Why not use the +5v and Gnd from the serial port?

It is impossible to use the COM port to power an optical mouse due to the high current consumption of the optical sensor.

Reply 3 of 11, by RussD

User metadata
Rank Newbie
Rank
Newbie
Darmok wrote on 2022-12-13, 09:55:
waterbeesje wrote on 2022-12-13, 09:37:
That looks very useful and promising :) nice! […]
Show full quote

That looks very useful and promising 😀 nice!

One could get the design and create custom PCB to fit in the classic ball mouse housing as well I think 😁

Just one question: I see you use the+5v and Gnd from the keyboard.
Why not use the +5v and Gnd from the serial port?

It is impossible to use the COM port to power an optical mouse due to the high current consumption of the optical sensor.

For the retro-curious https://www.epanorama.net/circuits/rspower.html

Reply 4 of 11, by waterbeesje

User metadata
Rank Oldbie
Rank
Oldbie

I see, that's too bad 🙁

Maybe the alternative could be a little mod inside the male connector, inside the computer, to allow a straight +5v and Gnd lines connected to the physical port. Possibly with a 2A fuse for safety. That renders out the DIN tap and allows for a single connector 😀

(Just thinking out loud)

Stuck at 10MHz...

Reply 5 of 11, by Darmok

User metadata
Rank Newbie
Rank
Newbie
RussD wrote on 2022-12-14, 17:31:
Darmok wrote on 2022-12-13, 09:55:

It is impossible to use the COM port to power an optical mouse due to the high current consumption of the optical sensor.

For the retro-curious https://www.epanorama.net/circuits/rspower.html

I have already seen this article, but the maximum transient supply current of the OM02 sensor, according to the datasheet, is 37 mA.

Reply 6 of 11, by Darmok

User metadata
Rank Newbie
Rank
Newbie
waterbeesje wrote on 2022-12-14, 18:09:

I see, that's too bad 🙁

Maybe the alternative could be a little mod inside the male connector, inside the computer, to allow a straight +5v and Gnd lines connected to the physical port. Possibly with a 2A fuse for safety. That renders out the DIN tap and allows for a single connector 😀

(Just thinking out loud)

Of course, you can connect + 5V to the COM port of the computer, for example, to pin9 (Ri), but then such a mouse will only work with this computer and it is better not to connect anything else to this port. Everyone decides for himself.

Reply 7 of 11, by Darmok

User metadata
Rank Newbie
Rank
Newbie

Now I am developing a new version of the serial optical mouse, and I am waiting for the necessary electronic components to be received from China. My test instance is dual-speed capable of 1200 and 9600 bytes per second right now. In DOS, using the CuteMouse driver modified by someone on this forum (unfortunately I don't remember who and can't find the forum page with the link again) I get 240 rps. However, I don't have a Windows driver capable of running at that speed. The industry has produced serial controllers rated at 9600 bps, so there must be drivers. If anyone has such a driver, could he share it.

Reply 8 of 11, by Darmok

User metadata
Rank Newbie
Rank
Newbie

I bring to your attention a new version of the serial optical mouse. This time it's a COM-only powered version. Although I previously argued that it was impossible to power the optical sensor from the COM port, nevertheless I managed to do it.

The HM8350A controller and case is taken from an old JKGRAND32 serial ball mouse. The HDNS-2000 optical mouse sensor was removed from an unnamed PS/2 mouse. This sensor has a separate power supply for the interface logic and the core. This made it possible to reduce the core voltage from 3.3V to 2.6V and the interface voltage from 5V to 3.7V. The core frequency has also been lowered from 18MHz to 14MHz. The LED current is reduced to 7mA. To reduce losses, a push-pull output driver is used. All these measures made it possible to meet the limits of the load capacity of signal lines required by the RS-232C standard. The mouse must work with any COM port that meets the requirements of the standard. Tested with multiple computers from 386 to I5.

Reducing the core frequency to 14MHz theoretically reduces the movement speed from 12 to 9 inches per second, but in practice, given that this mouse is used with older slow computers, this does not matter. I assumed that a significant decrease in the current of the LED, and therefore its brightness, would lead to a decrease in resolution, but this turned out to be wrong, the measurements showed that the resolution remained at the same level as the original mouse. The mouse works great on both white and black surfaces, as well as on various fabrics (you can move it on the stomach:)).

This mouse has a feature when using the ctmouse driver in Microsoft mouse mode, the driver must be run twice in a row. This is due to incorrect initialization of the COM port by this driver. Most (but not all) serial mouse controllers are negative powered via the TXD line. The voltage on the TXD line appears when the computer is turned on, and by the time it comes to starting the mouse driver, the mouse controller has time to fully start and there are no problems with detecting the mouse. Those controllers that are powered by positive voltage via the DTR and RTS lines cannot start until the driver initializes the port, since there is no voltage on the lines until that time. The correct driver (Microsoft, Genius, Logitech, and others) sets the voltage on the DTR and RTS lines, pauses for a while so that the controller has time to start, and only then makes a request on the RTS line to which the controller responds with the signature M. Recognition of the presence of the mouse is completed and the driver is installed . Apparently, ctmouse either pauses too short or does not pause at all, and the controller cannot respond to the request before it starts up, so the driver does not detect the mouse and exits by removing voltage from the DTR and RTS lines. When the driver is launched for the second time in a row, it detects the mouse, because due to the large capacitance of the capacitors in the mouse power circuits, the controller works for some more time.

Attachments

  • backrest.jpg
    Filename
    backrest.jpg
    File size
    258.05 KiB
    Views
    1530 views
    File license
    Public domain
  • belly.JPG
    Filename
    belly.JPG
    File size
    527.84 KiB
    Views
    1530 views
    File license
    Public domain
  • bowels.JPG
    Filename
    bowels.JPG
    File size
    557.25 KiB
    Views
    1530 views
    File license
    Public domain
  • diagram.GIF
    Filename
    diagram.GIF
    File size
    103.12 KiB
    Views
    1530 views
    File license
    Public domain

Reply 9 of 11, by 16ShadesOfOrange

User metadata
Rank Newbie
Rank
Newbie

Hey this is interesting stuff! Just a thought, is powering it a major problem?

I'm thinking, you could stuff an 18650 lithium cell (3.7v) inside the mouse to supply power, instead of trying to beg for power from a COM port.

You can get small and cheap USB charging boards that would make the 18650 easy to recharge using USB (you'd need to hack a hole in the mouse though for the connector).

Another alternative would be a small USB power bank jammed inside.

Attachments

💻 Toshiba T5200 info
💻 Toshiba T3200SX info
💻 Toshiba T3200 info

Reply 10 of 11, by Darmok

User metadata
Rank Newbie
Rank
Newbie
16ShadesOfOrange wrote on 2023-03-14, 05:20:
Hey this is interesting stuff! Just a thought, is powering it a major problem? […]
Show full quote

Hey this is interesting stuff! Just a thought, is powering it a major problem?

I'm thinking, you could stuff an 18650 lithium cell (3.7v) inside the mouse to supply power, instead of trying to beg for power from a COM port.

You can get small and cheap USB charging boards that would make the 18650 easy to recharge using USB (you'd need to hack a hole in the mouse though for the connector).

Another alternative would be a small USB power bank jammed inside.

Of course, you can use the battery to power the mouse. In this case, there is no need to deviate from the power parameters of the sensor, controller and LED required by the manufacturers. However, it is not easy to place a battery of sufficient capacity in existing mouse cases. In addition to the battery charging connector, you will also have to add a power switch, since such a mouse is usually used intermittently, not daily.

Of course, it would be possible to develop a suitable case and print it on a 3D printer. In this case, it would also make sense to develop a mouse circuit using a programmable controller and a currently manufactured sensor. This option would allow replicating the mouse in any quantity. However, the complexity of such a development is comparable to the development of a PS/2 (USB) to serial interface and protocol converter, and the manufacturing cost is much higher. Such converters have already been developed and allow the use of any optical mouse. In my opinion, the development of a mouse in this variant is not justified.

My solutions are designed to be built in-house, without having to order any components from external manufacturers. Only standard components are used, as well as existing mouse cases. There are drawbacks to this approach, it is almost impossible to find exactly the same cases and other components recovered from old mice, so I design and manufacture each mouse on an individual project. It is difficult to achieve the necessary accuracy when measuring the dimensions of the board in the mouse body and you have to resort to fitting after the board is made. I also make the printed circuit board myself using amateur technology. Of course, the resulting mouse does not look as beautiful as the industrial one, but it works exactly the same.

Reply 11 of 11, by Darmok

User metadata
Rank Newbie
Rank
Newbie

Another serial optical mouse. This time "gaming" mouse.
Its capabilities:
- powered by COM port;
- the presence of a wheel;
- double click button;
- switchable (1200 or 9600) baud rate;
- resolution is 400 counts per inch;
- the maximum speed of movement is 12 inches per second;
- 30 reports per second at 1200 baud rate, 240 reports per second at 9600 baud rate.

The dual standard (PS/2 and serial) Intellimouse compatible HT82V33A controller is derived from the MUSD serial ball mouse. The HDNS-2000 sensor is extracted from a Samsung K300C084-C PS/2 mouse. Used case from USB mouse A4tech OP-620D.

No serial mouse controller I know of supports the "double click" function, so I implemented it on the CD4093B gate. The Intellimouse protocol is the slowest of all serial protocols and provides only 30 rps at a standard baud rate of 1200. Such a low value is clearly visible in shooters and in Windows at a resolution of 1024x768x8, even on such a weak computer as 386DX40. Therefore, I implemented the ability to switch the baud rate to 9600, at which the frame rate is 240 rps, which is more than the maximum value of 200 rps for a PS/2 mouse.

Changing the resonator, I tested the 386DX40 in FastDoom also at 2400 and 4800 baud rates and came to the conclusion that 2400 baud rate is enough for such a weak computer. Further increase is subjectively imperceptible. In the case of AMD486@160, the improvement is felt up to 9600.

On DOS I can use CuteMouse drivers with wheel support modified by CalamityLime. Huge thanks to him for this.
Re: USB to Serial Mouse using the Pi Pico!
I also modified several drivers myself for 2400, 4800 and 9600 baud rate:
- for DOS MS drivers V8.2, V10.10, V11.00;
- for Win3.1x built-in drivers or MS Intellimouse v1.1;
- for Win9.x built-in drivers or MS Intellimouse v2.2.

My mouse is designed for games on weak computers (386 and 486) so I did not spend time modifying drivers for NT, since the performance of such computers is insufficient for games in this operating systems. Also, I can use the DIGI AccelePort C2 accelerator with any non-modified drivers on any OS.

Since I had made all the mouse options I needed, and I also found low interest in this topic, I decided to stop new development of mice, completely close the project and move on to other projects that were more interesting to me.

- Darmok

Attachments

  • top.jpg
    Filename
    top.jpg
    File size
    711.9 KiB
    Views
    1272 views
    File license
    Public domain
  • bottom.jpg
    Filename
    bottom.jpg
    File size
    564.28 KiB
    Views
    1272 views
    File license
    Public domain
  • int.jpg
    Filename
    int.jpg
    File size
    783.42 KiB
    Views
    1272 views
    File license
    Public domain
  • diagram2.GIF
    Filename
    diagram2.GIF
    File size
    114.88 KiB
    Views
    1272 views
    File license
    Public domain
  • accelepoint2c.jpg
    Filename
    accelepoint2c.jpg
    File size
    729.65 KiB
    Views
    1272 views
    File license
    Fair use/fair dealing exception