Arduino and CueCat barcode scanner

I’ve had a cuecat barcode scanner sitting around for over 10 years. Basically it connects to a PS2 port (apparently there is a USB version) like a keyboard and spits out a barcode when scanned. Nice!. The annoying thing is that it is “encrypted”. What I set out to do is;
– unencrypt the barcode in software on the arduino
– i didn’t want to cut into the Cuecat in case I broke it, not hard to replace, but that’s not the point 😉
– get it to write only the bar code to the serial port, and I can use some terminal emulator (TeraTerm,Putty or SecureCRT) to write the data to a file as I furiously scan like a boss all items with a barcode in the house.

Step 1: Connecting the CueCat to Arduino

The cable connected to the CueCat is a Y cable that connected to a PC PS/2 port. The connection to the PC is a male adapter. There is also a female, that allows the PC’s keyboard to share the port.

There is no continuous path between the 2 ports (Except Power and GND) as a multimeter and continuity test confirmed. So using the female port as a way to access the cuecat signal did not work.

PS2 female connectors are hard to find these days, so I cut the female connector from the cuecat and used that to break out the wires…
Arduino and CueCat barcode scanner
The Cue cat cable has 6 wires, marked on the board as 1-6

1. Brown (+5V)
2. Red (DATA Female connector)
3. Black (Clock Female Connector)
4. Orange (DATA Male connector)
5. Yellow (Clock Male Connector)
6. Black – Cable is thicker than other black (Ground)

When cut, the female adapter, has the following which will map to the connector inside the Cuecat as follows

1. Brown (+5V)
2. Red (DATA Female connector) to Orange(pin4)
3. Black (Clock Female Connector) to Yellow (pin5)
4. Bare wire (GND)

I tinned the wires with flux and solder to make them a little more durable, and wired them to a terminal shield on the Arduino.

Step 2: Getting the first code

Since the Cuecat emulates the PS2 Keyboard, I used the Arduino PS2 library and examples to get a look at the first bar-codes.
http://www.arduino.cc/playground/Main/PS2Keyboard

The only thing to watch out for is;
– The CLK is used as interrupt, and so ensure you connect to a pin that supports interrupts
e.g. on the Mega 2560 http://arduino.cc/en/Main/ArduinoBoardMega2560

External Interrupts: 2 (interrupt 0), 3 (interrupt 1), 18 (interrupt 5), 19 (interrupt 4), 20 (interrupt 3), and 21 (interrupt 2).

I used Pin 3… Which is a bit annoying as now all the pins are not on same side of the board 🙁 (first world problems)

And a few swipes, check all wires are connected right and …

.C3nZC3nZC3nYCNP1Chz6CNnY.bNjW.D3T6C3nZE3jZD3bZDa.

TIP:  Look at ASCII codes, NOT printable characters…
You can see I played with the code a little, as when looking at output there are always non printable characters, so I wrote the code to show the ASCII code.

Useful: http://en.wikipedia.org/wiki/ASCII
Arduino and CueCat barcode scanner circuit
OUTPUT ASCII value -> printed Character
International Keyboard Test:
46->.
67->C
51->3
110->n
89->Y
[deleted for brevity…] 88->X
69->E
87->W
46->.
13->

Note that there does not seem to be anything strange at the start, but the end is /13 which is a Carriage return, ie, end of the code

I did expect to see ALT-F10 being sent as on my linux box it kept minimising and expanding the window on each scan, and that is the keystroke that does that… if the Arduino doesn’t see it, then I am OK with that…


About The Author

Ibrar Ayyub

I am an experienced technical writer holding a Master's degree in computer science from BZU Multan, Pakistan University. With a background spanning various industries, particularly in home automation and engineering, I have honed my skills in crafting clear and concise content. Proficient in leveraging infographics and diagrams, I strive to simplify complex concepts for readers. My strength lies in thorough research and presenting information in a structured and logical format.

Follow Us:
LinkedinTwitter

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top