Recommended Posts

Dear All,

here is another thing that was for long on my mind: Extend the range of the IR light based one-way communication for controlling the PF receiver without line-of-sight. There are many ways to do this; one would be to install IR repeaters all over the place; this has been realized by others in many different ways. An alternative is to access the PF receiver via radio frequency (RF). This again was done over and over again – my solution is a little minimalistic and simple but works very well.

Executive summary (for those not interested in the details of this post)

    Motivation: Access to PF receivers without line-of-sight, particularly for PF trains.

  • How to add a power/data 3 pin socket to the PF receiver (#8884).
  • How to reversibly plug in a single LINX RXM 433 (or 315 or 418) MHz RF receiver chip into the modified PF receiver and use RF for communication.

    Result: With RF receiver plugged in, the PF receiver is accessed via RF, with RF receiver removed it works as before with IR control.

    Benefits:

  • PF operation without line-of-sight
  • Using all three available RF frequencies (315, 418, 433 MHz), 3 x 8 = 28 PF devices are independently controllable.
  • When running newer PF receivers using the 1.2 PF protocol and knowing how operate the address bit in the 1.2 PF bit protocol, 3 x 16 = 48 PF devices are independently controllable.

You may want to skip the remaining part of this post ...

 

On to the details

Upfront: It works perfectly well, I am very happy. However, I believe Philo’s superb knowledge is needed to explain why. Maybe you can help out, Philo … see further below.
My approach builds on stone-old RF receivers from LINX. I bet there are tons of other devices out there, which outperform the LINX chips by far. I simply had these in bulk from China and I knew they behave well, when non-electronics people like me play with RF …

The principle is as simple as it gets: The LINX RXM 433 chip constantly listens for a 433 MHz signal, once it finds one in that RF space it pulls its output from ground (= no such signal present) to VCC. A LINX TXM 433 chip does the opposite: It constantly monitors it’s logical input pin to go to VCC and then sends out a 433 MHz signal. This way a simple on-off-keyed (OOK) communication becomes possible. No encoding - no nothing, just OOK. These chips are just that: 433 MHz receivers and transmitters. I have already used them in this LEGO project.. 

Hacking the PF receiver

Here is the part purists will hate though: We need to tap into the LEGO PF receiver electronics to get straight access to the PF receiver’s micro-controller data input line. This line should be directly connected to the IR receiver’s chip data out pin.

Steps 1 to 3
Disassembly of the PF receiver as shown on Philo’s pages here. Details in 3), right, suggest to push the PF pins with a small screwdriver out of the socket – this way all 4 stay connected to the wire. It is then easier to get them back in place:

pf_receiver_steps_1_to_3.jpg

 

Step 4 and 5
4) White arrow indicates the three pins we want to get access to. 5) Bending back the TL/VS/OS-type(?) IR receiver – there are so many of them. The one built into the PF receiver could be an OS 1638 (Philo – help!) – this one has a metal shield and voltage range of 2.7 – 5.5 V which fits nicely. The detail shows the 3 pin socket to be soldered with cut pins and solder applied.

pf_receiver_steps_4_to_5.jpg

 

Step 6: Soldering a 3 pin socket terminal strip (2,54 mm) as shown here to the soldering side of the printed circuit board. Right: 4.15 V between VCC and GND with fully charged batteries, see volt meter reading.

pf_receiver_step_6.jpg

 

Step 7 and 8
7) Bending the IR receiver back into position. 8) A little drilling is necessary to widen the opening in the translucent plastic part – you may well use more sophisticated tools though.

pf_receiver_steps_7_to_8.jpg

 

Steps 9 to 11
9) This is how it looks like after drilling (3 mm drill). 10) After cutting/filing the modified PCP goes back into the housing. Before we do that, we need to ply off one side of the yellow cover of the sliding switch, otherwise it will cover the 3 pin socket when in the channel 1 or 2 position. 11) Put the receiver back together. It now still works fine with IR control, nothing has changed so far. But we do have access to the micro controller’s data input as well as a nice power supply of about 4 V. Again, the power scheme on the receiver is shown. IN = logical data in.

pf_receiver_steps_9_to_11.jpg

 

