emonTx V3.2 | replace RFM12B transmitter with RFM69CW

Hello guys, I’m new here and I hope its the right place for my question.

Currently I’m modefying my OEM System to the 433 MHz (from 868Mhz) standard. Therefore I bought a set of RFM69CW 433 MHz transmitter to replace my old RFM12B 866 Mhz modules.

When I started with my emonTx V3.2 (3 phase sketch) I recognised, that this emonTx Version comes out with a rfu 328 radio transceiver (to plug on the board). Does it work if I replace the RFM12B transmitter placed on the radio transceiver?

Furthermore the 3 phase sketch isn’t using the official JeeLabs library as recommend here: RFM69CW Overview | Archived Forum

Is it possible to get emonTx V3.2 3 phaes sketch running with the RFM69CW module? Or can I order the (old) rfu 328 radio transceiver working with 433 MHz? Or any other way to change the frequence to

Thanks for your help!

If you have the right tools to unsolder the RFM12B, then that is probably the solution. Otherwise, I think the shop will not have a RFu 328, as the EmonTx V3.2 was only produced for a short time before it was superseded. If you don’t have the tools to get the RFM12B off, then your options are limited, as I don’t think the RFu 328 is available any more.

On the firmware side, the present 3-phase sketch should work with the RFu 328 and an RFM69 CW, and you’re right, it doesn’t use JeeLib as such, but it does for the most part use the stripped-down transmit-only code from JeeLib.
You will need to carefully check all the I/O pins etc as the EmonTx V3.2 is different to the V3.4.

Hi Robert, thanks for your replay!

I replaced the RFM12B with the RFM69CW module. Physical everything looks fine, but unfortunately it doesn’t work.

If I set the parameters in the 3 phase sketch (V0.11) to RFM69CW and RF12_433MHz the sketch hangs (as mentioned in the sketch if the wrong radio module is specified). The serial output is:

emonTx V3.2 & V3.4 CT1234 Voltage 3 Phase example
Using RFM69CW Radio
Node: 11 Freq: 433MHz Network: 210
monTx V3.2 & V3.4 CT1234 Voltage 3 Phase example
Using RFM69CW Radio
Node: 11 Freq: 433MHz Network: 210

If set the radio modul to RFM12B I get what I expect (for both frequencies):

emonTx V3.2 & V3.4 CT1234 Voltage 3 Phase example
Using RFM12B Radio
Node: 11 Freq: 433MHz Network: 210
Detected Temp Sensors:  1
Voltage: 231.99
 Phase 1: 0.00 A, 0.00 W, 0.00 VA, PF=nan
 Phase 2: 0.00 A, 0.00 W, 0.00 VA, PF=nan
 Phase 3: 0.00 A, 0.00 W, 0.00 VA, PF=nan
 Temperatures: 17.60 

But I don’t receive any data with my Pi. Any suggests what I can try next? Is the radio module sensitive to heat? Maybe I broke something? If there is no other option I place the Pi next to the emonTx an use the serial connection.


Sebastian, I’ve edited your post.
To format as code, use ``` instead of ‘’’’


Have you set these also?

#define RFMSELPIN 4                // Pins for the RFM Radio module  
                                   // 10 for the V3.4; 5 or 10 for the Shield but depending on jumper setting, 4 for the V3.2/RFu_328 V1.2
#define RFMIRQPIN 3                // Pins for the RFM Radio module:
                                   //  2 for the V3.4; 2 or  3 for the Shield but depending on jumper setting, 3 for the V3.2/RFu_328 V1.2

Does the RFu 328 have a pull-up on the SEL line of the RFM device?

I seem to recall Robin Emely found there needed a additional pull-up fitted when using the rfm69cw in place of the rfm12b. I have checked the emonTx v2 and v3.4 schematics and there is an additional 120K pullup on the v3.4. But I cannot readily find a schematic for the RFU-328 to confirm if it had one or not.

Thanks for your help!

RFMSELPIN and RFMIRQPIN are set correctly.

By know I’m not quite into OEM hardware and I have just “basic skills”. I don’t know exactly what “SEL” means, but I can find it in the schematic.png of V3.4 (I can’t find one for V3.2?). Unfortunately there are no pin numbers of the RFM69CW module noted and I can’t find a pin called SEL in the data sheet? I figured out it could be PIN NSS(7) - is that right? As I can see there is no pull-up between NSS and VCC (R->infinite).

Best regards

Yes, different names get used, If I recall correctly the OEM schematics use “SEL” which I believe is short for “select” and the RFM devices use “NSS” the “SS” is “slave select” (I don’t recal what the “N” is).

I just found this


which says something completely different in the diagram at the bottom of the page, so proceed with caution, perhaps @Robert.Wall can offer some insight.

That usually means that the RF Module is not responding to the set-up instructions. If you look at the rfm_init( ) function, you can see two loops that write into a register and continue until the register is read back correctly. If that never happens, the function never returns, and the sketch hangs.
You can check that by temporarily putting a “print” instruction each side of those loops.

It is possible that you damaged the RFu module when you removed the RFM12B, You must have the RFM69CW the right way round, so that the antenna connection is the opposite end to the 328 processor. See Learn | OpenEnergyMonitor to identify the antenna (top left in each picture).

The RFM12B data sheet calls the pin nSEL, the text says “Chip select (active low)” so NSEL = Not SELect.

That is completely different. It is level translation from 5 V Arduino voltage to 3.3 V RFM69 voltage.

I don’t think there’s much risk of damage if you try a 120 kΩ pull-up on nSEL/NSS.

Doh! So it is, I’ve used it myself many times, i just didn’t recognize it.

The radio module is the right way round - I checked it before I attached it to the RFu 328.

I added a 120 kΩ pull-up between nSEL/NSS and VCC, but unfortunately nothing changed. If I set the matching parameters the 3 Phase script hangs (I tried also the emonTXv3_2_DiscreteSampling sketch).

Your are right. I added a couple of “print” instructions to find out where the sketch hangs. It stops inside the rfm_int() function while initialisation (do - while loop):

	writeReg(0x2F, 0xAA); // RegSyncValue1
while (readReg(0x2F) != 0xAA) ;

I don’t want to waste to much of your time for that problem. If you have no other ideas spontaneously, I’ll simply use the serial connection.

Thanks for your help guys!

I think I’ve run out of suggestions. Either you damaged the RFμ module removing the old radio, or the new radio is faulty. I guess if you could put the old RFM12B back and it worked, that would prove it wasn’t the RFμ. (If you do that, lift it off the board on short wire links that you can cut easily.)
The RFμ328 no longer seems to be available. But you could ask if the shop has a RFμ with a 433 MHz RFM12B. If not, I think your serial data solution is the only answer.

Where did you source the rfm69cw module?

From the OEM - Shop. I just wrote an email and asked if they have a RFμ with a 433 MHz RFM12B.

Hi Sebastian,

We do not stock that RF module I’m afraid. But since this could be a faulty RF, please email us at the shop along with your order number and we’ll try and find the best way to resolve this.