Pages

Building a Sish Board, a tutorial

Since it's easier to go through the process of building a Sish USB Chess Interface board with the steps outlined I decided to compile all the information on the site thus far and present the following tutorial.

Before I get started let's talk a little more about what this board is. It's basically a USB interface device that responds when you close the individual switches on each square of the chess board. For instance by pressing the "e2" square and "e4" square the board will send the computer "e2e4" this tells almost all Chess programs to move the piece on e2 to e4, etc. The board is a great and inexpensive way to play games with your computer using a physical board and since it's not tied to any specific program you could use it to play games with almost anything (Fritz, Chessbase, Winboard, Arena, Chessmaster, etc)

Bottom line, it's reasonably priced (<$50 if you go with an inexpense design), not very hard to do, and makes for a heck of a lot of fun.
Now a little inspiration...



Step 1

Determine which type of board you are going to build, something like my wooden board? Perhaps you are interested in some of the designs Bryan has at USB Chessboard. Regardless figure out your design and get your raw materials together.

If you are going with a board like mine you'll need momentary switches, long plunger style (you'll need a minimum of 64, but I'd get extra). I've had nothing but great success with AllElectronics.com. You'll also want some un-insulated wire to connect the switches, something thin, perhaps 24 or 26 AWG. Next you'll want to get a couple of termination strips and something slightly heavier (and stranded, more flexible).

Step 2

Figure out which Teensy you'd like to get. For me it came down to my soldering preference. You see with the Teensy (with or without pins) I would still have to solder a wire to one of the end holes directly. This just didn't seem like much fun, so I went with the Teensy++ (with pins). It's a few dollars more but the end result is I could solder wires to a socket then connect the Teensy++ to that socket. Much cleaner, much easier to undo. The socket I chose intially was two 12-pin sockets from PRJC, however after some issues with placement and my poor yet improving soldering skills I chose some jumper wires from Sparkfun, these made short work of connecting to pins.

Step 3

Program your board. You'll want to download the appropriate software from this site based on your choice of hardware, Teensy or Teensy++. You'll also want to follow the instructions at PJRC.com to program your hardware with the hex file.

Sish hex file
Sish++ hex file

Step 4

Refer to the wiring diagram for the board itself and the Teensy (or Teensy++) you've purchased.

Sish++ (Teensy++)


Sish (Teensy)


Wiring Diagram for the board itself

This should be enough to get you started, if you have more questions just contact me and ask, I'll do my best to answer.

-hz

26 comments:

Anonymous said...

Thanks for sharing your work.

In the tutorial you mentioned that you used a Teensy++ with pins and soldered the wires to a socket and plugged the Teensy into the socket.

Which socket did you choose?

hazmat said...

Sorry about that, I've updated the tutorial to reflect both the original plan and updated fallback. Thanks!

berger said...

After discarding "DGT e-board" because I can not afford its high price, Google led me here with the magic words "diy, chessboard, usb". Thank you very much for sharing all your work, ideas, etc. I've just ordered a "Teensy USB Development Board", and I'm already planning how will be my new USB chessboard. :-)

Cheers,
Gerardo

hazmat said...

My pleasure. In fact watch this space as I'm working on adding an LCD for move output, yes, interface with the computer without needing to see the screen at all.

berger said...

good idea! I'll be watching... ;-)

Anonymous said...

Hi matt,

I don't know solder, could I use for this project the teensy++ with pins and wire the board with jumpers female-female using the four momentary swiches's lengs??

hazmat said...

I think you could get close, I know you can use jumpers to the pin'd Teensy, but the legs on the momentary switches are bent, I doubt you can jumper them.

Anonymous said...

Hello!

The teensy++ needs another application to understand the board's moves like e2-e4? I mean what applications needs the teensy++ to run and understand the board??

hazmat said...

Any software you would like, the board sends moves like a keyboard, so it just works. Open up Arena or Fritz or almost any chess program and try sending a move using your keyboard, e2e4, etc. If it works, then it works with the sish.

Max said...

Based on your wonderful site and some hints from Bryan, I have built a USB board that sends codes like A1, D2 etc. I tested by connecting to my PC using word. However when I open up Arena it accepts the first move and responds but seems to be waiting for a terminator or some other code. Any idea or am I missing somethingd3d3. Max