What makes life rather easy is that all the IR receivers (I know) have an open collector output, pulled up internally to VCC with 10 … 50 kOhm. Which means that you can simply put them “in parallel”. TLC did that in their RC trains #7897 and #7898, which has such detectors mounted on both sides. I looked into the RC electronics built into the casing permanently attached to the base plate, and indeed both IR receivers are hooked up in parallel to the micro controller. So in principle, one can now hook up further IR detectors to the PF receiver. A little test setup confirms that:

pf_receiver_ir_extension.jpg

 

But that’s is not what I wanted – radio control was the goal. The LINX RXM RF receiver assembled further above works with up to 4.2 V VCC which is a perfect match.

And now it comes. As far as I am concerned, we need to invert the output of the RXM chip, which is VCC for a 433 MHz signal present – the IR receiver pulls its output to ground when 38 kHz IR light is present. I tried that: DATA out from the RXM via 1 kOhm resistor into a standard NPN transistor which should result in an inverted open collector output. The pull-up resistor to VCC is not required as there is one in the IR receiver. It works – but not robustly enough. I don’t know why – IR always works, RF “sometimes” not. Which means: Out with it. What works though is: Directly connecting the RXM output to the PF receiver input. IR is then not working anymore, but RF works flawlessly! This is what I wanted to ask Philo: Why on earth is that??? Here is the data sheet: https://www.linxtechnologies.com/wp/wp-content/uploads/rxm-fff-lr.pdf - and here is a sketch of the circuit I tried to use: http://www.brickshelf.com/gallery/ThorstenB/9VTrain/PFgoesRF/inverter_for_rxm.jpg 

This is how the PF receiver looks like, when the RF module is plugged in. In this configuration, IR does not work anymore, as mentioned above. Which is (accidentally, to be honest) very nice, as the receiver is not caring about any IR commands - and does not get confused. Upon unplugging the RF module, IR is operational again. 

pf_receiver_rf_extension.jpg

 

Making the "RF receiver"

Here is how I got it to work ...

This is the "circuit diagram" (it is not, it is just how to solder the wires to the LINX RXM device. There are two chip versions shown: The one on the left (LINX RFM 433 LC-S) reached it's end of life longer ago, the one on the right (LINX RFM 433 LR-S) is the one currently sold. Pin-out is identical, the LR-S type has one additional output (RSSI), which I do not use at all. The LC-S chip is available from China dead-cheap, the newer for example from Mouser and many more suppliers of RF stuff.

rf_receiver_diagram.jpg

Step 1 to 3:
1) Tie both ground pads to ground and get the ground wire out. 2) Get VCC, DATA, and Antenna out. The Antenna should be 16.5 cm long. 3) Apply some heat shrink tubing around VCC, GND, and DATA wire.

rf_receiver_steps_1_to_3.jpg

Step 4 and 5:
4) Solder the three wires to the 2,54 mm 3 pin connector in the right order (VCC right marked in white, GND center, DATA left. 5) Covering up with wider heat shrink tube – and done. A little white dot on both the receiver and the RF “module” helps to get the right connection. Both devices suffer from no damage at all though when hooked up in the wrong way (extensively tested).

rf_receiver_steps_4_to_5.jpg

 

