Page 2 of 15

Re: The ultimate orb solution, at last.

Posted: January 11 2009, 6:11 AM
by vputz
Okay, test 4 plans!

I found a proper model for a 7.5mm resistor (silly me, should have known). I'm leaving the diodes as 5mm since they are small, but may move them to 7.5mm too depending on if anyone builds this version and gives feedback (I will probably change it to be honest just in case people wind up finding longer diodes). I'm including the Eagle files as well in case anyone wants to muck about with them (Eagle is the CAD program I used to put this together; it is really nice for a "trialware" product; [url][/url].

So here is what to do (it really is a bit of a pain; unless you really want to build one and give feedback, you may want to wait). Also recommend you see other PCB tutorials (there are some decent ones on and others).

Print out the "test4_brd.pdf" as a reference. You will need these parts (with their names on the board):

1 2.2k resistor (R3)

2 68 ohm resistors (R1, R2)

2 3.6v zener diodes (D1, D2)

1 DB9 male ("plug"), through-hole mountable, 90-degree bend (DB91 -- look at the photo to get the idea; I actually had a hard time finding this)

1 USB B socket, through-hole mountable (USB1)

1 20-pin IC socket (you technically could do without this, but it will be harder to drill, risk heat damage to your IC, and only costs a few cents). Width is I think 10mm on these.

1 MAX233CPP serial driver chip (this is the expensive part, at $5-$7; we could use a cheaper one but would have to add capacitors to the board). Fits in the socket.

1 DIP switch, 6-position (SW-1). In reality, we only need a switch or jumper on the TOP of the six pairs of contacts. So you can do without SW1 for the moment as long as you have some switch or jumper that you can remove between pin 0 of the Arduino and pin pin 2 of the MAX233CPP. These switches come in different varietes; the only reason I used a 6-position is to be able to disable pin 2 if necessary (to talk TO the orb) and to have four user-selectable pins to change options without reflashing the device.

Bits of "strip board header". This is a bit funny--this is soldered into the rows of holes and then plugs into the Arduino below. The reason it's tricky is that it's really designed so the short bit plugs all the way through the board and is soldered on top, which we can't do on a single-sided board. The solution is either to find extra-long header, plug it through from the top, and solder the bottom, or just plug it somewhat into the bottom and try to solder it there, which is trickier than it sounds but worked just fine.

0.8mm drill bits. Get a few spares as these are very thin.

A drill (or drill press if you are lucky)

Okay, on construction (assuming you've never made a PCB before):

You will need:

1 laser printer

1 sheet glossy magazine paper (or glossy photo paper, etc).

1 copper-clad single-sided PCB

1 iron

1 nonreactive (glass or plastic) tray

1 nonreactive (glass or plastic) container (jar, whatever)

Etchant. You can use ferric chloride crystals (from an electronics place) or two parts hydrogen peroxide to one part muriatic (hydrochloric) acid (you can get muriatic acid from a hardware store).

Acetone (I used fingernail polish remover since it comes in smaller bottles).

Print "test4_bottom.pdf" onto the glossy magazine paper; we use glossy so that the toner comes off easily.

Clean the PCB well (I used soap/water; other folks recommend alcohol). Take a "green scrubby pad" and scuff it gently in both directions so that it looks a little scratched, which will help the toner adhere.

Now (trial and error time) place the toner side of your printed circuit onto the copper side of the PCB and iron it there. I used the "silk" setting of my iron. Hold it in place without moving it for the first bit (about a minute in my case) and then you can gently move it to get coverage. You're melting the toner onto the PCB.

After that, the paper will be glued to the PCB by way of the toner. You want to get the paper off, but don't just pull it off or you may pull off the toner. Let it soak in water for about 5-10 minutes and then gently peel off the paper and try to rub any extra bits off with your fingers. By the end of this you should have a nice clear circuit with toner (and some paper fibers). If there are small breaks in traces (compare with test4_bottom.pdf) you can try to connect them with a sharpie (which didn't work so well for me) or maybe other thick pen or paint.

Take a good look at the circuit. In particular, I found that the nice big pads that I used worked great almost everywhere but didn't have enough clearance on the four pins of the USB plug. You may want to try and clean that area a bit so the four pins are really separated (I had to do it after etching, which was a bit more of a pain).

Time to etch. Mix your etchant in the container and pour a bit (enough to cover your board by a little bit) into the tray--use plastic forceps or nitrile gloves to handle the board! Drop in your board and gently agitate; this takes a long time and for a while I didn't think anything was happening. Eventually the copper will etch away and you will be left with a circuit. Rinse the board off (if you have a metal sink, KEEP LOTS OF WATER FLOWING as you don't want to etch it!) and dry.