hazmat said...

Not sure Max, might be a newline it's waiting for.. What did you use for hardware? Teensy?

hz

Max said...

Teensy++

hazmat said...

Very cool, did you write your own code or use my hex files?

Anonymous said...

Hi Matt,

What kind of swich did you use to flip the board?? 12V, 13AMP??

Samuel

hazmat said...

This is VERY low voltage. I used one of these..http://www.allelectronics.com/make-a-store/item/SSW-51/ON-OFF-SLIDE-SWITCH/1.html

-hz

Max said...

Ref earlier question, I used your hex files.
I was wondering wether it might be a problem with error handling. For example the momentary switc sometimes sends a code twice:eg D2D2, which unless filtered out in the Sushi code might upset the chess program

hazmat said...

It's really not an error in the hex file. What you are seeing is a poorly designed switch or a double press of a single switch. Let me explain. The switch, when pressed, sends a single position "e2" to the computer. Then when nothing is pressed the sish resets waiting for the next switch press. In this case what is happening is the switch is pressing on, off, then on again, all in a short period of time. We have to allow this type of communication as it is something that would happen in a game naturally. Ex. Move e2e4 next move, e4e5. This would appear to the sish as e2e4e4e5, therefore we must allow it.

Hopefully this makes sense, it's hard to explain in a post. Bottom line you've got a bad switch or are rapidly pressing the button on and off accidentally.

-hz

Max said...

OK sounds sensible I will redo any faulty switches and see if that improves things.

Max

Anonymous said...

Hi Matt!

My chess board it's almost done!

Could I use the 26 awg jummper with the teensy++ and wire the momentary buttons with 24 awg???

Samuel

hazmat said...

Sure, give it a whirl, it should work, not positive though, but I see no reason why it wouldn't.

Anonymous said...

I Matt,

Where did you buy the un-insulation 26 awg wire??

Samuel

hazmat said...

Radio Shack, right around the corner from my house :)

berger said...

I've finished my Sish Chessboard! :D

https://sites.google.com/site/proyectosdeberger/sish

I have translated the text to english, but I'm sorry because my english is quite bad. :/

Thanks Matt!

Max Dobres said...

Got my USB board running off a Tweensy++ board using your SW. Then wrote my own version of the SW using an Arduino sketch, but added a buzzer running off pin 9 to give me local sound on pressing and added a .7 sec delay between reads to guard against double presses. All works well, but found that when interfacing to Arena it thinks it is dealing with a keyboard so if you type the "from" move where there is only one possible move, it infers the "to" part. eg move a pawn on A3, send A3, it infers A3A4.

Therefore if you miss this and send A4 by mistake Arena stalls.

Rather than pretend to be a keyboard, I wonder if it would be better to use a serial interface? ie pretend to be a DGT/Novag or use UCI. Have you looked at this for your Pi project and oif so, which interface is the easiest?

Regards

Max

hazmat said...

Max,

Nice work building your own software, very few people make a run at that. I built the sish code in C vs the C++/Sketch process, but as you've seen they work fine either way.

Ahh Arena. Yes it's actually rather painful how they infer moves like that. Here's what I've considered/tried/done..

1. I like the keyboard for 99% of available products (fritz, chessbase products, etc). It works, it's simple to understand and requires no additional software development on the computer.

2. Yes, DGT and Novag use/used a serial design. I studied the Novag protocol (not my favorite experience) and ended up building a sishnovag build. It works fine and can interface with arena without issue, but that's ALL it can interface with..sub-optimal if you ask me.

3. I did however leverage a serial design with the SishFishPi. After experimenting with raw hid support under linux, I decided the a virtual serial port gave me the best options going forward for the Sishfishpi. So, to that end the build I'm using complete that projust is serial based.

Bottom line, I love the keyboard design for most casual usage, but recognize serial is preferred for more in depth communications.

Matt

Anonymous said...

Hi

I am a chessplayer and I think your blog is marvelous.
I have bought a Teensy from Italy ( to save taxes) but I am not sure if I can use it to make a board. It is a AT90USB162 and has fewer pins.
Can you help me.

Best Regards Olaf, Denmark

Post a Comment