I unsoldered Felix's wire antenna and then soldered on a 47 ohm resistor to short antenna to ground (see attached photo). After doing so, here are the results from using the latest version of the sketch:
2.0: regIrqFlags1=11011000, RSSI=-86, regIrqFlags2=0
2.1: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
2.2: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
2.3: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
2.4: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
2.5: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
2.6: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
2.7: regIrqFlags1=11011000, RSSI=-108, regIrqFlags2=0
2.8: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
2.9: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
3.0: regIrqFlags1=11011000, RSSI=-89, regIrqFlags2=0
3.1: regIrqFlags1=11011000, RSSI=-101, regIrqFlags2=0
3.2: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
3.3: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
3.4: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
3.5: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
3.6: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
3.7: regIrqFlags1=11011000, RSSI=-102, regIrqFlags2=0
3.8: regIrqFlags1=11011000, RSSI=-110, regIrqFlags2=0
3.9: regIrqFlags1=11011000, RSSI=-99, regIrqFlags2=0
4.0: regIrqFlags1=11011000, RSSI=-86, regIrqFlags2=0
4.1: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
4.2: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
4.3: regIrqFlags1=11011000, RSSI=-109, regIrqFlags2=0
4.4: regIrqFlags1=11011000, RSSI=-101, regIrqFlags2=0
4.5: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
4.6: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
4.7: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
4.8: regIrqFlags1=11011001, RSSI=-104, regIrqFlags2=1000000
4.9: regIrqFlags1=11011000, RSSI=-112, regIrqFlags2=0
5.0: regIrqFlags1=11011000, RSSI=-88, regIrqFlags2=0
5.1: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
5.2: regIrqFlags1=11011000, RSSI=-113, regIrqFlags2=0
5.3: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
5.4: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
5.5: regIrqFlags1=11011000, RSSI=-102, regIrqFlags2=0
5.6: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
5.7: regIrqFlags1=11011000, RSSI=-103, regIrqFlags2=0
5.8: regIrqFlags1=11011000, RSSI=-102, regIrqFlags2=0
5.9: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
6.0: regIrqFlags1=11011000, RSSI=-88, regIrqFlags2=0
6.1: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
6.2: regIrqFlags1=11011000, RSSI=-103, regIrqFlags2=0
6.3: regIrqFlags1=11011000, RSSI=-115, regIrqFlags2=0
6.4: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
6.5: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
6.6: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
6.7: regIrqFlags1=11011000, RSSI=-108, regIrqFlags2=0
6.8: regIrqFlags1=11011000, RSSI=-101, regIrqFlags2=0
6.9: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
7.0: regIrqFlags1=11011000, RSSI=-94, regIrqFlags2=0
7.1: regIrqFlags1=11011000, RSSI=-101, regIrqFlags2=0
7.2: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
7.3: regIrqFlags1=11011000, RSSI=-102, regIrqFlags2=0
7.4: regIrqFlags1=11011000, RSSI=-103, regIrqFlags2=0
7.5: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
7.6: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
7.7: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
7.8: regIrqFlags1=11011000, RSSI=-107, regIrqFlags2=0
7.9: regIrqFlags1=11011000, RSSI=-101, regIrqFlags2=0
8.0: regIrqFlags1=11011000, RSSI=-86, regIrqFlags2=0
8.1: regIrqFlags1=11011000, RSSI=-103, regIrqFlags2=0
8.2: regIrqFlags1=11011000, RSSI=-114, regIrqFlags2=0
8.3: regIrqFlags1=11011000, RSSI=-99, regIrqFlags2=0
8.4: regIrqFlags1=11011000, RSSI=-104, regIrqFlags2=0
8.5: regIrqFlags1=11011000, RSSI=-98, regIrqFlags2=0
8.6: regIrqFlags1=11011000, RSSI=-106, regIrqFlags2=0
8.7: regIrqFlags1=11011000, RSSI=-103, regIrqFlags2=0
8.8: regIrqFlags1=11011000, RSSI=-105, regIrqFlags2=0
8.9: regIrqFlags1=11011000, RSSI=-101, regIrqFlags2=0
//Version 3.1
// Sample RFM69 receiver/gateway sketch, with ACK and optional encryption
// Passes through any wireless received messages to the serial port & responds to ACKs
// It also looks for an onboard FLASH chip, if present
// Library and code by Felix Rusu - felix@lowpowerlab.com
// Get the RFM69 and SPIFlash library at: https://github.com/LowPowerLab/
#include <RFM69.h> //get it here: https://www.github.com/lowpowerlab/rfm69
#include <SPI.h>
#include <SPIFlash.h> //get it here: https://www.github.com/lowpowerlab/spiflash
#include <RFM69registers.h>
#define NODEID 1 //unique for each node on same network
#define NETWORKID 100 //the same on all nodes that talk to each other
//Match frequency to the hardware version of the radio on your Moteino (uncomment one):
//#define FREQUENCY RF69_433MHZ
//#define FREQUENCY RF69_868MHZ
#define FREQUENCY RF69_915MHZ
#define ENCRYPTKEY "sampleEncryptKey" //exactly the same 16 characters/bytes on all nodes!
#define IS_RFM69HW //uncomment only for RFM69HW! Leave out if you have RFM69W!
#define SERIAL_BAUD 250000
#ifdef __AVR_ATmega1284P__
#define LED 15 // Moteino MEGAs have LEDs on D15
#define FLASH_SS 23 // and FLASH SS on D23
#else
#define LED 9 // Moteinos have LEDs on D9
#define FLASH_SS 8 // and FLASH SS on D8
#endif
RFM69 radio;
SPIFlash flash(FLASH_SS, 0xEF30); //EF30 for 4mbit Windbond chip (W25X40CL)
bool promiscuousMode = false; //set to 'true' to sniff all packets on the same network
void setup() {
Serial.begin(SERIAL_BAUD);
delay(10);
radio.initialize(FREQUENCY,NODEID,NETWORKID);
#ifdef IS_RFM69HW
radio.setHighPower(); //only for RFM69HW!
#endif
radio.encrypt(ENCRYPTKEY);
radio.promiscuous(promiscuousMode);
//radio.writeReg(REG_BITRATEMSB, RF_BITRATEMSB_300000); //set MSB bitrate to 300Kbps
//radio.writeReg(REG_BITRATELSB, RF_BITRATELSB_300000); //set LSB bitrate to 300Kbps
//Serial.println(F("Bitrate set to 300Kbps."));
Serial.println(F("Default bitrate."));
char buff[50];
sprintf(buff, "\nListening at %d Mhz...", FREQUENCY==RF69_433MHZ ? 433 : FREQUENCY==RF69_868MHZ ? 868 : 915);
Serial.println(buff);
if (flash.initialize())
{
Serial.print("SPI Flash Init OK. Unique MAC = [");
flash.readUniqueId();
for (byte i=0;i<8;i++)
{
Serial.print(flash.UNIQUEID[i], HEX);
if (i!=8) Serial.print(':');
}
Serial.println(']');
//alternative way to read it:
//byte* MAC = flash.readUniqueId();
//for (byte i=0;i<8;i++)
//{
// Serial.print(MAC[i], HEX);
// Serial.print(' ');
//}
}
else
Serial.println("SPI Flash Init FAIL! (is chip present?)");
radio.writeReg(REG_OPMODE, (radio.readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_STANDBY); //set standby-mode
radio.writeReg(REG_RSSITHRESH, 0xFF); //set RSSI threshhold as low as possible
radio.writeReg(REG_OPMODE, (radio.readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_RECEIVER); //set Rx-mode
}
long loopCount=0;
int theRSSI;
int maxRSSI= (-125);
uint8_t regIrqFlags1, regIrqFlags2;
void loop() {
loopCount++;
while (!(radio.readReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_RSSI)) { //busy-wait until RSSI flag goes HIGH
}
for (int i=0;i<10; i++) {
regIrqFlags2 = radio.readReg(REG_IRQFLAGS2);
regIrqFlags1 = radio.readReg(REG_IRQFLAGS1);
theRSSI = -(radio.readReg(REG_RSSIVALUE))/2;
if ((theRSSI > maxRSSI)) {
maxRSSI = theRSSI;
}
Serial.print(loopCount);Serial.print(F("."));Serial.print(i);
Serial.print(F(": regIrqFlags1="));Serial.print((regIrqFlags1),BIN);
Serial.print(F(", RSSI=")); Serial.print(theRSSI);
Serial.print(F(", regIrqFlags2="));Serial.println((regIrqFlags2),BIN);
}
radio.writeReg(REG_OPMODE, (radio.readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_STANDBY); //set standby-mode
radio.writeReg(REG_OPMODE, (radio.readReg(REG_OPMODE) & 0xE3) | RF_OPMODE_RECEIVER); //set Rx-mode
}
I can see how using an SMD resistor would have been ideal. Unfortunately, I don't have any on-hand. If anyone else does, feel free to repeat the test using that together with the same sketch, and then post.