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