On the RF transmitting side the PF IR remote control (#8885 or #8879), an IR receiver chip and a RF transmitter is needed. For simplicity I used a LINX 433 TX LC/LR transmitter in combination with a TSOP 34838 IR receiver. Any 1738 or the like would do as well. In fact the IR RF transceiver referenced already above works fine.

 

So what do we do with all this?

First, communication without line-of-sight works very well – a video should be available soon demonstrating that (a train behind a bookshelf or in a tunnel).

Second, the LINX chips are rather small and more importantly very robust in operation. The power consumption is reasonable and is readily available from the modified PF receiver.

Third: The LINX chips also come as 315 MHz and 418 MHz versions. Which means that 3 x 8 = 24 PF channels are readily available. As the PF receivers don’t “see” the IR light anymore when the RF chip is plugged in, there is no IR trouble at the receiver side. On the transmitting side one has to make sure that the PF remotes do only shine their IR light onto the corresponding RF transmitter.

Fourth - and most importantly for me: I got hold of an NXT IRLink sensor from HiTechnic. The IRLink natively “speaks” the RCX message protocol, the PF protocol, and the RC train protocol. It is some kind of C3PO – uniting the LEGO IR world. With the exception of Manas, I believe. I wrote a little NXT-G program that listens for RCX messages (in RF space that is), captures the ones that are of interest, interprets the data content of these messages and sends out PF or RC train commands into RF space. Any RC or PF controlled train equipped with the RF receiver will do what it was told. I am running 8 PF trains and 1 RC train using this scheme.

And this is up next: Controlling PF trains with NXT + HiTechnic IRLink via RF communication. Requires certainly a little time though ...

Thanks for reading.

Regards,
Thorsten

 

Share this post


Link to post
Share on other sites

This is interesting, but wouldn't it make more sense to just create an entirely new receiver that's RF based, versus a plug-in to the IR receiver?

For the sake of minimizing how much space is used, etc

Share this post


Link to post
Share on other sites

Oh, absolutely!

But as said: I am nowhere near that knowledge. I sort of know how to drill holes in plastic, solder wires from here to there and that's it. RF makes me always a little nervous, as I never managed to understand what "impedance" really means:sweet: and so on and so forth.

This approach allows me to just solder three socket pins to the receiver PCB and then cover it up again. I don't even need to use any RF plug-in; it still works fine without. But if I want to do RF, then I can ...

But you are right: Even Playmobil (come on!) does 2.4 GHz remote control of their cars nowadays. I never got why TLC did not jump on that. It may be the price: The IR receiver part cost as much as a couple of screws in bulk; RF stuff at least 10 times that. I would pay for it but that does not mean anything.

And then: LEGO is for kids who want to see what is happening and not for adults who don't happen to have the space to run their trains always in line-of-sight:tongue:.

This RF stuff is just for me working very well, that is all there is.

Best regards,
Thorsten

   

Share this post


Link to post
Share on other sites

You've gotten pretty far without knowing what impedance means.

I think you know more than you're willing to let on, but regardless, well done!

I was always wondering if such a simple hack could be done and clearly it can and done so as to be temporary. I may just do this myself to enable my v2 receivers and a couple remotes to work outside.

Share this post


Link to post
Share on other sites

Well done mate! But it seems like a WHOLE lotta work though!!

Consider this..Pull the PF IR reciever OUT and chuck it in the draw just in case you wanna put it back again..(only if selling model, otherwise why?)
Install an Arduino Nano or Digispark (About twice the size of your thumbnail) with a 433 Mhz reciever (cost total so far, about 4 bucks!)
Install these in all the trains you want to control!
Use another Arduino (UNO maybe or Mega) with a 433 Mhz Transmitter, (comes with the reciever as a pair). Price of Arduino Uno - about 3-4 bucks!
Send a data string via RF and use an ID tag in the string to identify which train you are trying to control and a command string to tell it what you want it to do..
e.g: forward +/-, reverse +/-, full stop etc..

The coding is really easy and you can do cool things like better range on control (you don't even have to be in the room), better speed control (not just 7 forward and 7 reverse), setting limits on speed (maybe on certain parts of your layout)  and many many other things that maybe I haven't thought of yet! (OK, what about using a GUI on a computer to control your layout!!)

All in all, a much much easier solution, and no need to use multiple frequencies!

What do you think?

Cheers,

sPy from Oz

Share this post


Link to post
Share on other sites

Hi sPy!

oh man, that IS a very nice and nifty solution! I have some arduinos here, as well as RF PICs from microchip - and yes, it is amazing, what you can do with these.

Here is my "motivation": Get as close to an "all LEGO solution" as possible. Just for fun that is. And also, because TLC never really showed people what their PBricks can accomplish (interaction wise). Since then I am after that ... 

  • I started this in 2001: Remote train control using RCX' - at that time all IR which was OK'ish but that was it. It worked though! At that time with QBASIC ... in an all LEGO solution
  • Then came the RF extension using my little transceivers - it is a lot of work, but I did not break into LEGOs - yet
  • Then I broke into LEGOs: Modified the 9V motors as power pickups (should have been done by TLC in any case, works like a charm on 9V and PF equipment
  • Then I modified the PF receivers, because the "Big Uniting Sensor" from HiTechnic, the IR Link sensor for the NXT (that thing lets the NXT communicate with RCX, Spybots, Scouts, the whole line of PBricks!) had simply not enough range (couple of cm, sigh ...)

Wait for my next post - I'll show you in more detail, what I try to do.

Basically demonstrate that TLC has a number of solutions for a whole lot of automation - but a) never told us how to and of course b) it cost you a fortune.

And lastly: After 16 years of work, I guess it is time to wrap this a little up.

But again: I love the little arduinos very much!!!

Best regards,
Thorsten

    

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.