LEGO® MINDSTORMS® and Technic®MINDSTORMS® EV3/NXTMINDSTORMS SensorsLEGO® technical dataLDrawMiscellaneous LEGO®VEX;LEGO® & PhotographyPanoramic PhotographyPhoto GalleryHome



    Power Functions® NXT® remote control

    Using Power Functions (PF) remote handset to control a NXT is a rather old idea, see for example Dave Parker's Power Functions Remote Control Sensor or Mike Brandl's Power Functions, or ... how can I remotely control my NXT?

    I went a bit further, allowing the NXT to receive all nine different combinations of the PF handset, using only one NXT sensor port. This comes with a price, it needs some soldering inside the PF receiver to transform it into a NXT sensor (after modification it will be no longer possible to use it as regular PF receiver - see note at bottom of this page).

    Also note that HiTechnic makes a NXT IRReceiver Sensor, more powerful since it can work also with the PF speed controller (my hack works only with the on/off controller) and is able to receive orders from different remote channels.

    The idea is simple: combine the outputs of the PF receiver with well chosen resistor values to obtain a different voltage for each combination of controls and measure this voltage with the NXT. Here is the schematics:

    The PF receiver is powered from NXT 4.3V sensor supply. This is far below expected 9V supply but it seems to work fine. Getting the resistors values right was not so easy because there is an internal 10k pull-up in the NXT, and because the output of the receiver can have 3 states (0V, +V or floating). Here is the Excel spreadsheet I used. The resistor values chosen maximize the separation between the different states, but the optimum thresholds are not evenly spaced, so lots of comparisons in software are to be expected...

    Building the sensor

    First step is to open the sensor, remove the 4 screws...

    ...then carefully pull back the printed circuit board and attached cables.

    You should now have this on your desk.

    Unsolder the cables. Warning: the pads are fragile, be cautious not to tear or unglue them.

    Solder a NXT cable to the PF receiver board. I crimped my own cable but you may also cut a Mindsensor's Flexicable. The thinner ribbon cable fits nicely in the slit of the PF receiver box. See the photo for wire order. Note that I also soldered wire 3 to PF C2, not shown in diagram above. This is just to improve cable solidity, it has no electrical use.

    Now solder the resistors between outputs of PF receiver board and pin 1 of NXT cable. In order to fit the casing, resistors and wires should be placed as shown on the photo.

    Place the PCB back in casing...

    ...screw bottom plate. Your PF remote sensor is ready!

    The nine combinations...


    Important warning: it is perfectly possible to install the resistors inside the PF receiver without unsoldering the three PF cables, and use a NXT to PF converter (with non-standard wiring). This way the PF receiver could still used to drive motors, the high value resistors inside would have no effect (except on low power PF LEDs).

    I strongly advise you against doing this nonetheless, as it would be possible then to inject 9V power from a battery box to the 4.3V NXT I/O supply and burn your NXT and/or other sensors connected to other ports.


    The program below is a simple NXC test program that displays on NXT screen the position of PF remote switches. This program is easy to adapt to other uses: after the thresholding tests, you get two variables (Switch1 and Switch2) that contain the PF remote levers positions (-1, 0 or +1), and a third variable, PFremote, that contains a integer [0..9] encoding the 9 possible different combinations of levers positions.

    I let you adapt this program to NXT-G, it should be very simple... but laying down all these embedded switch blocks is simply too much for me!



LEGO® MINDSTORMS® and Technic®MINDSTORMS® EV3/NXTMINDSTORMS SensorsLEGO® technical dataLDrawMiscellaneous LEGO®VEX;LEGO® & PhotographyPanoramic PhotographyPhoto GalleryHome