Problem with DIY EmonTX and RFM69CW

I’ve put together a DIY EMonTX on stripboard based on the Arduino stripboard layout from [here] and linking this to an RFM69CW with an additional 3.3v regulator added, the idea being to transmit data back to the RFM2PI. I tested this layout on a breadboard using an Arduino Nano so I know the code and the RFM69CW module are all working ok, the DIY Arduino also seems ok as I have uploaded various sketches and they all seem to run fine.

However when I use my sketch to transmit data using the RFM69 module it transmits a few packets (maximum I’ve transmitted is about 40) and then it seem to lock up.

I’ve checked all the joints are ok and there are no joins across tracks and everything seems in order, does anyone have any ideas on where to go now with getting this to work reliably ?

Very strangely when I upload the sketch below I get very slightly garbled serial output at the as soon as the Arduino is powered on, I don’t get this with other sketches

The test code I’m using is as follows

//Simple RFM12B wireless demo - transimtter - no ack
//Glyn Hudson openenergymonitor.org GNU GPL V3 7/7/11
//Credit to JCW from Jeelabs.org for RFM12 
#define RF69_COMPAT 1  //Set to 1 if using RFM69CW or 0 is using RFM12B
#include <JeeLib.h>  //from jeelabs.org

#define myNodeID 11          //node ID of tx (range 0-30)
#define network 210      //network group (can be in the range 1-250).
#define RF_freq RF12_433MHZ     //Freq of RF12B can be RF12_433MHZ, RF12_868MHZ or RF12_915MHZ. Match freq to module


typedef struct { int power1, power2; } PayloadTX;      // create structure - a neat way of packaging data for RF comms
PayloadTX emontx;  

const int LED = 8;                                             //emonTx V3

void setup() {
 rf12_initialize(myNodeID,RF_freq,network);   //Initialize RFM12 with settings defined above  
 
 Serial.begin(9600);
 Serial.println("RFM12B Transmitter - Simple demo");

 Serial.print("Node: "); 
 Serial.print(myNodeID); 
 Serial.print(" Freq: "); 
 if (RF_freq == RF12_433MHZ) Serial.print("433Mhz");
 if (RF_freq == RF12_868MHZ) Serial.print("868Mhz");
 if (RF_freq == RF12_915MHZ) Serial.print("915Mhz"); 
 Serial.print(" Network: "); 
 Serial.println(network);

 pinMode(LED, OUTPUT);

}

void loop() {
  emontx.power1=emontx.power1+1;
  emontx.power2=emontx.power2+2;

  digitalWrite(LED, HIGH);
     
  rf12_sendNow(0, &emontx, sizeof emontx);                    
  rf12_sendWait(2);
    
  Serial.print("power1: "); Serial.println(emontx.power1); 
  Serial.print("power2: "); Serial.println(emontx.power2); 
  Serial.println("  "); 
     
  digitalWrite(LED, LOW);   
  delay(2000);
}

The code seems to get stuck after the line rf12_sendWait(2); but it can run the loop up to about 40 time but more often about 6 before stoping

Thanks in anticipation for any ideas where to go next

Does it still lock up if you remove the sendWait completely? This is safe in this scenario as you have a delay(2000) further on so won’t risk corrupting the existing packet buffer.

Also read through this forum post
https://openenergymonitor.org/emon/node/12216

Yes I’ve tried removing the sendWait and makes no difference will have a look through that thread.

Tracked it down it’s an issue between Pin13 on the arduino and the RFM69, if I bypass it onto a breadboard with the resistors on a breadboard ant then to the RFM69 all works fine, must be a problem on the stripboard somewhere off Pin13. Will look with a fresh pair of eyes tomorrow