You now will have a board covered in toner. Use the acetone and a rag or cotton to clean off the toner.

Drill out all the holes with your 0.8mm drill. Use a VERY light touch. I got lucky and did all holes by hand without breaking a bit, but evidently it's very easy to snap them.

Then, stuff the board (components on the top, which should just be clean plastic by now) and solder on the bottom. Look at test4_top.pdf; the three traces there are going to be wires that you make and solder on the bottom (I used 22AWG insulated wire).

Also, on the side headers: if you look at the diagram you can see what headers actually NEED to be connected with the Arduino. I went ahead and drilled all of them, and for the production boards will probably put "through" headers so there are sockets on the top of the board in case people want to stack other shields on top, wire jumpers and LEDs in, or whatever.

Software to follow. While this isn't a particularly devilish build, there can be a few gotchas (I had to spend quite a bit of time testing traces with a multimeter to find where I'd gone wrong, as the serial side worked fine but the USB side had a broken trace so it just said "one of your USB devices is malfunctioning"--great).

Good luck to any who try; would like to hear feedback!

Re: The ultimate orb solution, at last.

Posted: January 11 2009, 6:28 AM
by vputz
Software: -- unzip into your Arduino sketches folder (usually "My Documents\Arduino" I think) -- unzip into your Arduino libraries folder (wherever you install Arduino software, "hardware\libraries")

I will try to get these in a proper repository at some point so they are under good revision control (they are on my system but I'm feeling lazy right now).

For the Arduino sketches, "hidsporb" is the proper driver, and "orb1" is just a program to try and use the serial circuit to talk to the orb.

When programming, switch 1 must be "OFF" and the arduino-orbshield stack should be connected via the arduino's USB connector. Once programmed, switch 1 goes "ON" and you are talking to the orb. For the "Orb1" program, you can leave it connected via Arduino's USB and turn on the serial monitor on the Arduino software and see debug input (a bunch of numbers indicating axis values). To use hidsporb, you'll unplug the Arduino USB connector (I leave the cable plugged in and unplug from the computer) and plug the orbshield USB connector in (you can't plug both at once; I had hoped you could). You should get a nice "boo-beep" sound from Windows indicating your orb is in place.

For day to day use you can forget about the Arduino connector and just plug/unplug like a regular device; it stays programmed and everything.

Re: The ultimate orb solution, at last.

Posted: January 11 2009, 10:21 AM
by vputz
Hmm... it did NOT love my spaceorb 3003, though--did not even acknowledge the USB device, which tells me something bigger is at stake than communication protocols. I'm thinking that one may have to have EXTRA POWER (so I may want to design in a jumper/header for a battery pack if wiring that in fixes it). It'd be great to make an adapter that could handle all the old desktop orbs too. I'll play more with it later.

Re: The ultimate orb solution, at last.

Posted: January 11 2009, 13:50 PM
by TurtleMan
I'm a chemist by trade: soldering is not my forte. Who am I kidding: I'm good for splicing a lamp cord, not much else. I'd be happy to buy one or two if you get them manufactured, and will subsidize the production cost as well if/when you decide to farm out the job.


Re: The ultimate orb solution, at last.

