I was first considering using a ready made game controller, specifically one made for the Sony PlayStation. These were fairly cheap and readily available, and there were previous projects in which people had interfaced them with microcontrollers. I can't remember why I chose not to go with those. I guess it had to do with price.
I found thumb joysticks similar to those on the PlayStation controllers for a fairly cheap price on Sparkfun. They also provided the schematic symbol and the footprint of the component for CadSoft EAGLE, which made my work a lot easier. So I ordered a couple and made a couple of break-out boards for them (see schematic, layout). The 8 pin DIP in the board (misleadingly labeled IC1) is the 8 pin ribbon cable connector I was using.
The break-out boards are then to be connected to a digitizer board, which contained a microcontroller and would do the analog-to-digital conversion to read the position of the joysticks and would then communicate with the actual transmitter board via a serial link (see schematic, layout). Again, the 8 pin DIP parts in the board are the ribbon cable connectors.
I put the two joysticks and the digitizer in a plastic case, that was a nice size to hold in your hands.
|Completed joystick and digitizer assembly on the dining room table, with some miscellaneous crap.|
The transmitter board itself was a bit more complicated, mostly because I wanted to add an extension port to it. I was planning on extending the two board design into a larger one, where I'd have an LCD and a menu system working on that. This never came to be, so most of the effort designing the more complex transmitter board was a waste (see schematic, layout). Both the transmitter and the digitizer use a 3.1V low-dropout regulator to be able to operate from a single lithium-polymer cell (and also because I happened to have a hundred of such regulators).
|The transmitter board has just finished etching.|
This picture was taken before removing the photoresist.
|Top view of the transmitter board|
|Bottom view of the transmitter board|
The software on the transmitter board basically does the following in an endless loop:
- Request a measurement from the digitizer board
- Wait a certain time for the digitizer board to respond
- Check integrity of received measurement
- Transmit packet to receiver over radio
- Wait a certain time for the receiver to respond over radio
It the digitizer doesn't respond within the window, a default (fail safe) control is sent. This is also the case, if the integrity of the measurement cannot be validated. I've actually never had the control fail due to problems with the transmitter, but the fail safe actions are still good to have there in place.
While the joysticks and digitizer did get a nice enclosure, the transmitter board wasn't so lucky. I ended up putting it inside an Orthex freezer container together with the battery I used to power the whole thing. Prior to operation, you'd have to put the box very close to your face (~1cm) to see if the green power LED was flashing inside the container. Any further away and the sun would prevent you from seeing the light. The whole process of using that transmitter was silly-looking.
And talking about silly, as I had never flown a model when I was designing all of this, I completely overlooked how important trimming the controls were. To set the trim on the left stick, you would move the stick so that control surfaces corresponded to your new zero, then you would tap the right stick. To trim the right stick, you would just do the same, but with sticks reversed. This effectively made it impossible to trim while in flight. I tried it a couple of times, and each time it ended badly. What I ended up doing, was I coarsely trimmed the plane on the ground, only eyeballing the control surface positions. In the air I would then just compensate. Even though I have proper trims on my current revision of the transmitter, I still tend to do this.
|Probably the weirdest RC transmitter you've seen in a while.|
Notice the strip of packing tape keeping the two halves together.
It turned out that the PlayStation thumb joysticks have a large dead zone and also their usable range is not to the very edge, which leaves them with quite a limited dynamic range, which I don't think is a very good thing for RC (especially multicopters). However, I did learn to fly my first plane (the Graupner Elektro Rookie) with this transmitter and it worked without any real problems. It might have been a bit easier to get a hang on things with a real transmitter, especially due to trimming the controls being very difficult.
The transmitter board and the digitizer board are still in use in my transmitter v1.5, which is what I use today. Basically I just changed the joysticks for something a bit nicer. I will write an article on that upgrade. However, I'm currently in the process of completely redesigning the transmitter to have support for an antenna tracker, a head tracker and most importantly: a ground-based OSD to my FPV video feed.