The Picooz is a remarkably small remote controlled model helicopter, made out of mostly foam and controlled by IR.
This page is not going to be about the Picooz itself, but some rough notes on how I am going to get it controlled by a computer. This is an ongoing project, so this page may not be complete.
I have decided that I am going to use the parallel port of the computer, and interface its data lines into the remote control unit. Also, the program is going to be written in Microsoft QuickBasic 4.5 for simplicity.
First of all, we are going to have to find out how we are going to interface the computer and remote control using the parallel port. The parallel port can provide us with 8 data lines, which we can independently switch on and off. I have had a look inside of the remote control unit, and this is what I have found:
Above: The red rectangle on the left shows the input from the left hand stick (up/down) while the right hand rectangle shows the input from the right hand stick (side to side).
The left hand stick has 5 input terminals. I'm assuming this means that this is not a variable resistor, but instead a type of 4-way rotary switch, with the other terminal as ground. This has made our life easier, meaning these are already digital inputs (I/O), so they can theoretically be wired straight into the computer. The right hand stick has three terminals, meaning that this is most likely to be a variable resistor, wired as the following:
(Ignore the values on the resistor)
To get around this problem (it's analogue), we can simply use the four remaining data lines, and wire it in as follows (this is a very rough diagram to demonstrate it, using this actual circuit could blow out your parallel port controller)
Very rough and bad explanation:
Basically, the above diagram demonstrates how we can get past the problem. Ignore the values on the resistors. R1 is the same as R3 and R2 is the same as R4. The five wires come in from the computer (bottom one is ground, others are data lines). The resulting wires are wired into the controller (though in real life this will destroy your parallel port). Basically we have made a crude type of variable resistor. When the first data line turns on (top one), the resistance will be for example 500 ohms, and the helicopter will veer to the left quickly. When the second data line is on only, the resistance will be for example 1K, and the helicopter will veer to the left slowly. When all the data lines are off, the helicopter stays straight. When the third data line is on only, we will get 1K on the second output, so the helicopter will veer to the right slowly and when the fourth data line is on only, we will get 500 ohms, so the helicopter will veer to the right quickly. To do a very precise adjustment to the left, the computer can switch on the second data line on and off very quickly, the same goes for the right, except using the third data line.
So that's now the basic principles of the interface, here's a proper interface circuit I quickly drew up (ignore all component values). Also, you may need to download the picture to see it, and open it in an image editor, as it may be scaled down in your browser and turn out blurred.
Click the above preview for the full sized image
Now that we have dealt with the basic interfacing, we can move onto the software. I have decided that I am going to write the program in Microsoft QuickBasic, as it is easy and reliable. I am not going to go into too much detail, but the software is going to work as follows.
As we have no simple ways of having a real-time input (i.e. Webcam) interfaced and programmed to report the whereabouts of the helicopter, we are going to have to instead programme the exact routes for the helicopter to travel along. To make this easier, the user will first manually fly the helicopter through the software, where the software will be recording every action to a file. Then the helicopter will be placed back in exact starting position, and in theory, the computer should be able to fly the helicopter exactly as the user did. When this is fully working, I will be looking into ways of making it more complex.
I apologise for the sketchiness of these notes. This is due to the fact I have not even started on this project due to lack of time. When I have some free time, I will complete this project, write a more precise article, and upload the software for you to download.