Posted: January 11 2009, 15:42 PM
by vputz
Sounds good. I'll go through a couple more iterations although it probably won't change too much (I'd really like to assure myself it can work with other devices like the 3003 and/or 5000, just because that would be sorta cool). The 3003 is vexing me though... I tried talking to it with a term program and usb/serial adapter and only buttons worked. Still may be a power issue, though--not sure how much power the USB-serial adaptors work. So we may see an ext power jack going in if I can figure it out.

Re: The ultimate orb solution, at last.

Posted: January 11 2009, 19:30 PM
by vputz
(hmm... my 3003 keeps sending error packets; it may just be broken. We'll see. I'm not throwing out the ext power jack yet though; will ask around to some hardware folks).

Re: The ultimate orb solution, at last.

Posted: January 13 2009, 5:03 AM
by ranavalone
Hi Victor,

I've been absolutely thrilled following this thread! I just installed your hidsporb driver in Windows XP a couple of weeks ago and it seems to work just fine, but sounds like your research & development work with the Arduino-based board is a more "future-proof" solution. Hats off to you, Victor! :) My first SpaceOrb just refuses to quit, the spare unit still remains in it's original box. I'd be happy to spend money on two boards, will continue to check this thread frequently for information on how to contribute. Great work!


Re: The ultimate orb solution, at last.

Posted: January 13 2009, 6:16 AM
by vputz
Thanks, Ranvalone!

I made a few more sizing mods to the board design (increasing the diodes to 7.5mm spacing just to avoid the cramped feel of the prototype). I'm holding off sending to manufacturing until I've resolved the "other models of spaceball" issue a bit more (I'm still wondering about that power jumper). I think we'll be OK without it... my 3003 may just be unhappy. I've tried jumpering my battery pack in to no avail, and connecting it to a proper serial port I get the poweron message OK ("Spaceball 3003 alive and well", it says, which is very chipper of it) but only generate button packets and occasionally an error packet.

I'm going to screw with it a bit more; there's a fellow over here selling Spaceball 4000 FLXs for about 20 GBP on ebay, so I picked one up and I'll test it when it gets here (the 5000s look sexier, but I think they use a slightly different protocol; 4000s are much like the 3003 and spaceorb). If the existing board works with the 4000, I'll take a hard look to see if we need more than a two-position DIP switch (I'm not sure the other 4 will be of use... I keep thinking it'd be useful for facing/chording/sniper-mode but then realizing that most people set those once rather than changing them), maybe revamp the design and do another prototype, and then see if we can get some built. I just don't want to miss something since hardware designs are harder to change! I've contemplated an LED too (mostly to turn on if we get an error packet) but that may be a bit foofy and you'd probably know something was wrong when it stopped working (diagnose through Arduino console).

Re: The ultimate orb solution, at last.

Posted: January 13 2009, 9:56 AM
by naivsupr
Mr. Putz,

I just came over this thread and you just blew me away with your abilities. I have a soldering iron somewhere but I'm always burning my hands on it. I know my way around windows/linux, but I'm not a programmer either. And it's a bit over my ambitions anyway.

I just cleaned my drawers (again), and couldn't quite bin the SpaceOrb. Not this time either. I don't know what type of use it will get in the future, but it's still a future device isn't it? :D

IMO the spaceorb deserves more exotic software than the regular first person shooter as I was always better with the mouse-/keyboard-combo (tried real hard to master the spaceorb in serious sam).

It would be nice to see the device up and running again, and then probably stuff it back into the same drawer, unless there are some real cool six-degrees PC software around (like Descent in the good ol'times). Maybe a patched Descent will to do the job? Together with the Track-IR device maybe.

Put me on the interested list. I want to support the project. Will try to monitor this thread.

Re: The ultimate orb solution, at last.

Posted: January 13 2009, 23:30 PM
by tfp
Wow, this looks good to me!

My SpaceOrb has been sitting around for a lot of years now, but I just could not bring myself to throw it out. Now it seems that I might be able to revive it.

So thanks for the effort, Victor.

I am watching and waiting for the hardware to settle down before I build one of these myself.

Re: The ultimate orb solution, at last.

Posted: January 14 2009, 15:20 PM
by vputz
Well, we're not out of the woods yet... it doesn't work AT ALL with the other spaceball models (and I think this is worth pursuing in case it's revealed to be a power issue). I think that it is a power issue actually, but I'm not yet certain how to diagnose or proceed (I've tried with my 3003 and my 4000flx). Still works OK for the orb itself, but I'd like to iron this out.

(and incidentally the 4000FLX looks like it will be an AWESOME gaming device if I can get this working, because it would support two-fisted gaming, LH for movement and RH for fine aiming and shooting with the mouse).

I keep getting only button packets coming through and periodically an "error" packet with flags set for "hardware error"--but of course no more information (interestingly, not "power brownout"). Neither work on my laptop, and my usb-to-serial adaptor doesn't work either, and I don't have a desktop with a serial port! So I will have to wait until I can use my wife's computer.

It could be

1) Serial connector is wired badly for something (ground?) -- which I will want to fix for the orb

2) Serial connector is not getting enough current, but voltage is fine (can add a jumper for battery pack)

3) Serial connector is not getting enough voltage (can add a jumper for battery pack but may have to add another jumper to disconnect MAX233 power for fear of damaging chip)

So hang tight for a bit longer as I diagnose this (hopefully I can manage)... will try to get some time over the weekend to poke at it.

**further update** Hmm, spaceballs may be working but require communication FROM the computer which we don't do well yet; more study needed but may not require a change on the board. Still, exciting news... I think (I wasn't sending any setup characters, but got at least one of the spaceballs working under Linux, so they must be talking OK).

Progress is slow, but going.

Re: The ultimate orb solution, at last.

Posted: January 15 2009, 17:59 PM
by vputz
Slow going but just to let you know progress is still being made:

I don't think the extra power supply will be necessary. Two things were making the board not talk to regular spaceballs:

1) Not sending the right startup string to the spaceball

2) My nice printed circuit board had a SINGLE CONTACT that I hadn't properly soldered. For some reason this mysteriously allowed the spaceorb to work but caused the spaceballs to think they were being flooded with information so that they kept sending "control-S" to try and stop the flood with software XON/XOFF handshaking.

As you can imagine, this took a bit to work out. I hate hardware!

Anyway, problem seems to be solved by sending a setup string just a bit after poweron. This has made me consider adding a reset button and LED (just for general signaling) to the board, but I haven't decided if it's really necessary or if I'm just whining--if communication to the SpaceBalls actually works, you can make them beep (!) which may be as good as an LED. Hope to make more progress this weekend, but I'm at the point where the SpaceOrb seems to work pretty well, and the spaceballs (3003/4000FLX) are at least sending me orb/button data (which, oh so conveniently, is in a slightly different format than the SpaceOrb). I hope to decode that on Sunday and decide if we need any additions to the board (you can actually reach the Arduino reset button if you're careful).

(I know most folks are more interested in the orb than the balls, but this did reveal a few things that affect the orb too, so bear with me).

Re: The ultimate orb solution, at last.

Posted: January 15 2009, 22:54 PM
by countryatheart
Hi Victor,

I want to thank you again for engineering and fabricating a device the will enable the SpeceOrb to be plug and play device. You just don’t know how excited I am about building one of your PCB’s. I do have a question about the 3.6 volt Zener Diodes. In my research I have found that not all 3.6 Volt Zener Diodes are created equal. They range from 250mW to 1W, what mW/W did you use?

Anyone interested in building Victor’s PCB can find all the components at I purchased the Arduino Diecimila at


Re: The ultimate orb solution, at last.

Posted: January 16 2009, 4:08 AM
by vputz
Ron: thanks! And good reminder, I forgot to mention wattage. Low wattage for the diodes! I used 0.5w; from the page I cribbed the USB circuit from: "I'm using 3.6V, 0.5W Zener Diodes (1N5227) although I hear .25W is preferred, and apparently 1W don't work (according to a forum post)."

I couldn't find 0.25w, so I went with 0.5w (digikey probably has them, though... I just didn't want to pay international shipping). The 0.5w versions seem to work just fine.

You can of course build the whole thing on a breadboard too (although the DB9 takes more work; my prototype used a custom cable which plugged into the breadboard). Good luck and let me know how it goes and if you have other inputs!

Re: The ultimate orb solution, at last.

Posted: January 17 2009, 23:41 PM
by countryatheart
Thank you for the info Victor. I ordered the .5W Zener Diodes from Digikey, the .25W they had were surface mount. Digikey now has a USA location (Minnesota) so you don’t have to pay international shipping.

I’m going to etch and drill the PCB as you did. The only problems I might have are the pin layouts of DB9, USB socket and the Dip Switch. The ones I ordered might not match the ones you used. If the pins don’t match your traces I’ll have to tweak your trace design a bit. One thing I am going to do different is buy my etchant at Radio Shack. I had a gallon of Muriatic Acid in my shed, it corroded everything metal within 4 feet so be very careful where you store it.

Thank you for the good luck, I’m going to need it! :D When I receive the components and start building your PCB I’ll let you know how it’s going.